taskjuggler 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (495) hide show
  1. data/benchmarks/UTF-8-Strings.rb +58 -0
  2. data/data/css/tjmanual.css +52 -0
  3. data/data/css/tjreport.css +195 -0
  4. data/data/icons/details.png +0 -0
  5. data/data/icons/flag-green.png +0 -0
  6. data/data/icons/flag-red.png +0 -0
  7. data/data/icons/flag-yellow.png +0 -0
  8. data/data/icons/resource.png +0 -0
  9. data/data/icons/resourcegroup.png +0 -0
  10. data/data/icons/task.png +0 -0
  11. data/data/icons/taskgroup.png +0 -0
  12. data/data/icons/trend-down.png +0 -0
  13. data/data/icons/trend-flat.png +0 -0
  14. data/data/icons/trend-up.png +0 -0
  15. data/data/scripts/wz_tooltip.js +1301 -0
  16. data/doc/classes/AppConfig.html +298 -230
  17. data/doc/classes/Arguments.html +8 -8
  18. data/doc/classes/Object.html +7 -7
  19. data/doc/classes/String.html +89 -89
  20. data/doc/classes/TaskJuggler.html +396 -264
  21. data/doc/classes/TaskJuggler/Account.html +18 -18
  22. data/doc/classes/TaskJuggler/AccountAttribute.html +26 -26
  23. data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
  24. data/doc/classes/TaskJuggler/Allocation.html +30 -30
  25. data/doc/classes/TaskJuggler/AllocationAttribute.html +26 -26
  26. data/doc/classes/TaskJuggler/AttributeBase.html +227 -115
  27. data/doc/classes/TaskJuggler/AttributeDefinition.html +6 -6
  28. data/doc/classes/TaskJuggler/BatchProcessor.html +117 -83
  29. data/doc/classes/TaskJuggler/Booking.html +18 -18
  30. data/doc/classes/TaskJuggler/BookingListAttribute.html +26 -26
  31. data/doc/classes/TaskJuggler/BooleanAttribute.html +26 -26
  32. data/doc/classes/TaskJuggler/CSVFile.html +24 -24
  33. data/doc/classes/TaskJuggler/CellSettingPattern.html +201 -0
  34. data/doc/classes/TaskJuggler/CellSettingPatternList.html +253 -0
  35. data/doc/classes/TaskJuggler/Charge.html +18 -18
  36. data/doc/classes/TaskJuggler/ChargeListAttribute.html +20 -20
  37. data/doc/classes/TaskJuggler/ChargeSet.html +37 -37
  38. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +26 -26
  39. data/doc/classes/TaskJuggler/ColumnListAttribute.html +20 -20
  40. data/doc/classes/TaskJuggler/ColumnTable.html +40 -40
  41. data/doc/classes/TaskJuggler/DateAttribute.html +54 -15
  42. data/doc/classes/TaskJuggler/DefinitionListAttribute.html +10 -10
  43. data/doc/classes/TaskJuggler/DependencyListAttribute.html +47 -47
  44. data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
  45. data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
  46. data/doc/classes/TaskJuggler/FlagListAttribute.html +43 -43
  47. data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
  48. data/doc/classes/TaskJuggler/FormatListAttribute.html +21 -21
  49. data/doc/classes/TaskJuggler/GanttChart.html +48 -48
  50. data/doc/classes/TaskJuggler/GanttContainer.html +42 -42
  51. data/doc/classes/TaskJuggler/GanttHeader.html +12 -12
  52. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +12 -12
  53. data/doc/classes/TaskJuggler/GanttLine.html +24 -24
  54. data/doc/classes/TaskJuggler/GanttLoadStack.html +18 -18
  55. data/doc/classes/TaskJuggler/GanttMilestone.html +42 -42
  56. data/doc/classes/TaskJuggler/GanttRouter.html +24 -24
  57. data/doc/classes/TaskJuggler/GanttTaskBar.html +42 -42
  58. data/doc/classes/TaskJuggler/HTMLDocument.html +13 -13
  59. data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
  60. data/doc/classes/TaskJuggler/Interval.html +57 -57
  61. data/doc/classes/TaskJuggler/IntervalListAttribute.html +47 -47
  62. data/doc/classes/TaskJuggler/JobInfo.html +68 -12
  63. data/doc/classes/TaskJuggler/Journal.html +266 -20
  64. data/doc/classes/TaskJuggler/JournalEntry.html +79 -23
  65. data/doc/classes/TaskJuggler/JournalEntryList.html +454 -0
  66. data/doc/classes/TaskJuggler/KeywordArray.html +10 -10
  67. data/doc/classes/TaskJuggler/KeywordDocumentation.html +171 -170
  68. data/doc/classes/TaskJuggler/Limits.html +36 -36
  69. data/doc/classes/TaskJuggler/Limits/Limit.html +30 -30
  70. data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
  71. data/doc/classes/TaskJuggler/ListAttributeBase.html +20 -20
  72. data/doc/classes/TaskJuggler/Log.html +145 -107
  73. data/doc/classes/TaskJuggler/LogicalAttribute.html +65 -36
  74. data/doc/classes/TaskJuggler/LogicalExpression.html +61 -24
  75. data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +20 -20
  76. data/doc/classes/TaskJuggler/LogicalFlag.html +31 -51
  77. data/doc/classes/TaskJuggler/LogicalFunction.html +64 -53
  78. data/doc/classes/TaskJuggler/LogicalOperation.html +103 -55
  79. data/doc/classes/TaskJuggler/Macro.html +6 -6
  80. data/doc/classes/TaskJuggler/MacroParser.html +36 -36
  81. data/doc/classes/TaskJuggler/MacroTable.html +37 -37
  82. data/doc/classes/TaskJuggler/Message.html +12 -12
  83. data/doc/classes/TaskJuggler/MessageHandler.html +32 -20
  84. data/doc/classes/TaskJuggler/Navigator.html +110 -46
  85. data/doc/classes/TaskJuggler/NavigatorElement.html +449 -0
  86. data/doc/classes/TaskJuggler/OnShiftCache.html +24 -24
  87. data/doc/classes/TaskJuggler/Project.html +1158 -893
  88. data/doc/classes/TaskJuggler/ProjectFileParser.html +94 -91
  89. data/doc/classes/TaskJuggler/PropertyAttribute.html +20 -20
  90. data/doc/classes/TaskJuggler/PropertyList.html +225 -155
  91. data/doc/classes/TaskJuggler/PropertySet.html +375 -332
  92. data/doc/classes/TaskJuggler/PropertyTreeNode.html +750 -510
  93. data/doc/classes/TaskJuggler/Query.html +404 -139
  94. data/doc/classes/TaskJuggler/{RTPNavigator.html → RTFNavigator.html} +57 -56
  95. data/doc/classes/TaskJuggler/RTFQuery.html +343 -0
  96. data/doc/classes/TaskJuggler/{RTPReport.html → RTFReport.html} +70 -67
  97. data/doc/classes/TaskJuggler/RealFormat.html +18 -18
  98. data/doc/classes/TaskJuggler/RealFormatAttribute.html +10 -10
  99. data/doc/classes/TaskJuggler/ReferenceAttribute.html +107 -40
  100. data/doc/classes/TaskJuggler/RemoteServiceManager.html +335 -0
  101. data/doc/classes/TaskJuggler/Report.html +66 -64
  102. data/doc/classes/TaskJuggler/ReportBase.html +112 -123
  103. data/doc/classes/TaskJuggler/ReportContext.html +43 -38
  104. data/doc/classes/TaskJuggler/ReportServer.html +320 -0
  105. data/doc/classes/TaskJuggler/ReportTable.html +42 -42
  106. data/doc/classes/TaskJuggler/ReportTableCell.html +221 -129
  107. data/doc/classes/TaskJuggler/ReportTableColumn.html +27 -27
  108. data/doc/classes/TaskJuggler/ReportTableLegend.html +24 -24
  109. data/doc/classes/TaskJuggler/ReportTableLine.html +126 -80
  110. data/doc/classes/TaskJuggler/Resource.html +12 -12
  111. data/doc/classes/TaskJuggler/ResourceListAttribute.html +82 -47
  112. data/doc/classes/TaskJuggler/ResourceListRE.html +43 -39
  113. data/doc/classes/TaskJuggler/ResourceScenario.html +413 -321
  114. data/doc/classes/TaskJuggler/RichText.html +64 -248
  115. data/doc/classes/TaskJuggler/RichTextAttribute.html +94 -30
  116. data/doc/classes/TaskJuggler/RichTextDocument.html +87 -85
  117. data/doc/classes/TaskJuggler/RichTextElement.html +456 -363
  118. data/doc/classes/TaskJuggler/RichTextException.html +13 -13
  119. data/doc/classes/TaskJuggler/{RichTextProtocolExample.html → RichTextFunctionExample.html} +64 -63
  120. data/doc/classes/TaskJuggler/{RichTextProtocolHandler.html → RichTextFunctionHandler.html} +42 -36
  121. data/doc/classes/TaskJuggler/RichTextIntermediate.html +563 -0
  122. data/doc/classes/TaskJuggler/RichTextParser.html +54 -51
  123. data/doc/classes/TaskJuggler/RichTextScanner.html +94 -92
  124. data/doc/classes/TaskJuggler/RichTextSnip.html +96 -60
  125. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +369 -227
  126. data/doc/classes/TaskJuggler/Scenario.html +6 -6
  127. data/doc/classes/TaskJuggler/ScenarioData.html +37 -37
  128. data/doc/classes/TaskJuggler/ScenarioListAttribute.html +31 -31
  129. data/doc/classes/TaskJuggler/Scoreboard.html +66 -66
  130. data/doc/classes/TaskJuggler/Shift.html +18 -18
  131. data/doc/classes/TaskJuggler/ShiftAssignment.html +54 -54
  132. data/doc/classes/TaskJuggler/ShiftAssignments.html +78 -78
  133. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
  134. data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
  135. data/doc/classes/TaskJuggler/SortListAttribute.html +22 -22
  136. data/doc/classes/TaskJuggler/SourceFileInfo.html +12 -12
  137. data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
  138. data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
  139. data/doc/classes/TaskJuggler/SyntaxReference.html +42 -42
  140. data/doc/classes/TaskJuggler/TOCEntry.html +12 -12
  141. data/doc/classes/TaskJuggler/TSResourceRecord.html +197 -0
  142. data/doc/classes/TaskJuggler/TSTaskRecord.html +215 -0
  143. data/doc/classes/TaskJuggler/TableColumnDefinition.html +64 -43
  144. data/doc/classes/TaskJuggler/TableOfContents.html +18 -18
  145. data/doc/classes/TaskJuggler/TableReport.html +447 -468
  146. data/doc/classes/TaskJuggler/Task.html +12 -12
  147. data/doc/classes/TaskJuggler/TaskDependency.html +12 -12
  148. data/doc/classes/TaskJuggler/TaskListAttribute.html +47 -47
  149. data/doc/classes/TaskJuggler/TaskListRE.html +43 -39
  150. data/doc/classes/TaskJuggler/TaskScenario.html +529 -282
  151. data/doc/classes/TaskJuggler/TextParser.html +215 -194
  152. data/doc/classes/TaskJuggler/TextParser/Pattern.html +97 -97
  153. data/doc/classes/TaskJuggler/TextParser/Rule.html +84 -84
  154. data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -15
  155. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
  156. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +6 -6
  157. data/doc/classes/TaskJuggler/TextReport.html +77 -74
  158. data/doc/classes/TaskJuggler/TextScanner.html +294 -281
  159. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
  160. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +59 -60
  161. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +12 -12
  162. data/doc/classes/TaskJuggler/TimeSheetReport.html +406 -0
  163. data/doc/classes/TaskJuggler/TjException.html +6 -6
  164. data/doc/classes/TaskJuggler/TjTime.html +522 -513
  165. data/doc/classes/TaskJuggler/TjpExample.html +25 -25
  166. data/doc/classes/TaskJuggler/TjpExportRE.html +21 -24
  167. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +6177 -4318
  168. data/doc/classes/TaskJuggler/UserManual.html +212 -213
  169. data/doc/classes/TaskJuggler/WorkingHours.html +49 -49
  170. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -53
  171. data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
  172. data/doc/classes/TaskJuggler/XMLComment.html +21 -21
  173. data/doc/classes/TaskJuggler/XMLDocument.html +27 -26
  174. data/doc/classes/TaskJuggler/XMLElement.html +86 -50
  175. data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
  176. data/doc/classes/TaskJuggler/XMLText.html +36 -36
  177. data/doc/files/COPYING.html +1 -1
  178. data/doc/files/README.html +1 -1
  179. data/doc/files/lib/AccountScenario_rb.html +3 -2
  180. data/doc/files/lib/Account_rb.html +3 -2
  181. data/doc/files/lib/Allocation_rb.html +3 -2
  182. data/doc/files/lib/AppConfig_rb.html +5 -2
  183. data/doc/files/lib/AttributeBase_rb.html +3 -2
  184. data/doc/files/lib/AttributeDefinition_rb.html +3 -2
  185. data/doc/files/lib/Attributes_rb.html +3 -2
  186. data/doc/files/lib/BatchProcessor_rb.html +4 -3
  187. data/doc/files/lib/Booking_rb.html +3 -2
  188. data/doc/files/lib/ChargeSet_rb.html +3 -2
  189. data/doc/files/lib/Charge_rb.html +3 -2
  190. data/doc/files/lib/HTMLDocument_rb.html +3 -2
  191. data/doc/files/lib/Interval_rb.html +3 -2
  192. data/doc/files/lib/Journal_rb.html +4 -3
  193. data/doc/files/lib/KeywordArray_rb.html +3 -2
  194. data/doc/files/lib/KeywordDocumentation_rb.html +3 -2
  195. data/doc/files/lib/Limits_rb.html +3 -2
  196. data/doc/files/lib/Log_rb.html +3 -2
  197. data/doc/files/lib/LogicalExpression_rb.html +3 -2
  198. data/doc/files/lib/LogicalFunction_rb.html +3 -2
  199. data/doc/files/lib/LogicalOperation_rb.html +3 -2
  200. data/doc/files/lib/MacroParser_rb.html +3 -2
  201. data/doc/files/lib/MacroTable_rb.html +3 -2
  202. data/doc/files/lib/MessageHandler_rb.html +3 -2
  203. data/doc/files/lib/Message_rb.html +3 -2
  204. data/doc/files/lib/ProjectFileParser_rb.html +7 -4
  205. data/doc/files/lib/Project_rb.html +3 -2
  206. data/doc/files/lib/PropertyList_rb.html +3 -2
  207. data/doc/files/lib/PropertySet_rb.html +3 -2
  208. data/doc/files/lib/PropertyTreeNode_rb.html +3 -2
  209. data/doc/files/lib/Query_rb.html +3 -2
  210. data/doc/files/lib/{RTPNavigator_rb.html → RTFNavigator_rb.html} +8 -7
  211. data/doc/files/lib/RTFQuery_rb.html +121 -0
  212. data/doc/files/lib/{RTPReport_rb.html → RTFReport_rb.html} +8 -7
  213. data/doc/files/lib/RealFormat_rb.html +3 -2
  214. data/doc/files/lib/RemoteServiceManager_rb.html +117 -0
  215. data/doc/files/lib/ReportServer_rb.html +107 -0
  216. data/doc/files/lib/ResourceScenario_rb.html +3 -2
  217. data/doc/files/lib/Resource_rb.html +3 -2
  218. data/doc/files/lib/RichTextDocument_rb.html +4 -3
  219. data/doc/files/lib/RichTextElement_rb.html +3 -2
  220. data/doc/files/lib/{RichTextProtocolExample_rb.html → RichTextFunctionExample_rb.html} +8 -7
  221. data/doc/files/lib/{RichTextProtocolHandler_rb.html → RichTextFunctionHandler_rb.html} +7 -6
  222. data/doc/files/lib/RichTextParser_rb.html +3 -2
  223. data/doc/files/lib/RichTextScanner_rb.html +3 -2
  224. data/doc/files/lib/RichTextSnip_rb.html +3 -2
  225. data/doc/files/lib/RichTextSyntaxRules_rb.html +3 -2
  226. data/doc/files/lib/RichText_rb.html +3 -2
  227. data/doc/files/lib/ScenarioData_rb.html +3 -2
  228. data/doc/files/lib/Scenario_rb.html +3 -2
  229. data/doc/files/lib/Scoreboard_rb.html +3 -2
  230. data/doc/files/lib/ShiftAssignments_rb.html +3 -2
  231. data/doc/files/lib/ShiftScenario_rb.html +3 -2
  232. data/doc/files/lib/Shift_rb.html +3 -2
  233. data/doc/files/lib/SourceFileInfo_rb.html +3 -2
  234. data/doc/files/lib/SyntaxReference_rb.html +3 -2
  235. data/doc/files/lib/TOCEntry_rb.html +3 -2
  236. data/doc/files/lib/TableColumnDefinition_rb.html +3 -2
  237. data/doc/files/lib/TableOfContents_rb.html +3 -2
  238. data/doc/files/lib/TaskDependency_rb.html +3 -2
  239. data/doc/files/lib/TaskJuggler_rb.html +7 -2
  240. data/doc/files/lib/TaskScenario_rb.html +3 -2
  241. data/doc/files/lib/Task_rb.html +3 -2
  242. data/doc/files/lib/TextParser/Pattern_rb.html +4 -3
  243. data/doc/files/lib/TextParser/Rule_rb.html +4 -3
  244. data/doc/files/lib/TextParser/StackElement_rb.html +4 -3
  245. data/doc/files/lib/TextParser/TokenDoc_rb.html +4 -3
  246. data/doc/files/lib/TextParser_rb.html +3 -2
  247. data/doc/files/lib/TextScanner_rb.html +3 -2
  248. data/doc/files/lib/Tj3Config_rb.html +3 -2
  249. data/doc/files/lib/TjException_rb.html +3 -2
  250. data/doc/files/lib/TjTime_rb.html +3 -2
  251. data/doc/files/lib/TjpExample_rb.html +3 -2
  252. data/doc/files/lib/TjpSyntaxRules_rb.html +3 -2
  253. data/doc/files/lib/UTF8String_rb.html +14 -6
  254. data/doc/files/lib/UserManual_rb.html +6 -3
  255. data/doc/files/lib/WorkingHours_rb.html +3 -2
  256. data/doc/files/lib/XMLDocument_rb.html +3 -2
  257. data/doc/files/lib/XMLElement_rb.html +3 -2
  258. data/doc/files/lib/deep_copy_rb.html +3 -2
  259. data/doc/files/lib/reports/CSVFile_rb.html +3 -2
  260. data/doc/files/lib/reports/ColumnTable_rb.html +3 -2
  261. data/doc/files/lib/reports/GanttChart_rb.html +3 -2
  262. data/doc/files/lib/reports/GanttContainer_rb.html +3 -2
  263. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +3 -2
  264. data/doc/files/lib/reports/GanttHeader_rb.html +3 -2
  265. data/doc/files/lib/reports/GanttLine_rb.html +3 -2
  266. data/doc/files/lib/reports/GanttLoadStack_rb.html +3 -2
  267. data/doc/files/lib/reports/GanttMilestone_rb.html +3 -2
  268. data/doc/files/lib/reports/GanttRouter_rb.html +3 -2
  269. data/doc/files/lib/reports/GanttTaskBar_rb.html +3 -2
  270. data/doc/files/lib/reports/HTMLGraphics_rb.html +3 -2
  271. data/doc/files/lib/reports/Navigator_rb.html +3 -2
  272. data/doc/files/lib/reports/ReportBase_rb.html +3 -2
  273. data/doc/files/lib/reports/ReportContext_rb.html +3 -2
  274. data/doc/files/lib/reports/ReportTableCell_rb.html +3 -2
  275. data/doc/files/lib/reports/ReportTableColumn_rb.html +3 -2
  276. data/doc/files/lib/reports/ReportTableLegend_rb.html +3 -2
  277. data/doc/files/lib/reports/ReportTableLine_rb.html +3 -2
  278. data/doc/files/lib/reports/ReportTable_rb.html +3 -2
  279. data/doc/files/lib/reports/Report_rb.html +7 -2
  280. data/doc/files/lib/reports/ResourceListRE_rb.html +3 -2
  281. data/doc/files/lib/reports/TableReport_rb.html +3 -2
  282. data/doc/files/lib/reports/TaskListRE_rb.html +3 -2
  283. data/doc/files/lib/reports/TextReport_rb.html +4 -3
  284. data/doc/files/lib/reports/TimeSheetReport_rb.html +117 -0
  285. data/doc/files/lib/reports/TjpExportRE_rb.html +3 -2
  286. data/doc/files/lib/taskjuggler3_rb.html +94 -77
  287. data/doc/files/lib/tj3client_rb.html +280 -0
  288. data/doc/files/lib/tj3man_rb.html +10 -9
  289. data/doc/fr_class_index.html +27 -5
  290. data/doc/fr_file_index.html +15 -7
  291. data/doc/fr_method_index.html +1312 -1020
  292. data/examples/tutorial.tjp +113 -14
  293. data/gem_spec.rb +2 -1
  294. data/lib/Account.rb +1 -1
  295. data/lib/AccountScenario.rb +1 -1
  296. data/lib/Allocation.rb +1 -1
  297. data/lib/AppConfig.rb +23 -10
  298. data/lib/AttributeBase.rb +34 -6
  299. data/lib/AttributeDefinition.rb +1 -1
  300. data/lib/Attributes.rb +51 -16
  301. data/lib/BatchProcessor.rb +204 -77
  302. data/lib/Booking.rb +1 -1
  303. data/lib/Charge.rb +1 -1
  304. data/lib/ChargeSet.rb +1 -1
  305. data/lib/HTMLDocument.rb +2 -2
  306. data/lib/Interval.rb +1 -1
  307. data/lib/Journal.rb +231 -9
  308. data/lib/KeywordArray.rb +1 -1
  309. data/lib/KeywordDocumentation.rb +6 -4
  310. data/lib/Limits.rb +1 -1
  311. data/lib/Log.rb +8 -1
  312. data/lib/LogicalExpression.rb +14 -13
  313. data/lib/LogicalFunction.rb +88 -14
  314. data/lib/LogicalOperation.rb +124 -53
  315. data/lib/MacroParser.rb +1 -1
  316. data/lib/MacroTable.rb +2 -2
  317. data/lib/Message.rb +1 -1
  318. data/lib/MessageHandler.rb +7 -3
  319. data/lib/Project.rb +93 -14
  320. data/lib/ProjectFileParser.rb +30 -15
  321. data/lib/PropertyList.rb +103 -36
  322. data/lib/PropertySet.rb +22 -10
  323. data/lib/PropertyTreeNode.rb +120 -15
  324. data/lib/Query.rb +119 -48
  325. data/lib/{RTPNavigator.rb → RTFNavigator.rb} +11 -10
  326. data/lib/RTFQuery.rb +166 -0
  327. data/lib/{RTPReport.rb → RTFReport.rb} +11 -8
  328. data/lib/RealFormat.rb +1 -1
  329. data/lib/RemoteServiceManager.rb +80 -0
  330. data/lib/ReportServer.rb +66 -0
  331. data/lib/Resource.rb +1 -1
  332. data/lib/ResourceScenario.rb +48 -19
  333. data/lib/RichText.rb +98 -41
  334. data/lib/RichTextDocument.rb +10 -8
  335. data/lib/RichTextElement.rb +72 -28
  336. data/lib/{RichTextProtocolExample.rb → RichTextFunctionExample.rb} +8 -7
  337. data/lib/{RichTextProtocolHandler.rb → RichTextFunctionHandler.rb} +12 -14
  338. data/lib/RichTextParser.rb +6 -3
  339. data/lib/RichTextScanner.rb +91 -19
  340. data/lib/RichTextSnip.rb +8 -3
  341. data/lib/RichTextSyntaxRules.rb +103 -45
  342. data/lib/Scenario.rb +1 -1
  343. data/lib/ScenarioData.rb +2 -2
  344. data/lib/Scoreboard.rb +1 -1
  345. data/lib/Shift.rb +1 -1
  346. data/lib/ShiftAssignments.rb +1 -1
  347. data/lib/ShiftScenario.rb +1 -1
  348. data/lib/SourceFileInfo.rb +1 -1
  349. data/lib/SyntaxReference.rb +2 -2
  350. data/lib/TOCEntry.rb +1 -1
  351. data/lib/TableColumnDefinition.rb +59 -16
  352. data/lib/TableOfContents.rb +1 -1
  353. data/lib/Task.rb +1 -1
  354. data/lib/TaskDependency.rb +1 -1
  355. data/lib/TaskJuggler.rb +31 -8
  356. data/lib/TaskScenario.rb +165 -16
  357. data/lib/TextParser.rb +36 -22
  358. data/lib/TextParser/Pattern.rb +3 -3
  359. data/lib/TextParser/Rule.rb +2 -2
  360. data/lib/TextParser/StackElement.rb +4 -3
  361. data/lib/TextParser/TokenDoc.rb +2 -2
  362. data/lib/TextScanner.rb +52 -37
  363. data/lib/Tj3Config.rb +6 -5
  364. data/lib/TjException.rb +1 -1
  365. data/lib/TjTime.rb +12 -3
  366. data/lib/TjpExample.rb +1 -1
  367. data/lib/TjpSyntaxRules.rb +1044 -150
  368. data/lib/UTF8String.rb +2 -1
  369. data/lib/UserManual.rb +18 -70
  370. data/lib/WorkingHours.rb +3 -3
  371. data/lib/XMLDocument.rb +3 -2
  372. data/lib/XMLElement.rb +6 -1
  373. data/lib/deep_copy.rb +1 -1
  374. data/lib/reports/CSVFile.rb +1 -1
  375. data/lib/reports/ColumnTable.rb +9 -9
  376. data/lib/reports/GanttChart.rb +1 -1
  377. data/lib/reports/GanttContainer.rb +1 -1
  378. data/lib/reports/GanttHeader.rb +1 -1
  379. data/lib/reports/GanttHeaderScaleItem.rb +1 -1
  380. data/lib/reports/GanttLine.rb +40 -40
  381. data/lib/reports/GanttLoadStack.rb +1 -1
  382. data/lib/reports/GanttMilestone.rb +1 -1
  383. data/lib/reports/GanttRouter.rb +1 -1
  384. data/lib/reports/GanttTaskBar.rb +1 -1
  385. data/lib/reports/HTMLGraphics.rb +1 -1
  386. data/lib/reports/Navigator.rb +149 -22
  387. data/lib/reports/Report.rb +115 -172
  388. data/lib/reports/ReportBase.rb +22 -27
  389. data/lib/reports/ReportContext.rb +29 -15
  390. data/lib/reports/ReportTable.rb +1 -1
  391. data/lib/reports/ReportTableCell.rb +120 -27
  392. data/lib/reports/ReportTableColumn.rb +3 -3
  393. data/lib/reports/ReportTableLegend.rb +1 -1
  394. data/lib/reports/ReportTableLine.rb +10 -2
  395. data/lib/reports/ResourceListRE.rb +5 -1
  396. data/lib/reports/TableReport.rb +237 -287
  397. data/lib/reports/TaskListRE.rb +5 -1
  398. data/lib/reports/TextReport.rb +7 -4
  399. data/lib/reports/TimeSheetReport.rb +233 -0
  400. data/lib/reports/TjpExportRE.rb +2 -2
  401. data/lib/taskjuggler3.rb +27 -11
  402. data/lib/tj3client.rb +110 -0
  403. data/lib/tj3man.rb +4 -4
  404. data/manual/Getting_Started +0 -50
  405. data/manual/How_To_Contribute +6 -13
  406. data/manual/Installation +102 -28
  407. data/manual/Intro +11 -1
  408. data/manual/Reporting_Bugs +23 -7
  409. data/manual/Rich_Text_Attributes +59 -6
  410. data/manual/TaskJuggler_2x_Migration +27 -0
  411. data/manual/The_TaskJuggler_Syntax +104 -0
  412. data/manual/Tutorial +10 -9
  413. data/prj_cfg.rb +8 -2
  414. data/tasks/csts.rake +1 -1
  415. data/tasks/manual.rake +5 -3
  416. data/test/MessageChecker.rb +1 -1
  417. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  418. data/test/TestSuite/HTML-Reports/Alerts.tjp +77 -0
  419. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  420. data/test/TestSuite/HTML-Reports/CellText.tjp +75 -0
  421. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  422. data/test/TestSuite/HTML-Reports/ColumnPeriods.tjp +44 -0
  423. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  424. data/test/TestSuite/HTML-Reports/IsOngoing.tjp +34 -0
  425. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +80 -0
  426. data/test/TestSuite/HTML-Reports/LogicalFunctions.tjp +20 -0
  427. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  428. data/test/TestSuite/HTML-Reports/Query.tjp +28 -0
  429. data/test/TestSuite/HTML-Reports/Sorting.tjp +68 -0
  430. data/test/TestSuite/HTML-Reports/TimeSheet.tjp +69 -0
  431. data/test/TestSuite/HTML-Reports/UDAQuery.tjp +27 -0
  432. data/test/TestSuite/HTML-Reports/css/tjmanual.css +52 -0
  433. data/test/TestSuite/HTML-Reports/css/tjreport.css +195 -0
  434. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  435. data/test/TestSuite/HTML-Reports/icons/details.png +0 -0
  436. data/test/TestSuite/HTML-Reports/icons/flag-green.png +0 -0
  437. data/test/TestSuite/HTML-Reports/icons/flag-red.png +0 -0
  438. data/test/TestSuite/HTML-Reports/icons/flag-yellow.png +0 -0
  439. data/test/TestSuite/HTML-Reports/icons/resource.png +0 -0
  440. data/test/TestSuite/HTML-Reports/icons/resourcegroup.png +0 -0
  441. data/test/TestSuite/HTML-Reports/icons/task.png +0 -0
  442. data/test/TestSuite/HTML-Reports/icons/taskgroup.png +0 -0
  443. data/test/TestSuite/HTML-Reports/reference.tjp +7 -8
  444. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  445. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +1301 -0
  446. data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +34 -0
  447. data/test/TestSuite/Syntax/Correct/Celltext.tjp +2 -1
  448. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -2
  449. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +2 -1
  450. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +20 -0
  451. data/test/TestSuite/Syntax/Correct/Query.tjp +18 -0
  452. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +45 -0
  453. data/test/TestSuite/Syntax/Correct/TimeSheet.tjp +49 -0
  454. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  455. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  456. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  457. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  458. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  459. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  460. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  461. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  462. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  463. data/test/TestSuite/Syntax/Correct/tutorial.tjp +113 -14
  464. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +28 -0
  465. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +12 -0
  466. data/test/all.rb +2 -2
  467. data/test/test_BatchProcessor.rb +42 -13
  468. data/test/test_CSV-Reports.rb +1 -1
  469. data/test/test_Journal.rb +176 -0
  470. data/test/test_Limits.rb +1 -1
  471. data/test/test_LogicalExpression.rb +14 -5
  472. data/test/test_MacroTable.rb +1 -1
  473. data/test/test_Project.rb +1 -1
  474. data/test/test_PropertySet.rb +1 -1
  475. data/test/test_Query.rb +1 -1
  476. data/test/test_RealFormat.rb +1 -1
  477. data/test/test_RichText.rb +30 -20
  478. data/test/test_Scheduler.rb +1 -1
  479. data/test/test_ShiftAssignments.rb +2 -2
  480. data/test/test_Syntax.rb +1 -1
  481. data/test/test_TextScanner.rb +1 -1
  482. data/test/test_TjTime.rb +1 -1
  483. data/test/test_TjpExample.rb +1 -1
  484. data/test/test_UTF8String.rb +1 -1
  485. data/test/test_WorkingHours.rb +1 -1
  486. data/test/test_deep_copy.rb +2 -2
  487. metadata +610 -532
  488. data/doc/files/lib/ms_test_rb.html +0 -90
  489. data/examples/ContactList.html +0 -1467
  490. data/examples/Deliveries.html +0 -485
  491. data/examples/Development.html +0 -2525
  492. data/examples/Overview.html +0 -747
  493. data/examples/Resource Graph.html +0 -616
  494. data/lib/ms_test.rb +0 -27
  495. data/test/TestSuite/HTML-Reports/reference-export.html +0 -187
