taskjuggler 0.1.1 → 0.2.0

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 (563) hide show
  1. data/CHANGELOG +37 -5
  2. data/README.rdoc +4 -2
  3. data/benchmarks/UTF-8-Strings.rb +58 -0
  4. data/benchmarks/css/tjmanual.css +0 -1
  5. data/benchmarks/htmltaskreport-1.html +47702 -0
  6. data/benchmarks/htmltaskreport-2.html +23345 -0
  7. data/benchmarks/htmltaskreport-3.html +23265 -0
  8. data/benchmarks/htmltaskreport-4.html +22135 -0
  9. data/benchmarks/profile.clt +36082 -0
  10. data/benchmarks/tj3.profile +0 -0
  11. data/benchmarks/tj3.profile.grind +6185 -0
  12. data/benchmarks/tj3.profile.symbols +432 -0
  13. data/benchmarks/tj3.profile.txt +448 -0
  14. data/data/tjp.vim +689 -0
  15. data/doc/AppConfig.html +26 -2
  16. data/doc/CHANGELOG.html +60 -8
  17. data/doc/COPYING.html +26 -2
  18. data/doc/Diff/Hunk.html +26 -2
  19. data/doc/Diff.html +26 -2
  20. data/doc/Diffable.html +26 -2
  21. data/doc/DiffableString.html +26 -2
  22. data/doc/Object.html +26 -104
  23. data/doc/README_rdoc.html +39 -7
  24. data/doc/RuntimeConfig.html +26 -2
  25. data/doc/String.html +26 -2
  26. data/doc/TaskJuggler/Account.html +27 -3
  27. data/doc/TaskJuggler/AccountAttribute.html +30 -6
  28. data/doc/TaskJuggler/AccountScenario.html +28 -4
  29. data/doc/TaskJuggler/Allocation.html +33 -9
  30. data/doc/TaskJuggler/AllocationAttribute.html +31 -7
  31. data/doc/TaskJuggler/AttributeBase.html +162 -111
  32. data/doc/TaskJuggler/AttributeDefinition.html +26 -2
  33. data/doc/TaskJuggler/AttributeOverwrite.html +26 -2
  34. data/doc/TaskJuggler/BatchProcessor.html +26 -2
  35. data/doc/TaskJuggler/Booking.html +29 -5
  36. data/doc/TaskJuggler/BookingListAttribute.html +29 -5
  37. data/doc/TaskJuggler/BooleanAttribute.html +30 -6
  38. data/doc/TaskJuggler/CSVFile.html +26 -2
  39. data/doc/TaskJuggler/CellSettingPattern.html +26 -2
  40. data/doc/TaskJuggler/CellSettingPatternList.html +26 -2
  41. data/doc/TaskJuggler/Charge.html +30 -6
  42. data/doc/TaskJuggler/ChargeListAttribute.html +29 -5
  43. data/doc/TaskJuggler/ChargeSet.html +26 -2
  44. data/doc/TaskJuggler/ChargeSetListAttribute.html +30 -6
  45. data/doc/TaskJuggler/CollisionDetector.html +26 -2
  46. data/doc/TaskJuggler/ColumnListAttribute.html +28 -4
  47. data/doc/TaskJuggler/ColumnTable.html +26 -2
  48. data/doc/TaskJuggler/Daemon.html +26 -2
  49. data/doc/TaskJuggler/DataCache.html +26 -2
  50. data/doc/TaskJuggler/DataCacheEntry.html +26 -2
  51. data/doc/TaskJuggler/DateAttribute.html +30 -6
  52. data/doc/TaskJuggler/DefinitionListAttribute.html +28 -4
  53. data/doc/TaskJuggler/DependencyListAttribute.html +30 -6
  54. data/doc/TaskJuggler/DurationAttribute.html +31 -7
  55. data/doc/TaskJuggler/FileList.html +26 -2
  56. data/doc/TaskJuggler/FileRecord.html +26 -2
  57. data/doc/TaskJuggler/FixnumAttribute.html +28 -4
  58. data/doc/TaskJuggler/FlagListAttribute.html +30 -6
  59. data/doc/TaskJuggler/FloatAttribute.html +29 -5
  60. data/doc/TaskJuggler/FormatListAttribute.html +29 -5
  61. data/doc/TaskJuggler/GanttChart.html +26 -2
  62. data/doc/TaskJuggler/GanttContainer.html +26 -2
  63. data/doc/TaskJuggler/GanttHeader.html +26 -2
  64. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -2
  65. data/doc/TaskJuggler/GanttLine.html +27 -3
  66. data/doc/TaskJuggler/GanttLoadStack.html +26 -2
  67. data/doc/TaskJuggler/GanttMilestone.html +26 -2
  68. data/doc/TaskJuggler/GanttRouter.html +26 -2
  69. data/doc/TaskJuggler/GanttTaskBar.html +26 -2
  70. data/doc/TaskJuggler/HTMLDocument.html +26 -2
  71. data/doc/TaskJuggler/HTMLElements.html +623 -0
  72. data/doc/TaskJuggler/HTMLGraphics.html +26 -2
  73. data/doc/TaskJuggler/ICalReport.html +864 -0
  74. data/doc/TaskJuggler/ICalendar/Component.html +969 -0
  75. data/doc/TaskJuggler/ICalendar/Event.html +742 -0
  76. data/doc/TaskJuggler/ICalendar/Journal.html +722 -0
  77. data/doc/TaskJuggler/ICalendar/Person.html +633 -0
  78. data/doc/TaskJuggler/ICalendar/Todo.html +789 -0
  79. data/doc/TaskJuggler/ICalendar.html +1035 -0
  80. data/doc/TaskJuggler/Interval.html +99 -172
  81. data/doc/TaskJuggler/IntervalList.html +31 -7
  82. data/doc/TaskJuggler/JobInfo.html +26 -2
  83. data/doc/TaskJuggler/Journal.html +26 -2
  84. data/doc/TaskJuggler/JournalEntry.html +26 -2
  85. data/doc/TaskJuggler/JournalEntryList.html +26 -2
  86. data/doc/TaskJuggler/KeywordArray.html +26 -2
  87. data/doc/TaskJuggler/KeywordDocumentation.html +26 -2
  88. data/doc/TaskJuggler/Limits/Limit.html +124 -49
  89. data/doc/TaskJuggler/Limits.html +139 -156
  90. data/doc/TaskJuggler/LimitsAttribute.html +39 -14
  91. data/doc/TaskJuggler/ListAttributeBase.html +35 -11
  92. data/doc/TaskJuggler/Log.html +26 -2
  93. data/doc/TaskJuggler/LogFile.html +26 -2
  94. data/doc/TaskJuggler/LogicalAttribute.html +26 -2
  95. data/doc/TaskJuggler/LogicalExpression.html +26 -2
  96. data/doc/TaskJuggler/LogicalExpressionAttribute.html +35 -11
  97. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +35 -11
  98. data/doc/TaskJuggler/LogicalFlag.html +26 -2
  99. data/doc/TaskJuggler/LogicalFunction.html +28 -4
  100. data/doc/TaskJuggler/LogicalOperation.html +26 -2
  101. data/doc/TaskJuggler/ManagerResponsibilities.html +26 -2
  102. data/doc/TaskJuggler/ManagerStatusRecord.html +26 -2
  103. data/doc/TaskJuggler/Message.html +26 -2
  104. data/doc/TaskJuggler/MessageHandler.html +108 -62
  105. data/doc/TaskJuggler/Navigator.html +26 -2
  106. data/doc/TaskJuggler/NavigatorElement.html +26 -2
  107. data/doc/TaskJuggler/NikuProject.html +26 -2
  108. data/doc/TaskJuggler/NikuReport.html +27 -3
  109. data/doc/TaskJuggler/NikuResource.html +26 -2
  110. data/doc/TaskJuggler/NodeListAttribute.html +31 -7
  111. data/doc/TaskJuggler/PlaceHolderCell.html +26 -2
  112. data/doc/TaskJuggler/ProcessIntercom.html +26 -2
  113. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -2
  114. data/doc/TaskJuggler/Project.html +1236 -973
  115. data/doc/TaskJuggler/ProjectBroker.html +26 -2
  116. data/doc/TaskJuggler/ProjectBrokerIface.html +26 -2
  117. data/doc/TaskJuggler/ProjectFileParser.html +29 -4
  118. data/doc/TaskJuggler/ProjectFileScanner.html +56 -31
  119. data/doc/TaskJuggler/ProjectRecord.html +26 -2
  120. data/doc/TaskJuggler/ProjectServer.html +26 -2
  121. data/doc/TaskJuggler/ProjectServerIface.html +26 -2
  122. data/doc/TaskJuggler/PropertyAttribute.html +35 -11
  123. data/doc/TaskJuggler/PropertyList.html +26 -2
  124. data/doc/TaskJuggler/PropertySet.html +126 -106
  125. data/doc/TaskJuggler/PropertyTreeNode.html +595 -551
  126. data/doc/TaskJuggler/Query.html +127 -100
  127. data/doc/TaskJuggler/RTFHandlers.html +26 -2
  128. data/doc/TaskJuggler/RTFNavigator.html +26 -2
  129. data/doc/TaskJuggler/RTFQuery.html +28 -4
  130. data/doc/TaskJuggler/RTFReport.html +26 -2
  131. data/doc/TaskJuggler/RTFReportLink.html +26 -2
  132. data/doc/TaskJuggler/RTFWithQuerySupport.html +26 -2
  133. data/doc/TaskJuggler/RealFormat.html +26 -2
  134. data/doc/TaskJuggler/RealFormatAttribute.html +31 -7
  135. data/doc/TaskJuggler/ReferenceAttribute.html +58 -34
  136. data/doc/TaskJuggler/Report.html +427 -284
  137. data/doc/TaskJuggler/ReportBase.html +28 -102
  138. data/doc/TaskJuggler/ReportContext.html +26 -2
  139. data/doc/TaskJuggler/ReportScenario.html +633 -0
  140. data/doc/TaskJuggler/ReportServer.html +26 -2
  141. data/doc/TaskJuggler/ReportServerIface.html +26 -2
  142. data/doc/TaskJuggler/ReportServerRecord.html +26 -2
  143. data/doc/TaskJuggler/ReportServlet.html +26 -2
  144. data/doc/TaskJuggler/ReportTable.html +26 -2
  145. data/doc/TaskJuggler/ReportTableCell.html +26 -2
  146. data/doc/TaskJuggler/ReportTableColumn.html +26 -2
  147. data/doc/TaskJuggler/ReportTableLegend.html +26 -2
  148. data/doc/TaskJuggler/ReportTableLine.html +26 -2
  149. data/doc/TaskJuggler/Resource.html +225 -163
  150. data/doc/TaskJuggler/ResourceListAttribute.html +71 -47
  151. data/doc/TaskJuggler/ResourceListRE.html +26 -2
  152. data/doc/TaskJuggler/ResourceScenario.html +645 -603
  153. data/doc/TaskJuggler/RichText.html +26 -2
  154. data/doc/TaskJuggler/RichTextAttribute.html +53 -29
  155. data/doc/TaskJuggler/RichTextDocument.html +26 -2
  156. data/doc/TaskJuggler/RichTextElement.html +26 -2
  157. data/doc/TaskJuggler/RichTextFunctionExample.html +26 -2
  158. data/doc/TaskJuggler/RichTextFunctionHandler.html +26 -2
  159. data/doc/TaskJuggler/RichTextImage.html +26 -2
  160. data/doc/TaskJuggler/RichTextIntermediate.html +29 -5
  161. data/doc/TaskJuggler/RichTextParser.html +26 -2
  162. data/doc/TaskJuggler/RichTextScanner.html +26 -2
  163. data/doc/TaskJuggler/RichTextSnip.html +26 -2
  164. data/doc/TaskJuggler/RichTextSyntaxRules.html +26 -2
  165. data/doc/TaskJuggler/Scenario.html +26 -2
  166. data/doc/TaskJuggler/ScenarioData.html +95 -28
  167. data/doc/TaskJuggler/ScenarioListAttribute.html +39 -15
  168. data/doc/TaskJuggler/Scoreboard.html +137 -73
  169. data/doc/TaskJuggler/ScoreboardInterval.html +1116 -0
  170. data/doc/TaskJuggler/SheetHandlerBase.html +26 -2
  171. data/doc/TaskJuggler/SheetReceiver.html +26 -2
  172. data/doc/TaskJuggler/SheetSender.html +26 -2
  173. data/doc/TaskJuggler/Shift.html +27 -3
  174. data/doc/TaskJuggler/ShiftAssignment.html +27 -3
  175. data/doc/TaskJuggler/ShiftAssignments.html +174 -149
  176. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +41 -16
  177. data/doc/TaskJuggler/ShiftScenario.html +26 -2
  178. data/doc/TaskJuggler/SimpleQueryExpander.html +26 -2
  179. data/doc/TaskJuggler/SortListAttribute.html +35 -11
  180. data/doc/TaskJuggler/StatusSheetReceiver.html +26 -2
  181. data/doc/TaskJuggler/StatusSheetReport.html +26 -2
  182. data/doc/TaskJuggler/StatusSheetSender.html +26 -2
  183. data/doc/TaskJuggler/StdIoWrapper.html +26 -2
  184. data/doc/TaskJuggler/StringAttribute.html +39 -15
  185. data/doc/TaskJuggler/SymbolAttribute.html +35 -11
  186. data/doc/TaskJuggler/SyntaxReference.html +26 -2
  187. data/doc/TaskJuggler/TOCEntry.html +26 -2
  188. data/doc/TaskJuggler/TSResourceRecord.html +26 -2
  189. data/doc/TaskJuggler/TSTaskRecord.html +26 -2
  190. data/doc/TaskJuggler/TableColumnDefinition.html +26 -2
  191. data/doc/TaskJuggler/TableOfContents.html +26 -2
  192. data/doc/TaskJuggler/TableReport.html +239 -214
  193. data/doc/TaskJuggler/TagFile/TagFileEntry.html +841 -0
  194. data/doc/TaskJuggler/TagFile.html +817 -0
  195. data/doc/TaskJuggler/Task.html +27 -3
  196. data/doc/TaskJuggler/TaskDepListAttribute.html +47 -23
  197. data/doc/TaskJuggler/TaskDependency.html +26 -2
  198. data/doc/TaskJuggler/TaskListAttribute.html +47 -23
  199. data/doc/TaskJuggler/TaskListRE.html +26 -2
  200. data/doc/TaskJuggler/TaskScenario.html +2235 -2178
  201. data/doc/TaskJuggler/TernarySearchTree.html +26 -2
  202. data/doc/TaskJuggler/TextFormatter.html +26 -2
  203. data/doc/TaskJuggler/TextParser/Macro.html +26 -2
  204. data/doc/TaskJuggler/TextParser/MacroTable.html +26 -2
  205. data/doc/TaskJuggler/TextParser/Pattern.html +26 -2
  206. data/doc/TaskJuggler/TextParser/Rule.html +26 -2
  207. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +32 -8
  208. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +39 -15
  209. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +26 -2
  210. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +119 -86
  211. data/doc/TaskJuggler/TextParser/Scanner.html +317 -291
  212. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +26 -2
  213. data/doc/TaskJuggler/TextParser/StackElement.html +26 -2
  214. data/doc/TaskJuggler/TextParser/State.html +26 -2
  215. data/doc/TaskJuggler/TextParser/StateTransition.html +26 -2
  216. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +26 -2
  217. data/doc/TaskJuggler/TextParser/TokenDoc.html +26 -2
  218. data/doc/TaskJuggler/TextParser.html +85 -61
  219. data/doc/TaskJuggler/TextReport.html +26 -2
  220. data/doc/TaskJuggler/TimeInterval.html +841 -0
  221. data/doc/TaskJuggler/{IntervalListAttribute.html → TimeIntervalListAttribute.html} +33 -9
  222. data/doc/TaskJuggler/TimeSheet.html +26 -2
  223. data/doc/TaskJuggler/TimeSheetReceiver.html +26 -2
  224. data/doc/TaskJuggler/TimeSheetRecord.html +27 -3
  225. data/doc/TaskJuggler/TimeSheetReport.html +29 -5
  226. data/doc/TaskJuggler/TimeSheetSender.html +26 -2
  227. data/doc/TaskJuggler/TimeSheetSummary.html +26 -2
  228. data/doc/TaskJuggler/TimeSheets.html +26 -2
  229. data/doc/TaskJuggler/Tj3.html +150 -111
  230. data/doc/TaskJuggler/Tj3AppBase.html +26 -2
  231. data/doc/TaskJuggler/Tj3Client.html +26 -2
  232. data/doc/TaskJuggler/Tj3Daemon.html +26 -2
  233. data/doc/TaskJuggler/Tj3Man.html +26 -2
  234. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -2
  235. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -2
  236. data/doc/TaskJuggler/Tj3SsSender.html +26 -2
  237. data/doc/TaskJuggler/Tj3TsReceiver.html +26 -2
  238. data/doc/TaskJuggler/Tj3TsSender.html +26 -2
  239. data/doc/TaskJuggler/Tj3TsSummary.html +26 -2
  240. data/doc/TaskJuggler/TjException.html +26 -2
  241. data/doc/TaskJuggler/TjRuntimeError.html +26 -2
  242. data/doc/TaskJuggler/TjTime.html +539 -477
  243. data/doc/TaskJuggler/TjpExample.html +26 -2
  244. data/doc/TaskJuggler/TjpExportRE.html +240 -161
  245. data/doc/TaskJuggler/TjpSyntaxRules.html +4236 -3844
  246. data/doc/TaskJuggler/URLParameter.html +26 -2
  247. data/doc/TaskJuggler/UserManual.html +26 -2
  248. data/doc/TaskJuggler/VimSyntax.html +31 -7
  249. data/doc/TaskJuggler/WebServer.html +26 -2
  250. data/doc/TaskJuggler/WelcomePage.html +26 -2
  251. data/doc/TaskJuggler/WorkingHours.html +227 -152
  252. data/doc/TaskJuggler/WorkingHoursAttribute.html +62 -38
  253. data/doc/TaskJuggler/XMLBlob.html +26 -2
  254. data/doc/TaskJuggler/XMLComment.html +26 -2
  255. data/doc/TaskJuggler/XMLDocument.html +26 -2
  256. data/doc/TaskJuggler/XMLElement.html +26 -2
  257. data/doc/TaskJuggler/XMLNamedText.html +26 -2
  258. data/doc/TaskJuggler/XMLText.html +26 -2
  259. data/doc/TaskJuggler.html +486 -427
  260. data/doc/index.html +801 -659
  261. data/doc/lib/taskjuggler/AccountScenario_rb.html +1 -1
  262. data/doc/lib/taskjuggler/Account_rb.html +1 -1
  263. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +1 -1
  264. data/doc/lib/taskjuggler/Allocation_rb.html +1 -1
  265. data/doc/lib/taskjuggler/AppConfig_rb.html +1 -1
  266. data/doc/lib/taskjuggler/AttributeBase_rb.html +1 -1
  267. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +1 -1
  268. data/doc/lib/taskjuggler/Attributes_rb.html +1 -1
  269. data/doc/lib/taskjuggler/BatchProcessor_rb.html +1 -1
  270. data/doc/lib/taskjuggler/Booking_rb.html +1 -1
  271. data/doc/lib/taskjuggler/ChargeSet_rb.html +1 -1
  272. data/doc/lib/taskjuggler/Charge_rb.html +1 -1
  273. data/doc/lib/taskjuggler/DataCache_rb.html +1 -1
  274. data/doc/lib/taskjuggler/FileList_rb.html +1 -1
  275. data/doc/lib/taskjuggler/HTMLDocument_rb.html +1 -1
  276. data/doc/lib/{ruby-signal-bug_rb.html → taskjuggler/HTMLElements_rb.html} +9 -9
  277. data/doc/lib/{exchangebug_rb.html → taskjuggler/ICalendar_rb.html} +9 -9
  278. data/doc/lib/taskjuggler/IntervalList_rb.html +1 -1
  279. data/doc/lib/taskjuggler/Interval_rb.html +1 -1
  280. data/doc/lib/taskjuggler/Journal_rb.html +1 -1
  281. data/doc/lib/taskjuggler/KeywordArray_rb.html +1 -1
  282. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +1 -1
  283. data/doc/lib/taskjuggler/Limits_rb.html +1 -1
  284. data/doc/lib/taskjuggler/LogFile_rb.html +1 -1
  285. data/doc/lib/taskjuggler/Log_rb.html +1 -1
  286. data/doc/lib/taskjuggler/LogicalExpression_rb.html +1 -1
  287. data/doc/lib/taskjuggler/LogicalFunction_rb.html +1 -1
  288. data/doc/lib/taskjuggler/LogicalOperation_rb.html +1 -1
  289. data/doc/lib/taskjuggler/MessageHandler_rb.html +1 -1
  290. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +1 -1
  291. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +1 -1
  292. data/doc/lib/taskjuggler/Project_rb.html +1 -1
  293. data/doc/lib/taskjuggler/PropertyList_rb.html +1 -1
  294. data/doc/lib/taskjuggler/PropertySet_rb.html +1 -1
  295. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +1 -1
  296. data/doc/lib/taskjuggler/Query_rb.html +1 -1
  297. data/doc/lib/taskjuggler/RealFormat_rb.html +1 -1
  298. data/doc/lib/taskjuggler/ResourceScenario_rb.html +1 -1
  299. data/doc/lib/taskjuggler/Resource_rb.html +1 -1
  300. data/doc/lib/taskjuggler/RichText/Document_rb.html +1 -1
  301. data/doc/lib/taskjuggler/RichText/Element_rb.html +1 -1
  302. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +1 -1
  303. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +1 -1
  304. data/doc/lib/taskjuggler/RichText/Parser_rb.html +1 -1
  305. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +1 -1
  306. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +1 -1
  307. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +1 -1
  308. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +1 -1
  309. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +1 -1
  310. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +1 -1
  311. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +1 -1
  312. data/doc/lib/taskjuggler/RichText/Snip_rb.html +1 -1
  313. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +1 -1
  314. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +1 -1
  315. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +1 -1
  316. data/doc/lib/taskjuggler/RichText_rb.html +1 -1
  317. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +1 -1
  318. data/doc/lib/taskjuggler/ScenarioData_rb.html +1 -1
  319. data/doc/lib/taskjuggler/Scenario_rb.html +1 -1
  320. data/doc/lib/taskjuggler/Scoreboard_rb.html +1 -1
  321. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +1 -1
  322. data/doc/lib/taskjuggler/SheetReceiver_rb.html +1 -1
  323. data/doc/lib/taskjuggler/SheetSender_rb.html +1 -1
  324. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +1 -1
  325. data/doc/lib/taskjuggler/ShiftScenario_rb.html +1 -1
  326. data/doc/lib/taskjuggler/Shift_rb.html +1 -1
  327. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +1 -1
  328. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +1 -1
  329. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +1 -1
  330. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +1 -1
  331. data/doc/lib/taskjuggler/SyntaxReference_rb.html +1 -1
  332. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +1 -1
  333. data/doc/lib/taskjuggler/TaskDependency_rb.html +1 -1
  334. data/doc/lib/taskjuggler/TaskJuggler_rb.html +1 -1
  335. data/doc/lib/taskjuggler/TaskScenario_rb.html +1 -1
  336. data/doc/lib/taskjuggler/Task_rb.html +1 -1
  337. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +1 -1
  338. data/doc/lib/taskjuggler/TextFormatter_rb.html +1 -1
  339. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +1 -1
  340. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +1 -1
  341. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +1 -1
  342. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +1 -1
  343. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +1 -1
  344. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +1 -1
  345. data/doc/lib/taskjuggler/TextParser/State_rb.html +1 -1
  346. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +1 -1
  347. data/doc/lib/taskjuggler/TextParser_rb.html +1 -1
  348. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +1 -1
  349. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +1 -1
  350. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +1 -1
  351. data/doc/lib/taskjuggler/TimeSheets_rb.html +1 -1
  352. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +1 -1
  353. data/doc/lib/taskjuggler/Tj3Config_rb.html +1 -1
  354. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +1 -1
  355. data/doc/lib/taskjuggler/TjException_rb.html +1 -1
  356. data/doc/lib/taskjuggler/TjTime_rb.html +1 -1
  357. data/doc/lib/taskjuggler/TjpExample_rb.html +1 -1
  358. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +1 -1
  359. data/doc/lib/taskjuggler/URLParameter_rb.html +1 -1
  360. data/doc/lib/taskjuggler/UTF8String_rb.html +1 -1
  361. data/doc/lib/taskjuggler/UserManual_rb.html +1 -1
  362. data/doc/lib/taskjuggler/VimSyntax_rb.html +1 -1
  363. data/doc/lib/taskjuggler/WorkingHours_rb.html +1 -1
  364. data/doc/lib/taskjuggler/XMLDocument_rb.html +1 -1
  365. data/doc/lib/taskjuggler/XMLElement_rb.html +1 -1
  366. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +1 -1
  367. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +1 -1
  368. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +1 -1
  369. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +1 -1
  370. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +1 -1
  371. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +1 -1
  372. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +1 -1
  373. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +1 -1
  374. data/doc/lib/taskjuggler/apps/Tj3_rb.html +1 -1
  375. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +1 -1
  376. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +1 -1
  377. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +1 -1
  378. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +1 -1
  379. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +1 -1
  380. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +1 -1
  381. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +1 -1
  382. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +1 -1
  383. data/doc/lib/taskjuggler/deep_copy_rb.html +1 -1
  384. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +1 -1
  385. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +1 -1
  386. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +1 -1
  387. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +1 -1
  388. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +1 -1
  389. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +1 -1
  390. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +1 -1
  391. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +1 -1
  392. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +1 -1
  393. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +1 -1
  394. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +1 -1
  395. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +1 -1
  396. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +1 -1
  397. data/doc/lib/taskjuggler/reports/ICalReport_rb.html +71 -0
  398. data/doc/lib/taskjuggler/reports/Navigator_rb.html +1 -1
  399. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +1 -1
  400. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +1 -1
  401. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +1 -1
  402. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +1 -1
  403. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +1 -1
  404. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +1 -1
  405. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +1 -1
  406. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +1 -1
  407. data/doc/lib/taskjuggler/reports/Report_rb.html +5 -1
  408. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +1 -1
  409. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +1 -1
  410. data/doc/lib/taskjuggler/reports/TableReport_rb.html +1 -1
  411. data/doc/lib/taskjuggler/reports/TagFile_rb.html +71 -0
  412. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +1 -1
  413. data/doc/lib/taskjuggler/reports/TextReport_rb.html +1 -1
  414. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +1 -1
  415. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +1 -1
  416. data/doc/lib/tj3_rb.html +1 -1
  417. data/doc/lib/tj3client_rb.html +1 -1
  418. data/doc/lib/tj3d_rb.html +1 -1
  419. data/doc/lib/tj3man_rb.html +1 -1
  420. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  421. data/doc/lib/tj3ss_sender_rb.html +1 -1
  422. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  423. data/doc/lib/tj3ts_sender_rb.html +1 -1
  424. data/doc/lib/tj3ts_summary_rb.html +1 -1
  425. data/lib/taskjuggler/Account.rb +1 -1
  426. data/lib/taskjuggler/AccountScenario.rb +1 -1
  427. data/lib/taskjuggler/Allocation.rb +5 -5
  428. data/lib/taskjuggler/AttributeBase.rb +30 -22
  429. data/lib/taskjuggler/Attributes.rb +80 -78
  430. data/lib/taskjuggler/Booking.rb +2 -2
  431. data/lib/taskjuggler/Charge.rb +3 -3
  432. data/lib/taskjuggler/ICalendar.rb +251 -0
  433. data/lib/taskjuggler/Interval.rb +215 -53
  434. data/lib/taskjuggler/IntervalList.rb +5 -5
  435. data/lib/taskjuggler/Limits.rb +79 -69
  436. data/lib/taskjuggler/LogicalFunction.rb +2 -2
  437. data/lib/taskjuggler/MessageHandler.rb +11 -6
  438. data/lib/taskjuggler/Project.rb +208 -95
  439. data/lib/taskjuggler/ProjectFileParser.rb +2 -2
  440. data/lib/taskjuggler/ProjectFileScanner.rb +7 -6
  441. data/lib/taskjuggler/PropertySet.rb +1 -5
  442. data/lib/taskjuggler/PropertyTreeNode.rb +21 -16
  443. data/lib/taskjuggler/Query.rb +10 -7
  444. data/lib/taskjuggler/Resource.rb +6 -1
  445. data/lib/taskjuggler/ResourceScenario.rb +85 -69
  446. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
  447. data/lib/taskjuggler/ScenarioData.rb +11 -1
  448. data/lib/taskjuggler/Scoreboard.rb +8 -1
  449. data/lib/taskjuggler/Shift.rb +1 -1
  450. data/lib/taskjuggler/ShiftAssignments.rb +22 -20
  451. data/lib/taskjuggler/Task.rb +1 -1
  452. data/lib/taskjuggler/TaskJuggler.rb +65 -51
  453. data/lib/taskjuggler/TaskScenario.rb +486 -419
  454. data/lib/taskjuggler/TextParser/Scanner.rb +22 -11
  455. data/lib/taskjuggler/TimeSheets.rb +1 -1
  456. data/lib/taskjuggler/Tj3Config.rb +1 -1
  457. data/lib/taskjuggler/TjTime.rb +7 -3
  458. data/lib/taskjuggler/TjpSyntaxRules.rb +157 -23
  459. data/lib/taskjuggler/VimSyntax.rb +18 -0
  460. data/lib/taskjuggler/WorkingHours.rb +20 -4
  461. data/lib/taskjuggler/apps/Tj3.rb +16 -1
  462. data/lib/taskjuggler/reports/GanttLine.rb +1 -1
  463. data/lib/taskjuggler/reports/ICalReport.rb +136 -0
  464. data/lib/taskjuggler/reports/NikuReport.rb +1 -1
  465. data/lib/taskjuggler/reports/Report.rb +59 -0
  466. data/lib/taskjuggler/reports/ReportBase.rb +2 -67
  467. data/lib/taskjuggler/reports/TableReport.rb +9 -8
  468. data/lib/taskjuggler/reports/TagFile.rb +120 -0
  469. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -3
  470. data/lib/taskjuggler/reports/TjpExportRE.rb +33 -9
  471. data/manual/Installation +126 -0
  472. data/spec/ICalendar_spec.rb +45 -0
  473. data/spec/IntervalList_spec.rb +11 -11
  474. data/tasks/changelog.rake +150 -60
  475. data/tasks/gem.rake +1 -0
  476. data/tasks/vim.rake +2 -2
  477. data/test/TestSuite/Export-Reports/refs/Booking.tjp +1 -1
  478. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  479. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +10 -1
  480. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +1 -1
  481. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  482. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  483. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  484. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  485. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  486. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  487. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  488. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  489. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  490. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  491. data/test/TestSuite/{Scheduler/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  492. data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
  493. data/test/TestSuite/Scheduler/Correct/Duration.tjp +3 -3
  494. data/test/TestSuite/Scheduler/Errors/R.html +113 -0
  495. data/test/TestSuite/Scheduler/Errors/allocate_no_assigned.tjp +15 -0
  496. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjmanual.css +0 -1
  497. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjreport.css +0 -0
  498. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/details.png +0 -0
  499. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-green.png +0 -0
  500. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-red.png +0 -0
  501. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-yellow.png +0 -0
  502. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resource.png +0 -0
  503. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resourcegroup.png +0 -0
  504. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/task.png +0 -0
  505. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/taskgroup.png +0 -0
  506. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-down.png +0 -0
  507. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-flat.png +0 -0
  508. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-up.png +0 -0
  509. data/test/TestSuite/Scheduler/Errors/overbooked_duration.tjp +11 -0
  510. data/test/TestSuite/Scheduler/Errors/overbooked_effort.tjp +11 -0
  511. data/test/TestSuite/Scheduler/Errors/overbooked_length.tjp +13 -0
  512. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/scripts/wz_tooltip.js +0 -0
  513. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  514. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  515. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +5 -2
  516. data/test/TestSuite/Syntax/Errors/scenario_after_tracking.tjp +8 -0
  517. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  518. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  519. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  520. data/test/test_Limits.rb +38 -30
  521. data/test/test_Scheduler.rb +2 -2
  522. data/test/test_ShiftAssignments.rb +8 -8
  523. data/test/test_WorkingHours.rb +4 -4
  524. metadata +1015 -1005
  525. data/lib/exchangebug.rb +0 -42
  526. data/lib/ruby-signal-bug.rb +0 -55
  527. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -60
  528. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -80
  529. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  530. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  531. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -412
  532. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -680
  533. data/test/TestSuite/ReportGenerator/Correct/DependencyList.csv +0 -4
  534. data/test/TestSuite/ReportGenerator/Correct/DependencyList.tjp +0 -25
  535. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -8
  536. data/test/TestSuite/ReportGenerator/Correct/Journal-2.csv +0 -8
  537. data/test/TestSuite/ReportGenerator/Correct/Journal-3.html +0 -28
  538. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  540. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  541. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  542. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  543. data/test/TestSuite/Scheduler/' +0 -23
  544. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  545. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  546. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  547. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  548. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  549. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  550. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  551. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  552. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  553. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  554. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  555. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  556. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  557. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  558. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  559. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  560. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  561. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  562. data/test/TestSuite/TimeSheets/receiver.log.mod +0 -1056
  563. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -73,6 +73,8 @@
73
73
 
74
74
  <li><a href="#method-i-%3D%3D">#==</a></li>
75
75
 
76
+ <li><a href="#method-i-deep_clone">#deep_clone</a></li>
77
+
76
78
  <li><a href="#method-i-getWorkingHours">#getWorkingHours</a></li>
77
79
 
78
80
  <li><a href="#method-i-initScoreboard">#initScoreboard</a></li>
@@ -223,12 +225,24 @@
223
225
 
224
226
  <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
225
227
 
228
+ <li><a href="../TaskJuggler/ICalReport.html">TaskJuggler::ICalReport</a></li>
229
+
230
+ <li><a href="../TaskJuggler/ICalendar.html">TaskJuggler::ICalendar</a></li>
231
+
232
+ <li><a href="../TaskJuggler/ICalendar/Component.html">TaskJuggler::ICalendar::Component</a></li>
233
+
234
+ <li><a href="../TaskJuggler/ICalendar/Event.html">TaskJuggler::ICalendar::Event</a></li>
235
+
236
+ <li><a href="../TaskJuggler/ICalendar/Journal.html">TaskJuggler::ICalendar::Journal</a></li>
237
+
238
+ <li><a href="../TaskJuggler/ICalendar/Person.html">TaskJuggler::ICalendar::Person</a></li>
239
+
240
+ <li><a href="../TaskJuggler/ICalendar/Todo.html">TaskJuggler::ICalendar::Todo</a></li>
241
+
226
242
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
227
243
 
228
244
  <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
229
245
 
230
- <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
231
-
232
246
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
233
247
 
234
248
  <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
@@ -343,6 +357,8 @@
343
357
 
344
358
  <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
345
359
 
360
+ <li><a href="../TaskJuggler/ReportScenario.html">TaskJuggler::ReportScenario</a></li>
361
+
346
362
  <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
347
363
 
348
364
  <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
@@ -401,6 +417,8 @@
401
417
 
402
418
  <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
403
419
 
420
+ <li><a href="../TaskJuggler/ScoreboardInterval.html">TaskJuggler::ScoreboardInterval</a></li>
421
+
404
422
  <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
405
423
 
406
424
  <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
@@ -447,6 +465,10 @@
447
465
 
448
466
  <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
449
467
 
468
+ <li><a href="../TaskJuggler/TagFile.html">TaskJuggler::TagFile</a></li>
469
+
470
+ <li><a href="../TaskJuggler/TagFile/TagFileEntry.html">TaskJuggler::TagFile::TagFileEntry</a></li>
471
+
450
472
  <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
451
473
 
452
474
  <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
@@ -497,6 +519,10 @@
497
519
 
498
520
  <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
499
521
 
522
+ <li><a href="../TaskJuggler/TimeInterval.html">TaskJuggler::TimeInterval</a></li>
523
+
524
+ <li><a href="../TaskJuggler/TimeIntervalListAttribute.html">TaskJuggler::TimeIntervalListAttribute</a></li>
525
+
500
526
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
501
527
 
502
528
  <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
@@ -763,25 +789,28 @@ copied. It will be copied on write.
763
789
  48: <span class="ruby-ivar">@startDate</span> = <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">startDate</span>
764
790
  49: <span class="ruby-ivar">@endDate</span> = <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">endDate</span>
765
791
  50: <span class="ruby-ivar">@slotDuration</span> = <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">slotDuration</span>
766
- 51: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">scoreboard</span>
767
- 52: <span class="ruby-keyword kw">else</span>
768
- 53: <span class="ruby-identifier">slotDuration</span> = <span class="ruby-identifier">arg1</span>
769
- 54: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg1</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">startDate</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">endDate</span>.<span class="ruby-identifier">nil?</span>
770
- 55: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;You must supply values for slotDuration, start and end dates&quot;</span>
771
- 56: <span class="ruby-keyword kw">end</span>
772
- 57: <span class="ruby-ivar">@startDate</span> = <span class="ruby-identifier">startDate</span>
773
- 58: <span class="ruby-ivar">@endDate</span> = <span class="ruby-identifier">endDate</span>
774
- 59: <span class="ruby-ivar">@slotDuration</span> = <span class="ruby-identifier">slotDuration</span>
775
- 60:
776
- 61: <span class="ruby-comment cmt"># Create a new object with default working hours.</span>
777
- 62: <span class="ruby-ivar">@timezone</span> = <span class="ruby-identifier">timeZone</span>
778
- 63: <span class="ruby-comment cmt"># Set the default working hours. Monday to Friday 9am - 5pm.</span>
779
- 64: <span class="ruby-comment cmt"># Saturday and Sunday are days off.</span>
780
- 65: <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-value">5</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
781
- 66: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">day</span>] = [ [ <span class="ruby-value">9</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span>, <span class="ruby-value">17</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span> ] ]
782
- 67: <span class="ruby-keyword kw">end</span>
783
- 68: <span class="ruby-keyword kw">end</span>
784
- 69: <span class="ruby-keyword kw">end</span></pre>
792
+ 51: <span class="ruby-comment cmt"># Make sure the copied scoreboard has been created, so we can share it</span>
793
+ 52: <span class="ruby-comment cmt"># copy-on-write.</span>
794
+ 53: <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-value">0</span>)
795
+ 54: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">scoreboard</span>
796
+ 55: <span class="ruby-keyword kw">else</span>
797
+ 56: <span class="ruby-identifier">slotDuration</span> = <span class="ruby-identifier">arg1</span>
798
+ 57: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg1</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">startDate</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">endDate</span>.<span class="ruby-identifier">nil?</span>
799
+ 58: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;You must supply values for slotDuration, start and end dates&quot;</span>
800
+ 59: <span class="ruby-keyword kw">end</span>
801
+ 60: <span class="ruby-ivar">@startDate</span> = <span class="ruby-identifier">startDate</span>
802
+ 61: <span class="ruby-ivar">@endDate</span> = <span class="ruby-identifier">endDate</span>
803
+ 62: <span class="ruby-ivar">@slotDuration</span> = <span class="ruby-identifier">slotDuration</span>
804
+ 63:
805
+ 64: <span class="ruby-comment cmt"># Create a new object with default working hours.</span>
806
+ 65: <span class="ruby-ivar">@timezone</span> = <span class="ruby-identifier">timeZone</span>
807
+ 66: <span class="ruby-comment cmt"># Set the default working hours. Monday to Friday 9am - 5pm.</span>
808
+ 67: <span class="ruby-comment cmt"># Saturday and Sunday are days off.</span>
809
+ 68: <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-value">5</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
810
+ 69: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">day</span>] = [ [ <span class="ruby-value">9</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span>, <span class="ruby-value">17</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span> ] ]
811
+ 70: <span class="ruby-keyword kw">end</span>
812
+ 71: <span class="ruby-keyword kw">end</span>
813
+ 72: <span class="ruby-keyword kw">end</span></pre>
785
814
  </div>
786
815
 
787
816
  </div>
@@ -821,23 +850,63 @@ object <tt>wh</tt> is identical to this object.
821
850
  <div class="method-source-code"
822
851
  id="--source">
823
852
  <pre>
824
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 73</span>
825
- 73: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">wh</span>)
826
- 74: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@timezone</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">timezone</span> <span class="ruby-operator">||</span>
827
- 75: <span class="ruby-ivar">@startDate</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">startDate</span> <span class="ruby-operator">||</span>
828
- 76: <span class="ruby-ivar">@endDate</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">endDate</span> <span class="ruby-operator">||</span>
829
- 77: <span class="ruby-ivar">@slotDuration</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">slotDuration</span>
830
- 78:
831
- 79: <span class="ruby-value">7</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
832
- 80: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">days</span>[<span class="ruby-identifier">d</span>].<span class="ruby-identifier">length</span>
833
- 81: <span class="ruby-comment cmt"># Check all working hour intervals</span>
834
- 82: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>].<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
835
- 83: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">||</span>
836
- 84: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">1</span>]
837
- 85: <span class="ruby-keyword kw">end</span>
838
- 86: <span class="ruby-keyword kw">end</span>
839
- 87: <span class="ruby-keyword kw">true</span>
840
- 88: <span class="ruby-keyword kw">end</span></pre>
853
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 84</span>
854
+ 84: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">wh</span>)
855
+ 85: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@timezone</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">timezone</span> <span class="ruby-operator">||</span>
856
+ 86: <span class="ruby-ivar">@startDate</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">startDate</span> <span class="ruby-operator">||</span>
857
+ 87: <span class="ruby-ivar">@endDate</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">endDate</span> <span class="ruby-operator">||</span>
858
+ 88: <span class="ruby-ivar">@slotDuration</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">slotDuration</span>
859
+ 89:
860
+ 90: <span class="ruby-value">7</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
861
+ 91: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">days</span>[<span class="ruby-identifier">d</span>].<span class="ruby-identifier">length</span>
862
+ 92: <span class="ruby-comment cmt"># Check all working hour intervals</span>
863
+ 93: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>].<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
864
+ 94: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">||</span>
865
+ 95: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">wh</span>.<span class="ruby-identifier">days</span>[<span class="ruby-identifier">d</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">1</span>]
866
+ 96: <span class="ruby-keyword kw">end</span>
867
+ 97: <span class="ruby-keyword kw">end</span>
868
+ 98: <span class="ruby-keyword kw">true</span>
869
+ 99: <span class="ruby-keyword kw">end</span></pre>
870
+ </div>
871
+
872
+ </div>
873
+
874
+
875
+
876
+
877
+ </div>
878
+
879
+
880
+ <div id="deep-clone-method" class="method-detail ">
881
+ <a name="method-i-deep_clone"></a>
882
+
883
+ <div class="method-heading">
884
+
885
+ <span class="method-name">deep_clone</span><span
886
+ class="method-args">()</span>
887
+ <span class="method-click-advice">click to toggle source</span>
888
+
889
+ </div>
890
+
891
+ <div class="method-description">
892
+
893
+ <p>
894
+ Since we want to share the scoreboard among instances with identical
895
+ working hours, we need to prevent the scoreboard from being deep cloned.
896
+ Calling the constructor with self in a re-defined <a
897
+ href="WorkingHours.html#method-i-deep_clone">deep_clone</a> method will do
898
+ just that.
899
+ </p>
900
+
901
+
902
+
903
+ <div class="method-source-code"
904
+ id="deep-clone-source">
905
+ <pre>
906
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 78</span>
907
+ 78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
908
+ 79: <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
909
+ 80: <span class="ruby-keyword kw">end</span></pre>
841
910
  </div>
