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,9 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
6
- # @private
5
+
7
6
  class List::PageState < Basic::Internal
8
7
  attr_reader :rows
9
8
 
@@ -11,37 +10,37 @@ module ThinReports
11
10
  attr_accessor :header
12
11
  attr_accessor :no
13
12
  attr_accessor :manager
14
-
13
+
15
14
  def initialize(*args)
16
15
  super(*args)
17
-
18
- @rows = []
19
- @header = nil
20
- @height = 0
16
+
17
+ @rows = []
18
+ @height = 0
21
19
  @finalized = false
20
+
21
+ @header = nil
22
22
  end
23
-
23
+
24
24
  def style
25
25
  @style ||= Style::Basic.new(format)
26
26
  end
27
-
27
+
28
28
  def finalized?
29
29
  @finalized
30
30
  end
31
-
31
+
32
32
  def finalized!
33
33
  @finalized = true
34
34
  end
35
-
35
+
36
36
  def type_of?(type_name)
37
37
  type_name == :list
38
38
  end
39
39
  end
40
-
40
+
41
41
  # Alias to List::PageState.
42
- # @see ThinReports::Core::Shape::List::PageState
43
- # @private
42
+ # @see Thinreports::Core::Shape::List::PageState
44
43
  List::Internal = List::PageState
45
-
44
+
46
45
  end
47
46
  end
@@ -1,32 +1,31 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
6
- # @private
5
+
7
6
  class List::SectionFormat < Manager::Format
8
7
  config_reader :height
9
- config_reader :relative_left => %w( translate x ),
10
- :relative_top => %w( translate y )
11
-
12
- config_reader :layout => %w( svg content ),
13
- :svg_tag => %w( svg tag ),
14
- :svg_attrs => %w( svg attrs )
15
-
8
+ config_reader relative_left: %w( translate x ),
9
+ relative_top: %w( translate y )
10
+
11
+ config_reader layout: %w( svg content ),
12
+ svg_tag: %w( svg tag ),
13
+ svg_attrs: %w( svg attrs )
14
+
16
15
  class << self
17
16
  private
18
-
17
+
19
18
  def build_internal(raw_format)
20
19
  new(raw_format) do |f|
21
- build_layout(f, :level => 2) do |type, shape_format|
20
+ build_layout(f, level: 2) do |type, shape_format|
22
21
  Core::Shape::Format(type).build(shape_format)
23
22
  end
24
23
  clean(f.layout)
25
24
  end
26
25
  end
27
26
  end
28
-
29
- end
30
-
27
+
28
+ end
29
+
31
30
  end
32
31
  end
@@ -1,48 +1,47 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
5
+
6
6
  class List::SectionInterface < Base::Interface
7
7
  include Core::Shape::Manager::Target
8
-
8
+
9
9
  undef_method :list
10
10
  internal_delegators :height
11
-
12
- # @param [ThinReports::Core::Shape::List::Page] parent
13
- # @param [ThinReports::Core::Shape::List::SectionFormat] format
11
+
12
+ # @param [Thinreports::Core::Shape::List::Page] parent
13
+ # @param [Thinreports::Core::Shape::List::SectionFormat] format
14
14
  # @param [Symbol] section_name
15
15
  def initialize(parent, format, section_name)
16
16
  super(parent, format)
17
17
  internal.section_name = section_name
18
-
18
+
19
19
  initialize_manager(format) do |f|
20
20
  Core::Shape::Interface(self, f)
21
21
  end
22
22
  end
23
-
24
- # @param [ThinReports::Core::Shape::List::Page] parent
25
- # @return [ThinReports::Core::Shape::List::SectionInterface]
26
- # @private
23
+
24
+ # @param [Thinreports::Core::Shape::List::Page] parent
25
+ # @return [Thinreports::Core::Shape::List::SectionInterface]
27
26
  def copy(parent)
28
27
  new_sec = super
29
28
  new_sec.internal.section_name = internal.section_name
30
-
29
+
31
30
  manager.shapes.each do |id, shape|
32
31
  new_sec.manager.shapes[id] = shape.copy(new_sec)