@@ -109,7 +109,7 @@ node.
109
109
 
110
110
  <div class="name-list">
111
111
 
112
- <a href="#M000767">new</a>&nbsp;&nbsp;
112
+ <a href="#M000580">new</a>&nbsp;&nbsp;
113
113
 
114
114
  </div>
115
115
  </div>
@@ -204,12 +204,12 @@ node.
204
204
  <h3 class="section-bar">Public Class methods</h3>
205
205
 
206
206
 
207
- <div id="method-M000767" class="method-detail">
208
- <a name="M000767"></a>
207
+ <div id="method-M000580" class="method-detail">
208
+ <a name="M000580"></a>
209
209
 
210
210
  <div class="method-heading">
211
211
 
212
- <a href="#M000767" class="method-signature">
212
+ <a href="#M000580" class="method-signature">
213
213
 
214
214
  <span class="method-name">new</span><span class="method-args">(id, name, objClass, inheritedFromParent, inheritedFromProject, scenarioSpecific, default, userDefined = false)</span>
215
215
 
@@ -236,8 +236,8 @@ the default value that is set upon creation of the attribute.
236
236
  </p>
237
237
 
238
238
  <p><a class="source-toggle" href="#"
239
- onclick="toggleCode('M000767-source');return false;">[Source]</a></p>
240
- <div class="method-source-code" id="M000767-source">
239
+ onclick="toggleCode('M000580-source');return false;">[Source]</a></p>
240
+ <div class="method-source-code" id="M000580-source">
241
241
  <pre>
