thinreports 0.9.1 → 0.11.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 (213) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +39 -0
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +59 -2
  5. data/Dockerfile +12 -0
  6. data/Gemfile +7 -4
  7. data/README.md +44 -22
  8. data/Rakefile +14 -31
  9. data/lib/thinreports.rb +16 -15
  10. data/lib/thinreports/config.rb +2 -24
  11. data/lib/thinreports/core/errors.rb +6 -17
  12. data/lib/thinreports/core/format/base.rb +62 -61
  13. data/lib/thinreports/core/shape.rb +10 -12
  14. data/lib/thinreports/core/shape/base.rb +3 -12
  15. data/lib/thinreports/core/shape/base/interface.rb +34 -32
  16. data/lib/thinreports/core/shape/base/internal.rb +45 -43
  17. data/lib/thinreports/core/shape/basic.rb +12 -12
  18. data/lib/thinreports/core/shape/basic/block_format.rb +8 -6
  19. data/lib/thinreports/core/shape/basic/block_interface.rb +24 -22
  20. data/lib/thinreports/core/shape/basic/block_internal.rb +28 -26
  21. data/lib/thinreports/core/shape/basic/format.rb +11 -9
  22. data/lib/thinreports/core/shape/basic/interface.rb +79 -77
  23. data/lib/thinreports/core/shape/basic/internal.rb +17 -14
  24. data/lib/thinreports/core/shape/image_block.rb +9 -9
  25. data/lib/thinreports/core/shape/image_block/format.rb +7 -5
  26. data/lib/thinreports/core/shape/image_block/interface.rb +15 -13
  27. data/lib/thinreports/core/shape/image_block/internal.rb +10 -8
  28. data/lib/thinreports/core/shape/list.rb +13 -13
  29. data/lib/thinreports/core/shape/list/format.rb +83 -77
  30. data/lib/thinreports/core/shape/list/manager.rb +179 -176
  31. data/lib/thinreports/core/shape/list/page.rb +91 -93
  32. data/lib/thinreports/core/shape/list/page_state.rb +42 -40
  33. data/lib/thinreports/core/shape/list/section_format.rb +28 -26
  34. data/lib/thinreports/core/shape/list/section_interface.rb +42 -40
  35. data/lib/thinreports/core/shape/list/section_internal.rb +21 -19
  36. data/lib/thinreports/core/shape/manager.rb +4 -13
  37. data/lib/thinreports/core/shape/manager/format.rb +21 -19
  38. data/lib/thinreports/core/shape/manager/internal.rb +87 -84
  39. data/lib/thinreports/core/shape/manager/target.rb +93 -95
  40. data/lib/thinreports/core/shape/page_number.rb +9 -9
  41. data/lib/thinreports/core/shape/page_number/format.rb +20 -18
  42. data/lib/thinreports/core/shape/page_number/interface.rb +20 -18
  43. data/lib/thinreports/core/shape/page_number/internal.rb +46 -44
  44. data/lib/thinreports/core/shape/style.rb +5 -14
  45. data/lib/thinreports/core/shape/style/base.rb +121 -120
  46. data/lib/thinreports/core/shape/style/basic.rb +12 -10
  47. data/lib/thinreports/core/shape/style/graphic.rb +35 -33
  48. data/lib/thinreports/core/shape/style/text.rb +113 -107
  49. data/lib/thinreports/core/shape/text.rb +9 -9
  50. data/lib/thinreports/core/shape/text/format.rb +10 -9
  51. data/lib/thinreports/core/shape/text/interface.rb +13 -11
  52. data/lib/thinreports/core/shape/text/internal.rb +14 -12
  53. data/lib/thinreports/core/shape/text_block.rb +10 -10
  54. data/lib/thinreports/core/shape/text_block/format.rb +35 -33
  55. data/lib/thinreports/core/shape/text_block/formatter.rb +26 -24
  56. data/lib/thinreports/core/shape/text_block/formatter/basic.rb +25 -25
  57. data/lib/thinreports/core/shape/text_block/formatter/datetime.rb +15 -12
  58. data/lib/thinreports/core/shape/text_block/formatter/number.rb +52 -34
  59. data/lib/thinreports/core/shape/text_block/formatter/padding.rb +17 -14
  60. data/lib/thinreports/core/shape/text_block/interface.rb +25 -23
  61. data/lib/thinreports/core/shape/text_block/internal.rb +66 -68
  62. data/lib/thinreports/core/utils.rb +7 -3
  63. data/lib/thinreports/generator/pdf.rb +24 -25
  64. data/lib/thinreports/generator/pdf/document.rb +109 -110
  65. data/lib/thinreports/generator/pdf/document/draw_shape.rb +57 -51
  66. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +50 -47
  67. data/lib/thinreports/generator/pdf/document/font.rb +67 -58
  68. data/lib/thinreports/generator/pdf/document/graphics.rb +32 -33
  69. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +121 -121
  70. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +112 -114
  71. data/lib/thinreports/generator/pdf/document/graphics/image.rb +58 -150
  72. data/lib/thinreports/generator/pdf/document/graphics/text.rb +149 -137
  73. data/lib/thinreports/generator/pdf/document/page.rb +60 -64
  74. data/lib/thinreports/generator/pdf/document/parse_color.rb +37 -37
  75. data/lib/thinreports/generator/pdf/drawer/base.rb +41 -41
  76. data/lib/thinreports/generator/pdf/drawer/list.rb +56 -54
  77. data/lib/thinreports/generator/pdf/drawer/list_section.rb +42 -40
  78. data/lib/thinreports/generator/pdf/drawer/page.rb +101 -96
  79. data/lib/thinreports/generator/pdf/prawn_ext.rb +4 -30
  80. data/lib/thinreports/generator/pdf/prawn_ext/calc_image_dimensions.rb +32 -0
  81. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +35 -0
  82. data/lib/thinreports/layout.rb +5 -7
  83. data/lib/thinreports/layout/base.rb +5 -9
  84. data/lib/thinreports/layout/format.rb +17 -13
  85. data/lib/thinreports/layout/legacy_schema.rb +17 -13
  86. data/lib/thinreports/layout/version.rb +22 -25
  87. data/lib/thinreports/report.rb +4 -6
  88. data/lib/thinreports/report/base.rb +24 -51
  89. data/lib/thinreports/report/internal.rb +13 -15
  90. data/lib/thinreports/report/page.rb +5 -11
  91. data/lib/thinreports/version.rb +2 -2
  92. data/thinreports.gemspec +10 -19
  93. metadata +13 -288
  94. data/.travis.yml +0 -19
  95. data/examples/character_spacing/character_spacing.rb +0 -8
  96. data/examples/character_spacing/character_spacing.tlf +0 -293
  97. data/examples/dynamic_image/dynamic_image.rb +0 -31
  98. data/examples/dynamic_image/dynamic_image.tlf +0 -661
  99. data/examples/dynamic_image/img200x100.png +0 -0
  100. data/examples/dynamic_image/img50x50.png +0 -0
  101. data/examples/dynamic_style/dynamic_style.rb +0 -150
  102. data/examples/dynamic_style/dynamic_style.tlf +0 -1835
  103. data/examples/dynamic_style/dynamic_style_in_list.tlf +0 -344
  104. data/examples/dynamic_style/image.png +0 -0
  105. data/examples/eudc/eudc.rb +0 -20
  106. data/examples/eudc/eudc.tlf +0 -180
  107. data/examples/eudc/eudc.ttf +0 -0
  108. data/examples/helper.rb +0 -50
  109. data/examples/hidden_shapes/hidden_shapes.rb +0 -9
  110. data/examples/hidden_shapes/hidden_shapes.tlf +0 -449
  111. data/examples/list_events/list_events.rb +0 -32
  112. data/examples/list_events/list_events.tlf +0 -361
  113. data/examples/list_manual_generation/list_manual_generation.rb +0 -22
  114. data/examples/list_manual_generation/list_manual_generation.tlf +0 -132
  115. data/examples/list_page_number/list_page_number.rb +0 -17
  116. data/examples/list_page_number/list_page_number.tlf +0 -254
  117. data/examples/page_number/page_number.rb +0 -33
  118. data/examples/page_number/page_number.tlf +0 -215
  119. data/examples/palleted_png/palleted_png.png +0 -0
  120. data/examples/palleted_png/palleted_png.rb +0 -11
  121. data/examples/palleted_png/palleted_png.tlf +0 -47
  122. data/examples/password_setting/password_setting.rb +0 -10
  123. data/examples/password_setting/password_setting.tlf +0 -45
  124. data/examples/report_callbacks/report_callbacks.rb +0 -14
  125. data/examples/report_callbacks/report_callbacks.tlf +0 -147
  126. data/examples/single_line_tblock/single_line_tblock.rb +0 -13
  127. data/examples/single_line_tblock/single_line_tblock.tlf +0 -170
  128. data/examples/tblock_overflow/tblock_overflow.rb +0 -20
  129. data/examples/tblock_overflow/tblock_overflow.tlf +0 -538
  130. data/examples/tblock_styles/font_size.tlf +0 -383
  131. data/examples/tblock_styles/tblock_styles.rb +0 -43
  132. data/examples/tblock_styles/tblock_styles.tlf +0 -889
  133. data/examples/text_align/text_align.rb +0 -8
  134. data/examples/text_align/text_align.tlf +0 -241
  135. data/examples/typeB_page_size/B4_ISO.tlf +0 -45
  136. data/examples/typeB_page_size/B4_JIS.tlf +0 -45
  137. data/examples/typeB_page_size/typeB_page_size.rb +0 -17
  138. data/examples/word_wrap/word_wrap.rb +0 -26
  139. data/examples/word_wrap/word_wrap.tlf +0 -297
  140. data/lib/thinreports/generator.rb +0 -29
  141. data/lib/thinreports/generator/base.rb +0 -40
  142. data/lib/thinreports/generator/configuration.rb +0 -31
  143. data/lib/thinreports/report/events.rb +0 -32
  144. data/test/data/font.ttf +0 -0
  145. data/test/data/image_normal.jpg +0 -0
  146. data/test/data/image_normal.png +0 -0
  147. data/test/data/image_normal_jpg_noext +0 -0
  148. data/test/data/image_normal_png_noext +0 -0
  149. data/test/data/image_pallete_based.png +0 -0
  150. data/test/data/legacy_layout/all-items.tlf +0 -1
  151. data/test/schema_helper.rb +0 -121
  152. data/test/test_helper.rb +0 -42
  153. data/test/tmp/.gitkeep +0 -0
  154. data/test/unit/core/format/test_base.rb +0 -152
  155. data/test/unit/core/shape/base/test_internal.rb +0 -87
  156. data/test/unit/core/shape/basic/test_block_format.rb +0 -23
  157. data/test/unit/core/shape/basic/test_block_interface.rb +0 -29
  158. data/test/unit/core/shape/basic/test_block_internal.rb +0 -55
  159. data/test/unit/core/shape/basic/test_format.rb +0 -37
  160. data/test/unit/core/shape/basic/test_interface.rb +0 -108
  161. data/test/unit/core/shape/basic/test_internal.rb +0 -55
  162. data/test/unit/core/shape/image_block/test_interface.rb +0 -24
  163. data/test/unit/core/shape/image_block/test_internal.rb +0 -31
  164. data/test/unit/core/shape/list/test_format.rb +0 -111
  165. data/test/unit/core/shape/list/test_manager.rb +0 -67
  166. data/test/unit/core/shape/list/test_page.rb +0 -82
  167. data/test/unit/core/shape/list/test_page_state.rb +0 -31
  168. data/test/unit/core/shape/list/test_section_format.rb +0 -36
  169. data/test/unit/core/shape/list/test_section_interface.rb +0 -75
  170. data/test/unit/core/shape/list/test_section_internal.rb +0 -50
  171. data/test/unit/core/shape/manager/test_format.rb +0 -38
  172. data/test/unit/core/shape/manager/test_internal.rb +0 -132
  173. data/test/unit/core/shape/manager/test_target.rb +0 -140
  174. data/test/unit/core/shape/page_number/test_format.rb +0 -55
  175. data/test/unit/core/shape/page_number/test_interface.rb +0 -33
  176. data/test/unit/core/shape/page_number/test_internal.rb +0 -81
  177. data/test/unit/core/shape/styles/test_base.rb +0 -191
  178. data/test/unit/core/shape/styles/test_basic.rb +0 -24
  179. data/test/unit/core/shape/styles/test_graphic.rb +0 -50
  180. data/test/unit/core/shape/styles/test_text.rb +0 -97
  181. data/test/unit/core/shape/text/test_format.rb +0 -44
  182. data/test/unit/core/shape/text/test_internal.rb +0 -20
  183. data/test/unit/core/shape/text_block/formatter/test_basic.rb +0 -24
  184. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +0 -49
  185. data/test/unit/core/shape/text_block/formatter/test_number.rb +0 -76
  186. data/test/unit/core/shape/text_block/formatter/test_padding.rb +0 -77
  187. data/test/unit/core/shape/text_block/test_format.rb +0 -169
  188. data/test/unit/core/shape/text_block/test_formatter.rb +0 -28
  189. data/test/unit/core/shape/text_block/test_interface.rb +0 -63
  190. data/test/unit/core/shape/text_block/test_internal.rb +0 -128
  191. data/test/unit/core/test_shape.rb +0 -52
  192. data/test/unit/core/test_utils.rb +0 -68
  193. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +0 -135
  194. data/test/unit/generator/pdf/document/graphics/test_basic.rb +0 -45
  195. data/test/unit/generator/pdf/document/graphics/test_image.rb +0 -150
  196. data/test/unit/generator/pdf/document/graphics/test_text.rb +0 -171
  197. data/test/unit/generator/pdf/document/test_font.rb +0 -84
  198. data/test/unit/generator/pdf/document/test_graphics.rb +0 -42
  199. data/test/unit/generator/pdf/document/test_page.rb +0 -122
  200. data/test/unit/generator/pdf/document/test_parse_color.rb +0 -30
  201. data/test/unit/generator/pdf/test_document.rb +0 -20
  202. data/test/unit/generator/test_base.rb +0 -40
  203. data/test/unit/generator/test_configuration.rb +0 -21
  204. data/test/unit/generator/test_pdf.rb +0 -24
  205. data/test/unit/layout/test_base.rb +0 -41
  206. data/test/unit/layout/test_format.rb +0 -100
  207. data/test/unit/layout/test_legacy_schema.rb +0 -574
  208. data/test/unit/layout/test_version.rb +0 -95
  209. data/test/unit/report/test_base.rb +0 -262
  210. data/test/unit/report/test_internal.rb +0 -206
  211. data/test/unit/test_config.rb +0 -51
  212. data/test/unit/test_layout.rb +0 -12
  213. data/test/unit/test_report.rb +0 -18
