taskjuggler 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. data/COPYING +280 -0
  2. data/README +31 -0
  3. data/Rakefile +20 -0
  4. data/benchmarks/UTF-8-Strings.rb +58 -0
  5. data/benchmarks/allocate.tjp +30 -0
  6. data/benchmarks/booking.tjp +62 -0
  7. data/benchmarks/depends.tjp +112 -0
  8. data/benchmarks/htmltaskreport.tjp +45 -0
  9. data/benchmarks/runbench.rb +24 -0
  10. data/bin/tj3 +3 -0
  11. data/bin/tj3man +3 -0
  12. data/doc/classes/AppConfig.html +808 -0
  13. data/doc/classes/Arguments.html +226 -0
  14. data/doc/classes/String.html +395 -0
  15. data/doc/classes/TaskJuggler.html +1358 -0
  16. data/doc/classes/TaskJuggler/Account.html +257 -0
  17. data/doc/classes/TaskJuggler/AccountScenario.html +218 -0
  18. data/doc/classes/TaskJuggler/Allocation.html +419 -0
  19. data/doc/classes/TaskJuggler/AllocationAttribute.html +291 -0
  20. data/doc/classes/TaskJuggler/AttributeBase.html +608 -0
  21. data/doc/classes/TaskJuggler/AttributeDefinition.html +259 -0
  22. data/doc/classes/TaskJuggler/Booking.html +307 -0
  23. data/doc/classes/TaskJuggler/BookingListAttribute.html +263 -0
  24. data/doc/classes/TaskJuggler/BooleanAttribute.html +261 -0
  25. data/doc/classes/TaskJuggler/CSVFile.html +325 -0
  26. data/doc/classes/TaskJuggler/Charge.html +279 -0
  27. data/doc/classes/TaskJuggler/ChargeListAttribute.html +229 -0
  28. data/doc/classes/TaskJuggler/ChargeSet.html +440 -0
  29. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +276 -0
  30. data/doc/classes/TaskJuggler/ColumnTable.html +260 -0
  31. data/doc/classes/TaskJuggler/DateAttribute.html +194 -0
  32. data/doc/classes/TaskJuggler/DependencyListAttribute.html +267 -0
  33. data/doc/classes/TaskJuggler/DurationAttribute.html +229 -0
  34. data/doc/classes/TaskJuggler/FixnumAttribute.html +194 -0
  35. data/doc/classes/TaskJuggler/FlagListAttribute.html +263 -0
  36. data/doc/classes/TaskJuggler/FloatAttribute.html +229 -0
  37. data/doc/classes/TaskJuggler/GanttChart.html +667 -0
  38. data/doc/classes/TaskJuggler/GanttContainer.html +441 -0
  39. data/doc/classes/TaskJuggler/GanttHeader.html +280 -0
  40. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +245 -0
  41. data/doc/classes/TaskJuggler/GanttLine.html +398 -0
  42. data/doc/classes/TaskJuggler/GanttLoadStack.html +327 -0
  43. data/doc/classes/TaskJuggler/GanttMilestone.html +415 -0
  44. data/doc/classes/TaskJuggler/GanttRouter.html +425 -0
  45. data/doc/classes/TaskJuggler/GanttTaskBar.html +429 -0
  46. data/doc/classes/TaskJuggler/HTMLDocument.html +240 -0
  47. data/doc/classes/TaskJuggler/HTMLGraphics.html +231 -0
  48. data/doc/classes/TaskJuggler/Interval.html +552 -0
  49. data/doc/classes/TaskJuggler/IntervalListAttribute.html +267 -0
  50. data/doc/classes/TaskJuggler/KeywordDocumentation.html +796 -0
  51. data/doc/classes/TaskJuggler/Limits.html +416 -0
  52. data/doc/classes/TaskJuggler/Limits/Limit.html +381 -0
  53. data/doc/classes/TaskJuggler/LimitsAttribute.html +261 -0
  54. data/doc/classes/TaskJuggler/Log.html +613 -0
  55. data/doc/classes/TaskJuggler/LogicalAttribute.html +226 -0
  56. data/doc/classes/TaskJuggler/LogicalExpression.html +251 -0
  57. data/doc/classes/TaskJuggler/LogicalFlag.html +229 -0
  58. data/doc/classes/TaskJuggler/LogicalFunction.html +324 -0
  59. data/doc/classes/TaskJuggler/LogicalOperation.html +299 -0
  60. data/doc/classes/TaskJuggler/Macro.html +194 -0
  61. data/doc/classes/TaskJuggler/MacroParser.html +360 -0
  62. data/doc/classes/TaskJuggler/MacroTable.html +366 -0
  63. data/doc/classes/TaskJuggler/Message.html +281 -0
  64. data/doc/classes/TaskJuggler/MessageHandler.html +215 -0
  65. data/doc/classes/TaskJuggler/Project.html +1606 -0
  66. data/doc/classes/TaskJuggler/ProjectFileParser.html +412 -0
  67. data/doc/classes/TaskJuggler/PropertyList.html +597 -0
  68. data/doc/classes/TaskJuggler/PropertySet.html +1200 -0
  69. data/doc/classes/TaskJuggler/PropertyTreeNode.html +1449 -0
  70. data/doc/classes/TaskJuggler/Query.html +600 -0
  71. data/doc/classes/TaskJuggler/RealFormat.html +252 -0
  72. data/doc/classes/TaskJuggler/ReferenceAttribute.html +194 -0
  73. data/doc/classes/TaskJuggler/Report.html +528 -0
  74. data/doc/classes/TaskJuggler/ReportElement.html +1070 -0
  75. data/doc/classes/TaskJuggler/ReportTable.html +497 -0
  76. data/doc/classes/TaskJuggler/ReportTableCell.html +518 -0
  77. data/doc/classes/TaskJuggler/ReportTableColumn.html +364 -0
  78. data/doc/classes/TaskJuggler/ReportTableElement.html +644 -0
  79. data/doc/classes/TaskJuggler/ReportTableLegend.html +343 -0
  80. data/doc/classes/TaskJuggler/ReportTableLine.html +431 -0
  81. data/doc/classes/TaskJuggler/Resource.html +211 -0
  82. data/doc/classes/TaskJuggler/ResourceListAttribute.html +267 -0
  83. data/doc/classes/TaskJuggler/ResourceListRE.html +249 -0
  84. data/doc/classes/TaskJuggler/ResourceScenario.html +1137 -0
  85. data/doc/classes/TaskJuggler/RichText.html +537 -0
  86. data/doc/classes/TaskJuggler/RichTextAttribute.html +229 -0
  87. data/doc/classes/TaskJuggler/RichTextDocument.html +418 -0
  88. data/doc/classes/TaskJuggler/RichTextElement.html +829 -0
  89. data/doc/classes/TaskJuggler/RichTextException.html +212 -0
  90. data/doc/classes/TaskJuggler/RichTextParser.html +317 -0
  91. data/doc/classes/TaskJuggler/RichTextProtocolExample.html +303 -0
  92. data/doc/classes/TaskJuggler/RichTextProtocolHandler.html +194 -0
  93. data/doc/classes/TaskJuggler/RichTextScanner.html +561 -0
  94. data/doc/classes/TaskJuggler/RichTextSnip.html +364 -0
  95. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +883 -0
  96. data/doc/classes/TaskJuggler/Scenario.html +163 -0
  97. data/doc/classes/TaskJuggler/ScenarioData.html +354 -0
  98. data/doc/classes/TaskJuggler/Scoreboard.html +638 -0
  99. data/doc/classes/TaskJuggler/Shift.html +255 -0
  100. data/doc/classes/TaskJuggler/ShiftAssignment.html +488 -0
  101. data/doc/classes/TaskJuggler/ShiftAssignments.html +715 -0
  102. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +261 -0
  103. data/doc/classes/TaskJuggler/ShiftScenario.html +282 -0
  104. data/doc/classes/TaskJuggler/SourceFileInfo.html +247 -0
  105. data/doc/classes/TaskJuggler/StringAttribute.html +229 -0
  106. data/doc/classes/TaskJuggler/SymbolAttribute.html +194 -0
  107. data/doc/classes/TaskJuggler/SyntaxReference.html +516 -0
  108. data/doc/classes/TaskJuggler/TOCEntry.html +242 -0
  109. data/doc/classes/TaskJuggler/TableColumnDefinition.html +273 -0
  110. data/doc/classes/TaskJuggler/TableOfContents.html +256 -0
  111. data/doc/classes/TaskJuggler/Task.html +203 -0
  112. data/doc/classes/TaskJuggler/TaskDependency.html +251 -0
  113. data/doc/classes/TaskJuggler/TaskListAttribute.html +267 -0
  114. data/doc/classes/TaskJuggler/TaskListRE.html +250 -0
  115. data/doc/classes/TaskJuggler/TaskScenario.html +2206 -0
  116. data/doc/classes/TaskJuggler/TextParser.html +670 -0
  117. data/doc/classes/TaskJuggler/TextParser/Pattern.html +923 -0
  118. data/doc/classes/TaskJuggler/TextParser/Rule.html +779 -0
  119. data/doc/classes/TaskJuggler/TextParser/StackElement.html +267 -0
  120. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +212 -0
  121. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +221 -0
  122. data/doc/classes/TaskJuggler/TextScanner.html +708 -0
  123. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +355 -0
  124. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +341 -0
  125. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +260 -0
  126. data/doc/classes/TaskJuggler/TjException.html +185 -0
  127. data/doc/classes/TaskJuggler/TjTime.html +1845 -0
  128. data/doc/classes/TaskJuggler/TjpExample.html +310 -0
  129. data/doc/classes/TaskJuggler/TjpExportRE.html +329 -0
  130. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +8928 -0
  131. data/doc/classes/TaskJuggler/UserManual.html +606 -0
  132. data/doc/classes/TaskJuggler/WorkingHours.html +582 -0
  133. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +284 -0
  134. data/doc/classes/TaskJuggler/XMLBlob.html +207 -0
  135. data/doc/classes/TaskJuggler/XMLComment.html +206 -0
  136. data/doc/classes/TaskJuggler/XMLDocument.html +293 -0
  137. data/doc/classes/TaskJuggler/XMLElement.html +341 -0
  138. data/doc/classes/TaskJuggler/XMLNamedText.html +174 -0
  139. data/doc/classes/TaskJuggler/XMLText.html +221 -0
  140. data/doc/files/COPYING.html +448 -0
  141. data/doc/files/README.html +134 -0
  142. data/doc/files/lib/AccountScenario_rb.html +116 -0
  143. data/doc/files/lib/Account_rb.html +118 -0
  144. data/doc/files/lib/Allocation_rb.html +118 -0
  145. data/doc/files/lib/AppConfig_rb.html +116 -0
  146. data/doc/files/lib/AttributeBase_rb.html +106 -0
  147. data/doc/files/lib/AttributeDefinition_rb.html +106 -0
  148. data/doc/files/lib/Attributes_rb.html +130 -0
  149. data/doc/files/lib/Booking_rb.html +106 -0
  150. data/doc/files/lib/ChargeSet_rb.html +116 -0
  151. data/doc/files/lib/Charge_rb.html +116 -0
  152. data/doc/files/lib/HTMLDocument_rb.html +116 -0
  153. data/doc/files/lib/Interval_rb.html +116 -0
  154. data/doc/files/lib/KeywordDocumentation_rb.html +122 -0
  155. data/doc/files/lib/Limits_rb.html +116 -0
  156. data/doc/files/lib/Log_rb.html +116 -0
  157. data/doc/files/lib/LogicalExpression_rb.html +122 -0
  158. data/doc/files/lib/LogicalFlag_rb.html +116 -0
  159. data/doc/files/lib/LogicalFunction_rb.html +116 -0
  160. data/doc/files/lib/LogicalOperation_rb.html +116 -0
  161. data/doc/files/lib/MacroParser_rb.html +118 -0
  162. data/doc/files/lib/MacroTable_rb.html +122 -0
  163. data/doc/files/lib/MessageHandler_rb.html +106 -0
  164. data/doc/files/lib/Message_rb.html +116 -0
  165. data/doc/files/lib/ProjectFileParser_rb.html +122 -0
  166. data/doc/files/lib/Project_rb.html +148 -0
  167. data/doc/files/lib/PropertyList_rb.html +106 -0
  168. data/doc/files/lib/PropertySet_rb.html +118 -0
  169. data/doc/files/lib/PropertyTreeNode_rb.html +106 -0
  170. data/doc/files/lib/Query_rb.html +116 -0
  171. data/doc/files/lib/RealFormat_rb.html +106 -0
  172. data/doc/files/lib/ResourceScenario_rb.html +116 -0
  173. data/doc/files/lib/Resource_rb.html +118 -0
  174. data/doc/files/lib/RichTextDocument_rb.html +120 -0
  175. data/doc/files/lib/RichTextElement_rb.html +120 -0
  176. data/doc/files/lib/RichTextParser_rb.html +120 -0
  177. data/doc/files/lib/RichTextProtocolExample_rb.html +120 -0
  178. data/doc/files/lib/RichTextProtocolHandler_rb.html +106 -0
  179. data/doc/files/lib/RichTextScanner_rb.html +116 -0
  180. data/doc/files/lib/RichTextSnip_rb.html +118 -0
  181. data/doc/files/lib/RichTextSyntaxRules_rb.html +106 -0
  182. data/doc/files/lib/RichText_rb.html +118 -0
  183. data/doc/files/lib/ScenarioData_rb.html +118 -0
  184. data/doc/files/lib/Scenario_rb.html +116 -0
  185. data/doc/files/lib/Scoreboard_rb.html +106 -0
  186. data/doc/files/lib/ShiftAssignments_rb.html +116 -0
  187. data/doc/files/lib/ShiftScenario_rb.html +116 -0
  188. data/doc/files/lib/Shift_rb.html +118 -0
  189. data/doc/files/lib/SourceFileInfo_rb.html +106 -0
  190. data/doc/files/lib/SyntaxReference_rb.html +122 -0
  191. data/doc/files/lib/TOCEntry_rb.html +118 -0
  192. data/doc/files/lib/TableColumnDefinition_rb.html +106 -0
  193. data/doc/files/lib/TableOfContents_rb.html +118 -0
  194. data/doc/files/lib/TaskDependency_rb.html +106 -0
  195. data/doc/files/lib/TaskJuggler_rb.html +120 -0
  196. data/doc/files/lib/TaskScenario_rb.html +116 -0
  197. data/doc/files/lib/Task_rb.html +118 -0
  198. data/doc/files/lib/TextParser/Pattern_rb.html +116 -0
  199. data/doc/files/lib/TextParser/Rule_rb.html +106 -0
  200. data/doc/files/lib/TextParser/StackElement_rb.html +106 -0
  201. data/doc/files/lib/TextParser/TokenDoc_rb.html +106 -0
  202. data/doc/files/lib/TextParser_rb.html +124 -0
  203. data/doc/files/lib/TextScanner_rb.html +128 -0
  204. data/doc/files/lib/Tj3Config_rb.html +118 -0
  205. data/doc/files/lib/TjException_rb.html +106 -0
  206. data/doc/files/lib/TjTime_rb.html +118 -0
  207. data/doc/files/lib/TjpExample_rb.html +116 -0
  208. data/doc/files/lib/TjpSyntaxRules_rb.html +106 -0
  209. data/doc/files/lib/UTF8String_rb.html +132 -0
  210. data/doc/files/lib/UserManual_rb.html +124 -0
  211. data/doc/files/lib/WorkingHours_rb.html +116 -0
  212. data/doc/files/lib/XMLDocument_rb.html +116 -0
  213. data/doc/files/lib/XMLElement_rb.html +116 -0
  214. data/doc/files/lib/reports/CSVFile_rb.html +116 -0
  215. data/doc/files/lib/reports/ColumnTable_rb.html +116 -0
  216. data/doc/files/lib/reports/GanttChart_rb.html +122 -0
  217. data/doc/files/lib/reports/GanttContainer_rb.html +116 -0
  218. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +106 -0
  219. data/doc/files/lib/reports/GanttHeader_rb.html +116 -0
  220. data/doc/files/lib/reports/GanttLine_rb.html +126 -0
  221. data/doc/files/lib/reports/GanttLoadStack_rb.html +116 -0
  222. data/doc/files/lib/reports/GanttMilestone_rb.html +116 -0
  223. data/doc/files/lib/reports/GanttRouter_rb.html +106 -0
  224. data/doc/files/lib/reports/GanttTaskBar_rb.html +116 -0
  225. data/doc/files/lib/reports/HTMLGraphics_rb.html +106 -0
  226. data/doc/files/lib/reports/ReportElement_rb.html +118 -0
  227. data/doc/files/lib/reports/ReportTableCell_rb.html +106 -0
  228. data/doc/files/lib/reports/ReportTableColumn_rb.html +106 -0
  229. data/doc/files/lib/reports/ReportTableElement_rb.html +122 -0
  230. data/doc/files/lib/reports/ReportTableLegend_rb.html +106 -0
  231. data/doc/files/lib/reports/ReportTableLine_rb.html +116 -0
  232. data/doc/files/lib/reports/ReportTable_rb.html +118 -0
  233. data/doc/files/lib/reports/Report_rb.html +126 -0
  234. data/doc/files/lib/reports/ResourceListRE_rb.html +122 -0
  235. data/doc/files/lib/reports/TaskListRE_rb.html +122 -0
  236. data/doc/files/lib/reports/TjpExportRE_rb.html +116 -0
  237. data/doc/files/lib/taskjuggler3_rb.html +276 -0
  238. data/doc/files/lib/tj3man_rb.html +189 -0
  239. data/doc/fr_class_index.html +285 -0
  240. data/doc/fr_file_index.html +223 -0
  241. data/doc/fr_method_index.html +1953 -0
  242. data/doc/index.html +21 -0
  243. data/doc/rdoc-style.css +299 -0
  244. data/examples/tutorial.tjp +361 -0
  245. data/gem_spec.rb +30 -0
  246. data/lib/Account.rb +50 -0
  247. data/lib/AccountScenario.rb +39 -0
  248. data/lib/Allocation.rb +102 -0
  249. data/lib/AppConfig.rb +134 -0
  250. data/lib/AttributeBase.rb +131 -0
  251. data/lib/AttributeDefinition.rb +47 -0
  252. data/lib/Attributes.rb +478 -0
  253. data/lib/BatchProcessor.rb +209 -0
  254. data/lib/Booking.rb +59 -0
  255. data/lib/Charge.rb +71 -0
  256. data/lib/ChargeSet.rb +126 -0
  257. data/lib/HTMLDocument.rb +59 -0
  258. data/lib/Interval.rb +127 -0
  259. data/lib/KeywordDocumentation.rb +560 -0
  260. data/lib/Limits.rb +219 -0
  261. data/lib/Log.rb +160 -0
  262. data/lib/LogicalExpression.rb +71 -0
  263. data/lib/LogicalFlag.rb +34 -0
  264. data/lib/LogicalFunction.rb +102 -0
  265. data/lib/LogicalOperation.rb +118 -0
  266. data/lib/MacroParser.rb +77 -0
  267. data/lib/MacroTable.rb +84 -0
  268. data/lib/Message.rb +56 -0
  269. data/lib/MessageHandler.rb +34 -0
  270. data/lib/Project.rb +662 -0
  271. data/lib/ProjectFileParser.rb +333 -0
  272. data/lib/PropertyList.rb +181 -0
  273. data/lib/PropertySet.rb +304 -0
  274. data/lib/PropertyTreeNode.rb +461 -0
  275. data/lib/Query.rb +227 -0
  276. data/lib/RealFormat.rb +73 -0
  277. data/lib/Resource.rb +42 -0
  278. data/lib/ResourceScenario.rb +511 -0
  279. data/lib/RichText.rb +147 -0
  280. data/lib/RichTextDocument.rb +139 -0
  281. data/lib/RichTextElement.rb +391 -0
  282. data/lib/RichTextParser.rb +66 -0
  283. data/lib/RichTextProtocolExample.rb +65 -0
  284. data/lib/RichTextProtocolHandler.rb +35 -0
  285. data/lib/RichTextScanner.rb +390 -0
  286. data/lib/RichTextSnip.rb +104 -0
  287. data/lib/RichTextSyntaxRules.rb +265 -0
  288. data/lib/Scenario.rb +27 -0
  289. data/lib/ScenarioData.rb +65 -0
  290. data/lib/Scoreboard.rb +141 -0
  291. data/lib/Shift.rb +48 -0
  292. data/lib/ShiftAssignments.rb +291 -0
  293. data/lib/ShiftScenario.rb +46 -0
  294. data/lib/SourceFileInfo.rb +37 -0
  295. data/lib/SyntaxReference.rb +284 -0
  296. data/lib/TOCEntry.rb +76 -0
  297. data/lib/TableColumnDefinition.rb +54 -0
  298. data/lib/TableOfContents.rb +46 -0
  299. data/lib/Task.rb +37 -0
  300. data/lib/TaskDependency.rb +39 -0
  301. data/lib/TaskJuggler.rb +84 -0
  302. data/lib/TaskScenario.rb +1622 -0
  303. data/lib/TextParser.rb +416 -0
  304. data/lib/TextParser/Pattern.rb +263 -0
  305. data/lib/TextParser/Rule.rb +171 -0
  306. data/lib/TextParser/StackElement.rb +45 -0
  307. data/lib/TextParser/TokenDoc.rb +38 -0
  308. data/lib/TextScanner.rb +682 -0
  309. data/lib/Tj3Config.rb +27 -0
  310. data/lib/TjException.rb +27 -0
  311. data/lib/TjTime.rb +395 -0
  312. data/lib/TjpExample.rb +119 -0
  313. data/lib/TjpSyntaxRules.rb +4022 -0
  314. data/lib/UTF8String.rb +100 -0
  315. data/lib/UserManual.rb +282 -0
  316. data/lib/WorkingHours.rb +323 -0
  317. data/lib/XMLDocument.rb +54 -0
  318. data/lib/XMLElement.rb +175 -0
  319. data/lib/reports/CSVFile.rb +146 -0
  320. data/lib/reports/ColumnTable.rb +66 -0
  321. data/lib/reports/GanttChart.rb +308 -0
  322. data/lib/reports/GanttContainer.rb +107 -0
  323. data/lib/reports/GanttHeader.rb +141 -0
  324. data/lib/reports/GanttHeaderScaleItem.rb +42 -0
  325. data/lib/reports/GanttLine.rb +329 -0
  326. data/lib/reports/GanttLoadStack.rb +113 -0
  327. data/lib/reports/GanttMilestone.rb +80 -0
  328. data/lib/reports/GanttRouter.rb +375 -0
  329. data/lib/reports/GanttTaskBar.rb +95 -0
  330. data/lib/reports/HTMLGraphics.rb +65 -0
  331. data/lib/reports/Report.rb +344 -0
  332. data/lib/reports/ReportElement.rb +427 -0
  333. data/lib/reports/ReportTable.rb +144 -0
  334. data/lib/reports/ReportTableCell.rb +142 -0
  335. data/lib/reports/ReportTableColumn.rb +82 -0
  336. data/lib/reports/ReportTableElement.rb +852 -0
  337. data/lib/reports/ReportTableLegend.rb +167 -0
  338. data/lib/reports/ReportTableLine.rb +87 -0
  339. data/lib/reports/ResourceListRE.rb +72 -0
  340. data/lib/reports/TaskListRE.rb +73 -0
  341. data/lib/reports/TjpExportRE.rb +394 -0
  342. data/lib/taskjuggler3.rb +106 -0
  343. data/lib/tj3man.rb +88 -0
  344. data/manual/Day_To_Day_Juggling +168 -0
  345. data/manual/Getting_Started +61 -0
  346. data/manual/How_To_Contribute +185 -0
  347. data/manual/Installation +68 -0
  348. data/manual/Intro +102 -0
  349. data/manual/Reporting_Bugs +26 -0
  350. data/manual/Rich_Text_Attributes +90 -0
  351. data/manual/TaskJuggler_2x_Migration +40 -0
  352. data/manual/Tutorial +579 -0
  353. data/manual/fdl +450 -0
  354. data/prj_cfg.rb +43 -0
  355. data/setup.rb +1585 -0
  356. data/tasks/csts.rake +72 -0
  357. data/tasks/gem.rake +14 -0
  358. data/tasks/manual.rake +10 -0
  359. data/tasks/missing.rake +21 -0
  360. data/tasks/rcov.rake +14 -0
  361. data/tasks/rdoc.rake +17 -0
  362. data/tasks/rexml_fix.rb +16 -0
  363. data/tasks/rexml_fix_19.rb +49 -0
  364. data/tasks/show.rake +21 -0
  365. data/tasks/stats.rake +25 -0
  366. data/tasks/test.rake +11 -0
  367. data/test/MessageChecker.rb +53 -0
  368. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -0
  369. data/test/TestSuite/CSV-Reports/celltext.tjp +7 -0
  370. data/test/TestSuite/CSV-Reports/genrefs +6 -0
  371. data/test/TestSuite/CSV-Reports/project-1.tji +57 -0
  372. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -0
  373. data/test/TestSuite/CSV-Reports/resourcereport.tjp +10 -0
  374. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -0
  375. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +11 -0
  376. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -0
  377. data/test/TestSuite/CSV-Reports/sortByTree.tjp +8 -0
  378. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -0
  379. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +10 -0
  380. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -0
  381. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +10 -0
  382. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -0
  383. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +10 -0
  384. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -0
  385. data/test/TestSuite/CSV-Reports/taskreport.tjp +10 -0
  386. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +24 -0
  387. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +11 -0
  388. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +86 -0
  389. data/test/TestSuite/Scheduler/Correct/AutomaticMilestones.tjp +63 -0
  390. data/test/TestSuite/Scheduler/Correct/Booking.tjp +161 -0
  391. data/test/TestSuite/Scheduler/Correct/Depends.tjp +50 -0
  392. data/test/TestSuite/Scheduler/Correct/Duration.tjp +34 -0
  393. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +129 -0
  394. data/test/TestSuite/Scheduler/Correct/Limits.tjp +81 -0
  395. data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +43 -0
  396. data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +28 -0
  397. data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +33 -0
  398. data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +33 -0
  399. data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +34 -0
  400. data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +62 -0
  401. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +50 -0
  402. data/test/TestSuite/Scheduler/Correct/Shift.tjp +102 -0
  403. data/test/TestSuite/Scheduler/Errors/account_no_leaf.tjp +13 -0
  404. data/test/TestSuite/Scheduler/Errors/booking_conflict.tjp +10 -0
  405. data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +9 -0
  406. data/test/TestSuite/Scheduler/Errors/booking_on_vacation.tjp +9 -0
  407. data/test/TestSuite/Scheduler/Errors/container_booking.tjp +14 -0
  408. data/test/TestSuite/Scheduler/Errors/container_duration.tjp +11 -0
  409. data/test/TestSuite/Scheduler/Errors/effort_no_allocations.tjp +7 -0
  410. data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +19 -0
  411. data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +36 -0
  412. data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +27 -0
  413. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +20 -0
  414. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +27 -0
  415. data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +26 -0
  416. data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +24 -0
  417. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +18 -0
  418. data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +36 -0
  419. data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +37 -0
  420. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +35 -0
  421. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +46 -0
  422. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +51 -0
  423. data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +20 -0
  424. data/test/TestSuite/Scheduler/Errors/maxend.tjp +8 -0
  425. data/test/TestSuite/Scheduler/Errors/maxstart.tjp +8 -0
  426. data/test/TestSuite/Scheduler/Errors/milestone_booking.tjp +10 -0
  427. data/test/TestSuite/Scheduler/Errors/milestone_duration.tjp +8 -0
  428. data/test/TestSuite/Scheduler/Errors/milestone_start_end.tjp +8 -0
  429. data/test/TestSuite/Scheduler/Errors/minend.tjp +8 -0
  430. data/test/TestSuite/Scheduler/Errors/minstart.tjp +8 -0
  431. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +11 -0
  432. data/test/TestSuite/Scheduler/Errors/no_tasks.tjp +6 -0
  433. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +8 -0
  434. data/test/TestSuite/Scheduler/Errors/task_depend_child.tjp +10 -0
  435. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +13 -0
  436. data/test/TestSuite/Scheduler/Errors/task_depend_parent.tjp +11 -0
  437. data/test/TestSuite/Scheduler/Errors/task_depend_self.tjp +10 -0
  438. data/test/TestSuite/Scheduler/Errors/task_depend_unknown.tjp +10 -0
  439. data/test/TestSuite/Scheduler/Errors/task_overspecified_1.tjp +9 -0
  440. data/test/TestSuite/Scheduler/Errors/task_overspecified_2.tjp +14 -0
  441. data/test/TestSuite/Scheduler/Errors/task_overspecified_3.tjp +14 -0
  442. data/test/TestSuite/Scheduler/Errors/task_underspecified_1.tjp +8 -0
  443. data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +8 -0
  444. data/test/TestSuite/Scheduler/Errors/task_underspecified_3.tjp +9 -0
  445. data/test/TestSuite/Syntax/Correct/Account.tjp +53 -0
  446. data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +24 -0
  447. data/test/TestSuite/Syntax/Correct/Alternative.tjp +13 -0
  448. data/test/TestSuite/Syntax/Correct/AutoMacros.tjp +14 -0
  449. data/test/TestSuite/Syntax/Correct/Booking.tjp +26 -0
  450. data/test/TestSuite/Syntax/Correct/Caption.tjp +33 -0
  451. data/test/TestSuite/Syntax/Correct/Celltext.tjp +28 -0
  452. data/test/TestSuite/Syntax/Correct/Comments.tjp +29 -0
  453. data/test/TestSuite/Syntax/Correct/Complete.tjp +16 -0
  454. data/test/TestSuite/Syntax/Correct/CompletedWork.tji +20 -0
  455. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +31 -0
  456. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +12 -0
  457. data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +14 -0
  458. data/test/TestSuite/Syntax/Correct/Depends1.tjp +22 -0
  459. data/test/TestSuite/Syntax/Correct/Durations.tjp +29 -0
  460. data/test/TestSuite/Syntax/Correct/Efficiency.tjp +19 -0
  461. data/test/TestSuite/Syntax/Correct/Export.tjp +40 -0
  462. data/test/TestSuite/Syntax/Correct/Flags.tjp +32 -0
  463. data/test/TestSuite/Syntax/Correct/Freeze.tjp +28 -0
  464. data/test/TestSuite/Syntax/Correct/Gap.tjp +15 -0
  465. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +33 -0
  466. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +71 -0
  467. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +31 -0
  468. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +19 -0
  469. data/test/TestSuite/Syntax/Correct/Mandatory.tjp +17 -0
  470. data/test/TestSuite/Syntax/Correct/Milestone.tjp +12 -0
  471. data/test/TestSuite/Syntax/Correct/MinMax.tjp +17 -0
  472. data/test/TestSuite/Syntax/Correct/Numberformat.tjp +12 -0
  473. data/test/TestSuite/Syntax/Correct/Period.tjp +16 -0
  474. data/test/TestSuite/Syntax/Correct/Persistent.tjp +11 -0
  475. data/test/TestSuite/Syntax/Correct/Precedes1.tjp +17 -0
  476. data/test/TestSuite/Syntax/Correct/Priority.tjp +30 -0
  477. data/test/TestSuite/Syntax/Correct/Project.tjp +21 -0
  478. data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +23 -0
  479. data/test/TestSuite/Syntax/Correct/RawHTML.tjp +29 -0
  480. data/test/TestSuite/Syntax/Correct/Reports.tjp +54 -0
  481. data/test/TestSuite/Syntax/Correct/Resource.tjp +20 -0
  482. data/test/TestSuite/Syntax/Correct/Responsible.tjp +16 -0
  483. data/test/TestSuite/Syntax/Correct/Scenario.tjp +15 -0
  484. data/test/TestSuite/Syntax/Correct/Scheduling.tjp +26 -0
  485. data/test/TestSuite/Syntax/Correct/Select.tjp +27 -0
  486. data/test/TestSuite/Syntax/Correct/Shift.tjp +55 -0
  487. data/test/TestSuite/Syntax/Correct/Simple.tjp +25 -0
  488. data/test/TestSuite/Syntax/Correct/String.tjp +12 -0
  489. data/test/TestSuite/Syntax/Correct/Supplement.tjp +24 -0
  490. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +34 -0
  491. data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +19 -0
  492. data/test/TestSuite/Syntax/Correct/Timezone.tjp +8 -0
  493. data/test/TestSuite/Syntax/Correct/Vacation.tjp +33 -0
  494. data/test/TestSuite/Syntax/Correct/csvtest +16 -0
  495. data/test/TestSuite/Syntax/Correct/manual2example.rb +24 -0
  496. data/test/TestSuite/Syntax/Correct/tutorial.tjp +485 -0
  497. data/test/TestSuite/Syntax/Errors/bad_include.tjp +11 -0
  498. data/test/TestSuite/Syntax/Errors/booking_group.tjp +14 -0
  499. data/test/TestSuite/Syntax/Errors/booking_milestone.tjp +13 -0
  500. data/test/TestSuite/Syntax/Errors/booking_no_leaf.tjp +13 -0
  501. data/test/TestSuite/Syntax/Errors/chargeset.tjp +14 -0
  502. data/test/TestSuite/Syntax/Errors/chargeset_master.tjp +15 -0
  503. data/test/TestSuite/Syntax/Errors/container_attribute.tjp +13 -0
  504. data/test/TestSuite/Syntax/Errors/cost_acct_no_top.tjp +24 -0
  505. data/test/TestSuite/Syntax/Errors/cost_rev_same.tjp +24 -0
  506. data/test/TestSuite/Syntax/Errors/date_in_range.tjp +7 -0
  507. data/test/TestSuite/Syntax/Errors/effort_zero.tjp +8 -0
  508. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -0
  509. data/test/TestSuite/Syntax/Errors/export_bad_extn.tjp +9 -0
  510. data/test/TestSuite/Syntax/Errors/extend_id_cap.tjp +7 -0
  511. data/test/TestSuite/Syntax/Errors/interval_end_in_range.tjp +7 -0
  512. data/test/TestSuite/Syntax/Errors/interval_start_in_range.tjp +7 -0
  513. data/test/TestSuite/Syntax/Errors/leaf_resource_id_expected.tjp +12 -0
  514. data/test/TestSuite/Syntax/Errors/misaligned_date.tjp +7 -0
  515. data/test/TestSuite/Syntax/Errors/no_csv_suffix.tjp +10 -0
  516. data/test/TestSuite/Syntax/Errors/no_html_suffix.tjp +10 -0
  517. data/test/TestSuite/Syntax/Errors/operand_attribute.tjp +11 -0
  518. data/test/TestSuite/Syntax/Errors/operand_unkn_flag.tjp +11 -0
  519. data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +11 -0
  520. data/test/TestSuite/Syntax/Errors/overtime_range.tjp +13 -0
  521. data/test/TestSuite/Syntax/Errors/purge_no_list.tjp +8 -0
  522. data/test/TestSuite/Syntax/Errors/purge_unknown_id.tjp +8 -0
  523. data/test/TestSuite/Syntax/Errors/report_end.tjp +10 -0
  524. data/test/TestSuite/Syntax/Errors/report_redifinition.tjp +10 -0
  525. data/test/TestSuite/Syntax/Errors/report_start.tjp +10 -0
  526. data/test/TestSuite/Syntax/Errors/resource_exists.tjp +7 -0
  527. data/test/TestSuite/Syntax/Errors/resource_id_expected.tjp +8 -0
  528. data/test/TestSuite/Syntax/Errors/rev_acct_no_top.tjp +24 -0
  529. data/test/TestSuite/Syntax/Errors/scenario_exists.tjp +7 -0
  530. data/test/TestSuite/Syntax/Errors/shift_assignment_overlap.tjp +15 -0
  531. data/test/TestSuite/Syntax/Errors/shift_exists.tjp +7 -0
  532. data/test/TestSuite/Syntax/Errors/shift_id_expected.tjp +7 -0
  533. data/test/TestSuite/Syntax/Errors/sloppy_range.tjp +13 -0
  534. data/test/TestSuite/Syntax/Errors/sort_direction.tjp +11 -0
  535. data/test/TestSuite/Syntax/Errors/sort_unknown_scen.tjp +11 -0
  536. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +11 -0
  537. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd2.tjp +11 -0
  538. data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +11 -0
  539. data/test/TestSuite/Syntax/Errors/start_before_end1.tjp +7 -0
  540. data/test/TestSuite/Syntax/Errors/start_before_end2.tjp +6 -0
  541. data/test/TestSuite/Syntax/Errors/task_complete.tjp +8 -0
  542. data/test/TestSuite/Syntax/Errors/task_exists.tjp +7 -0
  543. data/test/TestSuite/Syntax/Errors/task_priority.tjp +8 -0
  544. data/test/TestSuite/Syntax/Errors/task_without_chargeset.tjp +9 -0
  545. data/test/TestSuite/Syntax/Errors/time_interval.tjp +12 -0
  546. data/test/TestSuite/Syntax/Errors/too_many_bangs.tjp +10 -0
  547. data/test/TestSuite/Syntax/Errors/undecl_flag.tjp +6 -0
  548. data/test/TestSuite/Syntax/Errors/unknown_projectid.tjp +7 -0
  549. data/test/TestSuite/Syntax/Errors/unknown_scenario_id.tjp +6 -0
  550. data/test/TestSuite/Syntax/Errors/unknown_scenario_idx.tjp +11 -0
  551. data/test/TestSuite/Syntax/Errors/unknown_task.tjp +10 -0
  552. data/test/all.rb +31 -0
  553. data/test/test_BatchProcessor.rb +54 -0
  554. data/test/test_CSV-Reports.rb +101 -0
  555. data/test/test_Limits.rb +104 -0
  556. data/test/test_LogicalExpression.rb +110 -0
  557. data/test/test_MacroTable.rb +51 -0
  558. data/test/test_Project.rb +57 -0
  559. data/test/test_PropertySet.rb +71 -0
  560. data/test/test_Query.rb +83 -0
  561. data/test/test_RealFormat.rb +83 -0
  562. data/test/test_RichText.rb +869 -0
  563. data/test/test_Scheduler.rb +42 -0
  564. data/test/test_ShiftAssignments.rb +77 -0
  565. data/test/test_Syntax.rb +41 -0
  566. data/test/test_TextScanner.rb +95 -0
  567. data/test/test_TjTime.rb +114 -0
  568. data/test/test_TjpExample.rb +169 -0
  569. data/test/test_UTF8String.rb +84 -0
  570. data/test/test_WorkingHours.rb +56 -0
  571. metadata +649 -0
