thinreports 0.9.1 → 0.10.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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -0
  3. data/.travis.yml +4 -6
  4. data/CHANGELOG.md +21 -2
  5. data/Gemfile +2 -4
  6. data/README.md +4 -5
  7. data/Rakefile +7 -8
  8. data/examples/character_spacing/character_spacing.rb +1 -1
  9. data/examples/dynamic_image/dynamic_image.rb +3 -3
  10. data/examples/dynamic_style/dynamic_style.rb +1 -1
  11. data/examples/eudc/eudc.rb +1 -1
  12. data/examples/helper.rb +2 -2
  13. data/examples/hidden_shapes/hidden_shapes.rb +1 -1
  14. data/examples/list_events/list_events.rb +1 -1
  15. data/examples/list_manual_generation/list_manual_generation.rb +1 -1
  16. data/examples/list_page_number/list_page_number.rb +1 -1
  17. data/examples/page_number/page_number.rb +1 -1
  18. data/examples/palleted_png/palleted_png.rb +1 -3
  19. data/examples/password_setting/password_setting.rb +1 -1
  20. data/examples/report_callbacks/report_callbacks.rb +1 -1
  21. data/examples/single_line_tblock/single_line_tblock.rb +1 -1
  22. data/examples/tblock_overflow/tblock_overflow.rb +1 -1
  23. data/examples/tblock_styles/tblock_styles.rb +1 -1
  24. data/examples/text_align/text_align.rb +1 -1
  25. data/examples/typeB_page_size/typeB_page_size.rb +1 -1
  26. data/examples/word_wrap/word_wrap.rb +1 -1
  27. data/lib/thinreports.rb +16 -15
  28. data/lib/thinreports/config.rb +2 -24
  29. data/lib/thinreports/core/errors.rb +6 -17
  30. data/lib/thinreports/core/format/base.rb +62 -61
  31. data/lib/thinreports/core/shape.rb +13 -14
  32. data/lib/thinreports/core/shape/base.rb +3 -12
  33. data/lib/thinreports/core/shape/base/interface.rb +35 -32
  34. data/lib/thinreports/core/shape/base/internal.rb +45 -43
  35. data/lib/thinreports/core/shape/basic.rb +12 -12
  36. data/lib/thinreports/core/shape/basic/block_format.rb +8 -6
  37. data/lib/thinreports/core/shape/basic/block_interface.rb +24 -22
  38. data/lib/thinreports/core/shape/basic/block_internal.rb +28 -26
  39. data/lib/thinreports/core/shape/basic/format.rb +11 -9
  40. data/lib/thinreports/core/shape/basic/interface.rb +79 -77
  41. data/lib/thinreports/core/shape/basic/internal.rb +17 -14
  42. data/lib/thinreports/core/shape/image_block.rb +9 -9
  43. data/lib/thinreports/core/shape/image_block/format.rb +7 -5
  44. data/lib/thinreports/core/shape/image_block/interface.rb +15 -13
  45. data/lib/thinreports/core/shape/image_block/internal.rb +10 -8
  46. data/lib/thinreports/core/shape/list.rb +13 -13
  47. data/lib/thinreports/core/shape/list/format.rb +83 -77
  48. data/lib/thinreports/core/shape/list/manager.rb +182 -176
  49. data/lib/thinreports/core/shape/list/page.rb +94 -93
  50. data/lib/thinreports/core/shape/list/page_state.rb +42 -40
  51. data/lib/thinreports/core/shape/list/section_format.rb +28 -26
  52. data/lib/thinreports/core/shape/list/section_interface.rb +42 -40
  53. data/lib/thinreports/core/shape/list/section_internal.rb +21 -19
  54. data/lib/thinreports/core/shape/manager.rb +4 -13
  55. data/lib/thinreports/core/shape/manager/format.rb +21 -19
  56. data/lib/thinreports/core/shape/manager/internal.rb +88 -84
  57. data/lib/thinreports/core/shape/manager/target.rb +93 -95
  58. data/lib/thinreports/core/shape/page_number.rb +9 -9
  59. data/lib/thinreports/core/shape/page_number/format.rb +20 -18
  60. data/lib/thinreports/core/shape/page_number/interface.rb +20 -18
  61. data/lib/thinreports/core/shape/page_number/internal.rb +47 -44
  62. data/lib/thinreports/core/shape/style.rb +5 -14
  63. data/lib/thinreports/core/shape/style/base.rb +121 -120
  64. data/lib/thinreports/core/shape/style/basic.rb +12 -10
  65. data/lib/thinreports/core/shape/style/graphic.rb +35 -33
  66. data/lib/thinreports/core/shape/style/text.rb +113 -107
  67. data/lib/thinreports/core/shape/text.rb +9 -9
  68. data/lib/thinreports/core/shape/text/format.rb +10 -9
  69. data/lib/thinreports/core/shape/text/interface.rb +13 -11
  70. data/lib/thinreports/core/shape/text/internal.rb +14 -12
  71. data/lib/thinreports/core/shape/text_block.rb +10 -10
  72. data/lib/thinreports/core/shape/text_block/format.rb +35 -33
  73. data/lib/thinreports/core/shape/text_block/formatter.rb +26 -24
  74. data/lib/thinreports/core/shape/text_block/formatter/basic.rb +25 -25
  75. data/lib/thinreports/core/shape/text_block/formatter/datetime.rb +15 -12
  76. data/lib/thinreports/core/shape/text_block/formatter/number.rb +45 -39
  77. data/lib/thinreports/core/shape/text_block/formatter/padding.rb +17 -14
  78. data/lib/thinreports/core/shape/text_block/interface.rb +25 -23
  79. data/lib/thinreports/core/shape/text_block/internal.rb +68 -68
  80. data/lib/thinreports/core/utils.rb +4 -3
  81. data/lib/thinreports/generator/pdf.rb +24 -25
  82. data/lib/thinreports/generator/pdf/document.rb +109 -110
  83. data/lib/thinreports/generator/pdf/document/draw_shape.rb +58 -51
  84. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +51 -47
  85. data/lib/thinreports/generator/pdf/document/font.rb +62 -59
  86. data/lib/thinreports/generator/pdf/document/graphics.rb +32 -33
  87. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +122 -121
  88. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +113 -114
  89. data/lib/thinreports/generator/pdf/document/graphics/image.rb +58 -150
  90. data/lib/thinreports/generator/pdf/document/graphics/text.rb +152 -137
  91. data/lib/thinreports/generator/pdf/document/page.rb +63 -64
  92. data/lib/thinreports/generator/pdf/document/parse_color.rb +37 -37
  93. data/lib/thinreports/generator/pdf/drawer/base.rb +41 -41
  94. data/lib/thinreports/generator/pdf/drawer/list.rb +48 -45
  95. data/lib/thinreports/generator/pdf/drawer/list_section.rb +42 -40
  96. data/lib/thinreports/generator/pdf/drawer/page.rb +101 -96
  97. data/lib/thinreports/generator/pdf/prawn_ext.rb +4 -30
  98. data/lib/thinreports/generator/pdf/prawn_ext/calc_image_dimensions.rb +34 -0
  99. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +29 -0
  100. data/lib/thinreports/layout.rb +5 -7
  101. data/lib/thinreports/layout/base.rb +5 -7
  102. data/lib/thinreports/layout/format.rb +18 -13
  103. data/lib/thinreports/layout/legacy_schema.rb +18 -10
  104. data/lib/thinreports/layout/version.rb +22 -25
  105. data/lib/thinreports/report.rb +4 -6
  106. data/lib/thinreports/report/base.rb +24 -51
  107. data/lib/thinreports/report/internal.rb +9 -11
  108. data/lib/thinreports/report/page.rb +5 -6
  109. data/lib/thinreports/version.rb +2 -2
  110. data/test/schema_helper.rb +4 -3
  111. data/test/test_helper.rb +9 -3
  112. data/test/unit/core/format/test_base.rb +1 -1
  113. data/test/unit/core/shape/base/test_internal.rb +1 -1
  114. data/test/unit/core/shape/basic/test_block_format.rb +1 -1
  115. data/test/unit/core/shape/basic/test_block_interface.rb +1 -1
  116. data/test/unit/core/shape/basic/test_block_internal.rb +1 -1
  117. data/test/unit/core/shape/basic/test_format.rb +1 -1
  118. data/test/unit/core/shape/basic/test_interface.rb +1 -1
  119. data/test/unit/core/shape/basic/test_internal.rb +1 -1
  120. data/test/unit/core/shape/image_block/test_interface.rb +1 -1
  121. data/test/unit/core/shape/image_block/test_internal.rb +1 -1
  122. data/test/unit/core/shape/list/test_format.rb +1 -1
  123. data/test/unit/core/shape/list/test_manager.rb +4 -4
  124. data/test/unit/core/shape/list/test_page.rb +1 -1
  125. data/test/unit/core/shape/list/test_page_state.rb +1 -1
  126. data/test/unit/core/shape/list/test_section_format.rb +1 -1
  127. data/test/unit/core/shape/list/test_section_interface.rb +2 -2
  128. data/test/unit/core/shape/list/test_section_internal.rb +1 -1
  129. data/test/unit/core/shape/manager/test_format.rb +2 -2
  130. data/test/unit/core/shape/manager/test_internal.rb +3 -3
  131. data/test/unit/core/shape/manager/test_target.rb +1 -1
  132. data/test/unit/core/shape/page_number/test_format.rb +1 -1
  133. data/test/unit/core/shape/page_number/test_interface.rb +1 -1
  134. data/test/unit/core/shape/page_number/test_internal.rb +1 -1
  135. data/test/unit/core/shape/styles/test_base.rb +1 -1
  136. data/test/unit/core/shape/styles/test_basic.rb +1 -1
  137. data/test/unit/core/shape/styles/test_graphic.rb +1 -1
  138. data/test/unit/core/shape/styles/test_text.rb +1 -1
  139. data/test/unit/core/shape/text/test_format.rb +1 -1
  140. data/test/unit/core/shape/text/test_internal.rb +1 -1
  141. data/test/unit/core/shape/text_block/formatter/test_basic.rb +1 -1
  142. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +1 -1
  143. data/test/unit/core/shape/text_block/formatter/test_number.rb +1 -1
  144. data/test/unit/core/shape/text_block/formatter/test_padding.rb +2 -2
  145. data/test/unit/core/shape/text_block/test_format.rb +1 -1
  146. data/test/unit/core/shape/text_block/test_formatter.rb +1 -1
  147. data/test/unit/core/shape/text_block/test_interface.rb +1 -1
  148. data/test/unit/core/shape/text_block/test_internal.rb +3 -3
  149. data/test/unit/core/test_shape.rb +1 -1
  150. data/test/unit/core/test_utils.rb +2 -2
  151. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +1 -1
  152. data/test/unit/generator/pdf/document/graphics/test_basic.rb +2 -1
  153. data/test/unit/generator/pdf/document/graphics/test_image.rb +27 -131
  154. data/test/unit/generator/pdf/document/graphics/test_text.rb +1 -1
  155. data/test/unit/generator/pdf/document/test_font.rb +2 -2
  156. data/test/unit/generator/pdf/document/test_graphics.rb +1 -1
  157. data/test/unit/generator/pdf/document/test_page.rb +7 -7
  158. data/test/unit/generator/pdf/document/test_parse_color.rb +1 -1
  159. data/test/unit/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +41 -0
  160. data/test/unit/generator/pdf/prawn_ext/test_width_of.rb +22 -0
  161. data/test/unit/generator/pdf/test_document.rb +8 -6
  162. data/test/unit/generator/test_pdf.rb +12 -10
  163. data/test/unit/layout/test_base.rb +1 -1
  164. data/test/unit/layout/test_format.rb +2 -2
  165. data/test/unit/layout/test_legacy_schema.rb +4 -4
  166. data/test/unit/layout/test_version.rb +11 -80
  167. data/test/unit/report/test_base.rb +45 -59
  168. data/test/unit/report/test_internal.rb +1 -1
  169. data/test/unit/test_config.rb +1 -16
  170. data/test/unit/test_layout.rb +1 -1
  171. data/test/unit/test_report.rb +1 -1
  172. data/thinreports.gemspec +11 -14
  173. metadata +42 -103
  174. data/lib/thinreports/generator.rb +0 -29
  175. data/lib/thinreports/generator/base.rb +0 -40
  176. data/lib/thinreports/generator/configuration.rb +0 -31
  177. data/lib/thinreports/report/events.rb +0 -32
  178. data/test/unit/generator/test_base.rb +0 -40
  179. data/test/unit/generator/test_configuration.rb +0 -21
