reportbuilder 1.2.5 → 1.3.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 (392) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +6 -0
  3. data/Manifest.txt +377 -0
  4. data/data/flot/API.txt +1024 -0
  5. data/data/flot/FAQ.txt +71 -0
  6. data/data/flot/LICENSE.txt +22 -0
  7. data/data/flot/Makefile +15 -0
  8. data/data/flot/NEWS.txt +340 -0
  9. data/data/flot/PLUGINS.txt +105 -0
  10. data/data/flot/README.txt +81 -0
  11. data/data/flot/examples/ajax.html +143 -0
  12. data/data/flot/examples/annotating.html +75 -0
  13. data/data/flot/examples/arrow-down.gif +0 -0
  14. data/data/flot/examples/arrow-left.gif +0 -0
  15. data/data/flot/examples/arrow-right.gif +0 -0
  16. data/data/flot/examples/arrow-up.gif +0 -0
  17. data/data/flot/examples/basic.html +38 -0
  18. data/data/flot/examples/data-eu-gdp-growth-1.json +4 -0
  19. data/data/flot/examples/data-eu-gdp-growth-2.json +4 -0
  20. data/data/flot/examples/data-eu-gdp-growth-3.json +4 -0
  21. data/data/flot/examples/data-eu-gdp-growth-4.json +4 -0
  22. data/data/flot/examples/data-eu-gdp-growth-5.json +4 -0
  23. data/data/flot/examples/data-eu-gdp-growth.json +4 -0
  24. data/data/flot/examples/data-japan-gdp-growth.json +4 -0
  25. data/data/flot/examples/data-usa-gdp-growth.json +4 -0
  26. data/data/flot/examples/dual-axis.html +39 -0
  27. data/data/flot/examples/graph-types.html +75 -0
  28. data/data/flot/examples/hs-2004-27-a-large_web.jpg +0 -0
  29. data/data/flot/examples/image.html +45 -0
  30. data/data/flot/examples/index.html +43 -0
  31. data/data/flot/examples/interacting.html +93 -0
  32. data/data/flot/examples/layout.css +6 -0
  33. data/data/flot/examples/navigate.html +118 -0
  34. data/data/flot/examples/selection.html +114 -0
  35. data/data/flot/examples/setting-options.html +65 -0
  36. data/data/flot/examples/stacking.html +77 -0
  37. data/data/flot/examples/thresholding.html +54 -0
  38. data/data/flot/examples/time.html +71 -0
  39. data/data/flot/examples/tracking.html +95 -0
  40. data/data/flot/examples/turning-series.html +98 -0
  41. data/data/flot/examples/visitors.html +90 -0
  42. data/data/flot/examples/zooming.html +98 -0
  43. data/data/flot/excanvas.js +1427 -0
  44. data/data/flot/excanvas.min.js +1 -0
  45. data/data/flot/jquery.colorhelpers.js +174 -0
  46. data/data/flot/jquery.colorhelpers.min.js +1 -0
  47. data/data/flot/jquery.flot.crosshair.js +156 -0
  48. data/data/flot/jquery.flot.crosshair.min.js +1 -0
  49. data/data/flot/jquery.flot.image.js +237 -0
  50. data/data/flot/jquery.flot.image.min.js +1 -0
  51. data/data/flot/jquery.flot.js +2119 -0
  52. data/data/flot/jquery.flot.min.js +1 -0
  53. data/data/flot/jquery.flot.navigate.js +272 -0
  54. data/data/flot/jquery.flot.navigate.min.js +1 -0
  55. data/data/flot/jquery.flot.selection.js +299 -0
  56. data/data/flot/jquery.flot.selection.min.js +1 -0
  57. data/data/flot/jquery.flot.stack.js +152 -0
  58. data/data/flot/jquery.flot.stack.min.js +1 -0
  59. data/data/flot/jquery.flot.threshold.js +103 -0
  60. data/data/flot/jquery.flot.threshold.min.js +1 -0
  61. data/data/flot/jquery.js +4376 -0
  62. data/data/flot/jquery.min.js +19 -0
  63. data/data/jqplot/MIT-LICENSE.txt +21 -0
  64. data/data/jqplot/README.txt +73 -0
  65. data/data/jqplot/changes.txt +261 -0
  66. data/data/jqplot/copyright.txt +33 -0
  67. data/data/jqplot/docs/files/MIT-LICENSE-txt.html +39 -0
  68. data/data/jqplot/docs/files/changes-txt.html +39 -0
  69. data/data/jqplot/docs/files/gpl-2-0-txt.html +39 -0
  70. data/data/jqplot/docs/files/images/background.jpg +0 -0
  71. data/data/jqplot/docs/files/images/basicline.png +0 -0
  72. data/data/jqplot/docs/files/images/basiclogaxis.png +0 -0
  73. data/data/jqplot/docs/files/images/basiclogoptions.png +0 -0
  74. data/data/jqplot/docs/files/images/basicoptions.png +0 -0
  75. data/data/jqplot/docs/files/images/dualaxis.png +0 -0
  76. data/data/jqplot/docs/files/images/logo.jpg +0 -0
  77. data/data/jqplot/docs/files/images/navdocs.png +0 -0
  78. data/data/jqplot/docs/files/images/navdocsover.png +0 -0
  79. data/data/jqplot/docs/files/images/navdownload.png +0 -0
  80. data/data/jqplot/docs/files/images/navdownloadover.png +0 -0
  81. data/data/jqplot/docs/files/images/navexamples.png +0 -0
  82. data/data/jqplot/docs/files/images/navexamplesover.png +0 -0
  83. data/data/jqplot/docs/files/images/navhome.png +0 -0
  84. data/data/jqplot/docs/files/images/navhomeover.png +0 -0
  85. data/data/jqplot/docs/files/images/new.png +0 -0
  86. data/data/jqplot/docs/files/images/sample3.png +0 -0
  87. data/data/jqplot/docs/files/images/samplesm.png +0 -0
  88. data/data/jqplot/docs/files/jqPlotCssStyling-txt.html +39 -0
  89. data/data/jqplot/docs/files/jqPlotOptions-txt.html +292 -0
  90. data/data/jqplot/docs/files/jqplot-axisLabelRenderer-js.html +47 -0
  91. data/data/jqplot/docs/files/jqplot-axisTickRenderer-js.html +69 -0
  92. data/data/jqplot/docs/files/jqplot-canvasGridRenderer-js.html +39 -0
  93. data/data/jqplot/docs/files/jqplot-core-js.html +353 -0
  94. data/data/jqplot/docs/files/jqplot-divTitleRenderer-js.html +39 -0
  95. data/data/jqplot/docs/files/jqplot-lineRenderer-js.html +53 -0
  96. data/data/jqplot/docs/files/jqplot-linearAxisRenderer-js.html +39 -0
  97. data/data/jqplot/docs/files/jqplot-markerRenderer-js.html +65 -0
  98. data/data/jqplot/docs/files/jqplot-shadowRenderer-js.html +61 -0
  99. data/data/jqplot/docs/files/jqplot-shapeRenderer-js.html +63 -0
  100. data/data/jqplot/docs/files/jqplot-themeEngine-js.html +190 -0
  101. data/data/jqplot/docs/files/optionsTutorial-txt.html +119 -0
  102. data/data/jqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html +45 -0
  103. data/data/jqplot/docs/files/plugins/jqplot-barRenderer-js.html +67 -0
  104. data/data/jqplot/docs/files/plugins/jqplot-blockRenderer-js.html +53 -0
  105. data/data/jqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html +71 -0
  106. data/data/jqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html +63 -0
  107. data/data/jqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html +79 -0
  108. data/data/jqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html +46 -0
  109. data/data/jqplot/docs/files/plugins/jqplot-cursor-js.html +91 -0
  110. data/data/jqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html +93 -0
  111. data/data/jqplot/docs/files/plugins/jqplot-donutRenderer-js.html +98 -0
  112. data/data/jqplot/docs/files/plugins/jqplot-dragable-js.html +45 -0
  113. data/data/jqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html +49 -0
  114. data/data/jqplot/docs/files/plugins/jqplot-funnelRenderer-js.html +87 -0
  115. data/data/jqplot/docs/files/plugins/jqplot-highlighter-js.html +80 -0
  116. data/data/jqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html +45 -0
  117. data/data/jqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html +49 -0
  118. data/data/jqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html +62 -0
  119. data/data/jqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html +103 -0
  120. data/data/jqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html +65 -0
  121. data/data/jqplot/docs/files/plugins/jqplot-pieRenderer-js.html +93 -0
  122. data/data/jqplot/docs/files/plugins/jqplot-pointLabels-js.html +72 -0
  123. data/data/jqplot/docs/files/plugins/jqplot-trendline-js.html +67 -0
  124. data/data/jqplot/docs/files/usage-txt.html +58 -0
  125. data/data/jqplot/docs/index.html +1 -0
  126. data/data/jqplot/docs/index/Classes.html +58 -0
  127. data/data/jqplot/docs/index/Files.html +34 -0
  128. data/data/jqplot/docs/index/Functions.html +66 -0
  129. data/data/jqplot/docs/index/General.html +46 -0
  130. data/data/jqplot/docs/index/General2.html +46 -0
  131. data/data/jqplot/docs/index/General3.html +46 -0
  132. data/data/jqplot/docs/index/General4.html +50 -0
  133. data/data/jqplot/docs/index/General5.html +34 -0
  134. data/data/jqplot/docs/index/General6.html +58 -0
  135. data/data/jqplot/docs/index/Hooks.html +46 -0
  136. data/data/jqplot/docs/index/Properties.html +50 -0
  137. data/data/jqplot/docs/index/Properties2.html +50 -0
  138. data/data/jqplot/docs/index/Properties3.html +50 -0
  139. data/data/jqplot/docs/index/Properties4.html +34 -0
  140. data/data/jqplot/docs/index/Properties5.html +58 -0
  141. data/data/jqplot/docs/javascript/main.js +836 -0
  142. data/data/jqplot/docs/javascript/searchdata.js +182 -0
  143. data/data/jqplot/docs/search/ClassesA.html +20 -0
  144. data/data/jqplot/docs/search/ClassesG.html +20 -0
  145. data/data/jqplot/docs/search/ClassesJ.html +20 -0
  146. data/data/jqplot/docs/search/ClassesL.html +20 -0
  147. data/data/jqplot/docs/search/ClassesS.html +20 -0
  148. data/data/jqplot/docs/search/ClassesSymbols.html +20 -0
  149. data/data/jqplot/docs/search/ClassesT.html +20 -0
  150. data/data/jqplot/docs/search/FilesJ.html +20 -0
  151. data/data/jqplot/docs/search/FunctionsC.html +20 -0
  152. data/data/jqplot/docs/search/FunctionsD.html +20 -0
  153. data/data/jqplot/docs/search/FunctionsG.html +20 -0
  154. data/data/jqplot/docs/search/FunctionsI.html +20 -0
  155. data/data/jqplot/docs/search/FunctionsM.html +20 -0
  156. data/data/jqplot/docs/search/FunctionsN.html +20 -0
  157. data/data/jqplot/docs/search/FunctionsR.html +20 -0
  158. data/data/jqplot/docs/search/FunctionsS.html +20 -0
  159. data/data/jqplot/docs/search/FunctionsZ.html +20 -0
  160. data/data/jqplot/docs/search/GeneralA.html +20 -0
  161. data/data/jqplot/docs/search/GeneralB.html +20 -0
  162. data/data/jqplot/docs/search/GeneralC.html +20 -0
  163. data/data/jqplot/docs/search/GeneralD.html +20 -0
  164. data/data/jqplot/docs/search/GeneralE.html +20 -0
  165. data/data/jqplot/docs/search/GeneralF.html +20 -0
  166. data/data/jqplot/docs/search/GeneralG.html +20 -0
  167. data/data/jqplot/docs/search/GeneralH.html +20 -0
  168. data/data/jqplot/docs/search/GeneralI.html +20 -0
  169. data/data/jqplot/docs/search/GeneralJ.html +20 -0
  170. data/data/jqplot/docs/search/GeneralL.html +20 -0
  171. data/data/jqplot/docs/search/GeneralM.html +20 -0
  172. data/data/jqplot/docs/search/GeneralN.html +20 -0
  173. data/data/jqplot/docs/search/GeneralO.html +20 -0
  174. data/data/jqplot/docs/search/GeneralP.html +20 -0
  175. data/data/jqplot/docs/search/GeneralR.html +20 -0
  176. data/data/jqplot/docs/search/GeneralS.html +20 -0
  177. data/data/jqplot/docs/search/GeneralSymbols.html +20 -0
  178. data/data/jqplot/docs/search/GeneralT.html +20 -0
  179. data/data/jqplot/docs/search/GeneralU.html +20 -0
  180. data/data/jqplot/docs/search/GeneralV.html +20 -0
  181. data/data/jqplot/docs/search/GeneralW.html +20 -0
  182. data/data/jqplot/docs/search/GeneralX.html +20 -0
  183. data/data/jqplot/docs/search/GeneralY.html +20 -0
  184. data/data/jqplot/docs/search/GeneralZ.html +20 -0
  185. data/data/jqplot/docs/search/HooksA.html +20 -0
  186. data/data/jqplot/docs/search/HooksE.html +20 -0
  187. data/data/jqplot/docs/search/HooksJ.html +20 -0
  188. data/data/jqplot/docs/search/HooksP.html +20 -0
  189. data/data/jqplot/docs/search/NoResults.html +15 -0
  190. data/data/jqplot/docs/search/PropertiesA.html +20 -0
  191. data/data/jqplot/docs/search/PropertiesB.html +20 -0
  192. data/data/jqplot/docs/search/PropertiesC.html +20 -0
  193. data/data/jqplot/docs/search/PropertiesD.html +20 -0
  194. data/data/jqplot/docs/search/PropertiesE.html +20 -0
  195. data/data/jqplot/docs/search/PropertiesF.html +20 -0
  196. data/data/jqplot/docs/search/PropertiesG.html +20 -0
  197. data/data/jqplot/docs/search/PropertiesH.html +20 -0
  198. data/data/jqplot/docs/search/PropertiesI.html +20 -0
  199. data/data/jqplot/docs/search/PropertiesL.html +20 -0
  200. data/data/jqplot/docs/search/PropertiesM.html +20 -0
  201. data/data/jqplot/docs/search/PropertiesN.html +20 -0
  202. data/data/jqplot/docs/search/PropertiesO.html +20 -0
  203. data/data/jqplot/docs/search/PropertiesP.html +20 -0
  204. data/data/jqplot/docs/search/PropertiesR.html +20 -0
  205. data/data/jqplot/docs/search/PropertiesS.html +20 -0
  206. data/data/jqplot/docs/search/PropertiesT.html +20 -0
  207. data/data/jqplot/docs/search/PropertiesU.html +20 -0
  208. data/data/jqplot/docs/search/PropertiesV.html +20 -0
  209. data/data/jqplot/docs/search/PropertiesW.html +20 -0
  210. data/data/jqplot/docs/search/PropertiesX.html +20 -0
  211. data/data/jqplot/docs/search/PropertiesY.html +20 -0
  212. data/data/jqplot/docs/search/PropertiesZ.html +20 -0
  213. data/data/jqplot/docs/styles/1.css +767 -0
  214. data/data/jqplot/docs/styles/2.css +174 -0
  215. data/data/jqplot/docs/styles/main.css +2 -0
  216. data/data/jqplot/examples/.htaccess +1 -0
  217. data/data/jqplot/examples/OHLC.html +333 -0
  218. data/data/jqplot/examples/OHLC2.html +193 -0
  219. data/data/jqplot/examples/area.html +107 -0
  220. data/data/jqplot/examples/axisLabel.html +117 -0
  221. data/data/jqplot/examples/axisLabelsRotatedText.html +131 -0
  222. data/data/jqplot/examples/axisLabelsRotatedText2.html +155 -0
  223. data/data/jqplot/examples/barLinePieStack.html +198 -0
  224. data/data/jqplot/examples/barMissingValues.html +64 -0
  225. data/data/jqplot/examples/barTest.html +283 -0
  226. data/data/jqplot/examples/barTest2.html +74 -0
  227. data/data/jqplot/examples/bezierCurve.html +96 -0
  228. data/data/jqplot/examples/blockPlot.html +149 -0
  229. data/data/jqplot/examples/bubbleChart2.html +253 -0
  230. data/data/jqplot/examples/bubblechart.html +69 -0
  231. data/data/jqplot/examples/catchError.html +53 -0
  232. data/data/jqplot/examples/categoryHorizontalBar.html +81 -0
  233. data/data/jqplot/examples/categoryVsLinearAxes.html +74 -0
  234. data/data/jqplot/examples/chartInTable.html +33 -0
  235. data/data/jqplot/examples/customHighlighterCursorTrendline.html +72 -0
  236. data/data/jqplot/examples/customPieTests.html +73 -0
  237. data/data/jqplot/examples/dataLabels.html +192 -0
  238. data/data/jqplot/examples/dataTracking.html +91 -0
  239. data/data/jqplot/examples/donutTest.html +89 -0
  240. data/data/jqplot/examples/donutTest.js +96 -0
  241. data/data/jqplot/examples/examples.css +19 -0
  242. data/data/jqplot/examples/fillToZero.html +126 -0
  243. data/data/jqplot/examples/filledLine.html +78 -0
  244. data/data/jqplot/examples/filledLineCategoryAxis.html +80 -0
  245. data/data/jqplot/examples/funnelTest.html +82 -0
  246. data/data/jqplot/examples/funnelTest.js +74 -0
  247. data/data/jqplot/examples/gridCustomization.html +56 -0
  248. data/data/jqplot/examples/hiddenPlot.html +216 -0
  249. data/data/jqplot/examples/highlighter.html +95 -0
  250. data/data/jqplot/examples/highlighter2.html +63 -0
  251. data/data/jqplot/examples/horizontalLine.html +51 -0
  252. data/data/jqplot/examples/intticks.html +178 -0
  253. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  254. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  255. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  256. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  257. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  258. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  259. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  260. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  261. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  262. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  263. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  264. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  265. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  266. data/data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  267. data/data/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
  268. data/data/jqplot/examples/jquery-ui/js/jquery-1.4.2.min.js +154 -0
  269. data/data/jqplot/examples/jquery-ui/js/jquery-ui-1.8.1.custom.min.js +756 -0
  270. data/data/jqplot/examples/legendLabels.html +205 -0
  271. data/data/jqplot/examples/legendLabels2.html +228 -0
  272. data/data/jqplot/examples/liz.zip +0 -0
  273. data/data/jqplot/examples/markerStyles.html +44 -0
  274. data/data/jqplot/examples/mekkoChart.html +217 -0
  275. data/data/jqplot/examples/meterGauge.html +132 -0
  276. data/data/jqplot/examples/meterGauge2.html +158 -0
  277. data/data/jqplot/examples/minMaxLines.html +61 -0
  278. data/data/jqplot/examples/missingValues.html +119 -0
  279. data/data/jqplot/examples/multiAxesRotatedText.html +70 -0
  280. data/data/jqplot/examples/multipleBarColors.html +149 -0
  281. data/data/jqplot/examples/multipleLines.html +47 -0
  282. data/data/jqplot/examples/multipleYAxes.html +85 -0
  283. data/data/jqplot/examples/nav.inc +35 -0
  284. data/data/jqplot/examples/pieTest.html +77 -0
  285. data/data/jqplot/examples/pieTest2.html +87 -0
  286. data/data/jqplot/examples/pieTest2.js +80 -0
  287. data/data/jqplot/examples/pieTest3.html +100 -0
  288. data/data/jqplot/examples/pointLabels.html +94 -0
  289. data/data/jqplot/examples/pointLabels2.html +47 -0
  290. data/data/jqplot/examples/prefix.html +90 -0
  291. data/data/jqplot/examples/resizablePlot.html +150 -0
  292. data/data/jqplot/examples/rotatedTickLabels.html +61 -0
  293. data/data/jqplot/examples/rotatedTickLabelsZoom.html +68 -0
  294. data/data/jqplot/examples/seriesCanvasReorder.html +93 -0
  295. data/data/jqplot/examples/seriesUpdate.html +123 -0
  296. data/data/jqplot/examples/shadowTests.html +133 -0
  297. data/data/jqplot/examples/singlePoint.html +70 -0
  298. data/data/jqplot/examples/sparkLine.html +48 -0
  299. data/data/jqplot/examples/stackedBar2.html +104 -0
  300. data/data/jqplot/examples/stackedBar3.html +76 -0
  301. data/data/jqplot/examples/stackedBarCategoryVsLinearAxes.html +121 -0
  302. data/data/jqplot/examples/stackedCategoryAxis.html +89 -0
  303. data/data/jqplot/examples/stackedFilledLine.html +77 -0
  304. data/data/jqplot/examples/stackedLine.html +56 -0
  305. data/data/jqplot/examples/test2.html +64 -0
  306. data/data/jqplot/examples/theming.html +483 -0
  307. data/data/jqplot/examples/trendlineDragableCustomization.html +79 -0
  308. data/data/jqplot/examples/verticalLine.html +52 -0
  309. data/data/jqplot/examples/waterfall.html +135 -0
  310. data/data/jqplot/examples/zoom1.html +125 -0
  311. data/data/jqplot/examples/zoom2.html +73 -0
  312. data/data/jqplot/examples/zoom3.html +69 -0
  313. data/data/jqplot/examples/zoomOptions.html +101 -0
  314. data/data/jqplot/examples/zoomProxy.html +108 -0
  315. data/data/jqplot/excanvas.js +1416 -0
  316. data/data/jqplot/excanvas.min.js +35 -0
  317. data/data/jqplot/gpl-2.0.txt +280 -0
  318. data/data/jqplot/jqPlotCssStyling.txt +53 -0
  319. data/data/jqplot/jqPlotOptions.txt +276 -0
  320. data/data/jqplot/jquery-1.4.1.min.js +152 -0
  321. data/data/jqplot/jquery-1.4.2.min.js +154 -0
  322. data/data/jqplot/jquery.jqplot.css +212 -0
  323. data/data/jqplot/jquery.jqplot.js +7004 -0
  324. data/data/jqplot/jquery.jqplot.min.css +1 -0
  325. data/data/jqplot/jquery.jqplot.min.js +34 -0
  326. data/data/jqplot/optionsTutorial.txt +239 -0
  327. data/data/jqplot/plugins/jqplot.BezierCurveRenderer.js +300 -0
  328. data/data/jqplot/plugins/jqplot.BezierCurveRenderer.min.js +34 -0
  329. data/data/jqplot/plugins/jqplot.barRenderer.js +629 -0
  330. data/data/jqplot/plugins/jqplot.barRenderer.min.js +34 -0
  331. data/data/jqplot/plugins/jqplot.blockRenderer.js +221 -0
  332. data/data/jqplot/plugins/jqplot.blockRenderer.min.js +34 -0
  333. data/data/jqplot/plugins/jqplot.bubbleRenderer.js +724 -0
  334. data/data/jqplot/plugins/jqplot.bubbleRenderer.min.js +34 -0
  335. data/data/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js +187 -0
  336. data/data/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js +34 -0
  337. data/data/jqplot/plugins/jqplot.canvasAxisTickRenderer.js +226 -0
  338. data/data/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js +34 -0
  339. data/data/jqplot/plugins/jqplot.canvasTextRenderer.js +408 -0
  340. data/data/jqplot/plugins/jqplot.canvasTextRenderer.min.js +34 -0
  341. data/data/jqplot/plugins/jqplot.categoryAxisRenderer.js +630 -0
  342. data/data/jqplot/plugins/jqplot.categoryAxisRenderer.min.js +34 -0
  343. data/data/jqplot/plugins/jqplot.cursor.js +952 -0
  344. data/data/jqplot/plugins/jqplot.cursor.min.js +34 -0
  345. data/data/jqplot/plugins/jqplot.dateAxisRenderer.js +313 -0
  346. data/data/jqplot/plugins/jqplot.dateAxisRenderer.min.js +34 -0
  347. data/data/jqplot/plugins/jqplot.donutRenderer.js +876 -0
  348. data/data/jqplot/plugins/jqplot.donutRenderer.min.js +34 -0
  349. data/data/jqplot/plugins/jqplot.dragable.js +206 -0
  350. data/data/jqplot/plugins/jqplot.dragable.min.js +34 -0
  351. data/data/jqplot/plugins/jqplot.enhancedLegendRenderer.js +186 -0
  352. data/data/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js +34 -0
  353. data/data/jqplot/plugins/jqplot.funnelRenderer.js +918 -0
  354. data/data/jqplot/plugins/jqplot.funnelRenderer.min.js +34 -0
  355. data/data/jqplot/plugins/jqplot.highlighter.js +374 -0
  356. data/data/jqplot/plugins/jqplot.highlighter.min.js +34 -0
  357. data/data/jqplot/plugins/jqplot.logAxisRenderer.js +434 -0
  358. data/data/jqplot/plugins/jqplot.logAxisRenderer.min.js +34 -0
  359. data/data/jqplot/plugins/jqplot.mekkoAxisRenderer.js +595 -0
  360. data/data/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js +34 -0
  361. data/data/jqplot/plugins/jqplot.mekkoRenderer.js +419 -0
  362. data/data/jqplot/plugins/jqplot.mekkoRenderer.min.js +34 -0
  363. data/data/jqplot/plugins/jqplot.meterGaugeRenderer.js +1112 -0
  364. data/data/jqplot/plugins/jqplot.meterGaugeRenderer.min.js +34 -0
  365. data/data/jqplot/plugins/jqplot.ohlcRenderer.js +343 -0
  366. data/data/jqplot/plugins/jqplot.ohlcRenderer.min.js +34 -0
  367. data/data/jqplot/plugins/jqplot.pieRenderer.js +749 -0
  368. data/data/jqplot/plugins/jqplot.pieRenderer.min.js +34 -0
  369. data/data/jqplot/plugins/jqplot.pointLabels.js +325 -0
  370. data/data/jqplot/plugins/jqplot.pointLabels.min.js +34 -0
  371. data/data/jqplot/plugins/jqplot.trendline.js +208 -0
  372. data/data/jqplot/plugins/jqplot.trendline.min.js +34 -0
  373. data/data/jqplot/usage.txt +119 -0
  374. data/examples/graph.rb +17 -0
  375. data/lib/reportbuilder.rb +21 -2
  376. data/lib/reportbuilder/builder.rb +31 -3
  377. data/lib/reportbuilder/builder/html.rb +39 -5
  378. data/lib/reportbuilder/graph.rb +252 -0
  379. data/lib/reportbuilder/graph/html_flot.rb +149 -0
  380. data/lib/reportbuilder/graph/html_jqplot.rb +145 -0
  381. data/lib/reportbuilder/image.rb +178 -78
  382. data/lib/reportbuilder/table/rtfbuilder.rb +2 -2
  383. data/test/helper_test.rb +6 -7
  384. data/test/test_graph.rb +44 -0
  385. data/test/test_graph_html_flot.rb +36 -0
  386. data/test/test_graph_html_jqplot.rb +36 -0
  387. data/test/test_html.rb +4 -7
  388. data/test/test_image.rb +35 -7
  389. data/test/test_reportbuilder.rb +4 -6
  390. data/test/test_table.rb +0 -2
  391. metadata +402 -7
  392. metadata.gz.sig +4 -2