242
242
  <span class="ruby-comment cmt"># File lib/AttributeDefinition.rb, line 35</span>
243
243
  35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">objClass</span>, <span class="ruby-identifier">inheritedFromParent</span>, <span class="ruby-identifier">inheritedFromProject</span>,
@@ -95,9 +95,9 @@ code can be submitted to be executed in parallel. The number of CPU cores
95
95
  to use is limited at object creation time. The submitted jobs will be
96
96
  queued and scheduled to the given number of CPUs. The usage model is
97
97
  simple. Create an <a href="BatchProcessor.html">BatchProcessor</a> object.
98
- use <a href="BatchProcessor.html#M000339">BatchProcessor#queue</a> to
98
+ Use <a href="BatchProcessor.html#M000976">BatchProcessor#queue</a> to
99
99
  submit all the jobs and then use <a
100
- href="BatchProcessor.html#M000340">BatchProcessor#wait</a> to wait for
100
+ href="BatchProcessor.html#M000977">BatchProcessor#wait</a> to wait for
101
101
  completion and to process the results.
102
102
  </p>
103
103
 
@@ -111,11 +111,11 @@ completion and to process the results.
111
111
 
112
112
  <div class="name-list">
113
113
 
114
- <a href="#M000338">new</a>&nbsp;&nbsp;
114
+ <a href="#M000975">new</a>&nbsp;&nbsp;
115
115
 