@@ -1,32 +1,34 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class Basic::BlockInternal < Basic::Internal
7
- format_delegators :box
8
-
9
- def style
10
- @style ||= Style::Basic.new(format)
11
- end
12
-
13
- def read_value
14
- states.key?(:value) ? states[:value] : format.value.dup
15
- end
16
- alias_method :value, :read_value
17
-
18
- def write_value(val)
19
- states[:value] = val
20
- end
21
-
22
- def real_value
23
- read_value
24
- end
25
-
26
- def type_of?(type_name)
27
- type_name == :block
4
+ module Core
5
+ module Shape
6
+ module Basic
7
+ class BlockInternal < Basic::Internal
8
+ format_delegators :box
9
+
10
+ def style
11
+ @style ||= Style::Basic.new(format)
12
+ end
13
+
14
+ def read_value
15
+ states.key?(:value) ? states[:value] : format.value.dup
16
+ end
17
+ alias value read_value
18
+
19
+ def write_value(val)
20
+ states[:value] = val
21
+ end
22
+
23
+ def real_value
24
+ read_value
25
+ end
26
+
27
+ def type_of?(type_name)
28
+ type_name == :block
29
+ end
30
+ end
28
31
  end
29
32
  end
30
-
31
33
  end
32
34
  end
@@ -1,15 +1,17 @@
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 Format < Core::Format::Base
8
+ include Utils
5
9
 