@@ -26,7 +26,7 @@ class ReportBuilder
26
26
  end
27
27
  next_with_hr=false
28
28
 
29
- @t.rows.each_with_index{|row|
29
+ @t.rows.each do |row|
30
30
  if row==:hr
31
31
  next_with_hr=true
32
32
  # Nothing
@@ -38,7 +38,7 @@ class ReportBuilder
38
38
  end
39
39
  row_i+=1
40
40
  end
41
- }
41
+ end
42
42
 
43
43
  end
44
44
  def add_hr_on_top(row_i)
@@ -1,12 +1,11 @@
1
- begin
2
- require 'RMagick'
3
- $rmagick=true
4
- rescue LoadError
5
- $rmagick=false
6
- end
7
1
  $:.unshift(File.dirname(__FILE__)+"/../lib")
2
+ require "reportbuilder"
8
3
  require 'nokogiri'
9
4
  require 'minitest/unit'
10
5
  require 'tmpdir'
11
- require "reportbuilder"
6
+ require 'fileutils'
7
+ require 'tempfile'
8
+
9
+
10
+
12
11
  MiniTest::Unit.autorun
@@ -0,0 +1,44 @@
1
+ require(File.dirname(__FILE__)+"/helper_test.rb")
2
+
3
+ class TestReportbuilderGraph < MiniTest::Unit::TestCase
4
+ def test_init_without_block
5
+ width=rand(200)
6
+ height=rand(200)
7
+ graph=ReportBuilder::Graph.new(:name=>"Aa",:height=>height,:width=>width)
8
+ assert_equal('Aa', graph.name)
9
+ assert_equal(width, graph.width)
10
+ assert_equal(height, graph.height)
11
+ end
12
+ def test_with_block
13
+ width=rand(200)
14
+ height=rand(200)
15
+ graph=ReportBuilder::Graph.new do |g|
16
+ g.name = 'Aa'
17
+ g.width width
18
+ g.height=height
19
+ end
20
+ assert_equal('Aa', graph.name)
21
+ assert_equal(width, graph.width)
22
+ assert_equal(height, graph.height)
23
+ end
24
+ def test_series_definitions
25
+ x1_data=[[1,1],[2,2.5],[3,3.5],[4,4.5],[5,5.5]]
26
+ x2_data=[[1,5],[2,4],[3,3],[4,2],[5,1]]
27
+ graph=ReportBuilder::Graph.new do |g|
28
+ g.data 1, 1,2.5,3.5,4.5,5.5
29
+ g.serie_options 1, :color=>'blue'
30
+ g.serie "x2", :data=>x2_data, :color=>'red'
31
+ end
32
+ exp_data={1=>x1_data, 'x2'=>x2_data}
33
+ exp_options={
34
+ 1=>{:color=>'blue'},
35
+ "x2"=>{:color=>'red'}
36
+ }
37
+ assert_equal(exp_data, graph.series_data_hash)
38
+ assert_equal(exp_options, graph.series_options_hash)
39
+ assert_equal([1, "x2"],graph.series_id)
40
+ assert_equal(x2_data, graph.data('x2'))
41
+ assert_equal([x1_data,x2_data], graph.series_data)
42
+ assert_equal([{:color=>'blue'}, {:color=>'red'}], graph.series_options)
43
+ end
44
+ end
@@ -0,0 +1,36 @@
1
+ require(File.dirname(__FILE__)+"/helper_test.rb")
2
+ require 'json'
3
+ class TestReportbuilderGraphHtmlFlot < MiniTest::Unit::TestCase
4
+ def setup
5
+ @tmpdir=Dir::mktmpdir
6
+ @datadir=File.dirname(__FILE__)+"/../data"
7
+ @rp_name="Graph Test"
8
+ @rp=ReportBuilder.new(:name=>@rp_name, :directory=>@tmpdir)
9
+ @graph=ReportBuilder::Graph.new(:html_engine=>:flot) do |g|
10
+ g.series_defaults :color=>'red', :bars=>{:width=>5}
11
+ g.legend :show=>true, :position=>'e', :background_color=>'yellow'
12
+ g.xaxis :min=>-2, :max=>10, :ticks=>2
13
+ g.grid :show=>true, :color=>'#cccccc', :background_color=>'#eeeeee'
14
+ g.serie :x1, :data=>[1,2,1.5,3,2], :type=>:bar, :bars=>{:width=>30, :color=>'blue'}
15
+ g.serie :x2, :data=>[3,2,1,2,1], :lines=>{:width=>5, :fill=>false, :shadow_depth=>5, :fill_color=>'yellow'}, :markers=>{:show=>true,:color=>'orange', :radius=>5, :shadow=>true, :shadow_depth=>2}
16
+ end
17
+ end
18
+ def test_smoke
19
+ @tempfile=Tempfile.new("test.html")
20
+ @path=@tempfile.path
21
+ @rp.add(@graph)
22
+ @rp.save_html(@path)
23
+ assert(File.exists? @path)
24
+ @tempfile.close
25
+ end
26
+ def test_js
27
+ require 'reportbuilder/graph/html_flot'
28
+ html = ReportBuilder::Builder::Html.new(nil, {:name=>'hola'})
29
+ jqplot_builder = ReportBuilder::Graph::HtmlFlot.new(html, @graph)
30
+ jo=jqplot_builder.flot_options
31
+ assert_equal('red', jo[:series][:color])
32
+ assert(jo[:series][:bars].nil?)
33
+ assert_equal('#cccccc', jo[:grid][:color])
34
+ end
35
+
36
+ end
@@ -0,0 +1,36 @@
1
+ require(File.dirname(__FILE__)+"/helper_test.rb")
2
+ require 'json'
3
+ class TestReportbuilderGraphHtmlJqplot < MiniTest::Unit::TestCase
4
+ def setup
5
+ @tmpdir=Dir::mktmpdir
6
+ @datadir=File.dirname(__FILE__)+"/../data"
7
+ @rp_name="Graph Test"
8
+ @rp=ReportBuilder.new(:name=>@rp_name, :directory=>@tmpdir)
9
+ @graph=ReportBuilder::Graph.new do |g|
10
+ g.series_defaults :color=>'red', :bars=>{:width=>5}
11
+ g.legend :show=>true, :position=>'e', :background_color=>'yellow'
12
+ g.xaxis :min=>-2, :max=>10, :ticks=>2
13
+ g.grid :show=>true, :color=>'#cccccc', :background_color=>'#eeeeee'
14
+ g.serie :x1, :data=>[1,2,1.5,3,2], :type=>:bar, :bars=>{:width=>30, :color=>'blue'}
15
+ g.serie :x2, :data=>[3,2,1,2,1], :lines=>{:width=>5, :fill=>false, :shadow_depth=>5, :fill_color=>'yellow'}, :markers=>{:show=>true,:color=>'orange', :radius=>5, :shadow=>true, :shadow_depth=>2}
16
+ end
17
+ end
18
+ def test_smoke
19
+ @tempfile=Tempfile.new("test.html")
20
+ @path=@tempfile.path
21
+ @rp.add(@graph)
22
+ @rp.save_html(@path)
23
+ assert(File.exists? @path)
24
+ @tempfile.close
25
+ end
26
+ def test_js
27
+ require 'reportbuilder/graph/html_jqplot'
28
+ html = ReportBuilder::Builder::Html.new(nil, {:name=>'hola'})
29
+ jqplot_builder = ReportBuilder::Graph::HtmlJqplot.new(html, @graph)
30
+ jo=jqplot_builder.jqplot_options
31
+ assert_equal('red', jo[:seriesDefaults][:color])
32
+ assert_equal(5, jo[:seriesDefaults][:rendererOptions][:barWidth])
33
+ assert_equal('#cccccc', jo[:grid][:gridLineColor])
34
+ end
35
+
36
+ end
@@ -1,7 +1,4 @@
1
1
  require(File.dirname(__FILE__)+"/helper_test.rb")
