@@ -132,14 +132,16 @@ TNulDocumentHiliter = class sealed(TDocumentHiliter)
132
132
// / <summary>
133
133
// / Creates a highlighted source code document in XHTML format.
134
134
// / </summary>
135
- TXHTMLDocumentHiliter = class sealed (TDocumentHiliter)
135
+ THTMLDocumentHiliter = class abstract (TDocumentHiliter)
136
136
strict private
137
137
// / <summary>Generates the CSS rules to be used in the document.</summary>
138
138
// / <param name="Attrs">IHiliteAttrs [in] Highlighting styles used in
139
139
// / document.</param>
140
140
// / <returns>string. CSS rules that apply styles specified in Attrs.
141
141
// / </returns>
142
142
class function GenerateCSSRules (Attrs: IHiliteAttrs): string;
143
+ strict protected
144
+ class function BuilderClass : THTMLBuilderClass; virtual ; abstract ;
143
145
public
144
146
// / <summary>Creates XHTML document containing highlighted source code.
145
147
// / </summary>
@@ -154,6 +156,20 @@ TXHTMLDocumentHiliter = class sealed(TDocumentHiliter)
154
156
override;
155
157
end ;
156
158
159
+ // / <summary>Creates a highlighted source code document in XHTML format.
160
+ // / </summary>
161
+ TXHTMLDocumentHiliter = class sealed(THTMLDocumentHiliter)
162
+ strict protected
163
+ class function BuilderClass : THTMLBuilderClass; override;
164
+ end ;
165
+
166
+ // / <summary>Creates a highlighted source code document in HTML5 format.
167
+ // / </summary>
168
+ THTML5DocumentHiliter = class sealed(THTMLDocumentHiliter)
169
+ strict protected
170
+ class function BuilderClass : THTMLBuilderClass; override;
171
+ end ;
172
+
157
173
type
158
174
// / <summary>
159
175
// / Creates a highlighted source code document in rich text format.
@@ -242,55 +258,56 @@ TRTFHiliteRenderer = class(THiliteRenderer, IHiliteRenderer)
242
258
end ;
243
259
244
260
type
245
- // / <summary>
246
- // / Renders highlighted source code in XHTML format. Generated code is
247
- // / recorded in a given HTML code builder object.
261
+ // / <summary>Renders highlighted source code in any supported HTML format.
248
262
// / </summary>
249
- // / <remarks>
250
- // / Designed for use with TSyntaxHiliter objects.
251
- // / </remarks>
263
+ // / <remarks>Designed for use with <c>TSyntaxHiliter</c> objects.</remarks>
252
264
THTMLHiliteRenderer = class (THiliteRenderer, IHiliteRenderer)
253
265
strict private
254
266
var
255
- // / <summary>Object used to record generated XHTML code .</summary>
267
+ // / <summary>Object used to build up the generated HTML .</summary>
256
268
fBuilder: THTMLBuilder;
257
- // / <summary>Flag indicating if writing first line of output.</summary>
269
+ // / <summary>Flag indicating if writing the first line of output.
270
+ // / </summary>
258
271
fIsFirstLine: Boolean;
259
272
public
260
- // / <summary>Object constructor. Sets up object to render documents.
261
- // / </summary>
262
- // / <param name="Builder">THTMLBuilder [in] Object that receives generated
263
- // / XHTML code.</param>
264
- // / <param name="Attrs">IHiliteAttrs [in] Specifies required highlighting
265
- // / style. If nil document is not highlighted.</param>
273
+ // / <summary>Object constructor. Sets up the object to render HTML
274
+ // / documents.</summary>
275
+ // / <param name="Builder"><c>THTMLBuilder</c> [in] Object used to build the
276
+ // / required HTML. <c>Builder</c> must be an instance of a concreate
277
+ // / descendant class of <c>THTMLBuilder</c>, which is abstract. The type of
278
+ // / <c>Builder</c> determines the type of HTML that is generated.</param>
279
+ // / <param name="Attrs"><c>IHiliteAttrs</c> [in] Specifies required
280
+ // / highlighting style. If <c>nil</c> the document is not highlighted.
281
+ // / </param>
266
282
constructor Create(const Builder: THTMLBuilder;
267
283
const Attrs: IHiliteAttrs = nil );
268
- // / <summary>Initialises XHTML ready to receive highlighted code.</summary>
269
- // / <remarks>Method of IHiliteRenderer.</remarks>
284
+ // / <summary>Initialises the HTML ready to receive highlighted code.
285
+ // / </summary>
286
+ // / <remarks>Method of <c>IHiliteRenderer</c>.</remarks>
270
287
procedure Initialise ;
271
- // / <summary>Tidies up XHTML after all highlighted code processed.
288
+ // / <summary>Tidies up the HTML after all highlighted code is processed.
272
289
// / </summary>
273
- // / <remarks>Method of IHiliteRenderer.</remarks>
290
+ // / <remarks>Method of <c> IHiliteRenderer</c> .</remarks>
274
291
procedure Finalise ;
275
- // / <summary>Emits new line if necessary.</summary>
276
- // / <remarks>Method of IHiliteRenderer.</remarks>
292
+ // / <summary>Emits a new line if necessary.</summary>
293
+ // / <remarks>Method of <c> IHiliteRenderer</c> .</remarks>
277
294
procedure BeginLine ;
278
295
// / <summary>Does nothing.</summary>
279
296
// / <remarks>
280
- // / <para>Handling of new lines is all done by BeginLine.</para>
281
- // / <para >Method of IHiliteRenderer.</para >
297
+ // / <para>Handling of new lines is all done by <c> BeginLine</c> .</para>
298
+ // / <remarks >Method of <c> IHiliteRenderer</c> .</remarks >
282
299
// / </remarks>
283
300
procedure EndLine ;
284
- // / <summary>Emits any span tag required to style following source code
285
- // / element as specified by Elem.</summary>
286
- // / <remarks>Method of IHiliteRenderer.</remarks>
301
+ // / <summary>Emits any < span> tag required to style the following
302
+ // / source code element, specified by <c> Elem</c> .</summary>
303
+ // / <remarks>Method of <c> IHiliteRenderer</c> .</remarks>
287
304
procedure BeforeElem (Elem: THiliteElement);
288
- // / <summary>Writes given source code element text.</summary>
289
- // / <remarks>Method of IHiliteRenderer.</remarks>
305
+ // / <summary>Writes the given source code element text.</summary>
306
+ // / <remarks>Method of <c> IHiliteRenderer</c> .</remarks>
290
307
procedure WriteElemText (const Text: string);
291
- // / <summary>Closes any span tag used to style source code element
292
- // / specified by Elem.</summary>
293
- // / <remarks>Method of IHiliteRenderer.</remarks>
308
+ // / <summary>Closes any < span> tag used to style the source code
309
+ // / element specified by <c> Elem</c> .</summary>
310
+ // / <remarks>Method of <c> IHiliteRenderer</c> .</remarks>
294
311
procedure AfterElem (Elem: THiliteElement);
295
312
end ;
296
313
@@ -372,9 +389,9 @@ class function TNulDocumentHiliter.Hilite(const RawCode: string;
372
389
Result := TEncodedData.Create(RawCode, etUnicode);
373
390
end ;
374
391
375
- { TXHTMLDocumentHiliter }
392
+ { THTMLDocumentHiliter }
376
393
377
- class function TXHTMLDocumentHiliter .GenerateCSSRules (Attrs: IHiliteAttrs):
394
+ class function THTMLDocumentHiliter .GenerateCSSRules (Attrs: IHiliteAttrs):
378
395
string;
379
396
var
380
397
CSSBuilder: TCSSBuilder; // builds CSS code
@@ -396,7 +413,7 @@ class function TXHTMLDocumentHiliter.GenerateCSSRules(Attrs: IHiliteAttrs):
396
413
end ;
397
414
end ;
398
415
399
- class function TXHTMLDocumentHiliter .Hilite (const RawCode: string;
416
+ class function THTMLDocumentHiliter .Hilite (const RawCode: string;
400
417
Attrs: IHiliteAttrs; const Title: string): TEncodedData;
401
418
resourcestring
402
419
// Default document title
@@ -405,7 +422,7 @@ class function TXHTMLDocumentHiliter.Hilite(const RawCode: string;
405
422
Renderer: IHiliteRenderer; // XHTML renderer object
406
423
Builder: THTMLBuilder; // object used to construct XHTML document
407
424
begin
408
- Builder := THTMLBuilder .Create;
425
+ Builder := BuilderClass .Create;
409
426
try
410
427
if Title <> ' ' then
411
428
Builder.Title := Title
@@ -420,6 +437,20 @@ class function TXHTMLDocumentHiliter.Hilite(const RawCode: string;
420
437
end ;
421
438
end ;
422
439
440
+ { TXHTMLDocumentHiliter }
441
+
442
+ class function TXHTMLDocumentHiliter.BuilderClass : THTMLBuilderClass;
443
+ begin
444
+ Result := TXHTMLBuilder;
445
+ end ;
446
+
447
+ { THTML5DocumentHiliter }
448
+
449
+ class function THTML5DocumentHiliter.BuilderClass : THTMLBuilderClass;
450
+ begin
451
+ Result := THTML5Builder;
452
+ end ;
453
+
423
454
{ TRTFDocumentHiliter }
424
455
425
456
class function TRTFDocumentHiliter.Hilite (const RawCode: string;
0 commit comments