6
- class Basic::Format < Core::Format::Base
7
- include Utils
8
-
9
- config_reader :type, :id
10
- config_reader :style
11
- config_checker true, :display
10
+ config_reader :type, :id
11
+ config_reader :style
12
+ config_checker true, :display
13
+ end
14
+ end
12
15
  end
13
-
14
16
  end
15
17
  end
@@ -1,83 +1,85 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class Basic::Interface < Base::Interface
7
- internal_delegators :type
8
-
9
- # @return [String]
10
- def id
11
- internal.id.dup
12
- end
13
-
14
- # @param [Boolean] visibility
15
- # @return [self]
16
- def visible(visibility)
17
- internal.style.visible = visibility
18
- self
19
- end
20
-
21
- # @return [Boolean]
22
- def visible?
23
- internal.style.visible
24
- end
25
-
26
- # @overload style(style_name)
27
- # @param [Symbol] style_name
28
- # @return [Object]
29
- # @overload style(style_name, value)
30
- # @param [Symbol] style_name
31
- # @param [String, Symbol, Number, Array] value
32
- # @return [self]
33
- # @overload style(style_name, value1, value2)
34
- # @param [Symbol] style_name
35
- # @param [String, Number] value1
36
- # @param [String, Number] value2
37
- # @return [self]
38
- def style(*args)
39
- case args.length
40
- when 1
41
- internal.style[args.first]
42
- when 2
43
- internal.style[args.first] = args.last
44
- self
45
- when 3
46
- internal.style[args.shift] = args
47
- self
48
- else
49
- raise ArgumentError, '#style requires 1 or 2, 3 arguments'
4
+ module Core
5
+ module Shape
6
+ module Basic
7
+ class Interface < Base::Interface
8
+ internal_delegators :type
9
+
10
+ # @return [String]
11
+ def id
12
+ internal.id.dup
13
+ end
14
+
15
+ # @param [Boolean] visibility
16
+ # @return [self]
17
+ def visible(visibility)
18
+ internal.style.visible = visibility
19
+ self
20
+ end
21
+
22
+ # @return [Boolean]
23
+ def visible?
24
+ internal.style.visible
25
+ end
26
+
27
+ # @overload style(style_name)
28
+ # @param [Symbol] style_name
29
+ # @return [Object]
30
+ # @overload style(style_name, value)
31
+ # @param [Symbol] style_name
32
+ # @param [String, Symbol, Number, Array] value
33
+ # @return [self]
34
+ # @overload style(style_name, value1, value2)
35
+ # @param [Symbol] style_name
36
+ # @param [String, Number] value1
37
+ # @param [String, Number] value2
38
+ # @return [self]
39
+ def style(*args)
40
+ case args.length
41
+ when 1
42
+ internal.style[args.first]
43
+ when 2
44
+ internal.style[args.first] = args.last
45
+ self
46
+ when 3
47
+ internal.style[args.shift] = args
48
+ self
49
+ else
50
+ raise ArgumentError, '#style requires 1 or 2, 3 arguments'
51
+ end
52
+ end
53
+
54
+ # @param [Hash] settings style_name: value
55
+ # @return [self]
56
+ def styles(settings)
57
+ settings.each { |args| style(*args) }
58
+ self
59
+ end
60
+
61
+ # @see #visible
62
+ # @return [self]
63
+ def hide
64
+ visible(false)
65
+ self
66
+ end
67
+
68
+ # @see #visible
69
+ # @return [self]
70
+ def show
71
+ visible(true)
72
+ self
73
+ end
74
+
75
+ private
76
+
77
+ # @see Thinreports::Core::Shape::Base::Interface#init_internal
78
+ def init_internal(parent, format)
79
+ Basic::Internal.new(parent, format)
80
+ end
50
81
  end
