~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to fcl/xml/htmldefs.pp

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
{
2
 
    $Id: htmldefs.pp,v 1.2 2003/03/16 22:32:44 sg Exp $
3
 
    This file is part of the Free Component Library
4
 
 
5
 
    HTML definitions and utility functions
6
 
    Copyright (c) 2000-2002 by
7
 
      Areca Systems GmbH / Sebastian Guenther, sg@freepascal.org
8
 
 
9
 
    See the file COPYING.FPC, included in this distribution,
10
 
    for details about the copyright.
11
 
 
12
 
    This program is distributed in the hope that it will be useful,
13
 
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
 
 
16
 
 **********************************************************************}
17
 
 
18
 
 
19
 
unit HTMLDefs;
20
 
 
21
 
{$MODE objfpc}
22
 
{$H+}
23
 
 
24
 
interface
25
 
 
26
 
type
27
 
 
28
 
  THTMLElementFlags = set of (
29
 
    efSubelementContent,                // may have subelements
30
 
    efPCDATAContent,                    // may have PCDATA content
31
 
    efPreserveWhitespace);              // preserve all whitespace
32
 
 
33
 
  PHTMLElementProps = ^THTMLElementProps;
34
 
  THTMLElementProps = record
35
 
    Name: String;
36
 
    Flags: THTMLElementFlags;
37
 
  end;
38
 
 
39
 
 
40
 
