dw_lintmpl.pp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. {
  2. FPDoc - Free Pascal Documentation Tool
  3. Copyright (C) 2000 - 2003 by
  4. Areca Systems GmbH / Sebastian Guenther, [email protected]
  5. * Linear output generator template
  6. See the file COPYING, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. }
  12. {
  13. This file implements an almost empty template for generating linear documentation.
  14. Usage: change the constants below. Do a search&replace where TTemplateWriter
  15. is changed to TMyFormatWriter (replace MyFormat with whatever you need)
  16. and fill in all methods.
  17. If your format is some hyperlinked format, split in several output files,
  18. you should take the dw_template.pp template instead.
  19. }
  20. {$mode objfpc}
  21. {$H+}
  22. unit dw_lintmpl;
  23. interface
  24. uses DOM, dGlobals, PasTree;
  25. const
  26. { Change this into the name of your writer}
  27. TemplateName = 'template';
  28. { Comprehensible description goes here:}
  29. STemplateUsageWriterDescr = 'Writes output in template format';
  30. { Extension for the template }
  31. TTemplateExtension = '.tpl';
  32. implementation
  33. uses SysUtils, Classes, dwLinear, dwriter;
  34. Type
  35. { TTemplateWriter }
  36. TTemplateWriter = class(TLinearWriter)
  37. protected
  38. FLink: String;
  39. FTableCount : Integer;
  40. FInVerbatim : Boolean;
  41. Inlist,
  42. TableRowStartFlag,
  43. TableCaptionWritten: Boolean;
  44. // Linear documentation methods overrides;
  45. procedure WriteLabel(Const S : String); override;
  46. procedure WriteIndex(Const S : String); override;
  47. Procedure WriteExampleFile(FN : String); override;
  48. Procedure StartProcedure; override;
  49. Procedure EndProcedure; override;
  50. Procedure StartProperty; override;
  51. Procedure EndProperty; override;
  52. Procedure StartSynopsis; override;
  53. Procedure StartDeclaration; override;
  54. Procedure StartVisibility; override;
  55. Procedure StartDescription; override;
  56. Procedure StartAccess; override;
  57. Procedure StartErrors; override;
  58. Procedure StartSeealso; override;
  59. Procedure EndSeealso; override;
  60. procedure StartUnitOverview(AModuleName,AModuleLabel : String);override;
  61. procedure WriteUnitEntry(UnitRef : TPasType); override;
  62. Procedure EndUnitOverview; override;
  63. function GetLabel(AElement: TPasElement): String; override;
  64. procedure StartListing(Frames: Boolean; const name: String); override;
  65. procedure EndListing; override;
  66. Function EscapeText(S : String) : String; override;
  67. Function StripText(S : String) : String; override;
  68. procedure WriteCommentLine; override;
  69. procedure WriteComment(Comment : String);override;
  70. procedure StartSection(SectionName : String);override;
  71. procedure StartSubSection(SubSectionName : String);override;
  72. procedure StartSubSubSection(SubSubSectionName : String);override;
  73. procedure StartChapter(ChapterName : String); override;
  74. procedure StartOverview(WithAccess : Boolean); override;
  75. procedure EndOverview; override;
  76. procedure WriteOverviewMember(ALabel,AName,Access,ADescr : String); override;
  77. procedure WriteOverviewMember(ALabel,AName,ADescr : String); override;
  78. Class Function FileNameExtension : String; override;
  79. // Description node conversion. Overrides for TFPDocWriter.
  80. procedure DescrBeginBold; override;
  81. procedure DescrEndBold; override;
  82. procedure DescrBeginItalic; override;
  83. procedure DescrEndItalic; override;
  84. procedure DescrBeginEmph; override;
  85. procedure DescrEndEmph; override;
  86. procedure DescrWriteFileEl(const AText: DOMString); override;
  87. procedure DescrWriteKeywordEl(const AText: DOMString); override;
  88. procedure DescrWriteVarEl(const AText: DOMString); override;
  89. procedure DescrBeginLink(const AId: DOMString); override;
  90. procedure DescrEndLink; override;
  91. procedure DescrWriteLinebreak; override;
  92. procedure DescrBeginParagraph; override;
  93. procedure DescrBeginCode(HasBorder: Boolean; const AHighlighterName: String); override;
  94. procedure DescrWriteCodeLine(const ALine: String); override;
  95. procedure DescrEndCode; override;
  96. procedure DescrEndParagraph; override;
  97. procedure DescrBeginOrderedList; override;
  98. procedure DescrEndOrderedList; override;
  99. procedure DescrBeginUnorderedList; override;
  100. procedure DescrEndUnorderedList; override;
  101. procedure DescrBeginDefinitionList; override;
  102. procedure DescrEndDefinitionList; override;
  103. procedure DescrBeginListItem; override;
  104. procedure DescrEndListItem; override;
  105. procedure DescrBeginDefinitionTerm; override;
  106. procedure DescrEndDefinitionTerm; override;
  107. procedure DescrBeginDefinitionEntry; override;
  108. procedure DescrEndDefinitionEntry; override;
  109. procedure DescrBeginSectionTitle; override;
  110. procedure DescrBeginSectionBody; override;
  111. procedure DescrEndSection; override;
  112. procedure DescrBeginRemark; override;
  113. procedure DescrEndRemark; override;
  114. procedure DescrBeginTable(ColCount: Integer; HasBorder: Boolean); override;
  115. procedure DescrEndTable; override;
  116. procedure DescrBeginTableCaption; override;
  117. procedure DescrEndTableCaption; override;
  118. procedure DescrBeginTableHeadRow; override;
  119. procedure DescrEndTableHeadRow; override;
  120. procedure DescrBeginTableRow; override;
  121. procedure DescrEndTableRow; override;
  122. procedure DescrBeginTableCell; override;
  123. procedure DescrEndTableCell; override;
  124. // TFPDocWriter class methods
  125. Function InterPretOption(Const Cmd,Arg : String) : boolean; override;
  126. Class procedure Usage(List: TStrings); override;
  127. end;
  128. { TFPDocWriter overrides }
  129. procedure TTemplateWriter.DescrBeginBold;
  130. begin
  131. { Start bold output }
  132. end;
  133. procedure TTemplateWriter.DescrEndBold;
  134. begin
  135. { End bold output }
  136. end;
  137. procedure TTemplateWriter.DescrBeginItalic;
  138. begin
  139. { Start italic output }
  140. end;
  141. procedure TTemplateWriter.DescrEndItalic;
  142. begin
  143. { End italic output }
  144. end;
  145. procedure TTemplateWriter.DescrBeginEmph;
  146. begin
  147. { Start emphasized output }
  148. end;
  149. procedure TTemplateWriter.DescrEndEmph;
  150. begin
  151. { End emphasized output }
  152. end;
  153. procedure TTemplateWriter.DescrWriteFileEl(const AText: DOMString);
  154. begin
  155. { format as file name }
  156. end;
  157. procedure TTemplateWriter.DescrWriteKeywordEl(const AText: DOMString);
  158. begin
  159. { Format as keyword }
  160. end;
  161. procedure TTemplateWriter.DescrWriteVarEl(const AText: DOMString);
  162. begin
  163. { Format as variable }
  164. end;
  165. procedure TTemplateWriter.DescrBeginLink(const AId: DOMString);
  166. begin
  167. { Start link to label ID - links are never nested.}
  168. end;
  169. procedure TTemplateWriter.DescrEndLink;
  170. begin
  171. { End link to label ID}
  172. end;
  173. procedure TTemplateWriter.DescrWriteLinebreak;
  174. begin
  175. { Start a new line. }
  176. end;
  177. procedure TTemplateWriter.DescrBeginParagraph;
  178. begin
  179. { Start a new paragraph }
  180. end;
  181. procedure TTemplateWriter.DescrEndParagraph;
  182. begin
  183. { End current paragraph }
  184. end;
  185. procedure TTemplateWriter.DescrBeginCode(HasBorder: Boolean;
  186. const AHighlighterName: String);
  187. begin
  188. { Start block of code }
  189. end;
  190. procedure TTemplateWriter.DescrWriteCodeLine(const ALine: String);
  191. begin
  192. { Write line of code }
  193. end;
  194. procedure TTemplateWriter.DescrEndCode;
  195. begin
  196. { End block of code }
  197. end;
  198. procedure TTemplateWriter.DescrBeginOrderedList;
  199. begin
  200. { Start numbered list }
  201. end;
  202. procedure TTemplateWriter.DescrEndOrderedList;
  203. begin
  204. { End numbered list }
  205. end;
  206. procedure TTemplateWriter.DescrBeginUnorderedList;
  207. begin
  208. { Start bulleted list }
  209. end;
  210. procedure TTemplateWriter.DescrEndUnorderedList;
  211. begin
  212. { End bulleted list }
  213. end;
  214. procedure TTemplateWriter.DescrBeginDefinitionList;
  215. begin
  216. { Start definition list }
  217. end;
  218. procedure TTemplateWriter.DescrEndDefinitionList;
  219. begin
  220. { End definition list }
  221. end;
  222. procedure TTemplateWriter.DescrBeginListItem;
  223. begin
  224. { Start list item (both bulleted/numbered) }
  225. end;
  226. procedure TTemplateWriter.DescrEndListItem;
  227. begin
  228. { End list item (both bulleted/numbered) }
  229. end;
  230. procedure TTemplateWriter.DescrBeginDefinitionTerm;
  231. begin
  232. { Start definition term }
  233. end;
  234. procedure TTemplateWriter.DescrEndDefinitionTerm;
  235. begin
  236. { End definition term }
  237. end;
  238. procedure TTemplateWriter.DescrBeginDefinitionEntry;
  239. begin
  240. { start definition explanation }
  241. end;
  242. procedure TTemplateWriter.DescrEndDefinitionEntry;
  243. begin
  244. { End definition explanation }
  245. end;
  246. procedure TTemplateWriter.DescrBeginSectionTitle;
  247. begin
  248. { Start section title }
  249. end;
  250. procedure TTemplateWriter.DescrBeginSectionBody;
  251. begin
  252. { Start section body }
  253. end;
  254. procedure TTemplateWriter.DescrEndSection;
  255. begin
  256. { End section body }
  257. end;
  258. procedure TTemplateWriter.DescrBeginRemark;
  259. begin
  260. { Start remark paragraph }
  261. end;
  262. procedure TTemplateWriter.DescrEndRemark;
  263. begin
  264. { End remark paragraph }
  265. end;
  266. procedure TTemplateWriter.DescrBeginTable(ColCount: Integer; HasBorder: Boolean);
  267. begin
  268. { Start table with ColCount columns, and with border }
  269. end;
  270. procedure TTemplateWriter.DescrEndTable;
  271. begin
  272. end;
  273. procedure TTemplateWriter.DescrBeginTableCaption;
  274. begin
  275. end;
  276. procedure TTemplateWriter.DescrEndTableCaption;
  277. begin
  278. end;
  279. procedure TTemplateWriter.DescrBeginTableHeadRow;
  280. begin
  281. end;
  282. procedure TTemplateWriter.DescrEndTableHeadRow;
  283. begin
  284. end;
  285. procedure TTemplateWriter.DescrBeginTableRow;
  286. begin
  287. end;
  288. procedure TTemplateWriter.DescrEndTableRow;
  289. begin
  290. end;
  291. procedure TTemplateWriter.DescrBeginTableCell;
  292. begin
  293. end;
  294. procedure TTemplateWriter.DescrEndTableCell;
  295. begin
  296. end;
  297. { TLinearWriter overrides}
  298. { Treat backend-specific options }
  299. Function TTemplateWriter.InterPretOption(Const Cmd,Arg : String) : boolean;
  300. begin
  301. Result:=False;
  302. end;
  303. Class procedure TTemplateWriter.Usage(List: TStrings);
  304. begin
  305. // Add options to list. Eelement I is option, element i+1 is explanation.
  306. end;
  307. function TTemplateWriter.FileNameExtension: String;
  308. begin
  309. Result:=TTemplateExtension;
  310. end;
  311. function TTemplateWriter.GetLabel(AElement: TPasElement): String;
  312. begin
  313. end;
  314. Function TTemplateWriter.EscapeText(S : String) : String;
  315. begin
  316. Result:=S;
  317. end;
  318. Function TTemplateWriter.StripText(S : String) : String;
  319. begin
  320. Result:=S;
  321. end;
  322. procedure TTemplateWriter.WriteLabel(const s: String);
  323. begin
  324. end;
  325. procedure TTemplateWriter.WriteIndex(const s : String);
  326. begin
  327. end;
  328. procedure TTemplateWriter.StartListing(Frames: Boolean; const name: String);
  329. begin
  330. end;
  331. procedure TTemplateWriter.EndListing;
  332. begin
  333. end;
  334. procedure TTemplateWriter.WriteCommentLine;
  335. begin
  336. end;
  337. procedure TTemplateWriter.WriteComment(Comment : String);
  338. begin
  339. end;
  340. procedure TTemplateWriter.StartChapter(ChapterName : String);
  341. begin
  342. end;
  343. procedure TTemplateWriter.StartSection(SectionName : String);
  344. begin
  345. end;
  346. procedure TTemplateWriter.StartSubSection(SubSectionName : String);
  347. begin
  348. end;
  349. procedure TTemplateWriter.StartSubSubSection(SubSubSectionName : String);
  350. begin
  351. end;
  352. Procedure TTemplateWriter.StartProcedure;
  353. begin
  354. end;
  355. Procedure TTemplateWriter.StartSynopsis;
  356. begin
  357. end;
  358. Procedure TTemplateWriter.StartDeclaration;
  359. begin
  360. end;
  361. Procedure TTemplateWriter.StartVisibility;
  362. begin
  363. end;
  364. Procedure TTemplateWriter.StartDescription;
  365. begin
  366. end;
  367. Procedure TTemplateWriter.StartErrors;
  368. begin
  369. end;
  370. Procedure TTemplateWriter.StartAccess;
  371. begin
  372. end;
  373. Procedure TTemplateWriter.EndProcedure;
  374. begin
  375. end;
  376. Procedure TTemplateWriter.StartProperty;
  377. begin
  378. end;
  379. Procedure TTemplateWriter.EndProperty;
  380. begin
  381. end;
  382. procedure TTemplateWriter.WriteExampleFile(FN : String);
  383. begin
  384. end;
  385. procedure TTemplateWriter.StartOverview(WithAccess : Boolean);
  386. begin
  387. {
  388. If With access then it is a property overview.
  389. Otherwise it is a method/function overview.
  390. If tabular output is generated, the preferred output order is:
  391. With access:
  392. Col 1 : Page reference
  393. Col 2 : Property Name
  394. Col 3 : Accessibility (r/w)
  395. Col 4 : Description
  396. Without access:
  397. Col 1 : Page reference
  398. Col 2 : Method name
  399. Col 3 : Description
  400. (See the two WriteOverviewMember functions)
  401. }
  402. end;
  403. procedure TTemplateWriter.EndOverview;
  404. begin
  405. { End of overview }
  406. end;
  407. procedure TTemplateWriter.WriteOverviewMember(ALabel,AName,Access,ADescr : String);
  408. begin
  409. { Write one entry in property overview:
  410. ALabel : Label, as returned by GetLabel
  411. AName : Property name
  412. Access : Property acces (r/w/a)
  413. Descr : Description
  414. }
  415. end;
  416. procedure TTemplateWriter.WriteOverviewMember(ALabel,AName,ADescr : String);
  417. begin
  418. { Write one entry in method overview:
  419. ALabel : Label, as returned by GetLabel
  420. AName : Method name
  421. Descr : Description
  422. }
  423. end;
  424. Procedure TTemplateWriter.StartSeeAlso;
  425. begin
  426. end;
  427. procedure TTemplateWriter.EndSeealso;
  428. begin
  429. end;
  430. procedure TTemplateWriter.StartUnitOverview(AModuleName,AModuleLabel : String);
  431. begin
  432. { Start of unit overview.
  433. AModuleName : Name of current unit.
  434. AModuleLabel : Label name of current unit.
  435. }
  436. end;
  437. procedure TTemplateWriter.WriteUnitEntry(UnitRef : TPasType);
  438. begin
  439. { Write one unit entry }
  440. end;
  441. procedure TTemplateWriter.EndUnitOverview;
  442. begin
  443. { end of unit overview }
  444. end;
  445. initialization
  446. // Do not localize templatename
  447. RegisterWriter(TTemplateWriter,TemplateName,STemplateUsageWriterDescr);
  448. finalization
  449. UnRegisterWriter(TemplateName);
  450. end.