116
- <a href="#M000339">queue</a>&nbsp;&nbsp;
116
+ <a href="#M000976">queue</a>&nbsp;&nbsp;
117
117
 
118
- <a href="#M000340">wait</a>&nbsp;&nbsp;
118
+ <a href="#M000977">wait</a>&nbsp;&nbsp;
119
119
 
120
120
  </div>
121
121
  </div>
@@ -136,12 +136,12 @@ completion and to process the results.
136
136
  <h3 class="section-bar">Public Class methods</h3>
137
137
 
138
138
 
139
- <div id="method-M000338" class="method-detail">
140
- <a name="M000338"></a>
139
+ <div id="method-M000975" class="method-detail">
140
+ <a name="M000975"></a>
141
141
 
142
142
  <div class="method-heading">
143
143
 
144
- <a href="#M000338" class="method-signature">
144
+ <a href="#M000975" class="method-signature">
145
145
 
146
146
  <span class="method-name">new</span><span class="method-args">(maxCpuCores)</span>
147
147
 
@@ -157,41 +157,45 @@ Create a <a href="BatchProcessor.html">BatchProcessor</a> object.
157
157
  </p>
158
158
 
159
159
  <p><a class="source-toggle" href="#"
160
- onclick="toggleCode('M000338-source');return false;">[Source]</a></p>
161
- <div class="method-source-code" id="M000338-source">
160
+ onclick="toggleCode('M000975-source');return false;">[Source]</a></p>
161
+ <div class="method-source-code" id="M000975-source">
162
162
  <pre>