const
41
 
 
42
 
  HTMLElProps: array[0..78] of THTMLElementProps = (
43
 
    (Name: 'a';         Flags: [efSubelementContent, efPCDATAContent]),
44
 
    (Name: 'abbr';      Flags: [efSubelementContent, efPCDATAContent]),
45
 
    (Name: 'acronym';   Flags: [efSubelementContent, efPCDATAContent]),
46
 
    (Name: 'address';   Flags: [efSubelementContent, efPCDATAContent]),
47
 
    (Name: 'applet';    Flags: [efSubelementContent, efPCDATAContent]),
48
 
    (Name: 'b';         Flags: [efSubelementContent, efPCDATAContent]),
49
 
    (Name: 'basefont';  Flags: []),
50
 
    (Name: 'bdo';       Flags: [efSubelementContent, efPCDATAContent]),
51
 
    (Name: 'big';       Flags: [efSubelementContent, efPCDATAContent]),
52
 
    (Name: 'blockquote';Flags: [efSubelementContent]),
53
 
    (Name: 'body';      Flags: [efSubelementContent]),
54
 
    (Name: 'br';        Flags: []),
55
 
    (Name: 'button';    Flags: [efSubelementContent, efPCDATAContent]),
56
 
    (Name: 'caption';   Flags: [efSubelementContent, efPCDATAContent]),
57
 
    (Name: 'center';    Flags: [efSubelementContent]),
58
 
    (Name: 'cite';      Flags: [efSubelementContent, efPCDATAContent]),
59
 
    (Name: 'code';      Flags: [efSubelementContent, efPCDATAContent]),
60
 
    (Name: 'col';       Flags: []),
61
 
    (Name: 'colgroup';  Flags: [efSubelementContent]),
62
 
    (Name: 'del';       Flags: [efSubelementContent]),
63
 
    (Name: 'dfn';       Flags: [efSubelementContent, efPCDATAContent]),
64
 
    (Name: 'dir';       Flags: [efSubelementContent]),
65
 
    (Name: 'div';       Flags: [efSubelementContent]),
66
 
    (Name: 'dl';        Flags: [efSubelementContent]),
67
 
    (Name: 'em';        Flags: [efSubelementContent, efPCDATAContent]),
68
 
    (Name: 'fieldset';  Flags: [efSubelementContent, efPCDATAContent]),
69
 
    (Name: 'font';      Flags: [efSubelementContent, efPCDATAContent]),
70
 
    (Name: 'form';      Flags: [efSubelementContent]),
71
 
    (Name: 'h1';        Flags: [efSubelementContent, efPCDATAContent]),
72
 
    (Name: 'h2';        Flags: [efSubelementContent, efPCDATAContent]),
73
 
    (Name: 'h3';        Flags: [efSubelementContent, efPCDATAContent]),
74
 
    (Name: 'h4';        Flags: [efSubelementContent, efPCDATAContent]),
75
 
    (Name: 'h5';        Flags: [efSubelementContent, efPCDATAContent]),
76
 
    (Name: 'h6';        Flags: [efSubelementContent, efPCDATAContent]),
77
 
    (Name: 'head';      Flags: [efSubelementContent]),
78
 
    (Name: 'hr';        Flags: []),
79
 
    (Name: 'html';      Flags: [efSubelementContent]),
80
 
    (Name: 'i';         Flags: [efSubelementContent, efPCDATAContent]),
81
 
    (Name: 'iframe';    Flags: [efSubelementContent]),
82
 
    (Name: 'img';       Flags: []),
83
 
    (Name: 'input';     Flags: []),
84
 
    (Name: 'ins';       Flags: [efSubelementContent]),
85
 
    (Name: 'isindex';   Flags: []),
86
 
    (Name: 'kbd';       Flags: [efSubelementContent, efPCDATAContent]),
87
 
    (Name: 'label';     Flags: [efSubelementContent, efPCDATAContent]),
88
 
    (Name: 'link';      Flags: []),
89
 
    (Name: 'map';       Flags: [efSubelementContent]),
90
 
    (Name: 'menu';      Flags: [efSubelementContent]),
91
 
    (Name: 'meta';      Flags: []),
92
 
    (Name: 'noframes';  Flags: [efSubelementContent, efPCDATAContent]),
93
 
    (Name: 'noscript';  Flags: [efSubelementContent, efPCDATAContent]),
94
 
    (Name: 'object';    Flags: [efSubelementContent, efPCDATAContent]),
95
 
    (Name: 'ol';        Flags: [efSubelementContent]),
96
 
    (Name: 'p';         Flags: [efSubelementContent, efPCDATAContent]),
97
 
    (Name: 'pre';       Flags: [efSubelementContent, efPCDATAContent, efPreserveWhitespace]),
98
 
    (Name: 'q';         Flags: [efSubelementContent, efPCDATAContent]),
99
 
    (Name: 's';         Flags: [efSubelementContent, efPCDATAContent]),
100
 
    (Name: 'samp';      Flags: [efSubelementContent, efPCDATAContent]),
101
 
    (Name: 'script';    Flags: [efPCDATAContent]),
102
 
    (Name: 'select';    Flags: [efSubelementContent]),
103
 
    (Name: 'small';     Flags: [efSubelementContent, efPCDATAContent]),
104
 
    (Name: 'span';      Flags: [efSubelementContent, efPCDATAContent]),
105
 
    (Name: 'strike';    Flags: [efSubelementContent, efPCDATAContent]),
106
 
    (Name: 'strong';    Flags: [efSubelementContent, efPCDATAContent]),
107
 
    (Name: 'style';     Flags: [efPCDATAContent]),
108
 
    (Name: 'sub';       Flags: [efSubelementContent, efPCDATAContent]),
109
 
    (Name: 'sup';       Flags: [efSubelementContent, efPCDATAContent]),
110
 
    (Name: 'table';     Flags: [efSubelementContent]),
111
 
    (Name: 'textarea';  Flags: [efPCDATAContent]),
112
 
    (Name: 'tbody';     Flags: [efSubelementContent]),
113
 
    (Name: 'td';        Flags: [efSubelementContent, efPCDATAContent]),
114
 
    (Name: 'tfoot';     Flags: [efSubelementContent]),
115
 
    (Name: 'th';        Flags: [efSubelementContent, efPCDATAContent]),
116
 
    (Name: 'thead';     Flags: [efSubelementContent]),
117
 
    (Name: 'tr';        Flags: [efSubelementContent]),
118
 
    (Name: 'tt';        Flags: [efSubelementContent, efPCDATAContent]),
119
 
    (Name: 'u';         Flags: [efSubelementContent, efPCDATAContent]),
120
 
    (Name: 'ul';        Flags: [efSubelementContent]),
121
 
    (Name: 'var';       Flags: [efSubelementContent, efPCDATAContent]));
122
 
 
123
 
 
124
 
  // ISO8859-1 mapping:
125
 
  HTMLEntities: array[#160..#255] of String = (
126
 
    // 160-191
127
 
    'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect',
128
 
    'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr',
129
 
    'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot',
130
 
    'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest',
131
 
    // 192-223
132
 
    'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'AElig', 'Ccedil',
133
 
    'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml',
134
 
    'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times',
135
 
    'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig',
136
 
    // 224-255
137
 
    'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil',
138
 
    'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml',
139
 
    'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide',
140
 
    'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml');
141
 
 
142
 
 
143
 
  UnicodeHTMLEntities: array[0..141] of String = (
144
 
    'Alpha',    // #913
145
 
    'Beta',     // #914
146
 
    'Gamma',    // #915
147
 
    'Delta',    // #916
148
 
    'Epsilon',  // #917
149
 
    'Zeta',     // #918
150
 
    'Eta',      // #919
151
 
    'Theta',    // #920
152
 
    'Iota',     // #921
153
 
    'Kappa',    // #922
154
 
    'Lambda',   // #923
155
 
    'Mu',       // #924
156
 
    'Nu',       // #925
157
 
    'Xi',       // #926
158
 
    'Omicron',  // #927
159
 
    'Pi',       // #928
160
 
    'Rho',      // #929
161
 
    'Sigma',    // #931
162
 
    'Tau',      // #932
163
 
    'Upsilon',  // #933
164
 
    'Phi',      // #934
165
 
    'Chi',      // #935
166
 
    'Psi',      // #936
167
 
    'Omega',    // #937
168
 
    'alpha',    // #945
169
 
    'beta',     // #946
170
 
    'gamma',    // #947
171
 
    'delta',    // #948
172
 
    'epsilon',  // #949
173
 
    'zeta',     // #950
174
 
    'eta',      // #951
175
 
    'theta',    // #952
176
 
    'iota',     // #953
177
 
    'kappa',    // #954
178
 
    'lambda',   // #955
179
 
    'mu',       // #956
180
 
    'nu',       // #957
181
 
    'xi',       // #958
182
 
    'omicron',  // #959
183
 
    'pi',       // #960
184
 
    'rho',      // #961
185
 
    'sigmaf',   // #962
186
 
    'sigma',    // #963
187
 
    'tau',      // #964
188
 
    'upsilon',  // #965
189
 
    'phi',      // #966
190
 
    'chi',      // #967
191
 
    'psi',      // #968
192
 
    'omega',    // #969
193
 
    'thetasym', // #977
194
 
    'upsih',    // #978
195
 
    'piv',      // #982
196
 
    'ensp',     // #8194
197
 
    'emsp',     // #8195
198
 
    'thinsp',   // #8201
199
 
    'zwnj',     // #8204
200
 
    'zwj',      // #8205
201
 
    'lrm',      // #8206
202
 
    'rlm',      // #8207
203
 
    'ndash',    // #8211
204
 
    'mdash',    // #8212
205
 
    'lsquo',    // #8216
206
 
    'rsquo',    // #8217
207
 
    'sbquo',    // #8218
208
 
    'ldquo',    // #8220
209
 
    'rdquo',    // #8221
210
 
    'bdquo',    // #8222
211
 
    'dagger',   // #8224
212
 
    'Dagger',   // #8225
213
 
    'bull',     // #8226
214
 
    'hellip',   // #8230
215
 
    'permil',   // #8240
216
 
    'prime',    // #8242
217
 
    'lsaquo',   // #8249
218
 
    'rsaquo',   // #8250
219
 
    'oline',    // #8254
220
 
    'frasl',    // #8260
221
 
    'image',    // #8465
222
 
    'weierp',   // #8472
223
 
    'real',     // #8476
224
 
    'trade',    // #8482
225
 
    'alefsym',  // #8501
226
 
    'larr',     // #8592
227
 
    'uarr',     // #8593
228
 
    'rarr',     // #8594
229
 
    'darr',     // #8595
230
 
    'harr',     // #8596
231
 
    'crarr',    // #8629
232
 
    'lArr',     // #8656
233
 
    'uArr',     // #8657
234
 
    'rArr',     // #8658
235
 
    'dArr',     // #8659
236
 
    'hArr',     // #8660
237
 
    'forall',   // #8704
238
 
    'part',     // #8706
239
 
    'exist',    // #8707
240
 
    'empty',    // #8709
241
 
    'nabla',    // #8711
242
 
    'isin',     // #8712
243
 
    'notin',    // #8713
244
 
    'ni',       // #8715
245
 
    'prod',     // #8719
246
 
    'sum',      // #8721
247
 
    'minus',    // #8722
248
 
    'lowast',   // #8727
249
 
    'radic',    // #8730
250
 
    'prop',     // #8733
251
 
    'infin',    // #8734
252
 
    'ang',      // #8736
253
 
    'and',      // #8743
254
 
    'or',       // #8744
255
 
    'cap',      // #8745
256
 
    'cup',      // #8746
257
 
    'int',      // #8747
258
 
    'there4',   // #8756
259
 
    'sim',      // #8764
260
 
    'cong',     // #8773
261
 
    'asymp',    // #8776
262
 
    'ne',       // #8800
263
 
    'equiv',    // #8801
264
 
    'le',       // #8804
265
 
    'ge',       // #8805
266
 
    'sub',      // #8834
267
 
    'sup',      // #8835
268
 
    'nsub',     // #8836
269
 
    'sube',     // #8838
270
 
    'supe',     // #8839
271
 
    'oplus',    // #8853
272
 
    'otimes',   // #8855
273
 
    'perp',     // #8869
274
 
    'sdot',     // #8901
275
 
    'lceil',    // #8968
276
 
    'rceil',    // #8969
277
 
    'lfloor',   // #8970
278
 
    'rfloor',   // #8971
279
 
    'lang',     // #9001
280
 
    'rang',     // #9002
281
 
    'loz',      // #9674
282
 
    'spades',   // #9824
283
 
    'clubs',    // #9827
284
 
    'hearts',   // #9829
285
 
    'diams'     // #9830
286
 
  );