33
32
  end
34
33
  new_sec
35
34
  end
36
-
35
+
37
36
  private
38
-
37
+
39
38
  # @param parent (see #initialize)
40
39
  # @param format (see #initialize)
41
- # @return [ThinReports::Core::Shape::List::SectionInternal]
40
+ # @return [Thinreports::Core::Shape::List::SectionInternal]
42
41
  def init_internal(parent, format)
43
42
  List::SectionInternal.new(parent, format)
44
43
  end
45
44
  end
46
-
45
+
47
46
  end
48
47
  end
@@ -1,33 +1,32 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
6
- # @private
5
+
7
6
  class List::SectionInternal < Base::Internal
8
7
  format_delegators :height,
9
8
  :relative_left,
10
9
  :relative_top,
11
10
  :svg_tag
12
-
11
+
13
12
  # @return [Symbol]
14
13
  attr_accessor :section_name
15
-
14
+
16
15
  def style
17
16
  @style ||= Style::Base.new(format)
18
17
  end
19
-
18
+
20
19
  # @param [Numeric] ry
21
20
  def move_top_to(ry)
22
21
  states[:relative_top] = ry
23
22
  end
24
-
23
+
25
24
  # @return [Array<Numeric>]
26
25
  def relative_position
27
26
  [relative_left,
28
27
  relative_top + (states[:relative_top] || 0)]
29
28
  end
30
29
  end
31
-
30
+
32
31
  end
33
32
  end
@@ -1,34 +1,33 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
5
+
6
6
  class List::Store < ::Struct
7
- # @private
7
+ include Utils
8
+
8
9
  def self.init(attrs)
9
10
  new(attrs).new
10
11
  end
11
-
12
- # @private
12
+
13
13
  def self.new(attrs)
14
14
  super(*attrs.keys) do
15
15
  @default_values = attrs.values
16
-
16
+
17
17
  def self.default_values
18
- @default_values.simple_deep_copy
18
+ deep_copy(@default_values)
19
19
  end
20
20
  end
21
21
  end
22
-
22
+
23
23
  def initialize
24
24
  super(*self.class.default_values)
25
25
  end
26
-
27
- # @private
26
+
28
27
  def copy
29
28
  self.class.new
30
29
  end
31
30
  end
32
-
31
+
33
32
  end
34
33
  end
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
5
 
6
6
  module Manager
@@ -1,28 +1,27 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
6
- # @private
5
+
7
6
  class Manager::Format < Core::Format::Base
8
7
  # @return [Symbol, Integer]
9
8
  attr_reader :identifier
10
-
11
- config_reader :layout => %w( svg )
12
-
9
+
10
+ config_reader layout: %w( svg )
11
+
13
12
  def initialize(config, id = nil, &block)
14
13
  super(config, &block)
15
14
  @identifier = id || self.object_id
16
15
  end
17
-
16
+
18
17
  def find_shape(id)
19
18
  shapes[id]
20
19
  end
21
-
20
+
22
21
  def shapes
23
- @shapes ||= ThinReports::Core::OrderedHash.new
22
+ @shapes ||= {}
24
23
  end
25
24
  end
26
-
25
+
27
26
  end
28
- end
27
+ end
@@ -1,15 +1,16 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
6
- # @private
5
+
7
6
  class Manager::Internal
7
+ include Utils
8
+
8
9
  attr_reader :format
9
10
  attr_reader :shapes
10
11
  attr_reader :lists
11
-
12
- # @param [ThinReports::Core::Manager::Format] format
12
+
13
+ # @param [Thinreports::Core::Manager::Format] format
13
14
  # @param [Proc] init_item_handler
14
15
  def initialize(format, init_item_handler)
15
16
  @format = format
@@ -17,13 +18,13 @@ module ThinReports
17
18
  @lists = {}
18
19
  @init_item_handler = init_item_handler
19
20
  end
20
-
21
+
21
22
  # @param [String, Symbol] id
22
- # @return [ThinReports::Core::Shape::Basic::Format]
23
+ # @return [Thinreports::Core::Shape::Basic::Format]
23
24
  def find_format(id)