842
911
 
843
912
  </div>
@@ -872,10 +941,10 @@ an Array that contains Arrays of 2 Fixnums.
872
941
  <div class="method-source-code"
873
942
  id="get-orking-ours-source">
874
943
  <pre>
875
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 125</span>
876
- 125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getWorkingHours</span>(<span class="ruby-identifier">dayOfWeek</span>)
877
- 126: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">dayOfWeek</span>]
878
- 127: <span class="ruby-keyword kw">end</span></pre>
944
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 136</span>
945
+ 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getWorkingHours</span>(<span class="ruby-identifier">dayOfWeek</span>)
946
+ 137: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">dayOfWeek</span>]
947
+ 138: <span class="ruby-keyword kw">end</span></pre>
879
948
  </div>
880
949
 
881
950
  </div>
@@ -892,7 +961,7 @@ an Array that contains Arrays of 2 Fixnums.
892
961
  <div class="method-heading">
893
962
 
894
963
  <span class="method-name">onShift?</span><span
895
- class="method-args">(date)</span>
964
+ class="method-args">(arg)</span>
896
965
  <span class="method-click-advice">click to toggle source</span>
897
966
 
898
967
  </div>
@@ -900,7 +969,9 @@ an Array that contains Arrays of 2 Fixnums.
900
969
  <div class="method-description">