2
- require 'fileutils'
3
- require 'tmpdir'
4
- require 'tempfile'
5
2
 
6
3
  class TestReportbuilderHtml < MiniTest::Unit::TestCase
7
4
  def setup
@@ -57,10 +54,10 @@ class TestReportbuilderHtml < MiniTest::Unit::TestCase
57
54
  def report_building_html(generator)
58
55
  generator.css('"+@datadir+"/reportbuilder.css')
59
56
  end
60
- end ")
61
- @rp.add(mock_element)
62
- assert_match(/link rel='stylesheet'.+css\/reportbuilder.css/, @rp.to_html)
63
- assert(File.exists? @tmpdir+"/css/reportbuilder.css")
57
+ end ")
58
+ @rp.add(mock_element)
59
+ assert_match(/link rel='stylesheet'.+css\/reportbuilder.css/, @rp.to_html)
60
+ assert(File.exists? @tmpdir+"/css/reportbuilder.css")
64
61
  end
65
62
 
66
63
  end
@@ -5,12 +5,12 @@ class TestReportbuilderImage < MiniTest::Unit::TestCase
5
5
  @tmpdir=Dir::mktmpdir
6
6
  @rp=ReportBuilder.new(:no_name=>true, :directory=>@tmpdir)
7
7
  @datadir=File.dirname(__FILE__)+"/../data"
