|
7 | 7 | * |
8 | 8 | * Implements classes that render and parse Routine Extra Markup Language (REML) |
9 | 9 | * code. This markup is used to read and store active text objects as used by |
10 | | - * the Extra property of a TSnippet object. Also includes helper classes. |
| 10 | + * some properties of a TSnippet object. Also includes helper classes. |
11 | 11 | } |
12 | 12 |
|
13 | 13 |
|
@@ -139,59 +139,8 @@ implementation |
139 | 139 | It comprises plain text with limited inline and block level formatting and |
140 | 140 | hyperlink specified by HTML like tags. |
141 | 141 |
|
142 | | - Supported tags are as follows. Unless otherwise specified, no tags may have |
143 | | - any attributes: |
144 | | -
|
145 | | - Inline: |
146 | | - <a href="url">xxxx</a> - Hyperlink: must have an href attribute that |
147 | | - specifies the link destination as a valid URL. |
148 | | - URLs must not be URL encoded. No other attributes |
149 | | - may be specified. |
150 | | - <strong>..</strong> - Renders enclosed text with strong emphasis. |
151 | | - <em>..</em> - Renders enclosed text emphasised. |
152 | | - <var>..</var> - Renders enclosed text as a programming variable. |
153 | | - <warning>..</warning> - Renders enclosed text as a warning. |
154 | | - <mono>..</mono> - Renders enclosed text as mono spaced. |
155 | | -
|
156 | | - Block: |
157 | | - <p>..</p> - Enclosed text is formatted as a paragraph. |
158 | | - <heading>..</heading> - Enclosed text is formatted as a heading. |
159 | | -
|
160 | | - Certain characters in plain text or in attribute values must be encoded as |
161 | | - HTML-like character entities. Attribute names must not contain any of these |
162 | | - characters. The characters that must be encoded are: |
163 | | -
|
164 | | - Character Entity |
165 | | - > > |
166 | | - < < |
167 | | - " " |
168 | | - & & |
169 | | - � © |
170 | | -
|
171 | | - No other entities are supported. Any other character can be encoded using its |
172 | | - unicode or ascii value. For example, the @ symbol (ascii 64) is encoded as |
173 | | - @ |
174 | | -
|
175 | | - Example: |
176 | | - <heading>Hello</heading> |
177 | | - <p>"<strong>Hello</strong>" to |
178 | | - <a href="https://example.com">you</a></p> |
179 | | -
|
180 | | - This example specifes a heading "Hello" followed by a single paragraph. In the |
181 | | - paragraph, "Hello" will be bold, "to" should be plain text and "you" should |
182 | | - hyperlink to "example.com". |
183 | | -
|
184 | | - There are two versions of REML as follows: |
185 | | - v1 - supported tags: <strong> and <a>. |
186 | | - - supported entities: >, <, ", &. |
187 | | - v2 - added tags: <em>, <var>, <warning>, <mono>, <p> and <heading>. |
188 | | - - added entity: ©. |
189 | | -
|
190 | | - The implementation of active text's link element changed over time. At first |
191 | | - it supported only the http:// protocol for URLs. This limited REML v1 <a> tags |
192 | | - to using just that protocol. CodeSnip v3.0.1 added support to active text for |
193 | | - the file:// protocol. From CodeSnip v4.0 active text was extended to support |
194 | | - the https:// protocol. |
| 142 | + Valid REML tags and character entities are documented in the file reml.html in |
| 143 | + the Docs/Design directory. |
195 | 144 | } |
196 | 145 |
|
197 | 146 |
|
@@ -841,13 +790,42 @@ class function TREMLEntities.CharToMnemonicEntity(const Ch: Char): string; |
841 | 790 | {Class constructor. Creates map of mnemonic entities to equivalent characters. |
842 | 791 | } |
843 | 792 | begin |
844 | | - SetLength(fEntityMap, 5); |
845 | | - // Record all supported character entities |
846 | | - fEntityMap[0] := TREMLEntity.Create('amp', '&'); |
| 793 | + SetLength(fEntityMap, 34); |
| 794 | + // Supported character entities. All are optional unless otherwise stated |
| 795 | + fEntityMap[0] := TREMLEntity.Create('amp', '&'); // required in REML |
847 | 796 | fEntityMap[1] := TREMLEntity.Create('quot', DOUBLEQUOTE); |
848 | | - fEntityMap[2] := TREMLEntity.Create('gt', '>'); |
849 | | - fEntityMap[3] := TREMLEntity.Create('lt', '<'); |
| 797 | + fEntityMap[2] := TREMLEntity.Create('gt', '>'); |
| 798 | + fEntityMap[3] := TREMLEntity.Create('lt', '<'); // required in REML |
850 | 799 | fEntityMap[4] := TREMLEntity.Create('copy', '©'); |
| 800 | + fEntityMap[5] := TREMLEntity.Create('times', '×'); |
| 801 | + fEntityMap[6] := TREMLEntity.Create('divide', '÷'); |
| 802 | + fEntityMap[7] := TREMLEntity.Create('div', '÷'); |
| 803 | + fEntityMap[8] := TREMLEntity.Create('plusmn', '±'); |
| 804 | + fEntityMap[9] := TREMLEntity.Create('ne', '≠'); |
| 805 | + fEntityMap[10] := TREMLEntity.Create('neq', '≠'); |
| 806 | + fEntityMap[11] := TREMLEntity.Create('sum', '∑'); |
| 807 | + fEntityMap[12] := TREMLEntity.Create('infin', '∞'); |
| 808 | + fEntityMap[13] := TREMLEntity.Create('pound', '£'); |
| 809 | + fEntityMap[14] := TREMLEntity.Create('curren', '¤'); |
| 810 | + fEntityMap[15] := TREMLEntity.Create('yen', '¥'); |
| 811 | + fEntityMap[16] := TREMLEntity.Create('euro', '€'); |
| 812 | + fEntityMap[17] := TREMLEntity.Create('dagger', '†'); |
| 813 | + fEntityMap[18] := TREMLEntity.Create('ddagger', '‡'); |
| 814 | + fEntityMap[19] := TREMLEntity.Create('Dagger', '‡'); |
| 815 | + fEntityMap[20] := TREMLEntity.Create('hellip', '…'); |
| 816 | + fEntityMap[21] := TREMLEntity.Create('para', '¶'); |
| 817 | + fEntityMap[22] := TREMLEntity.Create('sect', '§'); |
| 818 | + fEntityMap[23] := TREMLEntity.Create('reg', '®'); |
| 819 | + fEntityMap[24] := TREMLEntity.Create('frac14', '¼'); |
| 820 | + fEntityMap[25] := TREMLEntity.Create('frac12', '½'); |
| 821 | + fEntityMap[26] := TREMLEntity.Create('half', '½'); |
| 822 | + fEntityMap[27] := TREMLEntity.Create('frac34', '¾'); |
| 823 | + fEntityMap[28] := TREMLEntity.Create('micro', 'µ'); |
| 824 | + fEntityMap[29] := TREMLEntity.Create('deg', '°'); |
| 825 | + fEntityMap[30] := TREMLEntity.Create('cent', '¢'); |
| 826 | + fEntityMap[31] := TREMLEntity.Create('laquo', '«'); |
| 827 | + fEntityMap[32] := TREMLEntity.Create('raquo', '»'); |
| 828 | + fEntityMap[33] := TREMLEntity.Create('iquest', '¿'); |
851 | 829 | end; |
852 | 830 |
|
853 | 831 | class destructor TREMLEntities.Destroy; |
|
0 commit comments