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
@@ -1,40 +1,41 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
4
- module Core
5
-
6
- # @private
7
- module Utils
8
- def block_exec_on(context, &block)
9
- return context unless block_given?
10
-
11
- if block.arity == 1
12
- block.call(context)
13
- else
14
- context.instance_eval(&block)
15
- end
16
- context
3
+ module Thinreports
4
+ module Utils
5
+ def self.included(klass)
6
+ klass.extend self
7
+ end
8
+
9
+ def deep_copy(src)
10
+ case src
11
+ when Hash
12
+ src.inject({}) {|h, (k, v)| h[k] = (v.dup rescue v); h }
13
+ when Array
14
+ src.map {|a| a.dup rescue a }
15
+ else
16
+ raise ArgumentError
17
+ end
18
+ end
19
+
20
+ def blank_value?(value)
21
+ case value
22
+ when String then value.empty?
23
+ when NilClass then true
24
+ else false
17
25
  end
18
-
19
- if RUBY_VERSION < '1.9'
20
- def ruby_18
21
- yield
22
- end
23
- def ruby_19
24
- false
25
- end
26
+ end
27
+
28
+ def call_block_in(scope, &block)
29
+ return scope unless block_given?
30
+
31
+ if block.arity == 1
32
+ block.call(scope)
26
33
  else
27
- def ruby_18
28
- false
29
- end
30
- def ruby_19
31
- yield
32
- end
34
+ scope.instance_eval(&block)
33
35
  end
36
+ scope
34
37
  end
35
-
36
38
  end
37
- end
38
39
 
39
- # Include global methods.
40
- include ThinReports::Core::Utils
40
+ extend Utils
41
+ end
@@ -1,24 +1,22 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
 
5
5
  module Generator
6
6
  # @param [Symbol] type
7
- # @param report (see ThinReports::Generator::Base#initialize)
8
- # @param options (see ThinReports::Generator::Base#initialize)
7
+ # @param report (see Thinreports::Generator::Base#initialize)
8
+ # @param options (see Thinreports::Generator::Base#initialize)
9
9
  def self.new(type, report, options = {})
10
10
  unless generator = registry[type]
11
- raise ThinReports::Errors::UnknownGeneratorType.new(type)
11
+ raise Thinreports::Errors::UnknownGeneratorType.new(type)
12
12
  end
13
13
  generator.new(report, options)
14
14
  end
15
-
16
- # @private
15
+
17
16
  def self.register(type, generator)
18
17
  registry[type] = generator
19
18
  end
20
-
21
- # @private
19
+
22
20
  def self.registry
23
21
  @generators ||= {}
24
22
  end
@@ -1,49 +1,40 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Generator
5
-
5
+
6
6
  # @abstract
7
7
  class Base
8
- # @return [ThinReports::Report::Base]
9
- # @private
8
+ # @return [Thinreports::Report::Base]
10
9
  attr_reader :report
11
10
 
12
11
  # @return [Hash]
13
- # @private
14
12
  attr_reader :options
15
-
16
- # @private
13
+
17
14
  def self.inherited(g)
18
15
  Generator.register(g.name.split('::').last.downcase.to_sym, g);
19
16
  end
20
-
21
- # @param [ThinReports::Report::Base] report
17
+
18
+ # @param [Thinreports::Report::Base] report
22
19
  # @param [Hash] options
23
20
  def initialize(report, options = {})
24
21
  report.finalize
25
-
22
+
26
23
  @report = report.internal
27
24
  @options = options || {}
28
25
  end
29
-
30
- # @return [String]
31
- # @abstract
32
- def generate
33
- raise NotImplementedError
34
- end
35
-
36
- # @param [String] filename
26
+
27
+ # @param [String, nil] filename
28
+ # @return [String, nil]
37
29
  # @abstract
38
- def generate_file(filename)
30
+ def generate(filename = nil)
39
31
  raise NotImplementedError
40
32
  end
41
-
42
- # @private
33
+
43
34
  def default_layout
44
35
  report.default_layout
45
- end
36
+ end
46
37
  end
47
-
38
+
48
39
  end
49
- end
40
+ end
@@ -1,30 +1,31 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Generator
5
-
5
+
6
+ # @deprecated This class will be removed in the next major version.
6
7
  class Configuration
7
8
  # @return [Symbol]
8
9
  attr_reader :default
9
-
10
+
10
11
  def initialize
11
12
  @default = :pdf
12
13
  end
13
-
14
- # @return [ThinReports::Generator::PDF::Configuration]
14
+
15
+ # @return [Thinreports::Generator::PDF::Configuration]
15
16
  def pdf
16
17
  @pdf ||= PDF::Configuration.new
17
18
  end
18
-
19
+
19
20
  # @param [Symbol] type
20
21
  # @return [void]
21
22
  def default=(type)