@@ -1,88 +1,89 @@
1
- # coding: utf-8
2
- module Thinreports::Core
3
- module Format
1
+ # frozen_string_literal: true
4
2
 
5
- # @abstract
6
- class Base
7
- class << self
8
- def config_reader(*configs, &block)
9
- each_configs(*configs) do |m, location|
10
- define_read_method(m, location, &block)
3
+ module Thinreports
4
+ module Core
5
+ module Format
6
+ # @abstract
7
+ class Base
8
+ class << self
9
+ def config_reader(*configs, &block)
10
+ each_configs(*configs) do |m, location|
11
+ define_read_method(m, location, &block)
12
+ end
11
13
  end
12
- end
13
14
 
14
- def config_checker(check, *configs)
15
- checker = lambda {|val| val == check}
16
- each_configs(*configs) do |m, location|
17
- define_read_method(:"#{m}?", location, &checker)
15
+ def config_checker(check, *configs)
16
+ checker = ->(val) { val == check }
17
+ each_configs(*configs) do |m, location|
18
+ define_read_method(:"#{m}?", location, &checker)
19
+ end
18
20
  end
19
- end
20
21
 
21
- def config_writer(*configs)
22
- each_configs(*configs) do |m, location|
23
- define_write_method(m, location)
22
+ def config_writer(*configs)
23
+ each_configs(*configs) do |m, location|
24
+ define_write_method(m, location)
25
+ end
24
26
  end