51
82
  end
52
-
53
- # @param [Hash] settings style_name: value
54
- # @return [self]
55
- def styles(settings)
56
- settings.each{ |args| style(*args) }
57
- self
58
- end
59
-
60
- # @see #visible
61
- # @return [self]
62
- def hide
63
- visible(false)
64
- self
65
- end
66
-
67
- # @see #visible
68
- # @return [self]
69
- def show
70
- visible(true)
71
- self
72
- end
73
-
74
- private
75
-
76
- # @see Thinreports::Core::Shape::Base::Interface#init_internal
77
- def init_internal(parent, format)
78
- Basic::Internal.new(parent, format)
79
- end
80
83
  end
81
-
82
84
  end
83
- end
85
+ end
@@ -1,22 +1,25 @@
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 Internal < Base::Internal
8
+ # Delegate to Format's methods
9
+ format_delegators :id, :type
5
10
 
6
- class Basic::Internal < Base::Internal
7
- # Delegate to Format's methods
8
- format_delegators :id, :type
11
+ def style
12
+ @style ||= Style::Graphic.new(format)
13
+ end
9
14
 
10
- def style
11
- @style ||= Style::Graphic.new(format)
12
- end
13
-
14
- def type_of?(type_name)
15
- [:basic, self.type].include?(type_name)
16
- end
15
+ def type_of?(type_name)
16
+ [:basic, type].include?(type_name)
17
+ end
17
18
 
