dw_lintmpl.pp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  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(const ALabel,AName,Access,ADescr : String); override;
  77. procedure WriteOverviewMember(const ALabel,AName,ADescr : String); override;
  78. // Description node conversion. Overrides for TFPDocWriter.
  79. procedure DescrBeginBold; override;
  80. procedure DescrEndBold; override;
  81. procedure DescrBeginItalic; override;
  82. procedure DescrEndItalic; override;
  83. procedure DescrBeginEmph; override;
  84. procedure DescrEndEmph; override;
  85. procedure DescrWriteFileEl(const AText: DOMString); override;
  86. procedure DescrWriteKeywordEl(const AText: DOMString); override;
  87. procedure DescrWriteVarEl(const AText: DOMString); override;
  88. procedure DescrBeginLink(const AId: DOMString); override;
  89. procedure DescrEndLink; override;
  90. procedure DescrWriteLinebreak; override;
  91. procedure DescrBeginParagraph; override;
  92. procedure DescrBeginCode(HasBorder: Boolean; const AHighlighterName: String); override;
  93. procedure DescrWriteCodeLine(const ALine: String); override;
  94. procedure DescrEndCode; override;
  95. procedure DescrEndParagraph; override;
  96. procedure DescrBeginOrderedList; override;
  97. procedure DescrEndOrderedList; override;
  98. procedure DescrBeginUnorderedList; override;
  99. procedure DescrEndUnorderedList; override;
  100. procedure DescrBeginDefinitionList; override;
  101. procedure DescrEndDefinitionList; override;
  102. procedure DescrBeginListItem; override;
  103. procedure DescrEndListItem; override;
  104. procedure DescrBeginDefinitionTerm; override;
  105. procedure DescrEndDefinitionTerm; override;
  106. procedure DescrBeginDefinitionEntry; override;
  107. procedure DescrEndDefinitionEntry; override;
  108. procedure DescrBeginSectionTitle; override;
  109. procedure DescrBeginSectionBody; override;
  110. procedure DescrEndSection; override;
  111. procedure DescrBeginRemark; override;
  112. procedure DescrEndRemark; override;
  113. procedure DescrBeginTable(ColCount: Integer; HasBorder: Boolean); override;
  114. procedure DescrEndTable; override;
  115. procedure DescrBeginTableCaption; override;
  116. procedure DescrEndTableCaption; override;
  117. procedure DescrBeginTableHeadRow; override;
  118. procedure DescrEndTableHeadRow; override;
  119. procedure DescrBeginTableRow; override;
  120. procedure DescrEndTableRow; override;
  121. procedure DescrBeginTableCell; override;
  122. procedure DescrEndTableCell; override;
  123. // TFPDocWriter class methods
  124. Function InterPretOption(Const Cmd,Arg : String) : boolean; override;
  125. public
  126. Class Function FileNameExtension : String; override;
  127. Class procedure Usage(List: TStrings); override;
  128. end;
  129. { TFPDocWriter overrides }
  130. procedure TTemplateWriter.DescrBeginBold;
  131. begin
  132. { Start bold output }
  133. end;
  134. procedure TTemplateWriter.DescrEndBold;
  135. begin
  136. { End bold output }
  137. end;
  138. procedure TTemplateWriter.DescrBeginItalic;
  139. begin
  140. { Start italic output }
  141. end;
  142. procedure TTemplateWriter.DescrEndItalic;
  143. begin
  144. { End italic output }
  145. end;
  146. procedure TTemplateWriter.DescrBeginEmph;
  147. begin
  148. { Start emphasized output }
  149. end;
  150. procedure TTemplateWriter.DescrEndEmph;
  151. begin
  152. { End emphasized output }
  153. end;
  154. procedure TTemplateWriter.DescrWriteFileEl(const AText: DOMString);
  155. begin
  156. { format as file name }
  157. end;
  158. procedure TTemplateWriter.DescrWriteKeywordEl(const AText: DOMString);
  159. begin
  160. { Format as keyword }
  161. end;
  162. procedure TTemplateWriter.DescrWriteVarEl(const AText: DOMString);
  163. begin
  164. { Format as variable }
  165. end;
  166. procedure TTemplateWriter.DescrBeginLink(const AId: DOMString);
  167. begin
  168. { Start link to label ID - links are never nested.}
  169. end;
  170. procedure TTemplateWriter.DescrEndLink;
  171. begin
  172. { End link to label ID}
  173. end;
  174. procedure TTemplateWriter.DescrWriteLinebreak;
  175. begin
  176. { Start a new line. }
  177. end;
  178. procedure TTemplateWriter.DescrBeginParagraph;
  179. begin
  180. { Start a new paragraph }
  181. end;
  182. procedure TTemplateWriter.DescrEndParagraph;
  183. begin
  184. { End current paragraph }
  185. end;
  186. procedure TTemplateWriter.DescrBeginCode(HasBorder: Boolean;
  187. const AHighlighterName: String);
  188. begin
  189. { Start block of code }
  190. end;
  191. procedure TTemplateWriter.DescrWriteCodeLine(const ALine: String);
  192. begin
  193. { Write line of code }
  194. end;
  195. procedure TTemplateWriter.DescrEndCode;
  196. begin
  197. { End block of code }
  198. end;
  199. procedure TTemplateWriter.DescrBeginOrderedList;
  200. begin
  201. { Start numbered list }
  202. end;
  203. procedure TTemplateWriter.DescrEndOrderedList;
  204. begin
  205. { End numbered list }
  206. end;
  207. procedure TTemplateWriter.DescrBeginUnorderedList;
  208. begin
  209. { Start bulleted list }
  210. end;
  211. procedure TTemplateWriter.DescrEndUnorderedList;
  212. begin
  213. { End bulleted list }
  214. end;
  215. procedure TTemplateWriter.DescrBeginDefinitionList;
  216. begin
  217. { Start definition list }
  218. end;
  219. procedure TTemplateWriter.DescrEndDefinitionList;
  220. begin
  221. { End definition list }
  222. end;
  223. procedure TTemplateWriter.DescrBeginListItem;
  224. begin
  225. { Start list item (both bulleted/numbered) }
  226. end;
  227. procedure TTemplateWriter.DescrEndListItem;
  228. begin
  229. { End list item (both bulleted/numbered) }
  230. end;
  231. procedure TTemplateWriter.DescrBeginDefinitionTerm;
  232. begin
  233. { Start definition term }
  234. end;
  235. procedure TTemplateWriter.DescrEndDefinitionTerm;
  236. begin
  237. { End definition term }
  238. end;
  239. procedure TTemplateWriter.DescrBeginDefinitionEntry;
  240. begin
  241. { start definition explanation }
  242. end;
  243. procedure TTemplateWriter.DescrEndDefinitionEntry;
  244. begin
  245. { End definition explanation }
  246. end;
  247. procedure TTemplateWriter.DescrBeginSectionTitle;
  248. begin
  249. { Start section title }
  250. end;
  251. procedure TTemplateWriter.DescrBeginSectionBody;
  252. begin
  253. { Start section body }
  254. end;
  255. procedure TTemplateWriter.DescrEndSection;
  256. begin
  257. { End section body }
  258. end;
  259. procedure TTemplateWriter.DescrBeginRemark;
  260. begin
  261. { Start remark paragraph }
  262. end;
  263. procedure TTemplateWriter.DescrEndRemark;
  264. begin
  265. { End remark paragraph }
  266. end;
  267. procedure TTemplateWriter.DescrBeginTable(ColCount: Integer; HasBorder: Boolean);
  268. begin
  269. { Start table with ColCount columns, and with border }
  270. end;
  271. procedure TTemplateWriter.DescrEndTable;
  272. begin
  273. end;
  274. procedure TTemplateWriter.DescrBeginTableCaption;
  275. begin
  276. end;
  277. procedure TTemplateWriter.DescrEndTableCaption;
  278. begin
  279. end;
  280. procedure TTemplateWriter.DescrBeginTableHeadRow;
  281. begin
  282. end;
  283. procedure TTemplateWriter.DescrEndTableHeadRow;
  284. begin
  285. end;
  286. procedure TTemplateWriter.DescrBeginTableRow;
  287. begin
  288. end;
  289. procedure TTemplateWriter.DescrEndTableRow;
  290. begin
  291. end;
  292. procedure TTemplateWriter.DescrBeginTableCell;
  293. begin
  294. end;
  295. procedure TTemplateWriter.DescrEndTableCell;
  296. begin
  297. end;
  298. { TLinearWriter overrides}
  299. { Treat backend-specific options }
  300. Function TTemplateWriter.InterPretOption(Const Cmd,Arg : String) : boolean;
  301. begin
  302. Result:=False;
  303. end;
  304. Class procedure TTemplateWriter.Usage(List: TStrings);
  305. begin
  306. // Add options to list. Eelement I is option, element i+1 is explanation.
  307. end;
  308. class function TTemplateWriter.FileNameExtension: String;
  309. begin
  310. Result:=TTemplateExtension;
  311. end;
  312. function TTemplateWriter.GetLabel(AElement: TPasElement): String;
  313. begin
  314. end;
  315. Function TTemplateWriter.EscapeText(S : String) : String;
  316. begin
  317. Result:=S;
  318. end;
  319. Function TTemplateWriter.StripText(S : String) : String;
  320. begin
  321. Result:=S;
  322. end;
  323. procedure TTemplateWriter.WriteLabel(const s: String);
  324. begin
  325. end;
  326. procedure TTemplateWriter.WriteIndex(const s : String);
  327. begin
  328. end;
  329. procedure TTemplateWriter.StartListing(Frames: Boolean; const name: String);
  330. begin
  331. end;
  332. procedure TTemplateWriter.EndListing;
  333. begin
  334. end;
  335. procedure TTemplateWriter.WriteCommentLine;
  336. begin
  337. end;
  338. procedure TTemplateWriter.WriteComment(Comment : String);
  339. begin
  340. end;
  341. procedure TTemplateWriter.StartChapter(ChapterName : String);
  342. begin
  343. end;
  344. procedure TTemplateWriter.StartSection(SectionName : String);
  345. begin
  346. end;
  347. procedure TTemplateWriter.StartSubSection(SubSectionName : String);
  348. begin
  349. end;
  350. procedure TTemplateWriter.StartSubSubSection(SubSubSectionName : String);
  351. begin
  352. end;
  353. Procedure TTemplateWriter.StartProcedure;
  354. begin
  355. end;
  356. Procedure TTemplateWriter.StartSynopsis;
  357. begin
  358. end;
  359. Procedure TTemplateWriter.StartDeclaration;
  360. begin
  361. end;
  362. Procedure TTemplateWriter.StartVisibility;
  363. begin
  364. end;
  365. Procedure TTemplateWriter.StartDescription;
  366. begin
  367. end;
  368. Procedure TTemplateWriter.StartErrors;
  369. begin
  370. end;
  371. Procedure TTemplateWriter.StartAccess;
  372. begin
  373. end;
  374. Procedure TTemplateWriter.EndProcedure;
  375. begin
  376. end;
  377. Procedure TTemplateWriter.StartProperty;
  378. begin
  379. end;
  380. Procedure TTemplateWriter.EndProperty;
  381. begin
  382. end;
  383. procedure TTemplateWriter.WriteExampleFile(FN : String);
  384. begin
  385. end;
  386. procedure TTemplateWriter.StartOverview(WithAccess : Boolean);
  387. begin
  388. {
  389. If With access then it is a property overview.
  390. Otherwise it is a method/function overview.
  391. If tabular output is generated, the preferred output order is:
  392. With access:
  393. Col 1 : Page reference
  394. Col 2 : Property Name
  395. Col 3 : Accessibility (r/w)
  396. Col 4 : Description
  397. Without access:
  398. Col 1 : Page reference
  399. Col 2 : Method name
  400. Col 3 : Description
  401. (See the two WriteOverviewMember functions)
  402. }
  403. end;
  404. procedure TTemplateWriter.EndOverview;
  405. begin
  406. { End of overview }
  407. end;
  408. procedure TTemplateWriter.WriteOverviewMember(Const ALabel,AName,Access,ADescr : String);
  409. begin
  410. { Write one entry in property overview:
  411. ALabel : Label, as returned by GetLabel
  412. AName : Property name
  413. Access : Property acces (r/w/a)
  414. Descr : Description
  415. }
  416. end;
  417. procedure TTemplateWriter.WriteOverviewMember(Const ALabel,AName,ADescr : String);
  418. begin
  419. { Write one entry in method overview:
  420. ALabel : Label, as returned by GetLabel
  421. AName : Method name
  422. Descr : Description
  423. }
  424. end;
  425. Procedure TTemplateWriter.StartSeeAlso;
  426. begin
  427. end;
  428. procedure TTemplateWriter.EndSeealso;
  429. begin
  430. end;
  431. procedure TTemplateWriter.StartUnitOverview(AModuleName,AModuleLabel : String);
  432. begin
  433. { Start of unit overview.
  434. AModuleName : Name of current unit.
  435. AModuleLabel : Label name of current unit.
  436. }
  437. end;
  438. procedure TTemplateWriter.WriteUnitEntry(UnitRef : TPasType);
  439. begin
  440. { Write one unit entry }
  441. end;
  442. procedure TTemplateWriter.EndUnitOverview;
  443. begin
  444. { end of unit overview }
  445. end;
  446. initialization
  447. // Do not localize templatename
  448. RegisterWriter(TTemplateWriter,TemplateName,STemplateUsageWriterDescr);
  449. finalization
  450. UnRegisterWriter(TemplateName);
  451. end.