thinreports 0.7.7 → 0.8.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 (280) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -6
  3. data/.travis.yml +4 -10
  4. data/CHANGELOG.md +220 -0
  5. data/Gemfile +3 -3
  6. data/MIT-LICENSE +1 -1
  7. data/README.md +286 -0
  8. data/Rakefile +38 -8
  9. data/examples/character_spacing/character_spacing.rb +8 -0
  10. data/examples/character_spacing/character_spacing.tlf +1 -0
  11. data/examples/dynamic_image/dynamic_image.rb +31 -0
  12. data/examples/dynamic_image/dynamic_image.tlf +1 -0
  13. data/{test/case → examples}/dynamic_image/img200x100.png +0 -0
  14. data/{test/case → examples}/dynamic_image/img50x50.png +0 -0
  15. data/examples/dynamic_style/dynamic_style.rb +150 -0
  16. data/examples/dynamic_style/dynamic_style.tlf +1 -0
  17. data/examples/dynamic_style/dynamic_style_in_list.tlf +1 -0
  18. data/{test/case → examples}/dynamic_style/image.png +0 -0
  19. data/examples/eudc/eudc.rb +20 -0
  20. data/examples/eudc/eudc.tlf +1 -0
  21. data/{test/case → examples}/eudc/eudc.ttf +0 -0
  22. data/{test/case → examples}/helper.rb +14 -12
  23. data/examples/hidden_shapes/hidden_shapes.rb +9 -0
  24. data/examples/hidden_shapes/hidden_shapes.tlf +1 -0
  25. data/examples/list_events/list_events.rb +59 -0
  26. data/examples/list_events/list_events_0_7_7.tlf +1 -0
  27. data/examples/list_events/list_events_0_8.tlf +1 -0
  28. data/{test/case → examples}/list_manual_generation/list_manual_generation.rb +4 -4
  29. data/examples/list_manual_generation/list_manual_generation.tlf +1 -0
  30. data/{test/case → examples}/list_page_number/list_page_number.rb +3 -3
  31. data/examples/list_page_number/list_page_number.tlf +1 -0
  32. data/examples/page_number/page_number.rb +33 -0
  33. data/examples/page_number/page_number.tlf +1 -0
  34. data/examples/password_setting/password_setting.rb +10 -0
  35. data/examples/password_setting/password_setting.tlf +1 -0
  36. data/examples/report_callbacks/report_callbacks.rb +31 -0
  37. data/examples/report_callbacks/report_callbacks.tlf +1 -0
  38. data/{test/case → examples}/single_line_tblock/single_line_tblock.rb +2 -2
  39. data/examples/single_line_tblock/single_line_tblock.tlf +1 -0
  40. data/examples/tblock_overflow/tblock_overflow.rb +20 -0
  41. data/examples/tblock_overflow/tblock_overflow.tlf +1 -0
  42. data/examples/tblock_styles/font_size.tlf +1 -0
  43. data/examples/tblock_styles/tblock_styles.rb +43 -0
  44. data/examples/tblock_styles/tblock_styles.tlf +1 -0
  45. data/examples/text_align/text_align.rb +8 -0
  46. data/examples/text_align/text_align.tlf +1 -0
  47. data/examples/typeB_page_size/B4_ISO.tlf +1 -0
  48. data/examples/typeB_page_size/B4_JIS.tlf +1 -0
  49. data/{test/case → examples}/typeB_page_size/typeB_page_size.rb +3 -3
  50. data/examples/word_wrap/word_wrap.rb +26 -0
  51. data/examples/word_wrap/word_wrap.tlf +1 -0
  52. data/{resources/fonts → fonts}/IPA_Font_License_Agreement_v1.0.txt +0 -0
  53. data/{resources/fonts → fonts}/ipag.ttf +0 -0
  54. data/{resources/fonts → fonts}/ipagp.ttf +0 -0
  55. data/{resources/fonts → fonts}/ipam.ttf +0 -0
  56. data/{resources/fonts → fonts}/ipamp.ttf +0 -0
  57. data/lib/thinreports.rb +14 -2
  58. data/lib/thinreports/config.rb +30 -10
  59. data/lib/thinreports/core/errors.rb +23 -20
  60. data/lib/thinreports/core/events.rb +18 -19
  61. data/lib/thinreports/core/format/base.rb +20 -20
  62. data/lib/thinreports/core/format/builder.rb +14 -22
  63. data/lib/thinreports/core/shape.rb +9 -13
  64. data/lib/thinreports/core/shape/base.rb +4 -5
  65. data/lib/thinreports/core/shape/base/interface.rb +15 -15
  66. data/lib/thinreports/core/shape/base/internal.rb +15 -20
  67. data/lib/thinreports/core/shape/basic.rb +1 -1
  68. data/lib/thinreports/core/shape/basic/block_format.rb +3 -4
  69. data/lib/thinreports/core/shape/basic/block_interface.rb +9 -4
  70. data/lib/thinreports/core/shape/basic/block_internal.rb +9 -10
  71. data/lib/thinreports/core/shape/basic/format.rb +11 -10
  72. data/lib/thinreports/core/shape/basic/interface.rb +3 -3
  73. data/lib/thinreports/core/shape/basic/internal.rb +4 -5
  74. data/lib/thinreports/core/shape/image_block.rb +1 -1
  75. data/lib/thinreports/core/shape/image_block/format.rb +5 -6
  76. data/lib/thinreports/core/shape/image_block/interface.rb +9 -7
  77. data/lib/thinreports/core/shape/image_block/internal.rb +5 -6
  78. data/lib/thinreports/core/shape/list.rb +1 -1
  79. data/lib/thinreports/core/shape/list/configuration.rb +30 -15
  80. data/lib/thinreports/core/shape/list/events.rb +11 -11
  81. data/lib/thinreports/core/shape/list/format.rb +27 -28
  82. data/lib/thinreports/core/shape/list/manager.rb +128 -95
  83. data/lib/thinreports/core/shape/list/page.rb +54 -50
  84. data/lib/thinreports/core/shape/list/page_state.rb +15 -16
  85. data/lib/thinreports/core/shape/list/section_format.rb +14 -15
  86. data/lib/thinreports/core/shape/list/section_interface.rb +15 -16
  87. data/lib/thinreports/core/shape/list/section_internal.rb +7 -8
  88. data/lib/thinreports/core/shape/list/store.rb +10 -11
  89. data/lib/thinreports/core/shape/manager.rb +1 -1
  90. data/lib/thinreports/core/shape/manager/format.rb +10 -11
  91. data/lib/thinreports/core/shape/manager/internal.rb +21 -20
  92. data/lib/thinreports/core/shape/manager/target.rb +63 -34
  93. data/lib/thinreports/core/shape/page_number.rb +1 -1
  94. data/lib/thinreports/core/shape/page_number/format.rb +3 -3
  95. data/lib/thinreports/core/shape/page_number/interface.rb +2 -2
  96. data/lib/thinreports/core/shape/page_number/internal.rb +3 -3
  97. data/lib/thinreports/core/shape/style.rb +1 -1
  98. data/lib/thinreports/core/shape/style/base.rb +29 -29
  99. data/lib/thinreports/core/shape/style/basic.rb +1 -1
  100. data/lib/thinreports/core/shape/style/graphic.rb +10 -25
  101. data/lib/thinreports/core/shape/style/text.rb +36 -30
  102. data/lib/thinreports/core/shape/text.rb +1 -1
  103. data/lib/thinreports/core/shape/text/format.rb +8 -9
  104. data/lib/thinreports/core/shape/text/interface.rb +2 -2
  105. data/lib/thinreports/core/shape/text/internal.rb +6 -7
  106. data/lib/thinreports/core/shape/text_block.rb +1 -1
  107. data/lib/thinreports/core/shape/text_block/format.rb +17 -18
  108. data/lib/thinreports/core/shape/text_block/formatter.rb +7 -8
  109. data/lib/thinreports/core/shape/text_block/formatter/basic.rb +13 -12
  110. data/lib/thinreports/core/shape/text_block/formatter/datetime.rb +8 -9
  111. data/lib/thinreports/core/shape/text_block/formatter/number.rb +11 -12
  112. data/lib/thinreports/core/shape/text_block/formatter/padding.rb +9 -32
  113. data/lib/thinreports/core/shape/text_block/interface.rb +2 -2
  114. data/lib/thinreports/core/shape/text_block/internal.rb +19 -20
  115. data/lib/thinreports/core/utils.rb +33 -32
  116. data/lib/thinreports/generator.rb +6 -8
  117. data/lib/thinreports/generator/base.rb +15 -24
  118. data/lib/thinreports/generator/configuration.rb +10 -9
  119. data/lib/thinreports/generator/pdf.rb +27 -30
  120. data/lib/thinreports/generator/pdf/configuration.rb +11 -6
  121. data/lib/thinreports/generator/pdf/document.rb +28 -28
  122. data/lib/thinreports/generator/pdf/document/draw_shape.rb +30 -31
  123. data/lib/thinreports/generator/pdf/document/font.rb +53 -44
  124. data/lib/thinreports/generator/pdf/document/graphics.rb +8 -9
  125. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +25 -25
  126. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +25 -25
  127. data/lib/thinreports/generator/pdf/document/graphics/image.rb +15 -15
  128. data/lib/thinreports/generator/pdf/document/graphics/text.rb +40 -41
  129. data/lib/thinreports/generator/pdf/document/page.rb +20 -21
  130. data/lib/thinreports/generator/pdf/document/parse_color.rb +9 -10
  131. data/lib/thinreports/generator/pdf/document/parse_svg.rb +14 -15
  132. data/lib/thinreports/generator/pdf/drawer/base.rb +13 -14
  133. data/lib/thinreports/generator/pdf/drawer/list.rb +13 -14
  134. data/lib/thinreports/generator/pdf/drawer/list_section.rb +13 -14
  135. data/lib/thinreports/generator/pdf/drawer/page.rb +16 -17
  136. data/lib/thinreports/generator/pdf/prawn_ext.rb +17 -33
  137. data/lib/thinreports/layout.rb +2 -2
  138. data/lib/thinreports/layout/base.rb +22 -36
  139. data/lib/thinreports/layout/configuration.rb +11 -9
  140. data/lib/thinreports/layout/format.rb +26 -27
  141. data/lib/thinreports/layout/version.rb +8 -9
  142. data/lib/thinreports/report.rb +10 -14
  143. data/lib/thinreports/report/base.rb +104 -126
  144. data/lib/thinreports/report/events.rb +5 -5
  145. data/lib/thinreports/report/internal.rb +41 -33
  146. data/lib/thinreports/{core → report}/page.rb +38 -30
  147. data/lib/thinreports/version.rb +2 -3
  148. data/test/data/font.ttf +0 -0
  149. data/test/data/layout_block.tlf +1 -0
  150. data/test/data/layout_list.tlf +1 -0
  151. data/test/data/layout_list_noheader.tlf +1 -0
  152. data/test/data/layout_text1.tlf +1 -0
  153. data/test/data/layout_text2.tlf +1 -0
  154. data/test/test_helper.rb +74 -0
  155. data/test/{unit/tmp → tmp}/.gitkeep +0 -0
  156. data/test/unit/core/format/test_base.rb +14 -14
  157. data/test/unit/core/format/test_builder.rb +19 -23
  158. data/test/unit/core/shape/base/test_internal.rb +34 -37
  159. data/test/unit/core/shape/basic/test_basic_format.rb +4 -4
  160. data/test/unit/core/shape/basic/test_basic_interface.rb +15 -13
  161. data/test/unit/core/shape/basic/test_basic_internal.rb +19 -16
  162. data/test/unit/core/shape/basic/test_format.rb +4 -4
  163. data/test/unit/core/shape/basic/test_interface.rb +36 -46
  164. data/test/unit/core/shape/basic/test_internal.rb +23 -20
  165. data/test/unit/core/shape/image_block/test_format.rb +5 -5
  166. data/test/unit/core/shape/image_block/test_interface.rb +17 -16
  167. data/test/unit/core/shape/image_block/test_internal.rb +19 -16
  168. data/test/unit/core/shape/list/test_configuration.rb +45 -33
  169. data/test/unit/core/shape/list/test_events.rb +7 -7
  170. data/test/unit/core/shape/list/test_format.rb +16 -18
  171. data/test/unit/core/shape/list/test_manager.rb +5 -5
  172. data/test/unit/core/shape/list/test_page.rb +80 -22
  173. data/test/unit/core/shape/list/test_page_state.rb +12 -12
  174. data/test/unit/core/shape/list/test_section_format.rb +16 -17
  175. data/test/unit/core/shape/list/test_section_interface.rb +30 -22
  176. data/test/unit/core/shape/list/test_section_internal.rb +21 -19
  177. data/test/unit/core/shape/list/test_store.rb +7 -7
  178. data/test/unit/core/shape/manager/test_format.rb +11 -15
  179. data/test/unit/core/shape/manager/test_internal.rb +9 -9
  180. data/test/unit/core/shape/manager/test_target.rb +85 -57
  181. data/test/unit/core/shape/page_number/test_format.rb +4 -4
  182. data/test/unit/core/shape/page_number/test_interface.rb +11 -8
  183. data/test/unit/core/shape/page_number/test_internal.rb +5 -5
  184. data/test/unit/core/shape/styles/test_base.rb +9 -9
  185. data/test/unit/core/shape/styles/test_basic.rb +5 -5
  186. data/test/unit/core/shape/styles/test_graphic.rb +19 -33
  187. data/test/unit/core/shape/styles/test_text.rb +18 -7
  188. data/test/unit/core/shape/text/test_format.rb +6 -6
  189. data/test/unit/core/shape/text/test_internal.rb +11 -12
  190. data/test/unit/core/shape/text_block/formatter/test_basic.rb +16 -16
  191. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +4 -4
  192. data/test/unit/core/shape/text_block/formatter/test_number.rb +34 -34
  193. data/test/unit/core/shape/text_block/formatter/test_padding.rb +44 -44
  194. data/test/unit/core/shape/text_block/test_format.rb +8 -8
  195. data/test/unit/core/shape/text_block/test_formatter.rb +17 -17
  196. data/test/unit/core/shape/text_block/test_interface.rb +37 -20
  197. data/test/unit/core/shape/text_block/test_internal.rb +38 -38
  198. data/test/unit/core/test_events.rb +5 -5
  199. data/test/unit/core/test_shape.rb +6 -6
  200. data/test/unit/core/test_utils.rb +68 -0
  201. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +4 -4
  202. data/test/unit/generator/pdf/document/graphics/test_text.rb +60 -53
  203. data/test/unit/generator/pdf/document/test_draw_shape.rb +9 -7
  204. data/test/unit/generator/pdf/document/test_font.rb +79 -58
  205. data/test/unit/generator/pdf/document/test_graphics.rb +18 -19
  206. data/test/unit/generator/pdf/document/test_page.rb +44 -45
  207. data/test/unit/generator/pdf/document/test_parse_color.rb +5 -5
  208. data/test/unit/generator/pdf/test_configuration.rb +16 -9
  209. data/test/unit/generator/pdf/test_document.rb +8 -16
  210. data/test/unit/generator/test_base.rb +31 -42
  211. data/test/unit/generator/test_configuration.rb +6 -6
  212. data/test/unit/generator/test_pdf.rb +17 -14
  213. data/test/unit/layout/test_base.rb +34 -79
  214. data/test/unit/layout/test_configuration.rb +12 -37
  215. data/test/unit/layout/test_format.rb +36 -39
  216. data/test/unit/layout/test_version.rb +4 -4
  217. data/test/unit/report/test_base.rb +134 -213
  218. data/test/unit/report/test_events.rb +4 -4
  219. data/test/unit/report/test_internal.rb +84 -86
  220. data/test/unit/test_config.rb +31 -12
  221. data/test/unit/test_layout.rb +7 -7
  222. data/test/unit/test_report.rb +12 -24
  223. data/thinreports.gemspec +18 -22
  224. metadata +101 -200
  225. data/LICENSE +0 -1
  226. data/README.rdoc +0 -166
  227. data/doc/yardoc_templates/default/layout/html/footer.erb +0 -10
  228. data/lib/thinreports/core.rb +0 -20
  229. data/lib/thinreports/core/ext.rb +0 -5
  230. data/lib/thinreports/core/ext/array.rb +0 -19
  231. data/lib/thinreports/core/ext/hash.rb +0 -19
  232. data/lib/thinreports/core/ext/object.rb +0 -25
  233. data/lib/thinreports/core/format.rb +0 -14
  234. data/lib/thinreports/core/ordered_hash.rb +0 -39
  235. data/lib/thinreports/generator/pdf/drawer.rb +0 -16
  236. data/tasks/doc.rake +0 -12
  237. data/tasks/test.rake +0 -56
  238. data/test/benchmark/basic_estimate.tlf +0 -1
  239. data/test/benchmark/bench_basic_estimate.rb +0 -95
  240. data/test/case/character_spacing/character_spacing.rb +0 -8
  241. data/test/case/character_spacing/character_spacing.tlf +0 -1
  242. data/test/case/dynamic_image/dynamic_image.rb +0 -41
  243. data/test/case/dynamic_image/dynamic_image.tlf +0 -1
  244. data/test/case/dynamic_style/dynamic_style.rb +0 -154
  245. data/test/case/dynamic_style/dynamic_style.tlf +0 -1
  246. data/test/case/dynamic_style/dynamic_style_in_list.tlf +0 -1
  247. data/test/case/eudc/eudc.rb +0 -20
  248. data/test/case/eudc/eudc.tlf +0 -1
  249. data/test/case/hidden_shapes/hidden_shapes.rb +0 -9
  250. data/test/case/hidden_shapes/hidden_shapes.tlf +0 -1
  251. data/test/case/list_events/list_events.rb +0 -32
  252. data/test/case/list_events/list_events.tlf +0 -1
  253. data/test/case/list_manual_generation/list_manual_generation.tlf +0 -1
  254. data/test/case/list_page_number/list_page_number.tlf +0 -1
  255. data/test/case/page_number/page_number.rb +0 -33
  256. data/test/case/page_number/page_number.tlf +0 -1
  257. data/test/case/password_setting/password_setting.rb +0 -10
  258. data/test/case/password_setting/password_setting.tlf +0 -1
  259. data/test/case/single_line_tblock/single_line_tblock.tlf +0 -1
  260. data/test/case/tblock_overflow/tblock_overflow.rb +0 -20
  261. data/test/case/tblock_overflow/tblock_overflow.tlf +0 -1
  262. data/test/case/tblock_styles/tblock_styles.rb +0 -27
  263. data/test/case/tblock_styles/tblock_styles.tlf +0 -1
  264. data/test/case/text_align/text_align.rb +0 -8
  265. data/test/case/text_align/text_align.tlf +0 -1
  266. data/test/case/typeB_page_size/B4_ISO.tlf +0 -1
  267. data/test/case/typeB_page_size/B4_JIS.tlf +0 -1
  268. data/test/case/word_wrap/word_wrap.rb +0 -26
  269. data/test/case/word_wrap/word_wrap.tlf +0 -1
  270. data/test/unit/core/ext/array_spec.rb +0 -29
  271. data/test/unit/core/ext/hash_spec.rb +0 -29
  272. data/test/unit/core/ext/object_spec.rb +0 -30
  273. data/test/unit/core/ordered_hash_spec.rb +0 -51
  274. data/test/unit/core/shape/base/test_interface.rb +0 -52
  275. data/test/unit/core/utils_spec.rb +0 -56
  276. data/test/unit/data/basic_layout1.tlf +0 -1
  277. data/test/unit/data/basic_layout2.tlf +0 -1
  278. data/test/unit/data/basic_list_layout.tlf +0 -1
  279. data/test/unit/data/basic_list_noheader_layout.tlf +0 -1
  280. data/test/unit/helper.rb +0 -87
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8bd5e81c97f873dec7aea631b5ee9a3f2194bdad
4
- data.tar.gz: 8e84d4b9e83f60c98293305d2f4f937ae65697a3
3
+ metadata.gz: 52d5b58f89d69995f780cad5fee9ee7d9476ba48
4
+ data.tar.gz: 1ac6e9e07a7fb3776137cd9d4663fdbae832418e
5
5
  SHA512:
6
- metadata.gz: db8ff91414f3f2826c6dc4d58b2dfc77fd824075a363da23d7bdbeb0049cca5b72f4fdf2c04cc7b33641baf6ed383705ad791d28376cc152e648cf5cf7950349
7
- data.tar.gz: f6198bc83cc5eb2566c20e50223a1c74a9d09a04b47b06e4c78111efafbe1f8ae2394026378909d57090acefaa8ed8681b8488f2815b3e8942ebf69a384f0975
6
+ metadata.gz: 5bd6e15835d02834f428649d474bcdf398e1e550f406652c1827539628e2e83b1aa4e8a550e2003d1521ed950f011dbb9b858101bde330c2eb44322a68eb6dad
7
+ data.tar.gz: 25ec1244b98b2da6558b05ab5e36650993574c26aae541ed077934169e4f9ae0154b2a0e7153bedfa668e8f3107ca586fd0cac1b67cab461854559f3c12929de
data/.gitignore CHANGED
@@ -1,9 +1,6 @@
1
1
  Gemfile.lock
2
2
  *.gem
3
- *.swp
4
3
  *.pdf
5
-
6
- .bundle/
7
- doc/yardoc
8
- .yardoc/
9
- coverage
4
+ .bundle
5
+ .yardoc
6
+ doc
data/.travis.yml CHANGED
@@ -1,16 +1,10 @@
1
1
  language: ruby