22
23
  unless Generator.registry.key?(type)
23
- raise ThinReports::Errors::UnknownGeneratorType.new(type)
24
+ raise Thinreports::Errors::UnknownGeneratorType.new(type)
24
25
  end
25
26
  @default = type
26
27
  end
27
28
  end
28
-
29
+
29
30
  end
30
- end
31
+ end
@@ -1,68 +1,65 @@
1
1
  # coding: utf-8
2
2
 
3
3
  begin
4
- gem 'prawn', '0.12.0'
4
+ gem 'prawn', '1.3.0'
5
5
  require 'prawn'
6
6
  rescue LoadError
7
- puts 'ThinReports requires Prawn = 0.12.0. ' +
8
- 'Please `gem install prawn -v 0.12.0` and try again.'
7
+ puts 'Thinreports requires Prawn = 1.3.0. ' +
8
+ 'Please `gem install prawn -v 1.3.0` and try again.'
9
9
  end
10
10
 
11
- module ThinReports
11
+ module Thinreports
12
12
  module Generator
13
-
13
+
14
14
  class PDF < Base
15
- # @param report (see ThinReports::Generator::Base#initialize)
15
+ # @param report (see Thinreports::Generator::Base#initialize)
16
16
  # @param [Hash] options
17
17
  # @option options [Hash] :security (nil)
18
18
  # See Prawn::Document#encrypt_document
19
19
  def initialize(report, options)
20
20
  super
21
-
21
+
22
22
  title = default_layout ? default_layout.format.report_title : nil
23
23
 
24
- @pdf = Document.new(options, :Title => title)
24
+ @document = Document.new(options, Title: title)
25
25
  @drawers = {}
26
26
  end
27
-
28
- # @see ThinReports::Generator::Base#generate
29
- def generate
30
- draw_report
31
- @pdf.render
32
- end
33
-
34
- # @see ThinReports::Generator::Base#generate_file
35
- def generate_file(filename)
27
+
28
+ # @see Thinreports::Generator::Base#generate
29
+ def generate(filename = nil)
36
30
  draw_report
37
- @pdf.render_file(filename)
31
+ filename ? @document.render_file(filename) : @document.render
38
32
  end
39
-
33
+
40
34
  private
41
-
35
+
42
36
  def draw_report
43
37
  report.pages.each do |page|
44
38
  draw_page(page)
45
39
  end
46
40
  end
47
-
41
+
48
42
  def draw_page(page)
49
- return @pdf.add_blank_page if page.blank?
50
-
43
+ return @document.add_blank_page if page.blank?
44
+
51
45
  format = page.layout.format
52
- @pdf.start_new_page(format)
53
-
46
+ @document.start_new_page(format)
47
+
54
48
  drawer(format).draw(page)
55
49
  end
56
-
50
+
57
51
  def drawer(format)
58
- @drawers[format.identifier] ||= Drawer::Page.new(@pdf, format)
59
- end
52
+ @drawers[format.identifier] ||= Drawer::Page.new(@document, format)
53
+ end
60
54
  end
61
-
55
+
62
56
  end
63
57
  end
64
58
 
65
59
  require 'thinreports/generator/pdf/configuration'
66
60
  require 'thinreports/generator/pdf/prawn_ext'
67
61
  require 'thinreports/generator/pdf/document'
68
- require 'thinreports/generator/pdf/drawer'
62
+ require 'thinreports/generator/pdf/drawer/base'
63
+ require 'thinreports/generator/pdf/drawer/page'
64
+ require 'thinreports/generator/pdf/drawer/list'
65
+ require 'thinreports/generator/pdf/drawer/list_section'
@@ -1,20 +1,25 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Generator
5
-
5
+
6
+ # @deprecated This class will be removed in the next major version.
6
7
  class PDF::Configuration
7
8
  # @return [Array]
8
9
  attr_reader :eudc_fonts
9
-
10
+
10
11
  def initialize
11
12
  @eudc_fonts = []
12
13
  end
13
-
14
+
14
15
  # @param [String, Array<String>] fonts
15
16
  def eudc_fonts=(fonts)
17
+ warn '[DEPRECATION] `eudc_fonts=` is deprecated and will be removed in ' +
18
+ 'the next major version of thinreports. ' +
19
+ 'Please use `Thinreports.config.fallback_fonts=` instead.'
20
+
16
21
  fonts = [fonts] unless fonts.is_a?(::Array)
17
-
22
+
18
23
  fonts.each do |f|
19
24
  unless File.extname(f.to_s) == '.ttf'
20
25
  raise ArgumentError, 'The EUDC Fonts can specify only the TTF file.'
@@ -23,6 +28,6 @@ module ThinReports
23
28
  @eudc_fonts = fonts
24
29
  end
25
30
  end
26
-
31
+
27
32
  end
28
33
  end