8
- @rp.add(ReportBuilder::Image.new(@datadir+"/sheep.jpg"))
9
8
  end
10
9
  def teardown
11
10
  FileUtils.remove_entry_secure @tmpdir
12
11
  end
13
12
  def test_image_text
13
+ @rp.add(ReportBuilder::ImageFilename.new(@datadir+"/sheep.jpg"))
14
14
 
15
15
  expected= <<-HERE
16
16
  Test
@@ -31,18 +31,46 @@ Test
31
31
  | **#***** |
32
32
  +--------------------------------+
33
33
  HERE
34
- if $rmagick
35
- real=@rp.to_s
36
- #expected=expected.gsub(/[^ ]/,'-')
37
- assert_match(/[^\s]{12}$/,real)
38
- else
39
- skip "Requires RMagick"
34
+ if ReportBuilder.has_rmagick?
35
+ real=@rp.to_s
36
+ #expected=expected.gsub(/[^ ]/,'-')
37
+ assert_match(/[^\s]{12}$/,real)
38
+ else
39
+ skip "Requires RMagick"
40
+ end
40
41
  end
42
+ def test_image_blob_jpg
43
+ @rp.add(ReportBuilder::ImageFilename.new(@datadir+"/sheep.jpg"))
44
+ out=File.read(@datadir+"/sheep.jpg")
45
+ image_blob=ReportBuilder::ImageBlob.new(out, :type=>'jpg')
46
+ @rp.add(image_blob)
47
+ html=@rp.to_html
48
+ assert(File.exists? image_blob.filename)
49
+ assert_equal(out, File.read(image_blob.filename))
50
+ assert_match(/img src='#{image_blob.url}'/, @rp.to_html)
51
+ assert_match(/\\pict\\picw128\\pich112\\bliptag\d+\\jpegblip/, @rp.to_rtf)
52
+
41
53
  end