18
- def identifier
19
- "#{id}#{style.identifier}"
19
+ def identifier
20
+ "#{id}#{style.identifier}"
21
+ end
22
+ end
20
23
  end
21
24
  end
22
25
  end
@@ -1,15 +1,15 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- module ImageBlock
7
- TYPE_NAME = 'image-block'
4
+ module Core
5
+ module Shape
6
+ module ImageBlock
7
+ TYPE_NAME = 'image-block'.freeze
8
+ end
8
9
  end
9
-
10
10
  end
11
11
  end
12
12
 
13
- require 'thinreports/core/shape/image_block/format'
14
- require 'thinreports/core/shape/image_block/internal'
15
- require 'thinreports/core/shape/image_block/interface'
13
+ require_relative 'image_block/format'
14
+ require_relative 'image_block/internal'
15
+ require_relative 'image_block/interface'
@@ -1,10 +1,12 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class ImageBlock::Format < Basic::BlockFormat
4
+ module Core
5
+ module Shape
6
+ module ImageBlock
7
+ class Format < Basic::BlockFormat
8
+ end
9
+ end
7
10
  end
8
-
9
11
  end
10
12
  end
@@ -1,21 +1,23 @@
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 ImageBlock
7
+ class Interface < Basic::BlockInterface
8
+ # @see #value
9
+ alias src value
10
+ # @see #value=
11
+ alias src= value=
5
12
 