901
970
 
902
971
  <p>
903
- Return true if <em>date</em> is within the defined working hours.
972
+ Return true if <em>arg</em> is within the defined working hours.
973
+ <em>arg</em> can be a <a href="TjTime.html">TjTime</a> object or a global
974
+ scoreboard index.
904
975
  </p>
905
976
 
906
977
 
@@ -908,12 +979,16 @@ Return true if <em>date</em> is within the defined working hours.
908
979
  <div class="method-source-code"
909
980
  id="on-hift--source">
910
981
  <pre>
911
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 130</span>
912
- 130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
913
- 131: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
914
- 132:
915
- 133: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">date</span>)
916
- 134: <span class="ruby-keyword kw">end</span></pre>
982
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 142</span>
983
+ 142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">arg</span>)
984
+ 143: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
985
+ 144:
986
+ 145: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
987
+ 146: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">arg</span>)
988
+ 147: <span class="ruby-keyword kw">else</span>
989
+ 148: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">arg</span>]
990
+ 149: <span class="ruby-keyword kw">end</span>
991
+ 150: <span class="ruby-keyword kw">end</span></pre>
917
992
  </div>
918
993
 
919
994
  </div>
@@ -950,26 +1025,26 @@ start time of the interval, the second the end time.
950
1025
  <div class="method-source-code"