2
2
 
3
- before_install:
4
- - gem update --system 2.1.11
5
- - gem --version
6
- rvm:
7
- - 1.8.7
3
+ rvm:
8
4
  - 1.9.3
9
5
  - 2.0.0
10
- - 2.1.0
6
+ - 2.1.6
7
+ - 2.2.2
11
8
  - jruby
12
- env:
13
- - JRUBY_OPTS=--1.8
14
-
15
- script: rake test:unit
16
9
 
10
+ script: rake test
data/CHANGELOG.md ADDED
@@ -0,0 +1,220 @@
1
+ ## 0.8.0
2
+
3
+ This release is a stepping stone to next major version 1.0.0 release.
4
+
5
+ * Upgrade to Prawn 1.3 and drop support for Ruby 1.8.7 (#11)
6
+ * Change name of root module to Thinreports from ThinReports (#15)
7
+ * Implement `Item#value=` method (#20)
8
+ * Implement new list callbacks (#17)
9
+ * Implement `page[:item_id]=` as alias for `page.item(:item_id).value=` (#22)
10
+ * Support font-size style for Text and TextBlock (#23)
11
+ * Support for setting the default fallback font (#7)
12
+ * Remove `Report#generate_file` method (#13)
13
+ * Deprecate `Report#events`, and implement new callbacks (#18)
14
+ * Deprecate `List#events`, recommend to use `List#on_page_finalize` callback or create manually (#9)
15
+
16
+ ### Upgrade to Prawn 1.3 and drop support for Ruby 1.8.7
17
+
18
+ We have dropped support for MRI 1.8.7 and 1.8 mode JRuby by upgrading to Prawn 1.3.
19
+ Currently supported versions are MRI 1.9.3 and 2.0.0 or higher, JRuby(1.9 mode) 1.7 or higher.
20
+
21
+ ### Change name of root module to Thinreports from ThinReports
22
+
23
+ We have changed name of root module to `Thinreports` from `ThinReports`.
24
+ Old name `ThinReports` has been enabling as alias, but it will be removed
25
+ in the next major release.
26
+
27
+ ### Deprecate `List#events` and `List#store`
28
+
29
+ `List#events` and `List#store` have been deprecated.
30
+
31
+ ```ruby
32
+ report.layout.config.list do |list|
33
+ list.events.on :page_footer_insert do |e|
34
+ # ...
35
+ end
36
+ # => warn: "[DEPRECATION] ..."
37
+
38
+ list.events.on :footer_insert do |e|
39
+ # ...
40
+ end
41
+ # => warn: "[DEPRECATION] ..."
42
+
43
+ list.events.on :page_finalize do |e|
44
+ # ...
45
+ end
46
+ # => warn: "[DEPRECATION] ..."
47
+ end
48
+
49
+ list.store.price += 0 # => warn: "[DEPRECATION] ..."
50
+ ```
51
+
52
+ Please use new callbacks instead:
53
+
54
+ ```ruby
55
+ report.list do |list|
56
+ price = 0
57
+
58
+ list.on_page_footer_insert do |footer|
59
+ footer.item(:price).value = price
60
+ end
61
+
62
+ list.on_footer_insert do |footer|
63
+ # ...
64
+ end
65
+
66
+ list.on_page_finalize do
67
+ # ...
68
+ end
69
+ end
70
+ ```
71
+
72
+ See [Issue #17](https://github.com/thinreports/thinreports-generator/issues/17), [Issue #9](https://github.com/thinreports/thinreports-generator/issues/9) and [examples/list_events](https://github.com/thinreports/thinreports-generator/tree/master/examples/list_events) for further details.
73
+
74
+ ### Deprecate `Report#events`, and implement new callbacks
75
+
76
+ `Report#events` has been deprecated:
77
+
78
+ ```ruby
79
+ report.events.on :page_create do |e|
80
+ e.page.item(:text1).value('Text1')
81
+ end
82
+ # => warn: "[DEPRECATION] ..."
83
+
84
+ report.events.on :generate do |e|
85
+ e.pages.each do |page|
86
+ page.item(:text2).value('Text2')
87
+ end
88
+ end
89
+ # => warn: "[DEPRECATION] ..."
90
+ ```
91
+
92
+ Please use `Report#on_page_create` callback instead.
93
+ However `Report#on_generate` callback has not been implemented,
94
+ but you can do the same things using `Report#pages` method.
95
+
96
+ ```ruby
97
+ report.on_page_create do |page|
98
+ page.item(:text1).value('Text1')
99
+ end
100
+
101
+ report.pages.each do |page|
102
+ page.item(:text2).value('Text2')
103
+ end
104
+
105
+ report.generate filename: 'foo.pdf'
106
+ ```
107
+
108
+ See [Issue #18](https://github.com/thinreports/thinreports-generator/issues/18) for further details.
109
+
110
+ ### Implement `page[:item_id]=` as alias for `page.item(:item_id).value=` (#22)
111
+
112
+ ```ruby
113
+ # New setter, same as `page.item(:text_block).value = 'tblock value'`
114
+ page[:text_block] = 'tblock value'
115
+ # New getter, same as `page.item(:text_block).value`
116
+ page[:text_block] # => "tblock value"
117
+ page.item(:text_block).value # => "tblock value"
118
+
119
+ page[:image_block] = '/path/to/image.png'
120
+ page[:image_block] # => "/path/to/image.png"
121
+ ```
122
+
123
+ See [Issue #22](https://github.com/thinreports/thinreports-generator/issues/22) for further details.
124
+
125
+ ### Implement `Item#value=` method
126
+
127
+ ```ruby
128
+ page.item(:text_block).value('value')
129
+ page.item(:text_block).value = 'value'
130
+ page.item(:image_block).src('/path/to/image.tlf')
131
+ page.item(:image_block).src = '/path/to/image.tlf'
132
+ ```
133
+
134
+ See [Issue #20](https://github.com/thinreports/thinreports-generator/issues/20) for further details.
135
+
136
+ ### Support font-size style for Text and TextBlock
137
+
138
+ ```ruby
139
+ page.item(:text).style(:font_size, 20)
140
+ page.item(:text_block).style(:font_size, 20)
141
+ page.item(:text_block).style(:font_size) # => 20
142
+ ```
143
+
144
+ See [Issue #23](https://github.com/thinreports/thinreports-generator/issues/23) for further details.
145
+
146
+ ### Support for setting the default fallback font
147
+
148
+ Please see [Issue #7](https://github.com/thinreports/thinreports-generator/issues/7) for further details.
149
+
150
+ ## 0.7.7.1
151
+
152
+ * No release for generator
153
+
154
+ ## 0.7.7
155
+
156
+ ### Features
157
+
158
+ * ページ番号ツール [Katsuya Hidaka]
159
+ * New "Word-wrap" property of TextBlock [Katsuya Hidaka]
160
+ * B4/B5 の ISO サイズを追加 [Takumi FUJISE / Minoru Maeda / Katsuya Hidaka]
161
+ * generate filename: 'foo.pdf' を実装、#generate_file を非推奨へ [Katsuya Hidaka]
162
+ * start_new_page layout: 'file.tlf' でもデフォルトレイアウトが設定されるよう改善 [Eito Katagiri / Katsuya Hidaka]
163
+
164
+ ### Bug fixes
165
+
166
+ * Report#use_layout で list の設定を行うとエラーが発生する [Katsuya Hidaka]
167
+ * Layout::Format#page_margin_right が不正な値を返す [Katsuya Hidaka]
168
+ * セキュリティを設定した PDF を印刷すると "このページにはエラーがあります..." メッセージが表示される [Katsuya Hidaka]
169
+ * B4 サイズで出力した PDF の用紙サイズが正しくない [Takumi FUJISE / Katsuya Hidaka]
170
+
171
+ ## 0.7.6
172
+
173
+ ### Features
174
+
175
+ * デフォルトレイアウトを書き換え可能へ変更 [Katsuya Hidaka]
176
+
177
+ ### Bug fixes
178
+
179
+ * Fix raise NoMethodError when has no default layout [Katsuya Hidaka]
180
+
181
+ ## 0.7.5
182
+
183
+ ### Features
184
+
185
+ * テキストブロックのオーバフロープロパティ [Katsuya Hidaka]
186
+ * list メソッドのデフォルト id と Report#list の追加 [Katsuya Hidaka]
187
+
188
+ ### Bug fixes
189
+
190
+ * gem install 時にRDoc生成時のエラーが表示される場合がある [Katsuya Hidaka]
191
+ * エディターにて一覧表ツールのヘッダーを使わない場合の動作について [吉田 和弘 / Katsuya Hidaka]
192
+
193
+ ## 0.7.0
194
+
195
+ ### Features
196
+
197
+ * Listに :page_finalize イベントを追加
198
+ * ダイナミックスタイルの拡充
199
+ * イメージブロックの実装
200
+ * Tblockで行間、横位置、縦位置、文字間隔の指定を可能に
201
+ * Prawn 0.12.0 を採用
202
+ * メタ情報のタイトルに反映
203
+ * Example Test環境の構築
204
+ * 外字の埋め込みサポート
205
+ * clean taskの削除
206
+ * YARD Docのテンプレート追加
207
+ * ロードするprawnのバージョンを固定
208
+ * .generate, .generate_fileメソッドのオプション指定をフラット化
209
+ * 単行モードテキストブロックがレイアウトで定義した「高さ」の影響を受けないように
210
+ * PXD形式の出力フォーマット廃止とデフォルトタイプの導入
211
+ * $KCODEによる文字カウント処理の改善
212
+ * List#headerの挙動を改善
213
+ * Errors::UnknownItemId 時のエラーメッセージを分かりやすく
214
+ * テスト漏れに対するテストコード作成とテスト
215
+
216
+ ### Bug fixes
217
+
218
+ * フッターが挿入時、リスト領域をオーバフローしない場合でも改ページされる場合がある
219
+ * Tblockで基本書式のみ設定されている場合、その書式が反映されない
220
+ * Tblockがフォントサイズに対して小さすぎる場合にエラー
data/Gemfile CHANGED
@@ -2,6 +2,6 @@ source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- # For 1.8.7
6
- gem 'json', '>= 1.4.6' unless RUBY_VERSION > '1.9'
7
-
5
+ group :example do
6
+ gem 'pdf-inspector'
7
+ end
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Matsukei Co.,Ltd.
1
+ Copyright (c) 2015 Matsukei Co.,Ltd.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md ADDED
@@ -0,0 +1,286 @@
1
+ # Thinreports Generator [![Join the chat at https://gitter.im/thinreports/thinreports-generator](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/thinreports/thinreports-generator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/thinreports.svg)](http://badge.fury.io/rb/thinreports)
4
+ [![](http://img.shields.io/travis/thinreports/thinreports-generator.svg?style=flat)](http://travis-ci.org/thinreports/thinreports-generator)
5
+ [![](http://img.shields.io/codeclimate/github/thinreports/thinreports-generator.svg?style=flat)](https://codeclimate.com/github/thinreports/thinreports-generator)
6
+ [![](http://img.shields.io/gemnasium/thinreports/thinreports-generator.svg?style=flat)](https://gemnasium.com/thinreports/thinreports-generator)
7
+
8
+ [Thinreports](http://www.thinreports.org) is an open source report generating tool for Ruby.
9
+
10
+ * Thinreports Editor (GUI Designer)
11
+ * Thinreports Generator (Report Generator for Ruby)
12
+
13
+ ## Getting Started
14
+
15
+ * [Installation Guide](http://www.thinreports.org/documentation/getting-started/installation.html)
16
+ * [Quick Start Guide](http://www.thinreports.org/documentation/getting-started/quickstart.html)
17
+ * [Examples](https://github.com/thinreports/thinreports-examples)
18
+ * [Rails4 Example](https://github.com/thinreports/thinreports-rails4-example)
19
+ * [Changelog](https://github.com/thinreports/thinreports-generator/blob/master/CHANGELOG.md)
20
+ * [Discussion Group](https://groups.google.com/forum/#!forum/thinreports)
21
+ * [![Join the chat at https://gitter.im/thinreports/thinreports-generator](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/thinreports/thinreports-generator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
22
+
23
+ ## Supported versions
24
+
25
+ * Ruby 1.9.3, 2.0, 2.1, 2.2
26
+ * JRuby 1.7.0+ (1.9 mode)
27
+
28
+ ## Quick Reference
29
+
30
+ **NOTE:** You need to create a layout file `.tlf` using [Thinreports Editor](http://www.thinreports.org/features/editor/).
31
+
32
+ ### Basic Objects and Basic Usage
33
+
34
+ ```ruby
35
+ require 'thinreports'
36
+
37
+ report = Thinreports::Report.new layout: 'report.tlf'
38
+
39
+ report.start_new_page do
40
+ item(:title).value('Thinreports')
41
+ end
42
+
43
+ report.start_new_page do |page|
44
+ # Item Finder
45
+ page.item(:item_id) # => Item object
46
+ page[:item_id] # => Item object
47
+
48
+ # Text block
49
+ page.item(:text_block).value('Pure Ruby')
50
+ page.item(:text_block).value = 'Pure Ruby'
51
+ page[:text_block] = 'Pure Ruby'
52
+ page.item('text_block').set('value', color: '#0000ff')
53
+ page.item(:text_block).format_enabled(false)
54
+
55
+ # Image block
56
+ page.item(:image_block).src('/path/to/image.png')
57
+ page.item(:image_block).src = '/path/to/image.png'
58
+ page[:image_block] = '/path/to/image.png'
59
+ require 'open-uri'
60
+ page.item(:image_block).src(open('http://www.thinreports.org/assets/logos/thinreports-logo.png'))
61
+
62
+ # Attributes
63
+ page.item(:any).hide
64
+ page.item(:any).show
65
+ page.item(:any).visible(true)
66
+ page.item(:any).visible? # => true
67
+ page.item(:any).id # => "any"
68
+
69
+ # Styles
70
+ page.item(:text).style(:color, 'red')
71
+ page.item(:text).style(:bold, true)
72
+ page.item(:text).style(:italic, true)
73
+ page.item(:text).style(:linethrough, true)
74
+ page.item(:text).style(:underline, true)
75
+ page.item(:text).style(:font_size, 20)
76
+
77
+ page.item(:text).style(:align, :left or :center or :right)
78
+ page.item(:text).style(:valign, :top or :center or :bottom)
79
+
80
+ page.item(:rectangle).style(:border_color, '#ff0000')
81
+ .style(:border_width, 1)
82
+ .style(:fill_color, '#ffffff')
83
+
84
+ # Bulk setting of styles
85
+ page.item(:text).styles(color: '#00000', align: :right)
86
+
87
+ # Bulk setting of values
88
+ page.values text_block_a: 'value', text_block_b: 'value'
89
+
90
+ # Helpers
91
+ page.item_exists?(:existing_id) # => true
92
+ page.item_exists?('existing_id') # => true
93
+ page.item_exists?(:unknown_id) # => false
94
+ end
95
+
96
+ report.generate(filename: 'report.pdf')
97
+ ```
98
+
99
+ ```ruby
100
+ Thinreports::Report.generate(filename: 'report.pdf', layout: 'report.tlf') do |report|
101
+ report.start_new_page do |page|
102
+ # :
103
+ end
104
+ end
105
+ ```
106
+
107
+ ### Report and Page
108
+
109
+ ```ruby
110
+ report = Thinreports::Report.new layout: 'foo.tlf'
111
+
112
+ 3.times { report.start_new_page }
113
+
114
+ # Returns all pages
115
+ report.pages # => [<Report::Page>, <Report::Page>, <Report::Page>]
116
+ # Returns number of pages
117
+ report.page_count # => 3
118
+
119
+ # Add a blank page
120
+ report.add_blank_page
121
+
122
+ report.pages.last # => Report::BlankPage
123
+ ```
124
+
125
+ ### Using multiple layouts
126
+
127
+ ```ruby
128
+ report = Thinreports::Report.new
129
+
130
+ report.use_layout '/path/to/default.tlf', default: true
131
+ report.use_layout '/path/to/other1.tlf', id: :other
132
+
133
+ report.start_new_page do |page|
134
+ # use '/path/to/default.tlf' layout
135
+ end
136
+
137
+ report.start_new_page layout: :other do |page|
138
+ # use '/path/to/other1.tlf' layout
139
+ end
140
+
141
+ report.start_new_page layout: '/path/to/other2.tlf' do |page|
142
+ # use '/path/to/other2.tlf' layout
143
+ end
144
+ ```
145
+
146
+ ### Callbacks
147
+
148
+ ```ruby
149
+ report = Thinreports::Report.new layout: 'foo.tlf'
150
+
151
+ # It will be called before finalizing each page
152
+ report.on_page_create do |page|
153
+ page.item(:text).value('Text for all pages')
154
+ end
155
+ ```
156
+
157
+ See also [examples/report_callbacks](https://github.com/thinreports/thinreports-generator/tree/master/examples/report_callbacks).
158
+
159
+ ### List
160
+
161
+ ```ruby
162
+ report = Thinreports::Report.new layout: 'list.tlf'
163
+
164
+ report.list.header do |header|
165
+ header.item(:text_block).value('Title')
166
+ end
167
+
168
+ 10.times do |n|
169
+ report.list.add_row do |row|
170
+ row.item(:text_block).value(n)
171
+ end
172
+ end
173
+
174
+ report.generate(filename: 'list.pdf')
175
+ ```
176
+
177
+ ```ruby
178
+ report = Thinreports::Report.new layout: 'list_with_footer.tlf'
179
+
180
+ report.list do |list|
181
+ total_price = 0
182
+ price_per_page = 0
183
+
184
+ list.on_page_finalize do
185
+ total_price += price_per_page
186
+ price_per_page = 0
187
+ end
188
+
189
+ list.on_page_footer_insert do |footer|
190
+ footer.values price: price_per_page
191
+ end
192
+
193
+ list.on_footer_insert do |footer|
194
+ footer.item(:price).value(total_price)
195
+ end
196
+
197
+ [100, 200, 300].each do |price|
198
+ list.add_row do |row|
199
+ row[:price] = price
200
+ end
201
+ price_per_page += price
202
+ end
203
+ end
204
+ ```
205
+
206
+ See also [examples/list_events](https://github.com/thinreports/thinreports-generator/tree/master/examples/list_events).
207
+
208
+ ### Page Number
209
+
210
+ ```ruby
211
+ # Setting starting number of page
212
+ report.start_page_number_from 5
213
+
214
+ # Setting whether to count new page
215
+ report.start_new_page count: true # default
216
+ report.start_new_page count: false
217
+
218
+ # Change styles
219
+ report.start_new_page do |page|
220
+ page.item(:pageno).hide
221
+ page.item(:pageno).show
222
+ page.item(:pageno).visible(false)
223
+ page.item(:pageno).styles(color: 'red', bold: true)
224
+ end
225
+ ```
226
+
227
+ See also [examples/page_number](https://github.com/thinreports/thinreports-generator/blob/master/examples/page_number) and [examples/list_page_number](https://github.com/thinreports/thinreports-generator/blob/master/examples/list_page_number).
228
+
229
+ ### Configuring fallback fonts
230
+
231
+ ```ruby
232
+ Thinreports.configure do |config|
233
+ config.fallback_fonts = '/path/to/fallback.ttf'
234
+ end
235
+
236
+ Thinreports.config.fallback_fonts = ['/path/to/font_a.ttf', '/path/to/font_b.ttf']
237
+ ```
238
+
239
+ See also [examples/eudc](https://github.com/thinreports/thinreports-generator/blob/master/examples/eudc).
240
+
241
+ ## Features
242
+
243
+ Features of Editor is [here](http://www.thinreports.org/features/editor/).
244
+
245
+ ### Easy to generate PDF
246
+
247
+ Design layout using Editor, then embed values to text field in layout.
248
+
249
+ ### Simple runtime environment
250
+
251
+ Ruby, RubyGems, Prawn and Generator.
252
+
253
+ ### Dynamic operation
254
+
255
+ Generator can dynamically:
256
+
257
+ * change value of TextBlock and ImageBlock
258
+ * change style (border, fill, visibility, position, color, font) of Shape
259
+
260
+ ### Others
261
+
262
+ * External characters (Gaiji) for Japanese
263
+
264
+ ## Contributing
265
+
266
+ ### Report bug, post your suggestion
267
+
268
+ If you find bugs or improvements for the Editor, please report it [here](https://github.com/thinreports/thinreports-generator/issues/new).
269
+
270
+ ### Sending a Pull Request
271
+
272
+ 1. Fork it
273
+ 2. Clone your forked repository
274
+ 3. Create your feature branch: `git checkout -b my-new-feature`
275
+ 4. Fix your feature
276
+ 5. Commit your changes: `git commit -am 'Fixed some bugs or features'`
277
+ 6. Push to the branch: `git push origin my-new-feature`
278
+ 7. Create new Pull Request
279
+
280
+ ## License
281
+
282
+ Thinreports Generator is licensed under the [MIT-License](https://github.com/thinreports/thinreports-generator/blob/master/MIT-LICENSE).
283
+
284
+ ## Copyright
285
+
286
+ &copy; 2010-2015 [Matsukei Co.,Ltd](http://www.matsukei.co.jp).