24
25
  format.find_shape(id.to_sym)
25
26
  end
26
-
27
+
27
28
  # @param [String, Symbol] id
28
29
  # @param limit (see #valid_type?)
29
30
  def find_item(id, limit = {})
@@ -39,28 +40,28 @@ module ThinReports
39
40
  return nil
40
41
  end
41
42
  end
42
-
43
+
43
44
  # @param [String, Symbol] id
44
- # @return [ThinReports::Core::Shape::Base::Interface, nil]
45
+ # @return [Thinreports::Core::Shape::Base::Interface, nil]
45
46
  def final_shape(id)
46
47
  # When shape was found in registry.
47
48
  if shape = shapes[id]
48
49
  return nil unless shape.visible?
49
-
50
+
50
51
  # In the case of TextBlock or ImageBlock.
51
52
  if shape.internal.type_of?(:block)
52
- shape.internal.real_value.blank? ? nil : shape
53
+ blank_value?(shape.internal.real_value) ? nil : shape
53
54
  else
54
55
  shape
55
56
  end
56
57
  # When shape was not found in registry.
57
58
  elsif f = find_format(id)
58
59
  return nil unless f.display?
59
-
60
+
60
61
  case f.type
61
62
  # In the case of TextBlock.
62
63
  when TextBlock::TYPE_NAME
63
- f.has_reference? || !f.value.blank? ? init_item(f) : nil
64
+ f.has_reference? || !blank_value?(f.value) ? init_item(f) : nil
64
65
  # In the case of ImageBlock, Return the nil constantly.
65
66
  when ImageBlock::TYPE_NAME
66
67
  nil
@@ -72,16 +73,16 @@ module ThinReports
72
73
  nil
73
74
  end
74
75
  end
75
-
76
- # @param [ThinReports::Core::Shape::Basic::Format] format
76
+
77
+ # @param [Thinreports::Core::Shape::Basic::Format] format
77
78
  def init_item(format)
78
79
  @init_item_handler.call(format)
79
80
  end
80
-
81
+
81
82
  # @param [String] type
82
83
  # @param [Hash] limit
83
- # @option [String] :only
84
- # @option [String] :except
84
+ # @option limit [String] :only
85
+ # @option limit [String] :except
85
86
  # @return [Booldan]
86
87
  def valid_type?(type, limit = {})
87
88
  return true if limit.empty?
@@ -95,6 +96,6 @@ module ThinReports
95
96
  end
96
97
  end
97
98
  end
98
-
99
+
99
100
  end
100
101
  end
@@ -1,12 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- module ThinReports
3
+ module Thinreports
4
4
  module Core::Shape
5
-
5
+
6
6
  module Manager::Target
7
- # @private
7
+ include Utils
8
+
8
9
  attr_reader :manager
9
-
10
+
10
11
  # @example
11
12
  # item(:title).value('Title').style(:fill, 'red')
12
13
  #
@@ -14,72 +15,100 @@ module ThinReports
14
15
  # value('Title')
15
16
  # style(:fill, 'red')
16
17
  # end
17
- #
18
+ #
18
19
  # item(:title) do |t|
19
20
  # t.value('Title')
20
21
  # t.style(:fill, 'red')
21
22
  # end
23
+ # item(:list) # => Error: UnknownItemId
24
+ # item(:unknown_id) # => Error: UnknownItemId
22
25
  # @param [String, Symbol] id
23
26
  # @yield [item,]
24
- # @yieldparam [ThinReports::Core::Shape::Base::Interface] item
25
- # @raise [ThinReports::Errors::UnknownItemId] If not found
26
- # @return [ThinReports::Core::Shape::Base::Interface]
27
+ # @yieldparam [Thinreports::Core::Shape::Base::Interface] item
28
+ # @raise [Thinreports::Errors::UnknownItemId]
29
+ # @return [Thinreports::Core::Shape::Base::Interface]
27
30
  def item(id, &block)
28
- shape = find_item(id, :except => Core::Shape::List::TYPE_NAME)
29
-
31
+ shape = find_item(id, except: Core::Shape::List::TYPE_NAME)
32
+
30
33
  unless shape