951
1026
  id="set-orking-ours-source">
952
1027
  <pre>
953
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 95</span>
954
- 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setWorkingHours</span>(<span class="ruby-identifier">dayOfWeek</span>, <span class="ruby-identifier">intervals</span>)
955
- 96: <span class="ruby-comment cmt"># Changing the working hours requires the score board to be regenerated.</span>
956
- 97: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
957
- 98:
958
- 99: <span class="ruby-comment cmt"># Legal values range from 0 Sunday to 6 Saturday.</span>
959
- 100: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dayOfWeek</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">dayOfWeek</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">6</span>
960
- 101: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;dayOfWeek out of range: #{dayOfWeek}&quot;</span>
961
- 102: <span class="ruby-keyword kw">end</span>
962
- 103: <span class="ruby-identifier">intervals</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
963
- 104: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-value">24</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span> <span class="ruby-operator">||</span>
964
- 105: <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-value">24</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
965
- 106: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Time interval has illegal values: #{iv[0]} - #{iv[1]}&quot;</span>
966
- 107: <span class="ruby-keyword kw">end</span>
967
- 108: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>]
968
- 109: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Interval end time must be larger than start time&quot;</span>
969
- 110: <span class="ruby-keyword kw">end</span>
970
- 111: <span class="ruby-keyword kw">end</span>
971
- 112: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">dayOfWeek</span>] = <span class="ruby-identifier">intervals</span>
972
- 113: <span class="ruby-keyword kw">end</span></pre>
1028
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 106</span>
1029
+ 106: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setWorkingHours</span>(<span class="ruby-identifier">dayOfWeek</span>, <span class="ruby-identifier">intervals</span>)
1030
+ 107: <span class="ruby-comment cmt"># Changing the working hours requires the score board to be regenerated.</span>
1031
+ 108: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
1032
+ 109:
1033
+ 110: <span class="ruby-comment cmt"># Legal values range from 0 Sunday to 6 Saturday.</span>
1034
+ 111: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dayOfWeek</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">dayOfWeek</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">6</span>
1035
+ 112: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;dayOfWeek out of range: #{dayOfWeek}&quot;</span>
1036
+ 113: <span class="ruby-keyword kw">end</span>
1037
+ 114: <span class="ruby-identifier">intervals</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
1038
+ 115: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-value">24</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span> <span class="ruby-operator">||</span>
1039
+ 116: <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-value">24</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
1040
+ 117: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Time interval has illegal values: #{iv[0]} - #{iv[1]}&quot;</span>
1041
+ 118: <span class="ruby-keyword kw">end</span>
1042
+ 119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>]
1043
+ 120: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Interval end time must be larger than start time&quot;</span>
1044
+ 121: <span class="ruby-keyword kw">end</span>
1045
+ 122: <span class="ruby-keyword kw">end</span>
1046
+ 123: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">dayOfWeek</span>] = <span class="ruby-identifier">intervals</span>
1047
+ 124: <span class="ruby-keyword kw">end</span></pre>
973
1048
  </div>