@@ -0,0 +1,869 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = test_RichText.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
7
+ #
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of version 2 of the GNU General Public License as
10
+ # published by the Free Software Foundation.
11
+ #
12
+
13
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if __FILE__ == $0
14
+
15
+ require 'test/unit'
16
+ require 'RichText'
17
+
18
+ class TestRichText < Test::Unit::TestCase
19
+
20
+ def setup
21
+ end
22
+
23
+ def teardown
24
+ end
25
+
26
+ def test_empty
27
+ inp = ''
28
+
29
+ # Check tagged output.
30
+ out = newRichText(inp).to_tagged + "\n"
31
+ ref = "<div></div>\n"
32
+ assert_equal(ref, out)
33
+
34
+ # Check ASCII output.
35
+ out = newRichText(inp).to_s
36
+ ref = ''
37
+ assert_equal(ref, out)
38
+
39
+ # Check HTML output.
40
+ out = newRichText(inp).to_html.to_s + "\n"
41
+ ref = "<div/>\n"
42
+ assert_equal(ref, out)
43
+ end
44
+
45
+ def test_one_word
46
+ inp = "foo"
47
+
48
+ # Check tagged output.
49
+ out = newRichText(inp).to_tagged + "\n"
50
+ ref = "<div>[foo]</div>\n"
51
+ assert_equal(ref, out)
52
+
53
+ # Check ASCII output.
54
+ out = newRichText(inp).to_s
55
+ ref = 'foo'
56
+ assert_equal(ref, out)
57
+
58
+ # Check HTML output.
59
+ out = newRichText(inp).to_html.to_s + "\n"
60
+ ref = "<div>foo</div>\n"
61
+ assert_equal(ref, out)
62
+ end
63
+
64
+ def test_two_words
65
+ inp = "foo bar"
66
+
67
+ # Check tagged output.
68
+ out = newRichText(inp).to_tagged + "\n"
69
+ ref = "<div>[foo] [bar]</div>\n"
70
+ assert_equal(ref, out)
71
+
72
+ # Check ASCII output.
73
+ out = newRichText(inp).to_s
74
+ ref = 'foo bar'
75
+ assert_equal(ref, out)
76
+
77
+ # Check HTML output.
78
+ out = newRichText(inp).to_html.to_s + "\n"
79
+ ref = "<div>foo bar</div>\n"
80
+ assert_equal(ref, out)
81
+ end
82
+
83
+ def test_paragraph
84
+ inp = <<'EOT'
85
+ A paragraph may span multiple
86
+ lines of text. Single line breaks
87
+ are ignored.
88
+
89
+
90
+ Only 2 successive newlines end the paragraph.
91
+
92
+ I hope this example is
93
+ clear
94
+ now.
95
+ EOT
96
+
97
+ # Check tagged output.
98
+ out = newRichText(inp).to_tagged + "\n"
99
+ ref = <<'EOT'
100
+ <div><p>[A] [paragraph] [may] [span] [multiple] [lines] [of] [text.] [Single] [line] [breaks] [are] [ignored.]</p>
101
+
102
+ <p>[Only] [2] [successive] [newlines] [end] [the] [paragraph.]</p>
103
+
104
+ <p>[I] [hope] [this] [example] [is] [clear] [now.]</p>
105
+
106
+ </div>
107
+ EOT
108
+ assert_equal(ref, out)
109
+
110
+ # Check ASCII output.
111
+ out = newRichText(inp).to_s
112
+ ref = <<'EOT'
113
+ A paragraph may span multiple lines of text. Single line breaks are ignored.
114
+
115
+ Only 2 successive newlines end the paragraph.
116
+
117
+ I hope this example is clear now.
118
+
119
+ EOT
120
+ assert_equal(ref, out)
121
+
122
+ # Check HTML output.
123
+ out = newRichText(inp).to_html.to_s + "\n"
124
+ ref = <<'EOT'
125
+ <div>
126
+ <p>A paragraph may span multiple lines of text. Single line breaks are ignored.</p>
127
+ <p>Only 2 successive newlines end the paragraph.</p>
128
+ <p>I hope this example is clear now.</p>
129
+ </div>
130
+ EOT
131
+ assert_equal(ref, out)
132
+ end
133
+
134
+ def test_hline
135
+ inp = <<'EOT'
136
+ ----
137
+ Line above and below
138
+ ----
139
+ == A heading ==
140
+ ----
141
+
142
+ ----
143
+ ----
144
+ Another bit of text.
145
+ ----
146
+ EOT
147
+
148
+ # Check tagged output.
149
+ out = newRichText(inp).to_tagged + "\n"
150
+ ref = <<'EOT'
151
+ <div><hr>----</hr>
152
+ <p>[Line] [above] [and] [below]</p>
153
+
154
+ <hr>----</hr>
155
+ <h1>1 [A] [heading]</h1>
156
+
157
+ <hr>----</hr>
158
+ <hr>----</hr>
159
+ <hr>----</hr>
160
+ <p>[Another] [bit] [of] [text.]</p>
161
+
162
+ <hr>----</hr>
163
+ </div>
164
+ EOT
165
+ assert_equal(ref, out)
166
+
167
+ # Check ASCII output.
168
+ rt = newRichText(inp)
169
+ rt.lineWidth = 60
170
+ out = rt.to_s
171
+ ref = <<'EOT'
172
+ --------------------------------------------------------
173
+ Line above and below
174
+
175
+ --------------------------------------------------------
176
+ 1 A heading
177
+
178
+ --------------------------------------------------------
179
+ --------------------------------------------------------
180
+ --------------------------------------------------------
181
+ Another bit of text.
182
+
183
+ --------------------------------------------------------
184
+ EOT
185
+ assert_equal(ref, out)
186
+
187
+ # Check HTML output.
188
+ out = newRichText(inp).to_html.to_s + "\n"
189
+ ref = <<'EOT'
190
+ <div>
191
+ <hr/>
192
+ <p>Line above and below</p>
193
+ <hr/>
194
+ <h1 id="A_heading">1 A heading</h1>
195
+ <hr/>
196
+ <hr/>
197
+ <hr/>
198
+ <p>Another bit of text.</p>
199
+ <hr/>
200
+ </div>
201
+ EOT
202
+ assert_equal(ref, out)
203
+ end
204
+
205
+ def test_italic
206
+ inp = "This is a text with ''italic words'' in it."
207
+
208
+ # Check tagged output.
209
+ out = newRichText(inp).to_tagged + "\n"
210
+ ref = <<'EOT'
211
+ <div>[This] [is] [a] [text] [with] <i>[italic] [words]</i> [in] [it.]</div>
212
+ EOT
213
+ assert_equal(ref, out)
214
+
215
+ # Check ASCII output.
216
+ rt = newRichText(inp)
217
+ out = rt.to_s + "\n"
218
+ ref = <<'EOT'
219
+ This is a text with italic words in it.
220
+ EOT
221
+ assert_equal(ref, out)
222
+
223
+ # Check HTML output.
224
+ out = newRichText(inp).to_html.to_s + "\n"
225
+ ref = <<'EOT'
226
+ <div>This is a text with <i>italic words</i> in it.</div>
227
+ EOT
228
+ assert_equal(ref, out)
229
+ end
230
+
231
+ def test_bold
232
+ inp = "This is a text with '''bold words''' in it."
233
+
234
+ # Check tagged output.
235
+ out = newRichText(inp).to_tagged + "\n"
236
+ ref = <<'EOT'
237
+ <div>[This] [is] [a] [text] [with] <b>[bold] [words]</b> [in] [it.]</div>
238
+ EOT
239
+ assert_equal(ref, out)
240
+
241
+ # Check ASCII output.
242
+ rt = newRichText(inp)
243
+ out = rt.to_s + "\n"
244
+ ref = <<'EOT'
245
+ This is a text with bold words in it.
246
+ EOT
247
+ assert_equal(ref, out)
248
+
249
+ # Check HTML output.
250
+ out = newRichText(inp).to_html.to_s + "\n"
251
+ ref = <<'EOT'
252
+ <div>This is a text with <b>bold words</b> in it.</div>
253
+ EOT
254
+ assert_equal(ref, out)
255
+ end
256
+
257
+ def test_code
258
+ inp = "This is a text with ''''monospaced words'''' in it."
259
+
260
+ # Check tagged output.
261
+ out = newRichText(inp).to_tagged + "\n"
262
+ ref = <<'EOT'
263
+ <div>[This] [is] [a] [text] [with] <code>[monospaced] [words]</code> [in] [it.]</div>
264
+ EOT
265
+ assert_equal(ref, out)
266
+
267
+ # Check ASCII output.
268
+ rt = newRichText(inp)
269
+ out = rt.to_s + "\n"
270
+ ref = <<'EOT'
271
+ This is a text with monospaced words in it.
272
+ EOT
273
+ assert_equal(ref, out)
274
+
275
+ # Check HTML output.
276
+ out = newRichText(inp).to_html.to_s + "\n"
277
+ ref = <<'EOT'
278
+ <div>This is a text with <code>monospaced words</code> in it.</div>
279
+ EOT
280
+ assert_equal(ref, out)
281
+ end
282
+
283
+ def test_boldAndItalic
284
+ inp = <<'EOT'
285
+ This is a text with some '''bold words''', some ''italic'' words and some
286
+ '''''bold and italic''''' words in it.
287
+ EOT
288
+
289
+ # Check tagged output.
290
+ out = newRichText(inp).to_tagged + "\n"
291
+ ref = <<'EOT'
292
+ <div>[This] [is] [a] [text] [with] [some] <b>[bold] [words]</b>[,] [some] <i>[italic]</i> [words] [and] [some] <b><i>[bold] [and] [italic]</i></b> [words] [in] [it.]</div>
293
+ EOT
294
+ assert_equal(ref, out)
295
+
296
+ # Check ASCII output.
297
+ rt = newRichText(inp)
298
+ out = rt.to_s + "\n"
299
+ ref = <<'EOT'
300
+ This is a text with some bold words, some italic words and some bold and italic words in it.
301
+ EOT
302
+ assert_equal(ref, out)
303
+
304
+ # Check HTML output.
305
+ out = newRichText(inp).to_html.to_s + "\n"
306
+ ref = <<'EOT'
307
+ <div>This is a text with some <b>bold words</b>, some <i>italic</i> words and some <b><i>bold and italic</i></b> words in it.</div>
308
+ EOT
309
+ assert_equal(ref, out)
310
+ end
311
+
312
+ def test_ref
313
+ inp = <<'EOT'
314
+ This is a reference [[item]].
315
+ For more info see [[manual the user manual]].
316
+ EOT
317
+
318
+ # Check tagged output.
319
+ out = newRichText(inp).to_tagged + "\n"
320
+ ref = <<'EOT'
321
+ <div>[This] [is] [a] [reference] <ref data="item">[item]</ref>[.] [For] [more] [info] [see] <ref data="manual">[the user manual]</ref>[.]</div>
322
+ EOT
323
+ assert_equal(ref, out)
324
+
325
+ # Check ASCII output.
326
+ rt = newRichText(inp)
327
+ out = rt.to_s + "\n"
328
+ ref = <<'EOT'
329
+ This is a reference item. For more info see the user manual.
330
+ EOT
331
+ assert_equal(ref, out)
332
+
333
+ # Check HTML output.
334
+ out = newRichText(inp).to_html.to_s + "\n"
335
+ ref = <<'EOT'
336
+ <div>This is a reference <a href="item.html">item</a>. For more info see <a href="manual.html">the user manual</a>.</div>
337
+ EOT
338
+ assert_equal(ref, out)
339
+ end
340
+
341
+ def test_href
342
+ inp = <<'EOT'
343
+ This is a reference [http://www.taskjuggler.org].
344
+ For more info see [http://www.taskjuggler.org the TaskJuggler site].
345
+ EOT
346
+
347
+ # Check tagged output.
348
+ out = newRichText(inp).to_tagged + "\n"
349
+ ref = <<'EOT'
350
+ <div>[This] [is] [a] [reference] <a href="http://www.taskjuggler.org" target="_blank">[http://www.taskjuggler.org]</a>[.] [For] [more] [info] [see] <a href="http://www.taskjuggler.org" target="_blank">[the TaskJuggler site]</a>[.]</div>
351
+ EOT
352
+ assert_equal(ref, out)
353
+
354
+ # Check ASCII output.
355
+ rt = newRichText(inp)
356
+ out = rt.to_s + "\n"
357
+ ref = <<'EOT'
358
+ This is a reference http://www.taskjuggler.org. For more info see the TaskJuggler site.
359
+ EOT
360
+ assert_equal(ref, out)
361
+
362
+ # Check HTML output.
363
+ out = newRichText(inp).to_html.to_s + "\n"
364
+ ref = <<'EOT'
365
+ <div>This is a reference <a href="http://www.taskjuggler.org" target="_blank">http://www.taskjuggler.org</a>. For more info see <a href="http://www.taskjuggler.org" target="_blank">the TaskJuggler site</a>.</div>
366
+ EOT
367
+ assert_equal(ref, out)
368
+ end
369
+
370
+ def test_headline
371
+ inp = <<'EOT'
372
+ = This is not a headline
373
+ == This is level 1 ==
374
+ === This is level 2 ===
375
+ ==== This is level 3 ====
376
+ EOT
377
+
378
+ # Check tagged output.
379
+ out = newRichText(inp).to_tagged + "\n"
380
+ ref = <<'EOT'
381
+ <div><p>[=] [This] [is] [not] [a] [headline]</p>
382
+
383
+ <h1>1 [This] [is] [level] [1]</h1>
384
+
385
+ <h2>1.1 [This] [is] [level] [2]</h2>
386
+
387
+ <h3>1.1.1 [This] [is] [level] [3]</h3>
388
+
389
+ </div>
390
+ EOT
391
+ assert_equal(ref, out)
392
+
393
+ # Check ASCII output.
394
+ rt = newRichText(inp)
395
+ out = rt.to_s
396
+ ref = <<'EOT'
397
+ = This is not a headline
398
+
399
+ 1 This is level 1
400
+
401
+ 1.1 This is level 2
402
+
403
+ 1.1.1 This is level 3
404
+
405
+ EOT
406
+ assert_equal(ref, out)
407
+
408
+ # Check HTML output.
409
+ out = newRichText(inp).to_html.to_s + "\n"
410
+ ref = <<'EOT'
411
+ <div>
412
+ <p>= This is not a headline</p>
413
+ <h1 id="This_is_level_1">1 This is level 1</h1>
414
+ <h2 id="This_is_level_2">1.1 This is level 2</h2>
415
+ <h3 id="This_is_level_3">1.1.1 This is level 3</h3>
416
+ </div>
417
+ EOT
418
+ assert_equal(ref, out)
419
+ end
420
+
421
+ def test_bullet
422
+ inp = <<'EOT'
423
+ * This is a bullet item
424
+ ** This is a level 2 bullet item
425
+ *** This is a level 3 bullet item
426
+ EOT
427
+
428
+ # Check tagged output.
429
+ out = newRichText(inp).to_tagged + "\n"
430
+ ref = <<'EOT'
431
+ <div><ul><li>* [This] [is] [a] [bullet] [item]</li>
432
+ <ul><li> * [This] [is] [a] [level] [2] [bullet] [item]</li>
433
+ <ul><li> * [This] [is] [a] [level] [3] [bullet] [item]</li>
434
+ </ul></ul></ul></div>
435
+ EOT
436
+ assert_equal(ref, out)
437
+
438
+ # Check ASCII output.
439
+ rt = newRichText(inp)
440
+ out = rt.to_s + "\n"
441
+ ref = <<'EOT'
442
+ * This is a bullet item
443
+
444
+ * This is a level 2 bullet item
445
+
446
+ * This is a level 3 bullet item
447
+
448
+
449
+ EOT
450
+ assert_equal(ref, out)
451
+
452
+ # Check HTML output.
453
+ out = newRichText(inp).to_html.to_s + "\n"
454
+ ref = <<'EOT'
455
+ <div><ul>
456
+ <li>This is a bullet item</li>
457
+ <ul>
458
+ <li>This is a level 2 bullet item</li>
459
+ <ul><li>This is a level 3 bullet item</li></ul>
460
+ </ul>
461
+ </ul></div>
462
+ EOT
463
+ assert_equal(ref, out)
464
+ end
465
+
466
+ def test_number
467
+ inp = <<'EOT'
468
+ # This is item 1
469
+ # This is item 2
470
+ # This is item 3
471
+
472
+ Normal text.
473
+
474
+ # This is item 1
475
+ ## This is item 1.1
476
+ ## This is item 1.2
477
+ ## This is item 1.3
478
+ # This is item 2
479
+ ## This is item 2.1
480
+ ## This is item 2.2
481
+ ### This is item 2.2.1
482
+ ### This is item 2.2.2
483
+ # This is item 3
484
+ ## This is item 3.1
485
+ ### This is item 3.1.1
486
+ # This is item 4
487
+ ### This is item 4.0.1
488
+
489
+ Normal text.
490
+
491
+ # This is item 1
492
+ EOT
493
+
494
+ # Check tagged output.
495
+ out = newRichText(inp).to_tagged + "\n"
496
+ ref = <<'EOT'
497
+ <div><ol><li>1 [This] [is] [item] [1]</li>
498
+ <li>2 [This] [is] [item] [2]</li>
499
+ <li>3 [This] [is] [item] [3]</li>
500
+ </ol><p>[Normal] [text.]</p>
501
+
502
+ <ol><li>1 [This] [is] [item] [1]</li>
503
+ <ol><li>1.1 [This] [is] [item] [1.1]</li>
504
+ <li>1.2 [This] [is] [item] [1.2]</li>
505
+ <li>1.3 [This] [is] [item] [1.3]</li>
506
+ </ol><li>2 [This] [is] [item] [2]</li>
507
+ <ol><li>2.1 [This] [is] [item] [2.1]</li>
508
+ <li>2.2 [This] [is] [item] [2.2]</li>
509
+ <ol><li>2.2.1 [This] [is] [item] [2.2.1]</li>
510
+ <li>2.2.2 [This] [is] [item] [2.2.2]</li>
511
+ </ol></ol><li>3 [This] [is] [item] [3]</li>
512
+ <ol><li>3.1 [This] [is] [item] [3.1]</li>
513
+ <ol><li>3.1.1 [This] [is] [item] [3.1.1]</li>
514
+ </ol></ol><li>4 [This] [is] [item] [4]</li>
515
+ <ol><ol><li>4.0.1 [This] [is] [item] [4.0.1]</li>
516
+ </ol></ol></ol><p>[Normal] [text.]</p>
517
+
518
+ <ol><li>1 [This] [is] [item] [1]</li>
519
+ </ol></div>
520
+ EOT
521
+ assert_equal(ref, out)
522
+
523
+ # Check ASCII output.
524
+ rt = newRichText(inp)
525
+ out = rt.to_s + "\n"
526
+ ref = <<'EOT'
527
+ 1 This is item 1
528
+
529
+ 2 This is item 2
530
+
531
+ 3 This is item 3
532
+
533
+ Normal text.
534
+
535
+ 1 This is item 1
536
+
537
+ 1.1 This is item 1.1
538
+
539
+ 1.2 This is item 1.2
540
+
541
+ 1.3 This is item 1.3
542
+
543
+ 2 This is item 2
544
+
545
+ 2.1 This is item 2.1
546
+
547
+ 2.2 This is item 2.2
548
+
549
+ 2.2.1 This is item 2.2.1
550
+
551
+ 2.2.2 This is item 2.2.2
552
+
553
+ 3 This is item 3
554
+
555
+ 3.1 This is item 3.1
556
+
557
+ 3.1.1 This is item 3.1.1
558
+
559
+ 4 This is item 4
560
+
561
+ 4.0.1 This is item 4.0.1
562
+
563
+ Normal text.
564
+
565
+ 1 This is item 1
566
+
567
+
568
+ EOT
569
+ assert_equal(ref, out)
570
+
571
+ # Check HTML output.
572
+ out = newRichText(inp).to_html.to_s + "\n"
573
+ ref = <<'EOT'
574
+ <div>
575
+ <ol>
576
+ <li>This is item 1</li>
577
+ <li>This is item 2</li>
578
+ <li>This is item 3</li>
579
+ </ol>
580
+ <p>Normal text.</p>
581
+ <ol>
582
+ <li>This is item 1</li>
583
+ <ol>
584
+ <li>This is item 1.1</li>
585
+ <li>This is item 1.2</li>
586
+ <li>This is item 1.3</li>
587
+ </ol>
588
+ <li>This is item 2</li>
589
+ <ol>
590
+ <li>This is item 2.1</li>
591
+ <li>This is item 2.2</li>
592
+ <ol>
593
+ <li>This is item 2.2.1</li>
594
+ <li>This is item 2.2.2</li>
595
+ </ol>
596
+ </ol>
597
+ <li>This is item 3</li>
598
+ <ol>
599
+ <li>This is item 3.1</li>
600
+ <ol><li>This is item 3.1.1</li></ol>
601
+ </ol>
602
+ <li>This is item 4</li>
603
+ <ol><ol><li>This is item 4.0.1</li></ol></ol>
604
+ </ol>
605
+ <p>Normal text.</p>
606
+ <ol><li>This is item 1</li></ol>
607
+ </div>
608
+ EOT
609
+ assert_equal(ref, out)
610
+ end
611
+
612
+ def test_pre
613
+ inp = <<'EOT'
614
+ #include <stdin.h>
615
+ main() {
616
+ printf("Hello, world!\n")
617
+ }
618
+ EOT
619
+
620
+ # Check tagged output.
621
+ out = newRichText(inp).to_tagged + "\n"
622
+ ref = <<'EOT'
623
+ <div><pre>#include <stdin.h>
624
+ main() {
625
+ printf("Hello, world!\n")
626
+ }
627
+ </pre>
628
+
629
+ </div>
630
+ EOT
631
+ assert_equal(ref, out)
632
+
633
+ # Check ASCII output.
634
+ rt = newRichText(inp)
635
+ out = rt.to_s
636
+ ref = <<'EOT'
637
+ #include <stdin.h>
638
+ main() {
639
+ printf("Hello, world!\n")
640
+ }
641
+
642
+ EOT
643
+ assert_equal(ref, out)
644
+
645
+ # Check HTML output.
646
+ out = newRichText(inp).to_html.to_s + "\n"
647
+ ref = <<'EOT'
648
+ <div><pre>#include &lt;stdin.h&gt;
649
+ main() {
650
+ printf("Hello, world!\n")
651
+ }
652
+ </pre></div>
653
+ EOT
654
+ assert_equal(ref, out)
655
+ end
656
+
657
+ def test_mix
658
+ inp = <<'EOT'
659
+ == This the first section ==
660
+ === This is the section 1.1 ===
661
+
662
+ Not sure what to put here. Maybe
663
+ just some silly text.
664
+
665
+ * A bullet
666
+ ** Another bullet
667
+ # A number item
668
+ * A bullet
669
+ ## Number 0.1, I guess
670
+
671
+ == Section 2 ==
672
+ * Starts with bullets
673
+ * ...
674
+
675
+ Some more text. And we're done.
676
+ EOT
677
+
678
+ # Check tagged output.
679
+ out = newRichText(inp).to_tagged + "\n"
680
+ ref = <<'EOT'
681
+ <div><h1>1 [This] [the] [first] [section]</h1>
682
+
683
+ <h2>1.1 [This] [is] [the] [section] [1.1]</h2>
684
+
685
+ <p>[Not] [sure] [what] [to] [put] [here.] [Maybe] [just] [some] [silly] [text.]</p>
686
+
687
+ <ul><li>* [A] [bullet]</li>
688
+ <ul><li> * [Another] [bullet]</li>
689
+ </ul></ul><ol><li>1 [A] [number] [item]</li>
690
+ </ol><ul><li>* [A] [bullet]</li>
691
+ </ul><ol><ol><li>0.1 [Number] [0.1,] [I] [guess]</li>
692
+ </ol></ol><h1>2 [Section] [2]</h1>
693
+
694
+ <ul><li>* [Starts] [with] [bullets]</li>
695
+ <li>* [...]</li>
696
+ </ul><p>[Some] [more] [text.] [And] [we're] [done.]</p>
697
+
698
+ </div>
699
+ EOT
700
+ assert_equal(ref, out)
701
+
702
+ # Check ASCII output.
703
+ rt = newRichText(inp)
704
+ out = rt.to_s
705
+ ref = <<'EOT'
706
+ 1 This the first section
707
+
708
+ 1.1 This is the section 1.1
709
+
710
+ Not sure what to put here. Maybe just some silly text.
711
+
712
+ * A bullet
713
+
714
+ * Another bullet
715
+
716
+ 1 A number item
717
+
718
+ * A bullet
719
+
720
+ 0.1 Number 0.1, I guess
721
+
722
+ 2 Section 2
723
+
724
+ * Starts with bullets
725
+
726
+ * ...
727
+
728
+ Some more text. And we're done.
729
+
730
+ EOT
731
+ assert_equal(ref, out)
732
+
733
+ # Check HTML output.
734
+ out = newRichText(inp).to_html.to_s + "\n"
735
+ ref = <<'EOT'
736
+ <div>
737
+ <h1 id="This_the_first_section">1 This the first section</h1>
738
+ <h2 id="This_is_the_section_11">1.1 This is the section 1.1</h2>
739
+ <p>Not sure what to put here. Maybe just some silly text.</p>
740
+ <ul>
741
+ <li>A bullet</li>
742
+ <ul><li>Another bullet</li></ul>
743
+ </ul>
744
+ <ol><li>A number item</li></ol>
745
+ <ul><li>A bullet</li></ul>
746
+ <ol><ol><li>Number 0.1, I guess</li></ol></ol>
747
+ <h1 id="Section_2">2 Section 2</h1>
748
+ <ul>
749
+ <li>Starts with bullets</li>
750
+ <li>...</li>
751
+ </ul>
752
+ <p>Some more text. And we're done.</p>
753
+ </div>
754
+ EOT
755
+ assert_equal(ref, out)
756
+ end
757
+
758
+ def test_nowiki
759
+ inp = <<'EOT'
760
+ == This the first section ==
761
+ === This is the section 1.1 ===
762
+
763
+ Not sure <nowiki>''what'' to</nowiki> put here. Maybe
764
+ just some silly text.
765
+
766
+ * A bullet
767
+ ** Another bullet
768
+ # A number item
769
+ * A bullet<nowiki>
770
+ ## Number 0.1, I guess
771
+ == Section 2 ==</nowiki>
772
+ * Starts with bullets
773
+ * ...
774
+
775
+ Some more text. And we're done.
776
+ EOT
777
+
778
+ # Check tagged output.
779
+ out = newRichText(inp).to_tagged + "\n"
780
+ ref = <<'EOT'
781
+ <div><h1>1 [This] [the] [first] [section]</h1>
782
+
783
+ <h2>1.1 [This] [is] [the] [section] [1.1]</h2>
784
+
785
+ <p>[Not] [sure] [''what''] [to] [put] [here.] [Maybe] [just] [some] [silly] [text.]</p>
786
+
787
+ <ul><li>* [A] [bullet]</li>
788
+ <ul><li> * [Another] [bullet]</li>
789
+ </ul></ul><ol><li>1 [A] [number] [item]</li>
790
+ </ol><ul><li>* [A] [bullet]</li>
791
+ </ul><p>[##] [Number] [0.1,] [I] [guess]</p>
792
+
793
+ <p>[==] [Section] [2] [==]</p>
794
+
795
+ <ul><li>* [Starts] [with] [bullets]</li>
796
+ <li>* [...]</li>
797
+ </ul><p>[Some] [more] [text.] [And] [we're] [done.]</p>
798
+
799
+ </div>
800
+ EOT
801
+ assert_equal(ref, out)
802
+
803
+ # Check ASCII output.
804
+ rt = newRichText(inp)
805
+ out = rt.to_s
806
+ ref = <<'EOT'
807
+ 1 This the first section
808
+
809
+ 1.1 This is the section 1.1
810
+
811
+ Not sure ''what'' to put here. Maybe just some silly text.
812
+
813
+ * A bullet
814
+
815
+ * Another bullet
816
+
817
+ 1 A number item
818
+
819
+ * A bullet
820
+
821
+ ## Number 0.1, I guess
822
+
823
+ == Section 2 ==
824
+
825
+ * Starts with bullets
826
+
827
+ * ...
828
+
829
+ Some more text. And we're done.
830
+
831
+ EOT
832
+ assert_equal(ref, out)
833
+
834
+ # Check HTML output.
835
+ out = newRichText(inp).to_html.to_s + "\n"
836
+ ref = <<'EOT'
837
+ <div>
838
+ <h1 id="This_the_first_section">1 This the first section</h1>
839
+ <h2 id="This_is_the_section_11">1.1 This is the section 1.1</h2>
840
+ <p>Not sure ''what'' to put here. Maybe just some silly text.</p>
841
+ <ul>
842
+ <li>A bullet</li>
843
+ <ul><li>Another bullet</li></ul>
844
+ </ul>
845
+ <ol><li>A number item</li></ol>
846
+ <ul><li>A bullet</li></ul>
847
+ <p>## Number 0.1, I guess</p>
848
+ <p>== Section 2 ==</p>
849
+ <ul>
850
+ <li>Starts with bullets</li>
851
+ <li>...</li>
852
+ </ul>
853
+ <p>Some more text. And we're done.</p>
854
+ </div>
855
+ EOT
856
+ assert_equal(ref, out)
857
+ end
858
+
859
+ def newRichText(text)
860
+ begin
861
+ rText = TaskJuggler::RichText.new(text)
862
+ rescue TaskJuggler::RichTextException => msg
863
+ $stderr.puts "Error in RichText Line #{msg.lineNo}: #{msg.text}\n" +
864
+ "#{msg.line}"
865
+ end
866
+ rText
867
+ end
868
+
869
+ end