31
- raise ThinReports::Errors::UnknownItemId.new(id)
34
+ raise Thinreports::Errors::UnknownItemId.new(id)
32
35
  else
33
- block_exec_on(shape, &block)
36
+ call_block_in(shape, &block)
34
37
  end
35
38
  end
36
-
37
- # @param [Hash] item_values :id => value
39
+
40
+ # @example
41
+ # page[:text_block].style(:bold, true)
42
+ # page[:rect].style(:border_color, 'red')
43
+ #
44
+ # page[:list] # => Error: UnknownItemId
45
+ # page[:unknown_id] # => Error: UnknownItemId
46
+ # @param [String, Symbol] id
47
+ # @return [Thinreports::Core::Shape::Base::Interface]
48
+ def [](id)
49
+ item(id)
50
+ end
51
+
52
+ # @example
53
+ # page[:text_block] = 'Title'
54
+ # page[:image_block] = '/path/to/image.png'
55
+ # page[:list] = 'value' # => Error: UnknownItemId
56
+ # page[:ellipse] = 'value' # => Error: NoMethodError #value
57
+ # page[:unknown_id] = 'value' # => Error: UnknownItemId
58
+ # @param [String, Symbol] id
59
+ # @param [Object] value
60
+ def []=(id, value)
61
+ item(id).value = value
62
+ end
63
+
64
+ # @example
65
+ # page.values text_block: 'value',
66
+ # image_block: '/path/to/image.png'
67
+ # @param [Hash] item_values
38
68
  def values(item_values)
39
69
  item_values.each {|id, val| item(id).value(val)}
40
70
  end
41
-
42
- # @deprecated Please use the #values method instead.
43
- # @see #values
44
- def items(*args)
45
- warn '[DEPRECATION] The #items method is deprecated. ' +
46
- 'Please use the #values method instead.'
47
- values(*args)
48
- end
49
-
71
+
50
72
  # @param [Symbol, String] id
51
73
  # @return [Boolean]
52
74
  def item_exists?(id)
53
75
  !!manager.find_format(id)
54
76
  end
55
77
  alias_method :exists?, :item_exists?
56
-
78
+
79
+ # @example
80
+ # report.list.add_row do |row|
81
+ # row.item(:price).value(1000)
82
+ # end
83
+ #
84
+ # report.list(:list_id) # => List
85
+ # report.list(:text_block_id) # => raises UnknownItemId
57
86
  # @see #item
58
87
  def list(id = nil, &block)
59
- shape = find_item(id ||= :default, :only => Core::Shape::List::TYPE_NAME)
88
+ shape = find_item(id ||= :default, only: Core::Shape::List::TYPE_NAME)
60
89
 
61
90
  unless shape
62
- raise ThinReports::Errors::UnknownItemId.new(id, 'List')
91
+ raise Thinreports::Errors::UnknownItemId.new(id, 'List')
63
92
  else
64
93
  manager.lists[id.to_sym] ||= shape
65
- block_exec_on(shape, &block)
94
+ call_block_in(shape, &block)
66
95
  end
67
96
  end
68
97
 
69
98
  private
70
-
71
- # @param format (see ThinReports::Core::Shape::Manager::Internal#initialize)
99
+
100
+ # @param format (see Thinreports::Core::Shape::Manager::Internal#initialize)
72
101
  # @yield [format] Handler for initialize item.
73
- # @yieldparam [ThinReports::Core::Shape::Basic::Format] format
102
+ # @yieldparam [Thinreports::Core::Shape::Basic::Format] format
74
103
  def initialize_manager(format, &block)
75
104
  @manager = Manager::Internal.new(format, block)
76
105
  end
77
-
78
- # @see ThinReports::Core::Shape::Manager::Internal#find_item
106
+
107
+ # @see Thinreports::Core::Shape::Manager::Internal#find_item
79
108
  def find_item(id, limit = {})
80
109
  manager.find_item(id, limit)
81
110
  end
82
111
  end
83
-
112
+
84
113
  end
85
- end
114
+ end