Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / docs / HtmlAgilityPack / MixedCodeDocumentFragment.cs
1 // HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>\r
2 namespace HtmlAgilityPack\r
3 {\r
4     /// <summary>\r
5     /// Represents a base class for fragments in a mixed code document.\r
6     /// </summary>\r
7     public abstract class MixedCodeDocumentFragment\r
8     {\r
9         #region Fields\r
10 \r
11         internal MixedCodeDocument Doc;\r
12         private string _fragmentText;\r
13         internal int Index;\r
14         internal int Length;\r
15         private int _line;\r
16         internal int _lineposition;\r
17         internal MixedCodeDocumentFragmentType _type;\r
18 \r
19         #endregion\r
20 \r
21         #region Constructors\r
22 \r
23         internal MixedCodeDocumentFragment(MixedCodeDocument doc, MixedCodeDocumentFragmentType type)\r
24         {\r
25             Doc = doc;\r
26             _type = type;\r
27             switch (type)\r
28             {\r
29                 case MixedCodeDocumentFragmentType.Text:\r
30                     Doc._textfragments.Append(this);\r
31                     break;\r
32 \r
33                 case MixedCodeDocumentFragmentType.Code:\r
34                     Doc._codefragments.Append(this);\r
35                     break;\r
36             }\r
37             Doc._fragments.Append(this);\r
38         }\r
39 \r
40         #endregion\r
41 \r
42         #region Properties\r
43 \r
44         /// <summary>\r
45         /// Gets the fragement text.\r
46         /// </summary>\r
47         public string FragmentText\r
48         {\r
49             get\r
50             {\r
51                 if (_fragmentText == null)\r
52                 {\r
53                     _fragmentText = Doc._text.Substring(Index, Length);\r
54                 }\r
55                 return FragmentText;\r
56             }\r
57             internal set { _fragmentText = value; }\r
58         }\r
59 \r
60         /// <summary>\r
61         /// Gets the type of fragment.\r
62         /// </summary>\r
63         public MixedCodeDocumentFragmentType FragmentType\r
64         {\r
65             get { return _type; }\r
66         }\r
67 \r
68         /// <summary>\r
69         /// Gets the line number of the fragment.\r
70         /// </summary>\r
71         public int Line\r
72         {\r
73             get { return _line; }\r
74             internal set { _line = value; }\r
75         }\r
76 \r
77         /// <summary>\r
78         /// Gets the line position (column) of the fragment.\r
79         /// </summary>\r
80         public int LinePosition\r
81         {\r
82             get { return _lineposition; }\r
83         }\r
84 \r
85         /// <summary>\r
86         /// Gets the fragment position in the document's stream.\r
87         /// </summary>\r
88         public int StreamPosition\r
89         {\r
90             get { return Index; }\r
91         }\r
92 \r
93         #endregion\r
94     }\r
95 }