54
+ def test_image_blob_svg
55
+ svg='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="200px" height="50px">
56
+ <rect x="10" y="5" width="20" height="20" fill="blue" />
57
+ </svg>'
58
+ image_blob=ReportBuilder::ImageBlob.new(svg)
59
+ assert_equal("svg", image_blob.type)
60
+ @rp.add(image_blob)
61
+ html=@rp.to_html
62
+ assert(File.exists? image_blob.filename)
63
+ assert_equal(svg, File.read(image_blob.filename))
64
+ assert_match(/embed.+src='#{image_blob.url}'/, @rp.to_html)
65
+ assert_match(/\\pict\\picw200\\pich50\\bliptag\d+\\pngblip/, @rp.to_rtf)
66
+ end
42
67
  def test_image_html
68
+ @rp.add(ReportBuilder::ImageFilename.new(@datadir+"/sheep.jpg"))
43
69
  assert_match(/img src='images\/sheep.jpg'/, @rp.to_html)
44
70
  end
45
71
  def test_image_rtf
72
+ @rp.add(ReportBuilder::ImageFilename.new(@datadir+"/sheep.jpg"))
73
+
46
74
  assert_match(/\\pict\\picw128\\pich112\\bliptag\d+\\jpegblip/, @rp.to_rtf)
47
75
  end
48
76
  end
@@ -39,9 +39,7 @@ class TestReportbuilder < MiniTest::Unit::TestCase
39
39
  g.text "para"
40
40
  g.preformatted "pre"
41
41
  g.table(:header=>%w{th1 th2}) {row([1,2]); row([1,3])}
42
- if $rmagick
43
- g.image @image
44
- end
42
+ g.image @image if ReportBuilder.has_rmagick?
45
43
  }
46
44
  rb.add(a)
47
45
  out=rb.to_text
@@ -53,9 +51,9 @@ class TestReportbuilder < MiniTest::Unit::TestCase
53
51
  g.text "para"
54
52
  g.preformatted "pre"
55
53
  g.table(:header=>%w{th1 th2}) {row([1,2]); row([1,3])}
56
- if $rmagick
57
- g.image @image
58
- end
54
+ if ReportBuilder.has_rmagick?
55
+ g.image @image
56
+ end
59
57
  }
60
58
 
61
59
  out=rb.to_text
@@ -1,7 +1,5 @@
1
1
  require(File.dirname(__FILE__)+"/helper_test.rb")
2
2
 
3
- require 'tempfile'
4
-
5
3
  class TestReportbuilderTable < MiniTest::Unit::TestCase
6
4
  def setup
7
5
  super
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reportbuilder
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 27
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
- - 2
8
- - 5
9
- version: 1.2.5
8
+ - 3
9
+ - 0
10
+ version: 1.3.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Claudio Bustos
@@ -35,16 +36,18 @@ cert_chain:
35
36
  rpP0jjs0
36
37
  -----END CERTIFICATE-----
37
38
 
38
- date: 2010-05-03 00:00:00 -04:00
39
+ date: 2010-11-24 00:00:00 -03:00
39
40
  default_executable:
40
41
  dependencies:
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: clbustos-rtf
43
44
  prerelease: false
44
45
  requirement: &id001 !ruby/object:Gem::Requirement
46
+ none: false
45
47
  requirements:
46
48
  - - ~>
47
49
  - !ruby/object:Gem::Version
50
+ hash: 19
48
51
  segments:
49
52
  - 0
50
53
  - 3
@@ -56,9 +59,11 @@ dependencies:
56
59
  name: text-table
57
60
  prerelease: false
58
61
  requirement: &id002 !ruby/object:Gem::Requirement
62
+ none: false
59
63
  requirements:
60
64
  - - ~>
61
65
  - !ruby/object:Gem::Version
66
+ hash: 11
62
67
  segments:
63
68
  - 1
64
69
  - 2
@@ -69,9 +74,11 @@ dependencies:
69
74
  name: rubyforge
70
75
  prerelease: false
71
76
  requirement: &id003 !ruby/object:Gem::Requirement
77
+ none: false
72
78
  requirements:
73
79
  - - ">="
74
80
  - !ruby/object:Gem::Version
81
+ hash: 7
75
82
  segments:
76
83
  - 2
77
84
  - 0
@@ -83,9 +90,11 @@ dependencies:
83
90
  name: nokogiri
84
91
  prerelease: false
85
92
  requirement: &id004 !ruby/object:Gem::Requirement