@@ -7,39 +7,43 @@ require 'thinreports/generator/pdf/document/draw_shape'
7
7
  require 'thinreports/generator/pdf/document/parse_svg'
8
8
  require 'thinreports/generator/pdf/document/page'
9
9
 
10
- module ThinReports
10
+ module Thinreports
11
11
  module Generator
12
-
13
- # @private
12
+
14
13
  class PDF::Document
14
+ include Utils
15
+
15
16
  include PDF::Font
16
17
  include PDF::ParseColor
17
18
  include PDF::Graphics
18
19
  include PDF::DrawShape
19
20
  include PDF::ParseSVG
20
21
  include PDF::Page
21
-
22
- # @param options (see ThinReports::Generator::PDF#initialize)
22
+
23
+ # @return [Prawn::Document]
24
+ attr_reader :pdf
25
+
26
+ # @param options (see Thinreports::Generator::PDF#initialize)
23
27
  # @param [Hash] metadata
24
28
  # @option metadata [String] :Title
25
29
  def initialize(options = {}, metadata = {})
26
30
  @pdf = Prawn::Document.new(
27
- :skip_page_creation => true,
28
- :margin => [0, 0],
29
- :info => {:CreationDate => Time.now,
30
- :Creator => 'ThinReports Generator for Ruby ' +
31
- ThinReports::VERSION}.merge(metadata)
31
+ skip_page_creation: true,
32
+ margin: [0, 0],
33
+ info: {CreationDate: Time.now,
34
+ Creator: 'Thinreports Generator for Ruby ' +
35
+ Thinreports::VERSION}.merge(metadata)
32
36
  )
33
37
  # Setup to Prawn::Document.
34
38
  setup_fonts
35
39
  setup_custom_graphic_states
36
-
40
+
37
41
  # Encrypts the document.
38
42
  if options[:security]
39
43
  @pdf.encrypt_document(options[:security])
40
44
  end
41
45
  end
42
-
46
+
43
47
  # Delegate to Prawn::Document#render
44
48
  # @see Prawn::Document#render
45
49
  def render
@@ -47,21 +51,21 @@ module ThinReports
47
51
  finalize
48
52
  result
49
53
  end
50
-
54
+
51
55
  # Delegate to Prawn::Document#render_file
52
56
  # @see Prawn::Document#render_file
53
57
  def render_file(*args)
54
58
  finalize
55
59
  pdf.render_file(*args)
56
60
  end
57
-
61
+
58
62
  # @param [Numeric, String] x
59
63
  # @param [Numeric, String] y
60
64
  def translate(x, y, &block)
61
65
  x, y = rpos(x, y)
62
66
  pdf.translate(x, y, &block)
63
67
  end
64
-
68
+
65
69
  # @param [String] stamp_id
66
70
  # @param [Array<Numeric>] at (nil)
67
71
  def stamp(stamp_id, at = nil)
@@ -71,34 +75,30 @@ module ThinReports
71
75
  pdf.stamp(stamp_id)
72
76
  end
73
77
  end
74
-
78
+
75
79
  # Delegate to Prawn::Document#create_stamp
76
80
  # @param [String] id
77
81
  # @see Prawn::Document#create_stamp
78
82
  def create_stamp(id, &block)
79
83
  pdf.create_stamp(id, &block)
80
84
  end
81
-
82
- # @private
85
+
83
86
  # @see #pdf
84
87
  def internal
85
88
  @pdf
86
89
  end
87
-
90
+
88
91
  private
89
-
90
- # @return [Prawn::Document]
91
- attr_reader :pdf
92
-
92
+
93
93
  def finalize
94
94
  clean_temp_images
95
95
  end
96
-
96
+
97
97
  # @param [Array<String, Numeric>] values
98
98
  # @return [Numeric, Array<Numeric>, nil]
99
99
  def s2f(*values)
100
100
  return nil if values.empty?
101
-
101
+
102
102
  if values.size == 1
103
103
  if value = values.first
104
104
  value.is_a?(::Numeric) ? value : value.to_f
@@ -107,7 +107,7 @@ module ThinReports
107
107
  values.map {|v| s2f(v) }
108
108
  end
109
109
  end
110
-
110
+
111
111
  # @param [Numeric, String] x
112
112
  # @param [Numeric, String] y
113
113
  # @return [Array<Float>]
@@ -116,7 +116,7 @@ module ThinReports
116
116
  [x, -y]
117
117
  end
118
118
  alias_method :rpos, :map_to_upper_left_relative_position
119
-
119
+
120
120
  # @param [Numeric, String] x
121
121
  # @param [Numeric, String] y
122
122
  # @return [Array<Float>]
@@ -126,6 +126,6 @@ module ThinReports
126
126
  end
127
127
  alias_method :pos, :map_to_upper_left_position
128
128
  end
129
-
129
+
130
130
  end
131
131
  end