25
- end
26
27
 
27
- def config_accessor(*configs, &block)
28
- config_reader(*configs, &block)
29
- config_writer(*configs)
30
- end
28
+ def config_accessor(*configs, &block)
29
+ config_reader(*configs, &block)
30
+ config_writer(*configs)
31
+ end
31
32
 
32
- private
33
+ private
33
34
 
34
- def define_read_method(m, location = nil, &block)
35
- define_method(m) do
36
- read(*location, &block)
35
+ def define_read_method(m, location = nil, &block)
36
+ define_method(m) do
37
+ read(*location, &block)
38
+ end
37
39
  end
38
- end
39
40
 
40
- def define_write_method(m, location = nil)
41
- define_method(:"#{m}=") do |value|
42
- write(value, *location)
41
+ def define_write_method(m, location = nil)
42
+ define_method(:"#{m}=") do |value|
43
+ write(value, *location)
44
+ end
43
45
  end
44
- end
45
46
 
46
- def each_configs(*configs, &block)
47
- c = configs.first.is_a?(::Hash) ? configs.first : (configs || [])
48
- c.each do |m, location|
49
- block.call(m, location || [m.to_s])
47
+ def each_configs(*configs, &block)
48
+ c = configs.first.is_a?(::Hash) ? configs.first : (configs || [])
49
+ c.each do |m, location|
50
+ block.call(m, location || [m.to_s])
51
+ end
50
52
  end