93
+ none: false
86
94
  requirements:
87
95
  - - ~>
88
96
  - !ruby/object:Gem::Version
97
+ hash: 7
89
98
  segments:
90
99
  - 1
91
100
  - 4
@@ -96,14 +105,16 @@ dependencies:
96
105
  name: hoe
97
106
  prerelease: false
98
107
  requirement: &id005 !ruby/object:Gem::Requirement
108
+ none: false
99
109
  requirements:
100
110
  - - ">="
101
111
  - !ruby/object:Gem::Version
112
+ hash: 19
102
113
  segments:
103
114
  - 2
104
- - 6
115
+ - 7
105
116
  - 0
106
- version: 2.6.0
117
+ version: 2.7.0
107
118
  type: :development
108
119
  version_requirements: *id005
109
120
  description: Report Abstract Interface. Creates text, html and rtf output, based on a common framework.
@@ -123,11 +134,382 @@ files:
123
134
  - README.txt
124
135
  - Rakefile
125
136
  - bin/reportbuilder
137
+ - data/flot/API.txt
138
+ - data/flot/FAQ.txt
139
+ - data/flot/LICENSE.txt
140
+ - data/flot/Makefile
141
+ - data/flot/NEWS.txt
142
+ - data/flot/PLUGINS.txt
143
+ - data/flot/README.txt
144
+ - data/flot/examples/ajax.html
145
+ - data/flot/examples/annotating.html
146
+ - data/flot/examples/arrow-down.gif
147
+ - data/flot/examples/arrow-left.gif
148
+ - data/flot/examples/arrow-right.gif
149
+ - data/flot/examples/arrow-up.gif
150
+ - data/flot/examples/basic.html
151
+ - data/flot/examples/data-eu-gdp-growth-1.json
152
+ - data/flot/examples/data-eu-gdp-growth-2.json
153
+ - data/flot/examples/data-eu-gdp-growth-3.json
154
+ - data/flot/examples/data-eu-gdp-growth-4.json
155
+ - data/flot/examples/data-eu-gdp-growth-5.json
156
+ - data/flot/examples/data-eu-gdp-growth.json
157
+ - data/flot/examples/data-japan-gdp-growth.json
158
+ - data/flot/examples/data-usa-gdp-growth.json
159
+ - data/flot/examples/dual-axis.html
160
+ - data/flot/examples/graph-types.html
161
+ - data/flot/examples/hs-2004-27-a-large_web.jpg
162
+ - data/flot/examples/image.html
163
+ - data/flot/examples/index.html
164
+ - data/flot/examples/interacting.html
165
+ - data/flot/examples/layout.css
166
+ - data/flot/examples/navigate.html
167
+ - data/flot/examples/selection.html
168
+ - data/flot/examples/setting-options.html
169
+ - data/flot/examples/stacking.html
170
+ - data/flot/examples/thresholding.html
171
+ - data/flot/examples/time.html
172
+ - data/flot/examples/tracking.html
173
+ - data/flot/examples/turning-series.html
174
+ - data/flot/examples/visitors.html
175
+ - data/flot/examples/zooming.html
176
+ - data/flot/excanvas.js
177
+ - data/flot/excanvas.min.js
178
+ - data/flot/jquery.colorhelpers.js
179
+ - data/flot/jquery.colorhelpers.min.js
180
+ - data/flot/jquery.flot.crosshair.js
181
+ - data/flot/jquery.flot.crosshair.min.js
182
+ - data/flot/jquery.flot.image.js
183
+ - data/flot/jquery.flot.image.min.js
184
+ - data/flot/jquery.flot.js
185
+ - data/flot/jquery.flot.min.js
186
+ - data/flot/jquery.flot.navigate.js
187
+ - data/flot/jquery.flot.navigate.min.js
188
+ - data/flot/jquery.flot.selection.js
189
+ - data/flot/jquery.flot.selection.min.js
190
+ - data/flot/jquery.flot.stack.js
191
+ - data/flot/jquery.flot.stack.min.js
192
+ - data/flot/jquery.flot.threshold.js
193
+ - data/flot/jquery.flot.threshold.min.js
194
+ - data/flot/jquery.js
195
+ - data/flot/jquery.min.js
196
+ - data/jqplot/MIT-LICENSE.txt
197
+ - data/jqplot/README.txt
198
+ - data/jqplot/changes.txt
199
+ - data/jqplot/copyright.txt
200
+ - data/jqplot/docs/files/MIT-LICENSE-txt.html
201
+ - data/jqplot/docs/files/changes-txt.html
202
+ - data/jqplot/docs/files/gpl-2-0-txt.html
203
+ - data/jqplot/docs/files/images/background.jpg
204
+ - data/jqplot/docs/files/images/basicline.png
205
+ - data/jqplot/docs/files/images/basiclogaxis.png
206
+ - data/jqplot/docs/files/images/basiclogoptions.png
207
+ - data/jqplot/docs/files/images/basicoptions.png
208
+ - data/jqplot/docs/files/images/dualaxis.png
209
+ - data/jqplot/docs/files/images/logo.jpg
210
+ - data/jqplot/docs/files/images/navdocs.png
211
+ - data/jqplot/docs/files/images/navdocsover.png
212
+ - data/jqplot/docs/files/images/navdownload.png
213
+ - data/jqplot/docs/files/images/navdownloadover.png
214
+ - data/jqplot/docs/files/images/navexamples.png
215
+ - data/jqplot/docs/files/images/navexamplesover.png
216
+ - data/jqplot/docs/files/images/navhome.png
217
+ - data/jqplot/docs/files/images/navhomeover.png
218
+ - data/jqplot/docs/files/images/new.png
219
+ - data/jqplot/docs/files/images/sample3.png
220
+ - data/jqplot/docs/files/images/samplesm.png
221
+ - data/jqplot/docs/files/jqPlotCssStyling-txt.html
222
+ - data/jqplot/docs/files/jqPlotOptions-txt.html
223
+ - data/jqplot/docs/files/jqplot-axisLabelRenderer-js.html
224
+ - data/jqplot/docs/files/jqplot-axisTickRenderer-js.html
225
+ - data/jqplot/docs/files/jqplot-canvasGridRenderer-js.html
226
+ - data/jqplot/docs/files/jqplot-core-js.html
227
+ - data/jqplot/docs/files/jqplot-divTitleRenderer-js.html
228
+ - data/jqplot/docs/files/jqplot-lineRenderer-js.html
229
+ - data/jqplot/docs/files/jqplot-linearAxisRenderer-js.html
230
+ - data/jqplot/docs/files/jqplot-markerRenderer-js.html
231
+ - data/jqplot/docs/files/jqplot-shadowRenderer-js.html
232
+ - data/jqplot/docs/files/jqplot-shapeRenderer-js.html
233
+ - data/jqplot/docs/files/jqplot-themeEngine-js.html
234
+ - data/jqplot/docs/files/optionsTutorial-txt.html
235
+ - data/jqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html
236
+ - data/jqplot/docs/files/plugins/jqplot-barRenderer-js.html
237
+ - data/jqplot/docs/files/plugins/jqplot-blockRenderer-js.html
238
+ - data/jqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html
239
+ - data/jqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html
240
+ - data/jqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html
241
+ - data/jqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html
242
+ - data/jqplot/docs/files/plugins/jqplot-cursor-js.html
243
+ - data/jqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html
244
+ - data/jqplot/docs/files/plugins/jqplot-donutRenderer-js.html
245
+ - data/jqplot/docs/files/plugins/jqplot-dragable-js.html
246
+ - data/jqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html
247
+ - data/jqplot/docs/files/plugins/jqplot-funnelRenderer-js.html
248
+ - data/jqplot/docs/files/plugins/jqplot-highlighter-js.html
249
+ - data/jqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html
250
+ - data/jqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html
251
+ - data/jqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html
252
+ - data/jqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html
253
+ - data/jqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html
254
+ - data/jqplot/docs/files/plugins/jqplot-pieRenderer-js.html
255
+ - data/jqplot/docs/files/plugins/jqplot-pointLabels-js.html
256
+ - data/jqplot/docs/files/plugins/jqplot-trendline-js.html
257
+ - data/jqplot/docs/files/usage-txt.html
258
+ - data/jqplot/docs/index.html
259
+ - data/jqplot/docs/index/Classes.html
260
+ - data/jqplot/docs/index/Files.html
261
+ - data/jqplot/docs/index/Functions.html
262
+ - data/jqplot/docs/index/General.html
263
+ - data/jqplot/docs/index/General2.html
264
+ - data/jqplot/docs/index/General3.html
265
+ - data/jqplot/docs/index/General4.html
266
+ - data/jqplot/docs/index/General5.html
267
+ - data/jqplot/docs/index/General6.html
268
+ - data/jqplot/docs/index/Hooks.html
269
+ - data/jqplot/docs/index/Properties.html
270
+ - data/jqplot/docs/index/Properties2.html
271
+ - data/jqplot/docs/index/Properties3.html
272
+ - data/jqplot/docs/index/Properties4.html
273
+ - data/jqplot/docs/index/Properties5.html
274
+ - data/jqplot/docs/javascript/main.js
275
+ - data/jqplot/docs/javascript/searchdata.js
276
+ - data/jqplot/docs/search/ClassesA.html
277
+ - data/jqplot/docs/search/ClassesG.html
278
+ - data/jqplot/docs/search/ClassesJ.html
279
+ - data/jqplot/docs/search/ClassesL.html
280
+ - data/jqplot/docs/search/ClassesS.html
281
+ - data/jqplot/docs/search/ClassesSymbols.html
282
+ - data/jqplot/docs/search/ClassesT.html
283
+ - data/jqplot/docs/search/FilesJ.html
284
+ - data/jqplot/docs/search/FunctionsC.html
285
+ - data/jqplot/docs/search/FunctionsD.html
286
+ - data/jqplot/docs/search/FunctionsG.html
287
+ - data/jqplot/docs/search/FunctionsI.html
288
+ - data/jqplot/docs/search/FunctionsM.html
289
+ - data/jqplot/docs/search/FunctionsN.html
290
+ - data/jqplot/docs/search/FunctionsR.html
291
+ - data/jqplot/docs/search/FunctionsS.html
292
+ - data/jqplot/docs/search/FunctionsZ.html
293
+ - data/jqplot/docs/search/GeneralA.html
294
+ - data/jqplot/docs/search/GeneralB.html
295
+ - data/jqplot/docs/search/GeneralC.html
296
+ - data/jqplot/docs/search/GeneralD.html
297
+ - data/jqplot/docs/search/GeneralE.html
298
+ - data/jqplot/docs/search/GeneralF.html
299
+ - data/jqplot/docs/search/GeneralG.html
300
+ - data/jqplot/docs/search/GeneralH.html
301
+ - data/jqplot/docs/search/GeneralI.html
302
+ - data/jqplot/docs/search/GeneralJ.html
303
+ - data/jqplot/docs/search/GeneralL.html
304
+ - data/jqplot/docs/search/GeneralM.html
305
+ - data/jqplot/docs/search/GeneralN.html
306
+ - data/jqplot/docs/search/GeneralO.html
307
+ - data/jqplot/docs/search/GeneralP.html
308
+ - data/jqplot/docs/search/GeneralR.html
309
+ - data/jqplot/docs/search/GeneralS.html
310
+ - data/jqplot/docs/search/GeneralSymbols.html
311
+ - data/jqplot/docs/search/GeneralT.html
312
+ - data/jqplot/docs/search/GeneralU.html
313
+ - data/jqplot/docs/search/GeneralV.html
314
+ - data/jqplot/docs/search/GeneralW.html
315
+ - data/jqplot/docs/search/GeneralX.html
316
+ - data/jqplot/docs/search/GeneralY.html
317
+ - data/jqplot/docs/search/GeneralZ.html
318
+ - data/jqplot/docs/search/HooksA.html
319
+ - data/jqplot/docs/search/HooksE.html
320
+ - data/jqplot/docs/search/HooksJ.html
321
+ - data/jqplot/docs/search/HooksP.html
322
+ - data/jqplot/docs/search/NoResults.html
323
+ - data/jqplot/docs/search/PropertiesA.html
324
+ - data/jqplot/docs/search/PropertiesB.html
325
+ - data/jqplot/docs/search/PropertiesC.html
326
+ - data/jqplot/docs/search/PropertiesD.html
327
+ - data/jqplot/docs/search/PropertiesE.html
328
+ - data/jqplot/docs/search/PropertiesF.html
329
+ - data/jqplot/docs/search/PropertiesG.html
330
+ - data/jqplot/docs/search/PropertiesH.html
331
+ - data/jqplot/docs/search/PropertiesI.html
332
+ - data/jqplot/docs/search/PropertiesL.html
333
+ - data/jqplot/docs/search/PropertiesM.html
334
+ - data/jqplot/docs/search/PropertiesN.html
335
+ - data/jqplot/docs/search/PropertiesO.html
336
+ - data/jqplot/docs/search/PropertiesP.html
337
+ - data/jqplot/docs/search/PropertiesR.html
338
+ - data/jqplot/docs/search/PropertiesS.html
339
+ - data/jqplot/docs/search/PropertiesT.html
340
+ - data/jqplot/docs/search/PropertiesU.html
341
+ - data/jqplot/docs/search/PropertiesV.html
342
+ - data/jqplot/docs/search/PropertiesW.html
343
+ - data/jqplot/docs/search/PropertiesX.html
344
+ - data/jqplot/docs/search/PropertiesY.html
345
+ - data/jqplot/docs/search/PropertiesZ.html
346
+ - data/jqplot/docs/styles/1.css
347
+ - data/jqplot/docs/styles/2.css
348
+ - data/jqplot/docs/styles/main.css
349
+ - data/jqplot/examples/.htaccess
350
+ - data/jqplot/examples/OHLC.html
351
+ - data/jqplot/examples/OHLC2.html
352
+ - data/jqplot/examples/area.html
353
+ - data/jqplot/examples/axisLabel.html
354
+ - data/jqplot/examples/axisLabelsRotatedText.html
355
+ - data/jqplot/examples/axisLabelsRotatedText2.html
356
+ - data/jqplot/examples/barLinePieStack.html
357
+ - data/jqplot/examples/barMissingValues.html
358
+ - data/jqplot/examples/barTest.html
359
+ - data/jqplot/examples/barTest2.html
360
+ - data/jqplot/examples/bezierCurve.html
361
+ - data/jqplot/examples/blockPlot.html
362
+ - data/jqplot/examples/bubbleChart2.html
363
+ - data/jqplot/examples/bubblechart.html
364
+ - data/jqplot/examples/catchError.html
365
+ - data/jqplot/examples/categoryHorizontalBar.html
366
+ - data/jqplot/examples/categoryVsLinearAxes.html
367
+ - data/jqplot/examples/chartInTable.html
368
+ - data/jqplot/examples/customHighlighterCursorTrendline.html
369
+ - data/jqplot/examples/customPieTests.html
370
+ - data/jqplot/examples/dataLabels.html
371
+ - data/jqplot/examples/dataTracking.html
372
+ - data/jqplot/examples/donutTest.html
373
+ - data/jqplot/examples/donutTest.js
374
+ - data/jqplot/examples/examples.css
375
+ - data/jqplot/examples/fillToZero.html
376
+ - data/jqplot/examples/filledLine.html
377
+ - data/jqplot/examples/filledLineCategoryAxis.html
378
+ - data/jqplot/examples/funnelTest.html
379
+ - data/jqplot/examples/funnelTest.js
380
+ - data/jqplot/examples/gridCustomization.html
381
+ - data/jqplot/examples/hiddenPlot.html
382
+ - data/jqplot/examples/highlighter.html
383
+ - data/jqplot/examples/highlighter2.html
384
+ - data/jqplot/examples/horizontalLine.html
385
+ - data/jqplot/examples/intticks.html
386
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
387
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
388
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
389
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
390
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
391
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
392
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
393
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
394
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
395
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png
396
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png
397
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
398
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
399
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png
400
+ - data/jqplot/examples/jquery-ui/css/ui-lightness/jquery-ui-1.8.1.custom.css
401
+ - data/jqplot/examples/jquery-ui/js/jquery-1.4.2.min.js
402
+ - data/jqplot/examples/jquery-ui/js/jquery-ui-1.8.1.custom.min.js
403
+ - data/jqplot/examples/legendLabels.html
404
+ - data/jqplot/examples/legendLabels2.html
405
+ - data/jqplot/examples/liz.zip
406
+ - data/jqplot/examples/markerStyles.html
407
+ - data/jqplot/examples/mekkoChart.html
408
+ - data/jqplot/examples/meterGauge.html
409
+ - data/jqplot/examples/meterGauge2.html
410
+ - data/jqplot/examples/minMaxLines.html
411
+ - data/jqplot/examples/missingValues.html
412
+ - data/jqplot/examples/multiAxesRotatedText.html
413
+ - data/jqplot/examples/multipleBarColors.html
414
+ - data/jqplot/examples/multipleLines.html
415
+ - data/jqplot/examples/multipleYAxes.html
416
+ - data/jqplot/examples/nav.inc
417
+ - data/jqplot/examples/pieTest.html
418
+ - data/jqplot/examples/pieTest2.html
419
+ - data/jqplot/examples/pieTest2.js
420
+ - data/jqplot/examples/pieTest3.html
421
+ - data/jqplot/examples/pointLabels.html
422
+ - data/jqplot/examples/pointLabels2.html
423
+ - data/jqplot/examples/prefix.html
424
+ - data/jqplot/examples/resizablePlot.html
425
+ - data/jqplot/examples/rotatedTickLabels.html
426
+ - data/jqplot/examples/rotatedTickLabelsZoom.html
427
+ - data/jqplot/examples/seriesCanvasReorder.html
428
+ - data/jqplot/examples/seriesUpdate.html
429
+ - data/jqplot/examples/shadowTests.html
430
+ - data/jqplot/examples/singlePoint.html
431
+ - data/jqplot/examples/sparkLine.html
432
+ - data/jqplot/examples/stackedBar2.html
433
+ - data/jqplot/examples/stackedBar3.html
434
+ - data/jqplot/examples/stackedBarCategoryVsLinearAxes.html
435
+ - data/jqplot/examples/stackedCategoryAxis.html
436
+ - data/jqplot/examples/stackedFilledLine.html
437
+ - data/jqplot/examples/stackedLine.html
438
+ - data/jqplot/examples/test2.html
439
+ - data/jqplot/examples/theming.html
440
+ - data/jqplot/examples/trendlineDragableCustomization.html
441
+ - data/jqplot/examples/verticalLine.html
442
+ - data/jqplot/examples/waterfall.html
443
+ - data/jqplot/examples/zoom1.html
444
+ - data/jqplot/examples/zoom2.html
445
+ - data/jqplot/examples/zoom3.html
446
+ - data/jqplot/examples/zoomOptions.html
447
+ - data/jqplot/examples/zoomProxy.html
448
+ - data/jqplot/excanvas.js
449
+ - data/jqplot/excanvas.min.js
450
+ - data/jqplot/gpl-2.0.txt
451
+ - data/jqplot/jqPlotCssStyling.txt
452
+ - data/jqplot/jqPlotOptions.txt
453
+ - data/jqplot/jquery-1.4.1.min.js
454
+ - data/jqplot/jquery-1.4.2.min.js
455
+ - data/jqplot/jquery.jqplot.css
456
+ - data/jqplot/jquery.jqplot.js
457
+ - data/jqplot/jquery.jqplot.min.css
458
+ - data/jqplot/jquery.jqplot.min.js
459
+ - data/jqplot/optionsTutorial.txt
460
+ - data/jqplot/plugins/jqplot.BezierCurveRenderer.js
461
+ - data/jqplot/plugins/jqplot.BezierCurveRenderer.min.js
462
+ - data/jqplot/plugins/jqplot.barRenderer.js
463
+ - data/jqplot/plugins/jqplot.barRenderer.min.js
464
+ - data/jqplot/plugins/jqplot.blockRenderer.js
465
+ - data/jqplot/plugins/jqplot.blockRenderer.min.js
466
+ - data/jqplot/plugins/jqplot.bubbleRenderer.js
467
+ - data/jqplot/plugins/jqplot.bubbleRenderer.min.js
468
+ - data/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js
469
+ - data/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js
470
+ - data/jqplot/plugins/jqplot.canvasAxisTickRenderer.js
471
+ - data/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js
472
+ - data/jqplot/plugins/jqplot.canvasTextRenderer.js
473
+ - data/jqplot/plugins/jqplot.canvasTextRenderer.min.js
474
+ - data/jqplot/plugins/jqplot.categoryAxisRenderer.js
475
+ - data/jqplot/plugins/jqplot.categoryAxisRenderer.min.js
476
+ - data/jqplot/plugins/jqplot.cursor.js
477
+ - data/jqplot/plugins/jqplot.cursor.min.js
478
+ - data/jqplot/plugins/jqplot.dateAxisRenderer.js
479
+ - data/jqplot/plugins/jqplot.dateAxisRenderer.min.js
480
+ - data/jqplot/plugins/jqplot.donutRenderer.js
481
+ - data/jqplot/plugins/jqplot.donutRenderer.min.js
482
+ - data/jqplot/plugins/jqplot.dragable.js
483
+ - data/jqplot/plugins/jqplot.dragable.min.js
484
+ - data/jqplot/plugins/jqplot.enhancedLegendRenderer.js
485
+ - data/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js
486
+ - data/jqplot/plugins/jqplot.funnelRenderer.js
487
+ - data/jqplot/plugins/jqplot.funnelRenderer.min.js
488
+ - data/jqplot/plugins/jqplot.highlighter.js
489
+ - data/jqplot/plugins/jqplot.highlighter.min.js
490
+ - data/jqplot/plugins/jqplot.logAxisRenderer.js
491
+ - data/jqplot/plugins/jqplot.logAxisRenderer.min.js
492
+ - data/jqplot/plugins/jqplot.mekkoAxisRenderer.js
493
+ - data/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js
494
+ - data/jqplot/plugins/jqplot.mekkoRenderer.js
495
+ - data/jqplot/plugins/jqplot.mekkoRenderer.min.js
496
+ - data/jqplot/plugins/jqplot.meterGaugeRenderer.js
497
+ - data/jqplot/plugins/jqplot.meterGaugeRenderer.min.js
498
+ - data/jqplot/plugins/jqplot.ohlcRenderer.js
499
+ - data/jqplot/plugins/jqplot.ohlcRenderer.min.js
500
+ - data/jqplot/plugins/jqplot.pieRenderer.js
501
+ - data/jqplot/plugins/jqplot.pieRenderer.min.js
502
+ - data/jqplot/plugins/jqplot.pointLabels.js
503
+ - data/jqplot/plugins/jqplot.pointLabels.min.js
504
+ - data/jqplot/plugins/jqplot.trendline.js
505
+ - data/jqplot/plugins/jqplot.trendline.min.js
506
+ - data/jqplot/usage.txt
126
507
  - data/reportbuilder.css