163
- <span class="ruby-comment cmt"># File lib/BatchProcessor.rb, line 59</span>
164
- 59: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">maxCpuCores</span>)
165
- 60: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">maxCpuCores</span>
166
- 61: <span class="ruby-comment cmt"># The job queue.</span>
167
- 62: <span class="ruby-ivar">@queue</span> = <span class="ruby-constant">Queue</span>.<span class="ruby-identifier">new</span>
168
- 63: <span class="ruby-comment cmt"># A semaphore to guard accesses to shared data structures.`</span>
169
- 64: <span class="ruby-ivar">@lock</span> = <span class="ruby-constant">Monitor</span>.<span class="ruby-identifier">new</span>
170
- 65: <span class="ruby-comment cmt"># A hash that maps process ids to JobInfo objects.</span>
171
- 66: <span class="ruby-ivar">@jobs</span> = { }
172
- 67: <span class="ruby-comment cmt"># Counts the number of pending processes.</span>
173
- 68: <span class="ruby-ivar">@pendingJobs</span> = <span class="ruby-value">0</span>
174
- 69: <span class="ruby-comment cmt"># An Array that holds all the IO objects to receive data from.</span>
175
- 70: <span class="ruby-ivar">@pipes</span> = []
176
- 71: <span class="ruby-comment cmt"># A hash that maps IO objects to JobInfo objects</span>
177
- 72: <span class="ruby-ivar">@pipeToJob</span> = {}
178
- 73: <span class="ruby-comment cmt"># This global flag is set to true to signal the threads to terminate.</span>
179
- 74: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">false</span>
180
- 75: <span class="ruby-comment cmt"># Sleep time of the threads when no data is pending.</span>
181
- 76: <span class="ruby-ivar">@timeout</span> = <span class="ruby-value">0</span><span class="ruby-value">.05</span>
182
- 77:
183
- 78: <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">abort_on_exception</span> = <span class="ruby-keyword kw">true</span>
184
- 79: <span class="ruby-comment cmt"># The JobInfo objects in the @queue are processed by the pusher thread.</span>
185
- 80: <span class="ruby-comment cmt"># It forkes off processes to execute the code block associated with the</span>
186
- 81: <span class="ruby-comment cmt"># JobInfo.</span>
187
- 82: <span class="ruby-ivar">@pusher</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> { <span class="ruby-identifier">pusher</span> }
188
- 83: <span class="ruby-comment cmt"># The popper thread waits for terminated childs and picks up the</span>
189
- 84: <span class="ruby-comment cmt"># results.</span>
190
- 85: <span class="ruby-ivar">@popper</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> { <span class="ruby-identifier">popper</span> }
191
- 86: <span class="ruby-comment cmt"># The grabber thread collects $stdout and $stderr data from each child</span>
192
- 87: <span class="ruby-comment cmt"># process and stores them in the corresponding JobInfo.</span>
193
- 88: <span class="ruby-ivar">@grabber</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> { <span class="ruby-identifier">grabber</span> }
194
- 89: <span class="ruby-keyword kw">end</span>
163
+ <span class="ruby-comment cmt"># File lib/BatchProcessor.rb, line 68</span>
164
+ 68: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">maxCpuCores</span>)
165
+ 69: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">maxCpuCores</span>
166
+ 70: <span class="ruby-comment cmt"># Jobs submitted by calling queue() are put in the @toRunQueue. The</span>
167
+ 71: <span class="ruby-comment cmt"># pusher Thread will pick them up and fork them off into another</span>
168
+ 72: <span class="ruby-comment cmt"># process.</span>
169
+ 73: <span class="ruby-ivar">@toRunQueue</span> = <span class="ruby-constant">Queue</span>.<span class="ruby-identifier">new</span>
170
+ 74: <span class="ruby-comment cmt"># A hash that maps the JobInfo objects of running jobs by their PID.</span>
171
+ 75: <span class="ruby-ivar">@runningJobs</span> = { }
172
+ 76: <span class="ruby-comment cmt"># A list of jobs that wait to complete their writing.</span>
173
+ 77: <span class="ruby-ivar">@spoolingJobs</span> = [ ]
174
+ 78: <span class="ruby-comment cmt"># The wait() method will then clean the @toDropQueue, executes the post</span>
175
+ 79: <span class="ruby-comment cmt"># processing block and removes all JobInfo related objects.</span>
176
+ 80: <span class="ruby-ivar">@toDropQueue</span> = <span class="ruby-constant">Queue</span>.<span class="ruby-identifier">new</span>
177
+ 81:
178
+ 82: <span class="ruby-comment cmt"># A semaphore to guard accesses to @runningJobs, @spoolingJobs and</span>
179
+ 83: <span class="ruby-comment cmt"># following shared data structures.</span>
180
+ 84: <span class="ruby-ivar">@lock</span> = <span class="ruby-constant">Monitor</span>.<span class="ruby-identifier">new</span>
181
+ 85: <span class="ruby-comment cmt"># We count the submitted and completed jobs. The @jobsIn counter also</span>
182
+ 86: <span class="ruby-comment cmt"># doubles as a unique job ID.</span>
183
+ 87: <span class="ruby-ivar">@jobsIn</span> = <span class="ruby-ivar">@jobsOut</span> = <span class="ruby-value">0</span>
184
+ 88: <span class="ruby-comment cmt"># An Array that holds all the IO objects to receive data from.</span>
185
+ 89: <span class="ruby-ivar">@pipes</span> = []
186
+ 90: <span class="ruby-comment cmt"># A hash that maps IO objects to JobInfo objects</span>
187
+ 91: <span class="ruby-ivar">@pipeToJob</span> = {}
188
+ 92:
189
+ 93: <span class="ruby-comment cmt"># This global flag is set to true to signal the threads to terminate.</span>
190
+ 94: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">false</span>
191
+ 95: <span class="ruby-comment cmt"># Sleep time of the threads when no data is pending. This value must be</span>
192
+ 96: <span class="ruby-comment cmt"># large enough to allow for a context switch between the sending</span>
193
+ 97: <span class="ruby-comment cmt"># (forked-off) process and this process. If it's too large, throughput</span>
194
+ 98: <span class="ruby-comment cmt"># will suffer.</span>
195
+ 99: <span class="ruby-ivar">@timeout</span> = <span class="ruby-value">0</span><span class="ruby-value">.02</span>
196
+ 100:
197
+ 101: <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">abort_on_exception</span> = <span class="ruby-keyword kw">true</span>
198
+ 102: <span class="ruby-keyword kw">end</span>
195
199
  </pre>