51
53
  end
52
- end
53
54
 
54
- def initialize(config, &block)
55
- @config = config
56
- block.call(self) if ::Kernel.block_given?
57
- end
55
+ def initialize(config, &block)
56
+ @config = config
57
+ block.call(self) if ::Kernel.block_given?
58
+ end
58
59
 
59
- def attributes
60
- @config
61
- end
60
+ def attributes
61
+ @config
62
+ end
62
63
 
63
- private
64
+ private
64
65
 
65
- def find(*keys)
66
- if keys.empty?
67
- @config
68
- else
69
- keys.inject(@config) do |c, k|
70
- c.is_a?(::Hash) ? c[k] : (break c)
66
+ def find(*keys)
67
+ if keys.empty?
68
+ @config
69
+ else
70
+ keys.inject(@config) do |c, k|
71
+ c.is_a?(::Hash) ? c[k] : (break c)
72
+ end
71
73
  end
72
74
  end
73
- end
74
75
 
75
- def write(value, *keys)
76
- key = keys.pop
77
- owner = find(*keys)
78
- owner[key] = value
79
- end
76
+ def write(value, *keys)
77
+ key = keys.pop
78
+ owner = find(*keys)
79
+ owner[key] = value
80
+ end
80
81
 
81
- def read(*keys, &block)
82
- value = find(*keys)
83
- ::Kernel.block_given? ? block.call(value) : value
82
+ def read(*keys, &block)
83
+ value = find(*keys)
84
+ ::Kernel.block_given? ? block.call(value) : value
85
+ end
84
86
  end