127
508
  - data/reportbuilder.js
128
509
  - data/sheep.jpg
129
510
  - examples/create_rtf.rb
130
511
  - examples/generic_interface.rb
512
+ - examples/graph.rb
131
513
  - examples/images.rb
132
514
  - examples/test.rtf
133
515
  - examples/using_a_block.rb
@@ -136,6 +518,9 @@ files:
136
518
  - lib/reportbuilder/builder/html.rb
137
519
  - lib/reportbuilder/builder/rtf.rb
138
520
  - lib/reportbuilder/builder/text.rb
521
+ - lib/reportbuilder/graph.rb
522
+ - lib/reportbuilder/graph/html_flot.rb
523
+ - lib/reportbuilder/graph/html_jqplot.rb
139
524
  - lib/reportbuilder/image.rb
140
525
  - lib/reportbuilder/section.rb
141
526
  - lib/reportbuilder/table.rb
@@ -143,6 +528,9 @@ files:
143
528
  - lib/reportbuilder/table/rtfbuilder.rb
144
529
  - lib/reportbuilder/table/textbuilder.rb
145
530
  - test/helper_test.rb
531
+ - test/test_graph.rb
532
+ - test/test_graph_html_flot.rb
533
+ - test/test_graph_html_jqplot.rb
146
534
  - test/test_html.rb