6
- class ImageBlock::Interface < Basic::BlockInterface
7
- # @see #value
8
- alias_method :src, :value
9
- # @see #value=
10
- alias_method :src=, :value=
13
+ private
11
14
 
12
- private
13
-
14
- # @see Thinreports::Core::Shape::Base::Interface#init_internal
15
- def init_internal(parent, format)
16
- ImageBlock::Internal.new(parent, format)
15
+ # @see Thinreports::Core::Shape::Base::Interface#init_internal
16
+ def init_internal(parent, format)
17
+ ImageBlock::Internal.new(parent, format)
18
+ end
19
+ end
17
20
  end
18
21
  end
19
-
20
22
  end
21
23
  end
@@ -1,15 +1,17 @@
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 ImageBlock
7
+ class Internal < Basic::BlockInternal
8
+ alias src read_value
5
9
 
6
- class ImageBlock::Internal < Basic::BlockInternal
7
- alias_method :src, :read_value
8
-
9
- def type_of?(type_name)
10
- type_name == ImageBlock::TYPE_NAME || super
10
+ def type_of?(type_name)
11
+ type_name == ImageBlock::TYPE_NAME || super
12
+ end
13
+ end
11
14
  end
12
15
  end
13
-
14
16
  end
15
17
  end
@@ -1,21 +1,21 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- module List
7
- TYPE_NAME = 'list'
4
+ module Core
5
+ module Shape
6
+ module List
7
+ TYPE_NAME = 'list'.freeze
8
+ end
8
9
  end
9
-
10
10
  end
11
11
  end
12
12
 
13
- require 'thinreports/core/shape/list/format'
14
- require 'thinreports/core/shape/list/manager'
13
+ require_relative 'list/format'
14
+ require_relative 'list/manager'
15
15
 
16
- require 'thinreports/core/shape/list/page'
17
- require 'thinreports/core/shape/list/page_state'
16
+ require_relative 'list/page'
17
+ require_relative 'list/page_state'
18
18
 