85
87
  end
86
-
87
88
  end
88
89
  end
@@ -1,8 +1,7 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
4
  module Core
5
-
6
5
  module Shape
7
6
  def Interface(parent, format)
8
7
  find_by_type(format.type)::Interface.new(parent, format)
@@ -27,16 +26,15 @@ module Thinreports
27
26
  end
28
27
  end
29
28
  end
30
-
31
29
  end
32
30
  end
33
31
 
34
- require 'thinreports/core/shape/style'
35
- require 'thinreports/core/shape/manager'
36
- require 'thinreports/core/shape/base'
37
- require 'thinreports/core/shape/basic'
38
- require 'thinreports/core/shape/text'
39
- require 'thinreports/core/shape/text_block'
40
- require 'thinreports/core/shape/image_block'
41
- require 'thinreports/core/shape/list'
42
- require 'thinreports/core/shape/page_number'
32
+ require_relative 'shape/style'
33
+ require_relative 'shape/manager'
34
+ require_relative 'shape/base'
35
+ require_relative 'shape/basic'
36
+ require_relative 'shape/text'
37
+ require_relative 'shape/text_block'
38
+ require_relative 'shape/image_block'
39
+ require_relative 'shape/list'
40
+ require_relative 'shape/page_number'
@@ -1,15 +1,6 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'forwardable'
4
4
 