287
 
 
288
 
 
289
 
 
290
 
function ResolveHTMLEntityReference(const Name: String;
291
 
  var Entity: Char): Boolean;
292
 
 
293
 
 
294
 
 
295
 
implementation
296
 
 
297
 
uses SysUtils;
298
 
 
299
 
function ResolveHTMLEntityReference(const Name: String;
300
 
  var Entity: Char): Boolean;
301
 
var
302
 
  Ent: Char;
303
 
  i: Integer;
304
 
begin
305
 
  if Name = 'quot' then
306
 
  begin
307
 
    Entity := '"';
308
 
    Result := True;
309
 
  end else if Name = 'apos' then
310
 
  begin
311
 
    Entity := '''';
312
 
    Result := True;
313
 
  end else if Name = 'amp' then
314
 
  begin
315
 
    Entity := '&';
316
 
    Result := True;
317
 
  end else if Name = 'lt' then
318
 
  begin
319
 
    Entity := '<';
320
 
    Result := True;
321
 
  end else if Name = 'gt' then
322
 
  begin
323
 
    Entity := '>';
324
 
    Result := True;
325
 
  end else if (Length(Name) > 0) and (Name[1] = '#') then
326
 
  begin
327
 
    for i := 2 to Length(Name) do
328
 
      if (Name[i] < '0') or (Name[i] > '9') then
329
 
        break;
330
 
    if i > 2 then
331
 
    begin
332
 
      Entity := Chr(StrToInt(Copy(Name, 2, i - 1)));
333
 
      Result := True;
334
 
    end else
335
 
      Result := False;
336
 
  end else
337
 
  begin
338
 
    for Ent := Low(HTMLEntities) to High(HTMLEntities) do
339
 
      if HTMLEntities[Ent] = Name then
340
 
      begin
341
 
        Entity := Ent;
342
 
        Result := True;
343
 
        exit;
344
 
      end;
345
 
    Result := False;
346
 
  end;
347
 
end;
348
 
 
349
 
end.
350
 
 
351
 
 
352
 
{
353
 
  $Log: htmldefs.pp,v $
354
 
  Revision 1.2  2003/03/16 22:32:44  sg
355
 
  * Fixed td and th attributes
356
 
 
357
 
  Revision 1.1  2002/11/29 18:04:25  sg
358
 
  * Improved HTML writing, now uses the HTML definition unit
359
 
    (moved from FPDoc into FCL)
360
 
 
361
 
}