147
535
  - test/test_image.rb
148
536
  - test/test_reportbuilder.rb
@@ -159,27 +547,34 @@ rdoc_options:
159
547
  require_paths:
160
548
  - lib
161
549
  required_ruby_version: !ruby/object:Gem::Requirement
550
+ none: false
162
551
  requirements:
163
552
  - - ">="
164
553
  - !ruby/object:Gem::Version
554
+ hash: 3
165
555
  segments:
166
556
  - 0
167
557
  version: "0"
168
558
  required_rubygems_version: !ruby/object:Gem::Requirement
559
+ none: false
169
560
  requirements:
170
561
  - - ">="
171
562
  - !ruby/object:Gem::Version
563
+ hash: 3
172
564
  segments:
173
565
  - 0
174
566
  version: "0"
175
567
  requirements: []
176
568
 
177
569
  rubyforge_project: ruby-statsample
178
- rubygems_version: 1.3.6
570
+ rubygems_version: 1.3.7
179
571
  signing_key:
180
572
  specification_version: 3
181
573
  summary: Report Abstract Interface
182
574
  test_files:
575
+ - test/test_graph_html_jqplot.rb
576
+ - test/test_graph.rb
577
+ - test/test_graph_html_flot.rb
183
578
  - test/test_section.rb
184
579
  - test/test_table.rb
185
580
  - test/test_image.rb