974
1049
 
975
1050
  </div>
@@ -1002,18 +1077,18 @@ Return true only if all slots in the <em>interval</em> are offhour slots.
1002
1077
  <div class="method-source-code"
1003
1078
  id="time-ff--source">
1004
1079
  <pre>
1005
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 137</span>
1006
- 137: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">interval</span>)
1007
- 138: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
1008
- 139:
1009
- 140: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
1010
- 141: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
1011
- 142:
1012
- 143: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1013
- 144: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]
1014
- 145: <span class="ruby-keyword kw">end</span>
1015
- 146: <span class="ruby-keyword kw">true</span>
1016
- 147: <span class="ruby-keyword kw">end</span></pre>
1080
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 153</span>
1081
+ 153: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">interval</span>)
1082
+ 154: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
1083
+ 155:
1084
+ 156: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
1085
+ 157: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
1086
+ 158:
1087
+ 159: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1088
+ 160: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]
1089
+ 161: <span class="ruby-keyword kw">end</span>
1090
+ 162: <span class="ruby-keyword kw">true</span>
1091
+ 163: <span class="ruby-keyword kw">end</span></pre>
1017
1092
  </div>
1018
1093
 
1019
1094
  </div>
@@ -1047,11 +1122,11 @@ Set the time zone <em>zone</em> for the working hours. This will reset the
1047
1122
  <div class="method-source-code"