196
200
  </div>
197
201
 
@@ -202,12 +206,12 @@ Create a <a href="BatchProcessor.html">BatchProcessor</a> object.
202
206
  <h3 class="section-bar">Public Instance methods</h3>
203
207
 
204
208
 
205
- <div id="method-M000339" class="method-detail">
206
- <a name="M000339"></a>
209
+ <div id="method-M000976" class="method-detail">
210
+ <a name="M000976"></a>
207
211
 
208
212
  <div class="method-heading">
209
213
 
210
- <a href="#M000339" class="method-signature">
214
+ <a href="#M000976" class="method-signature">
211
215
 
212
216
  <span class="method-name">queue</span><span class="method-args">(tag = nil, &amp;block)</span>
213
217
 
@@ -224,24 +228,34 @@ block to be executed in a separate process.
224
228
  </p>
225
229
 
226
230
  <p><a class="source-toggle" href="#"
227
- onclick="toggleCode('M000339-source');return false;">[Source]</a></p>
228
- <div class="method-source-code" id="M000339-source">
231
+ onclick="toggleCode('M000976-source');return false;">[Source]</a></p>
232
+ <div class="method-source-code" id="M000976-source">
229
233
  <pre>
230
- <span class="ruby-comment cmt"># File lib/BatchProcessor.rb, line 94</span>
231
- 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">queue</span>(<span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
232
- 95: <span class="ruby-comment cmt"># Create a new JobInfo object for the job and push it to the @queue.</span>
233
- 96: <span class="ruby-identifier">jobInfo</span> = <span class="ruby-constant">JobInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@queue</span>.<span class="ruby-identifier">length</span>, <span class="ruby-identifier">block</span>, <span class="ruby-identifier">tag</span>)
234
- 97: <span class="ruby-ivar">@queue</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">jobInfo</span>)
235
- 98: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
236
- 99: <span class="ruby-comment cmt"># Add the receiver end of the pipe to the @pipes Array.</span>
237
- 100: <span class="ruby-ivar">@pipes</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">jobInfo</span>.<span class="ruby-identifier">stdoutP</span>
238
- 101: <span class="ruby-comment cmt"># Map the pipe end to this JobInfo object.</span>
239
- 102: <span class="ruby-ivar">@pipeToJob</span>[<span class="ruby-identifier">jobInfo</span>.<span class="ruby-identifier">stdoutP</span>] = <span class="ruby-identifier">jobInfo</span>
240
- 103: <span class="ruby-comment cmt"># Same for $stderr.</span>
241
- 104: <span class="ruby-ivar">@pipes</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">jobInfo</span>.<span class="ruby-identifier">stderrP</span>
242
- 105: <span class="ruby-ivar">@pipeToJob</span>[<span class="ruby-identifier">jobInfo</span>.<span class="ruby-identifier">stderrP</span>] = <span class="ruby-identifier">jobInfo</span>
243
- 106: <span class="ruby-keyword kw">end</span>
244
- 107: <span class="ruby-keyword kw">end</span>
234
+ <span class="ruby-comment cmt"># File lib/BatchProcessor.rb, line 107</span>
235
+ 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">queue</span>(<span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
236
+ 108: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'You cannot call queue() while wait() is running!'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@jobsOut</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
237
+ 109:
238
+ 110: <span class="ruby-comment cmt"># If this is the first queued job for this run, we have to start the</span>
239
+ 111: <span class="ruby-comment cmt"># helper threads.</span>
240
+ 112: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@jobsIn</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
241
+ 113: <span class="ruby-comment cmt"># The JobInfo objects in the @toRunQueue are processed by the pusher</span>
242
+ 114: <span class="ruby-comment cmt"># thread. It forkes off processes to execute the code block associated</span>
243
+ 115: <span class="ruby-comment cmt"># with the JobInfo.</span>
244
+ 116: <span class="ruby-ivar">@pusher</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> { <span class="ruby-identifier">pusher</span> }
245
+ 117: <span class="ruby-comment cmt"># The popper thread waits for terminated childs and picks up the</span>
246
+ 118: <span class="ruby-comment cmt"># results.</span>
247
+ 119: <span class="ruby-ivar">@popper</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> { <span class="ruby-identifier">popper</span> }
248
+ 120: <span class="ruby-comment cmt"># The grabber thread collects $stdout and $stderr data from each child</span>
249
+ 121: <span class="ruby-comment cmt"># process and stores them in the corresponding JobInfo.</span>
250
+ 122: <span class="ruby-ivar">@grabber</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> { <span class="ruby-identifier">grabber</span> }
251
+ 123: <span class="ruby-keyword kw">end</span>
252
+ 124:
253
+ 125: <span class="ruby-comment cmt"># Create a new JobInfo object for the job and push it to the @toRunQueue.</span>
254
+ 126: <span class="ruby-identifier">job</span> = <span class="ruby-constant">JobInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@jobsIn</span>, <span class="ruby-identifier">block</span>, <span class="ruby-identifier">tag</span>)
255
+ 127: <span class="ruby-comment cmt"># Increase job counter</span>
256
+ 128: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@jobsIn</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> }
257
+ 129: <span class="ruby-ivar">@toRunQueue</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">job</span>)
258
+ 130: <span class="ruby-keyword kw">end</span>
245
259
  </pre>