5
- module Thinreports
6
- module Core::Shape
7
-
8
- module Base
9
- end
10
-
11
- end
12
- end
13
-
14
- require 'thinreports/core/shape/base/internal'
15
- require 'thinreports/core/shape/base/interface'
5
+ require_relative 'base/internal'
6
+ require_relative 'base/interface'
@@ -1,38 +1,40 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- # @abstract
7
- class Base::Interface
8
- include Utils
9
- extend Forwardable
10
-
11
- def self.internal_delegators(*args)
12
- def_delegators :internal, *args
13
- end
14
- private_class_method :internal_delegators
15
-
16
- attr_reader :internal
17
-
18
- def initialize(parent, format, internal = nil)
19
- @internal = internal || init_internal(parent, format)
20
- end
21
-
22
- def copy(parent)
23
- self.class.new(parent, internal.format, internal.copy(parent))
24
- end
25
-
26
- private
27
-
28
- # @param [Thinreports::Report::Page, Thinreports::Core::Shape::List::SectionInterface] parent
29
- # @param [Thinreports::Core::Shape::Basic::Format] format
30
- # @return [Thinreports::Core::Shape::Basic::Internal]
31
- # @abstract
32
- def init_internal
33
- raise NotImplementedError
4
+ module Core
5
+ module Shape
6
+ module Base
7
+ # @abstract
8
+ class Interface
9
+ include Utils
10
+ extend Forwardable
11
+
12
+ def self.internal_delegators(*args)
13
+ def_delegators :internal, *args
14
+ end
15
+ private_class_method :internal_delegators
16
+
17
+ attr_reader :internal
18
+
19
+ def initialize(parent, format, internal = nil)
20
+ @internal = internal || init_internal(parent, format)
21
+ end
22
+
23
+ def copy(parent)
24
+ self.class.new(parent, internal.format, internal.copy(parent))
25
+ end
26
+
27
+ private
28
+
29
+ # @param [Thinreports::Report::Page, Thinreports::Core::Shape::List::SectionInterface] parent
30
+ # @param [Thinreports::Core::Shape::Basic::Format] format
31
+ # @return [Thinreports::Core::Shape::Basic::Internal]
32
+ # @abstract
33
+ def init_internal(parent, format)
34
+ raise NotImplementedError
35
+ end
36
+ end
34
37
  end
35
38
  end
36
-
37
39
  end
38
40
  end