1048
1123
  id="timezone--source">
1049
1124
  <pre>
1050
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 117</span>
1051
- 117: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timezone=</span>(<span class="ruby-identifier">zone</span>)
1052
- 118: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
1053
- 119: <span class="ruby-ivar">@timezone</span> = <span class="ruby-identifier">zone</span>
1054
- 120: <span class="ruby-keyword kw">end</span></pre>
1125
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 128</span>
1126
+ 128: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timezone=</span>(<span class="ruby-identifier">zone</span>)
1127
+ 129: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
1128
+ 130: <span class="ruby-ivar">@timezone</span> = <span class="ruby-identifier">zone</span>
1129
+ 131: <span class="ruby-keyword kw">end</span></pre>
1055
1130
  </div>
1056
1131
 
1057
1132
  </div>
@@ -1084,32 +1159,32 @@ Returns the time interval settings for each day in a human readable form.
1084
1159
  <div class="method-source-code"
1085
1160
  id="to-s-source">
1086
1161
  <pre>
1087
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 150</span>
1088
- 150: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1089
- 151: <span class="ruby-identifier">dayNames</span> = <span class="ruby-node">%( Sun Mon Tue Wed Thu Fri Sat )</span>
1090
- 152: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
1091
- 153: <span class="ruby-value">7</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
1092
- 154: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{dayNames[day]}: &quot;</span>
1093
- 155: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">day</span>].<span class="ruby-identifier">empty?</span>
1094
- 156: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;off&quot;</span>
1095
- 157: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">6</span>
1096
- 158: <span class="ruby-keyword kw">next</span>
1097
- 159: <span class="ruby-keyword kw">end</span>
1098
- 160: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1099
- 161: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">day</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
1100
- 162: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1101
- 163: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1102
- 164: <span class="ruby-keyword kw">else</span>
1103
- 165: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span>
1104
- 166: <span class="ruby-keyword kw">end</span>
1105
- 167: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{iv[0] / 3600}:&quot;</span> <span class="ruby-operator">+</span>
1106
- 168: <span class="ruby-node">&quot;#{iv[0] % 3600 == 0 ? '00' : iv[0] % 3600} - &quot;</span> <span class="ruby-operator">+</span>
1107
- 169: <span class="ruby-node">&quot;#{iv[1] / 3600}:#{iv[1] % 3600 == 0 ? '00' : iv[1] % 3600}&quot;</span>
1108
- 170: <span class="ruby-keyword kw">end</span>
1109
- 171: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">6</span>
1110
- 172: <span class="ruby-keyword kw">end</span>
1111
- 173: <span class="ruby-identifier">str</span>
1112
- 174: <span class="ruby-keyword kw">end</span></pre>
1162
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 166</span>
1163
+ 166: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1164
+ 167: <span class="ruby-identifier">dayNames</span> = <span class="ruby-node">%( Sun Mon Tue Wed Thu Fri Sat )</span>
1165
+ 168: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
1166
+ 169: <span class="ruby-value">7</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
1167
+ 170: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{dayNames[day]}: &quot;</span>
1168
+ 171: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">day</span>].<span class="ruby-identifier">empty?</span>
1169
+ 172: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;off&quot;</span>
1170
+ 173: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">6</span>
1171
+ 174: <span class="ruby-keyword kw">next</span>
1172
+ 175: <span class="ruby-keyword kw">end</span>
1173
+ 176: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1174
+ 177: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">day</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
1175
+ 178: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1176
+ 179: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1177
+ 180: <span class="ruby-keyword kw">else</span>
1178
+ 181: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span>
1179
+ 182: <span class="ruby-keyword kw">end</span>
1180
+ 183: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{iv[0] / 3600}:&quot;</span> <span class="ruby-operator">+</span>
1181
+ 184: <span class="ruby-node">&quot;#{iv[0] % 3600 == 0 ? '00' : iv[0] % 3600} - &quot;</span> <span class="ruby-operator">+</span>
1182
+ 185: <span class="ruby-node">&quot;#{iv[1] / 3600}:#{iv[1] % 3600 == 0 ? '00' : iv[1] % 3600}&quot;</span>
1183
+ 186: <span class="ruby-keyword kw">end</span>
1184
+ 187: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">6</span>
1185
+ 188: <span class="ruby-keyword kw">end</span>
1186
+ 189: <span class="ruby-identifier">str</span>
1187
+ 190: <span class="ruby-keyword kw">end</span></pre>
1113
1188
  </div>