19
- require 'thinreports/core/shape/list/section_format'
20
- require 'thinreports/core/shape/list/section_interface'
21
- require 'thinreports/core/shape/list/section_internal'
19
+ require_relative 'list/section_format'
20
+ require_relative 'list/section_interface'
21
+ require_relative 'list/section_internal'
@@ -1,84 +1,90 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class List::Format < Basic::Format
7
- config_reader height: %w( content-height )
8
- config_checker true, auto_page_break: %w( auto-page-break )
9
-
10
- # @deprecated
11
- config_reader :header,
12
- :detail,
13
- :footer
14
- # @deprecated
15
- config_reader page_footer: %w( page-footer )
16
-
17
- config_checker true, has_header: %w( header enabled )
18
- config_checker true, has_footer: %w( footer enabled )
19
- config_checker true, has_page_footer: %w( page-footer enabled )
20
-
21
- config_reader page_footer_height: %w( page-footer height )
22
- config_reader footer_height: %w( footer height )
23
- config_reader header_height: %w( header height )
24
- config_reader detail_height: %w( detail height )
25
-
26
- attr_reader :sections
27
-
28
- def initialize(*)
29
- super
30
- initialize_sections
31
- end
32
-
33
- # @param [Symbol] section_name
34
- # @return [Hash]
35
- # @deprecated
36
- def section(section_name)
37
- __send__(section_name)
38
- end
39
-
40
- # @param [Symbol] section_name
41
- # @return [Boolean]
42
- def has_section?(section_name)
43
- section_name == :detail ? true : __send__(:"has_#{section_name}?")
44
- end
45
-
46
- # @param [Symbol] section_name
47
- # @return [Numeric]
48
- def section_height(section_name)
49
- has_section?(section_name) ? __send__(:"#{section_name}_height") : 0
50
- end
51
-
52
- # @param [:detai, :header, :page_footer, :footer] section_name
53
- # @return [Numeric]
54
- def section_base_position_top(section_name)
55
- section = @sections[section_name]
56
- return 0 unless has_section?(section_name)
57
-
58
- top = section.relative_top
59
-
60
- case section_name
61
- when :page_footer
62
- top - section_height(:detail)
63
- when :footer
64
- top - section_height(:detail) - section_height(:page_footer)
65
- else
66
- top
4
+ module Core
5
+ module Shape
6
+ module List
7
+ class Format < Basic::Format
8
+ config_reader height: %w[content-height]
9
+ config_checker true, auto_page_break: %w[auto-page-break]
10
+
11
+ # @deprecated
12
+ config_reader :header,
13
+ :detail,
14
+ :footer
15
+ # @deprecated
16
+ config_reader page_footer: %w[page-footer]
17
+
18
+ config_checker true, has_header: %w[header enabled]
19
+ config_checker true, has_footer: %w[footer enabled]
20
+ config_checker true, has_page_footer: %w[page-footer enabled]
21
+
22
+ config_reader page_footer_height: %w[page-footer height]
23
+ config_reader footer_height: %w[footer height]
24
+ config_reader header_height: %w[header height]
25
+ config_reader detail_height: %w[detail height]
26
+
27
+ attr_reader :sections
28
+
29
+ def initialize(*)
30
+ super
31
+ initialize_sections
32
+ end
33
+
34
+ # @param [Symbol] section_name
35
+ # @return [Hash]
36
+ # @deprecated
37
+ def section(section_name)
38
+ __send__(section_name)
39
+ end
40
+
41
+ # @param [Symbol] section_name
42
+ # @return [Boolean]
43
+ def has_section?(section_name)
44
+ section_name == :detail ? true : __send__(:"has_#{section_name}?")
45
+ end
46
+
47
+ # @param [Symbol] section_name
48
+ # @return [Numeric]
49
+ def section_height(section_name)
50
+ has_section?(section_name) ? __send__(:"#{section_name}_height") : 0
51
+ end
52
+
53
+ # @param [:detai, :header, :page_footer, :footer] section_name
54
+ # @return [Numeric]
55
+ def section_base_position_top(section_name)
56
+ section = @sections[section_name]
57
+ return 0 unless has_section?(section_name)
58
+
59
+ top = section.relative_top
60
+
61
+ case section_name
62
+ when :page_footer
63
+ top - section_height(:detail)
64
+ when :footer
65
+ top - section_height(:detail) - section_height(:page_footer)
66
+ else
67
+ top
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ def initialize_sections
74
+ @sections = {
75
+ detail: List::SectionFormat.new(attributes['detail'])
76
+ }
77
+
78
+ @sections[:header] = section_format('header') if has_section?(:header)
79
+ @sections[:page_footer] = section_format('page-footer') if has_section?(:page_footer)
80
+ @sections[:footer] = section_format('footer') if has_section?(:footer)
81
+ end
82
+
83
+ def section_format(section_name)
84
+ List::SectionFormat.new(attributes[section_name])
85
+ end
67
86
  end
68
87
  end
69
-
70
- private
71
-
72
- def initialize_sections
73
- @sections = {
74
- detail: List::SectionFormat.new(attributes['detail'])
75
- }
76
-
77
- @sections[:header] = List::SectionFormat.new(attributes['header']) if has_section?(:header)
78
- @sections[:page_footer] = List::SectionFormat.new(attributes['page-footer']) if has_section?(:page_footer)
79
- @sections[:footer] = List::SectionFormat.new(attributes['footer']) if has_section?(:footer)
80
- end
81
88
  end
82
-
83
89
  end
84
90
  end