246
260
  </div>
247
261
 
@@ -249,12 +263,12 @@ block to be executed in a separate process.
249
263
  </div>
250
264
 
251
265
 
252
- <div id="method-M000340" class="method-detail">
253
- <a name="M000340"></a>
266
+ <div id="method-M000977" class="method-detail">
267
+ <a name="M000977"></a>
254
268
 
255
269
  <div class="method-heading">
256
270
 
257
- <a href="#M000340" class="method-signature">
271
+ <a href="#M000977" class="method-signature">
258
272
 
259
273
  <span class="method-name">wait</span><span class="method-args">() {|job| ...}</span>
260
274
 
@@ -271,25 +285,45 @@ results.
271
285
  </p>
272
286
 
273
287
  <p><a class="source-toggle" href="#"
274
- onclick="toggleCode('M000340-source');return false;">[Source]</a></p>
275
- <div class="method-source-code" id="M000340-source">
288
+ onclick="toggleCode('M000977-source');return false;">[Source]</a></p>
289
+ <div class="method-source-code" id="M000977-source">
276
290
  <pre>
277
- <span class="ruby-comment cmt"># File lib/BatchProcessor.rb, line 111</span>
278
- 111: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait</span>
279
- 112: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@queue</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@pendingJobs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">do</span>
280
- 113: <span class="ruby-identifier">sleep</span>(<span class="ruby-ivar">@timeout</span>)
281
- 114: <span class="ruby-keyword kw">end</span>
282
- 115:
283
- 116: <span class="ruby-comment cmt"># Signal threads to stop</span>
284
- 117: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">true</span>
285
- 118: <span class="ruby-comment cmt"># Wait for treads to finish</span>
286
- 119: <span class="ruby-ivar">@pusher</span>.<span class="ruby-identifier">join</span>
287
- 120: <span class="ruby-ivar">@popper</span>.<span class="ruby-identifier">join</span>
288
- 121: <span class="ruby-ivar">@grabber</span>.<span class="ruby-identifier">join</span>
289
- 122:
290
- 123: <span class="ruby-comment cmt"># Pass the results of the jobs to the caller.</span>
291
- 124: <span class="ruby-ivar">@jobs</span>.<span class="ruby-identifier">each_value</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">job</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">job</span>) }
292
- 125: <span class="ruby-keyword kw">end</span>
291
+ <span class="ruby-comment cmt"># File lib/BatchProcessor.rb, line 134</span>
292
+ 134: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wait</span>
293
+ 135: <span class="ruby-comment cmt"># When we have received as many jobs in the @toDropQueue than we have</span>
294
+ 136: <span class="ruby-comment cmt"># started then we're done.</span>
295
+ 137: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@jobsIn</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@jobsOut</span> }
296
+ 138: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@toDropQueue</span>.<span class="ruby-identifier">empty?</span>
297
+ 139: <span class="ruby-identifier">sleep</span>(<span class="ruby-ivar">@timeout</span>)
298
+ 140: <span class="ruby-keyword kw">else</span>
299
+ 141: <span class="ruby-comment cmt"># We have completed jobs.</span>
300
+ 142: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@toDropQueue</span>.<span class="ruby-identifier">empty?</span>
301
+ 143: <span class="ruby-comment cmt"># Pop a job from the @toDropQueue and call the block with it.</span>
302
+ 144: <span class="ruby-identifier">job</span> = <span class="ruby-ivar">@toDropQueue</span>.<span class="ruby-identifier">pop</span>
303
+ 145: <span class="ruby-comment cmt"># Remove the job related entries from the housekeeping tables.</span>
304
+ 146: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@jobsOut</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> }
305
+ 147:
306
+ 148: <span class="ruby-comment cmt"># Call the post-processing block that was passed to wait() with</span>
307
+ 149: <span class="ruby-comment cmt"># the JobInfo object as argument.</span>
308
+ 150: <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">job</span>)
309
+ 151: <span class="ruby-keyword kw">end</span>
310
+ 152: <span class="ruby-keyword kw">end</span>
311
+ 153: <span class="ruby-keyword kw">end</span>
312
+ 154:
313
+ 155: <span class="ruby-comment cmt"># Signal threads to stop</span>
314
+ 156: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">true</span>
315
+ 157: <span class="ruby-comment cmt"># Wait for treads to finish</span>
316
+ 158: <span class="ruby-ivar">@pusher</span>.<span class="ruby-identifier">join</span>
317
+ 159: <span class="ruby-ivar">@popper</span>.<span class="ruby-identifier">join</span>
318
+ 160: <span class="ruby-ivar">@grabber</span>.<span class="ruby-identifier">join</span>
319
+ 161:
320
+ 162: <span class="ruby-comment cmt"># Reset some variables so we can reuse the object for further job runs.</span>
321
+ 163: <span class="ruby-ivar">@jobsIn</span> = <span class="ruby-ivar">@jobsOut</span> = <span class="ruby-value">0</span>
322
+ 164: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">false</span>
323
+ 165:
324
+ 166: <span class="ruby-comment cmt"># Make sure all data structures are empty and clean.</span>
325
+ 167: <span class="ruby-identifier">check</span>
326
+ 168: <span class="ruby-keyword kw">end</span>
293
327
  </pre>
294
328
  </div>
295
329
 
@@ -95,11 +95,11 @@
95
95
 
96
96
  <div class="name-list">
97
97
 
98
- <a href="#M000432">new</a>&nbsp;&nbsp;
98
+ <a href="#M000694">new</a>&nbsp;&nbsp;
99
99
 
100
- <a href="#M000433">to_s</a>&nbsp;&nbsp;
100
+ <a href="#M000695">to_s</a>&nbsp;&nbsp;
101
101
 
102
- <a href="#M000434">to_tjp</a>&nbsp;&nbsp;
102
+ <a href="#M000696">to_tjp</a>&nbsp;&nbsp;
103
103
 
104
104
  </div>
105
105
  </div>
@@ -178,12 +178,12 @@
178
178
  <h3 class="section-bar">Public Class methods</h3>
179
179
 
180
180
 
181
- <div id="method-M000432" class="method-detail">
182
- <a name="M000432"></a>
181
+ <div id="method-M000694" class="method-detail">
182
+ <a name="M000694"></a>
183
183
 
184
184
  <div class="method-heading">
185
185
 
186
- <a href="#M000432" class="method-signature">
186
+ <a href="#M000694" class="method-signature">
187
187
 
188
188
  <span class="method-name">new</span><span class="method-args">(resource, task, intervals)</span>
189
189
 
@@ -194,8 +194,8 @@
194
194
  <div class="method-description">
195
195
 
196
196
  <p><a class="source-toggle" href="#"
197
- onclick="toggleCode('M000432-source');return false;">[Source]</a></p>
198
- <div class="method-source-code" id="M000432-source">
197
+ onclick="toggleCode('M000694-source');return false;">[Source]</a></p>
198
+ <div class="method-source-code" id="M000694-source">
199
199
  <pre>