1114
1189
 
1115
1190
  </div>
@@ -1146,45 +1221,45 @@ Returns the time interval settings for each day in a human readable form.
1146
1221
  <div class="method-source-code"
1147
1222
  id="init-coreboard-source">
1148
1223
  <pre>
1149
- <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 178</span>
1150
- 178: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initScoreboard</span>
1151
- 179: <span class="ruby-comment cmt"># The scoreboard is an Array of True/False values. It spans a certain</span>
1152
- 180: <span class="ruby-comment cmt"># time period with one entry per time slot.</span>
1153
- 181: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@startDate</span>, <span class="ruby-ivar">@endDate</span>, <span class="ruby-ivar">@slotDuration</span>, <span class="ruby-keyword kw">false</span>)
1154
- 182:
1155
- 183: <span class="ruby-identifier">oldTimezone</span> = <span class="ruby-keyword kw">nil</span>
1156
- 184: <span class="ruby-comment cmt"># Active the appropriate time zone for the working hours.</span>
1157
- 185: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@timezone</span>
1158
- 186: <span class="ruby-identifier">oldTimezone</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">setTimeZone</span>(<span class="ruby-ivar">@timezone</span>)
1159
- 187: <span class="ruby-keyword kw">end</span>
1160
- 188:
1161
- 189: <span class="ruby-identifier">date</span> = <span class="ruby-ivar">@startDate</span>
1162
- 190: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collect!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">slot</span><span class="ruby-operator">|</span>
1163
- 191: <span class="ruby-comment cmt"># The weekday and seconds of the day needs to be calculated according</span>
1164
- 192: <span class="ruby-comment cmt"># to the local timezone.</span>
1165
- 193: <span class="ruby-identifier">weekday</span> = <span class="ruby-identifier">date</span>.<span class="ruby-identifier">wday</span>
1166
- 194: <span class="ruby-identifier">secondsOfDay</span> = <span class="ruby-identifier">date</span>.<span class="ruby-identifier">secondsOfDay</span>
1167
- 195:
1168
- 196: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">false</span>
1169
- 197: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">weekday</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
1170
- 198: <span class="ruby-comment cmt"># Check the working hours of that day if they overlap with +date+.</span>
1171
- 199: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">secondsOfDay</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">secondsOfDay</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>]
1172
- 200: <span class="ruby-comment cmt"># The time slot is a working slot.</span>
1173
- 201: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">true</span>
1174
- 202: <span class="ruby-keyword kw">break</span>
1175
- 203: <span class="ruby-keyword kw">end</span>
1176
- 204: <span class="ruby-keyword kw">end</span>
1177
- 205: <span class="ruby-comment cmt"># Calculate date of next scoreboard slot</span>
1178
- 206: <span class="ruby-identifier">date</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@slotDuration</span>
1179
- 207:
1180
- 208: <span class="ruby-identifier">result</span>
1181
- 209: <span class="ruby-keyword kw">end</span>
1182
- 210:
1183
- 211: <span class="ruby-comment cmt"># Restore old time zone setting.</span>
1184
- 212: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@timezone</span>
1185
- 213: <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">setTimeZone</span>(<span class="ruby-identifier">oldTimezone</span>)
1186
- 214: <span class="ruby-keyword kw">end</span>
1187
- 215: <span class="ruby-keyword kw">end</span></pre>
1224
+ <span class="ruby-comment cmt"># File lib/taskjuggler/WorkingHours.rb, line 194</span>
1225
+ 194: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initScoreboard</span>
1226
+ 195: <span class="ruby-comment cmt"># The scoreboard is an Array of True/False values. It spans a certain</span>
1227
+ 196: <span class="ruby-comment cmt"># time period with one entry per time slot.</span>
1228
+ 197: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@startDate</span>, <span class="ruby-ivar">@endDate</span>, <span class="ruby-ivar">@slotDuration</span>, <span class="ruby-keyword kw">false</span>)
1229
+ 198:
1230
+ 199: <span class="ruby-identifier">oldTimezone</span> = <span class="ruby-keyword kw">nil</span>
1231
+ 200: <span class="ruby-comment cmt"># Active the appropriate time zone for the working hours.</span>
1232
+ 201: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@timezone</span>
1233
+ 202: <span class="ruby-identifier">oldTimezone</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">setTimeZone</span>(<span class="ruby-ivar">@timezone</span>)
1234
+ 203: <span class="ruby-keyword kw">end</span>
1235
+ 204:
1236
+ 205: <span class="ruby-identifier">date</span> = <span class="ruby-ivar">@startDate</span>
1237
+ 206: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collect!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">slot</span><span class="ruby-operator">|</span>
1238
+ 207: <span class="ruby-comment cmt"># The weekday and seconds of the day needs to be calculated according</span>
1239
+ 208: <span class="ruby-comment cmt"># to the local timezone.</span>
1240
+ 209: <span class="ruby-identifier">weekday</span> = <span class="ruby-identifier">date</span>.<span class="ruby-identifier">wday</span>
1241
+ 210: <span class="ruby-identifier">secondsOfDay</span> = <span class="ruby-identifier">date</span>.<span class="ruby-identifier">secondsOfDay</span>
1242
+ 211:
1243
+ 212: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">false</span>
1244
+ 213: <span class="ruby-ivar">@days</span>[<span class="ruby-identifier">weekday</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
1245
+ 214: <span class="ruby-comment cmt"># Check the working hours of that day if they overlap with +date+.</span>
1246
+ 215: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">secondsOfDay</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">secondsOfDay</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">iv</span>[<span class="ruby-value">1</span>]
1247
+ 216: <span class="ruby-comment cmt"># The time slot is a working slot.</span>
1248
+ 217: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">true</span>
1249
+ 218: <span class="ruby-keyword kw">break</span>
1250
+ 219: <span class="ruby-keyword kw">end</span>
1251
+ 220: <span class="ruby-keyword kw">end</span>
1252
+ 221: <span class="ruby-comment cmt"># Calculate date of next scoreboard slot</span>
1253
+ 222: <span class="ruby-identifier">date</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@slotDuration</span>
1254
+ 223:
1255
+ 224: <span class="ruby-identifier">result</span>
1256
+ 225: <span class="ruby-keyword kw">end</span>
1257
+ 226:
1258
+ 227: <span class="ruby-comment cmt"># Restore old time zone setting.</span>
1259
+ 228: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@timezone</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">oldTimezone</span>
1260
+ 229: <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">setTimeZone</span>(<span class="ruby-identifier">oldTimezone</span>)
1261
+ 230: <span class="ruby-keyword kw">end</span>
1262
+ 231: <span class="ruby-keyword kw">end</span></pre>
1188
1263
  </div>
1189
1264
 
1190
1265
  </div>