@@ -1,49 +1,51 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- # @abstract
7
- class Base::Internal
8
- include Utils
9
- extend Forwardable
10
-
11
- def self.format_delegators(*args)
12
- def_delegators :format, *args
13
- end
14
- private_class_method :format_delegators
15
-
16
- attr_reader :parent
17
- attr_reader :format
18
- attr_writer :style
19
- attr_accessor :states
20
-
21
- def initialize(parent, format)
22
- @parent = parent
23
- @format = format
24
- @states = {}
25
- @style = nil
26
-
27
- @finalized_attributes = nil
28
- end
29
-
30
- def style
31
- raise NotImplementedError
32
- end
33
-
34
- def copy(new_parent, &block)
35
- new_internal = self.class.new(new_parent, format)
36
- new_internal.style = style.copy
37
- new_internal.states = deep_copy(states)
38
-
39
- block.call(new_internal) if block_given?
40
- new_internal
41
- end
42
-
43
- def type_of?
44
- raise NotImplementedError
4
+ module Core
5
+ module Shape
6
+ module Base
7
+ # @abstract
8
+ class Internal
9
+ include Utils
10
+ extend Forwardable
11
+
12
+ def self.format_delegators(*args)
13
+ def_delegators :format, *args
14
+ end
15
+ private_class_method :format_delegators
16
+
17
+ attr_reader :parent
18
+ attr_reader :format
19
+ attr_writer :style
20
+ attr_accessor :states
21
+
22
+ def initialize(parent, format)
23
+ @parent = parent
24
+ @format = format
25
+ @states = {}
26
+ @style = nil
27
+
28
+ @finalized_attributes = nil
29
+ end
30
+
31
+ def style
32
+ raise NotImplementedError
33
+ end
34
+
35
+ def copy(new_parent, &block)
36
+ new_internal = self.class.new(new_parent, format)
37
+ new_internal.style = style.copy
38
+ new_internal.states = deep_copy(states)
39
+
40
+ block.call(new_internal) if block_given?
41
+ new_internal
42
+ end
43
+
44
+ def type_of?
45
+ raise NotImplementedError
46
+ end
47
+ end
45
48
  end
46
49
  end
47
-
48
50
  end
49
51
  end
@@ -1,18 +1,18 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- module Basic
7
- TYPE_NAMES = %w( line rect ellipse image )
4
+ module Core
5
+ module Shape
6
+ module Basic
7
+ TYPE_NAMES = %w[line rect ellipse image].freeze
8
+ end
8
9
  end
9
-
10
10
  end
11
11
  end
12
12
 
13
- require 'thinreports/core/shape/basic/format'
14
- require 'thinreports/core/shape/basic/internal'
15
- require 'thinreports/core/shape/basic/interface'
16
- require 'thinreports/core/shape/basic/block_format'
17
- require 'thinreports/core/shape/basic/block_internal'
18
- require 'thinreports/core/shape/basic/block_interface'
13
+ require_relative 'basic/format'
14
+ require_relative 'basic/internal'
15
+ require_relative 'basic/interface'
16
+ require_relative 'basic/block_format'
17
+ require_relative 'basic/block_internal'
18
+ require_relative 'basic/block_interface'
@@ -1,11 +1,13 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class Basic::BlockFormat < Basic::Format
7
- config_reader :value
4
+ module Core
5
+ module Shape
6
+ module Basic
7
+ class BlockFormat < Basic::Format
8
+ config_reader :value
9
+ end
10
+ end
8
11
  end
9
-
10
12
  end
11
13
  end
@@ -1,30 +1,32 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
4
+ module Core
5
+ module Shape
6
+ module Basic
7
+ class BlockInterface < Basic::Interface
8
+ # @overload value(val)
9
+ # Set a val
10
+ # @param [Object] val
11
+ # @return [self]
12
+ # @overload value
13
+ # Return the value
14
+ # @return [Object]
15
+ def value(*args)
16
+ if args.empty?
17
+ internal.read_value
18
+ else
19
+ internal.write_value(args.first)
20
+ self
21
+ end
22
+ end
5
23
 
6
- class Basic::BlockInterface < Basic::Interface
7
- # @overload value(val)
8
- # Set a val
9
- # @param [Object] val
10
- # @return [self]
11
- # @overload value
12
- # Return the value
13
- # @return [Object]
14
- def value(*args)
15
- if args.empty?
16
- internal.read_value
17
- else
18
- internal.write_value(args.first)
19
- self
24
+ # @param [Object] val
25
+ def value=(val)
26
+ value(val)
27
+ end
20
28
  end
21
29
  end
22
-
23
- # @param [Object] val
24
- def value=(val)
25
- value(val)
26
- end
27
30
  end
28
-
29
31
  end
30
32
  end