200
200
  <span class="ruby-comment cmt"># File lib/Booking.rb, line 20</span>
201
201
  20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">task</span>, <span class="ruby-identifier">intervals</span>)
@@ -216,12 +216,12 @@
216
216
  <h3 class="section-bar">Public Instance methods</h3>
217
217
 
218
218
 
219
- <div id="method-M000433" class="method-detail">
220
- <a name="M000433"></a>
219
+ <div id="method-M000695" class="method-detail">
220
+ <a name="M000695"></a>
221
221
 
222
222
  <div class="method-heading">
223
223
 
224
- <a href="#M000433" class="method-signature">
224
+ <a href="#M000695" class="method-signature">
225
225
 
226
226
  <span class="method-name">to_s</span><span class="method-args">()</span>
227
227
 
@@ -232,8 +232,8 @@
232
232
  <div class="method-description">
233
233
 
234
234
  <p><a class="source-toggle" href="#"
235
- onclick="toggleCode('M000433-source');return false;">[Source]</a></p>
236
- <div class="method-source-code" id="M000433-source">
235
+ onclick="toggleCode('M000695-source');return false;">[Source]</a></p>
236
+ <div class="method-source-code" id="M000695-source">
237
237
  <pre>
238
238
  <span class="ruby-comment cmt"># File lib/Booking.rb, line 29</span>
239
239
  29: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
@@ -255,12 +255,12 @@
255
255
  </div>
256
256
 
257
257
 
258
- <div id="method-M000434" class="method-detail">
259
- <a name="M000434"></a>
258
+ <div id="method-M000696" class="method-detail">
259
+ <a name="M000696"></a>
260
260
 
261
261
  <div class="method-heading">
262
262
 
263
- <a href="#M000434" class="method-signature">
263
+ <a href="#M000696" class="method-signature">
264
264
 
265
265
  <span class="method-name">to_tjp</span><span class="method-args">()</span>
266
266
 
@@ -271,8 +271,8 @@
271
271
  <div class="method-description">
272
272
 
273
273
  <p><a class="source-toggle" href="#"
274
- onclick="toggleCode('M000434-source');return false;">[Source]</a></p>
275
- <div class="method-source-code" id="M000434-source">
274
+ onclick="toggleCode('M000696-source');return false;">[Source]</a></p>
275
+ <div class="method-source-code" id="M000696-source">
276
276
  <pre>
277
277
  <span class="ruby-comment cmt"># File lib/Booking.rb, line 42</span>
278
278
  42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>
@@ -95,13 +95,13 @@
95
95
 
96
96
  <div class="name-list">
97
97
 
98
- <a href="#M000443">new</a>&nbsp;&nbsp;
98
+ <a href="#M000849">new</a>&nbsp;&nbsp;
99
99
 
100
- <a href="#M000444">tjpId</a>&nbsp;&nbsp;
100
+ <a href="#M000850">tjpId</a>&nbsp;&nbsp;
101
101
 
102
- <a href="#M000445">to_s</a>&nbsp;&nbsp;
102
+ <a href="#M000851">to_s</a>&nbsp;&nbsp;
103
103
 
104
- <a href="#M000446">to_tjp</a>&nbsp;&nbsp;
104
+ <a href="#M000852">to_tjp</a>&nbsp;&nbsp;
105
105
 
106
106
  </div>
107
107
  </div>
@@ -122,12 +122,12 @@
122
122
  <h3 class="section-bar">Public Class methods</h3>
123
123
 
124
124
 
125
- <div id="method-M000443" class="method-detail">
126
- <a name="M000443"></a>
125
+ <div id="method-M000849" class="method-detail">
126
+ <a name="M000849"></a>
127
127
 
128
128
  <div class="method-heading">
129
129
 
130
- <a href="#M000443" class="method-signature">
130
+ <a href="#M000849" class="method-signature">
131
131
 
132
132
  <span class="method-name">new</span><span class="method-args">(property, type)</span>
133
133
 
@@ -138,8 +138,8 @@
138
138
  <div class="method-description">
139
139
 
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000443-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000443-source">
141
+ onclick="toggleCode('M000849-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000849-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File lib/Attributes.rb, line 93</span>
145
145
  93: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">type</span>)
@@ -154,12 +154,12 @@
154
154
  </div>
155
155
 
156
156
 
157
- <div id="method-M000444" class="method-detail">
158
- <a name="M000444"></a>
157
+ <div id="method-M000850" class="method-detail">
158
+ <a name="M000850"></a>
159
159
 
160
160
  <div class="method-heading">
161
161
 
162
- <a href="#M000444" class="method-signature">
162
+ <a href="#M000850" class="method-signature">
163
163
 
164
164
  <span class="method-name">tjpId</span><span class="method-args">()</span>
165
165
 
@@ -170,8 +170,8 @@
170
170
  <div class="method-description">
171
171
 
172
172
  <p><a class="source-toggle" href="#"
173
- onclick="toggleCode('M000444-source');return false;">[Source]</a></p>
174
- <div class="method-source-code" id="M000444-source">
173
+ onclick="toggleCode('M000850-source');return false;">[Source]</a></p>
174
+ <div class="method-source-code" id="M000850-source">
175
175
  <pre>
176
176
  <span class="ruby-comment cmt"># File lib/Attributes.rb, line 99</span>
177
177
  99: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">BookingListAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
@@ -187,14 +187,14 @@
187
187
  <h3 class="section-bar">Public Instance methods</h3>
188
188
 
189
189
 
190
- <div id="method-M000445" class="method-detail">
191
- <a name="M000445"></a>
190
+ <div id="method-M000851" class="method-detail">
191
+ <a name="M000851"></a>
192
192
 
193
193
  <div class="method-heading">
194
194
 
195
- <a href="#M000445" class="method-signature">
195
+ <a href="#M000851" class="method-signature">
196
196
 
197
- <span class="method-name">to_s</span><span class="method-args">()</span>
197
+ <span class="method-name">to_s</span><span class="method-args">(query = nil)</span>
198
198
 
199
199
  </a>
200
200
 
@@ -203,11 +203,11 @@
203
203
  <div class="method-description">
204
204
 
205
205
  <p><a class="source-toggle" href="#"
206
- onclick="toggleCode('M000445-source');return false;">[Source]</a></p>
207
- <div class="method-source-code" id="M000445-source">
206
+ onclick="toggleCode('M000851-source');return false;">[Source]</a></p>
207
+ <div class="method-source-code" id="M000851-source">
208
208
  <pre>
209
209
  <span class="ruby-comment cmt"># File lib/Attributes.rb, line 103</span>
210
- 103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
210
+ 103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span> = <span class="ruby-keyword kw">nil</span>)
211
211
  104: <span class="ruby-ivar">@value</span>.<span class="ruby-identifier">collect</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_s</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">', '</span>)
212
212
  105: <span class="ruby-keyword kw">end</span>
213
213
  </pre>
@@ -217,12 +217,12 @@
217
217
  </div>
218
218
 
219
219
 
220
- <div id="method-M000446" class="method-detail">
221
- <a name="M000446"></a>
220
+ <div id="method-M000852" class="method-detail">
221
+ <a name="M000852"></a>
222
222
 
223
223
  <div class="method-heading">
224
224
 
225
- <a href="#M000446" class="method-signature">
225
+ <a href="#M000852" class="method-signature">
226
226
 
227
227
  <span class="method-name">to_tjp</span><span class="method-args">()</span>
228
228
 
@@ -233,8 +233,8 @@
233
233
  <div class="method-description">
234
234
 
235
235
  <p><a class="source-toggle" href="#"
236
- onclick="toggleCode('M000446-source');return false;">[Source]</a></p>
237
- <div class="method-source-code" id="M000446-source">
236
+ onclick="toggleCode('M000852-source');return false;">[Source]</a></p>
237
+ <div class="method-source-code" id="M000852-source">
238
238
  <pre>
239
239
  <span class="ruby-comment cmt"># File lib/Attributes.rb, line 107</span>
240
240
  107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>