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,145 +1,146 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class Style::Base
7
- include Utils
8
-
9
- class << self
10
- # @param [Symbol] style_method
11
- # @param [String] style
12
- # @return [void]
13
- def style_accessor(style_method, style)
14
- style_reader(style_method, style)
15
- style_writer(style_method, style)
16
- end
17
-
18
- # @see .style_accessor
19
- def style_reader(style_method, style)
20
- define_method(style_method) do
21
- read_internal_style(style)
4
+ module Core
5
+ module Shape
6
+ module Style
7
+ class Base
8
+ include Utils
9
+
10
+ class << self
11
+ # @param [Symbol] style_method
12
+ # @param [String] style
13
+ # @return [void]
14
+ def style_accessor(style_method, style)
15
+ style_reader(style_method, style)
16
+ style_writer(style_method, style)
17
+ end
18
+
19
+ # @see .style_accessor
20
+ def style_reader(style_method, style)
21
+ define_method(style_method) do
22
+ read_internal_style(style)
23
+ end
24
+ end
25
+
26
+ # @see .style_accessor
27
+ def style_writer(style_method, style)
28
+ define_method(:"#{style_method}=") do |value|
29
+ write_internal_style(style, value)
30
+ end
31
+ end
32
+
33
+ # @param [Array<Symbol>] style_methods
34
+ def style_accessible(*style_methods)
35
+ accessible_styles.concat(style_methods)
36
+ end
37
+
38
+ # @return [Array<Symbol>]
39
+ def accessible_styles
40
+ @accessible_styles ||= []
41
+ end
42
+
43
+ def inherited(s)
44
+ s.accessible_styles.concat(accessible_styles.dup)
45
+ end
22
46
  end
23
- end
24
47
 
25
- # @see .style_accessor
26
- def style_writer(style_method, style)
27
- define_method(:"#{style_method}=") do |value|
28
- write_internal_style(style, value)
29
- end
30
- end
31
-
32
- # @param [Array<Symbol>] style_methods
33
- def style_accessible(*style_methods)
34
- accessible_styles.concat(style_methods)
35
- end
36
-
37
- # @return [Array<Symbol>]
38
- def accessible_styles
39
- @accessible_styles ||= []
40
- end
48
+ # @return [Hash]
49
+ attr_accessor :styles
50
+ # @see .accessible_styles
51
+ attr_reader :accessible_styles
41
52
 
42
- def inherited(s)
43
- s.accessible_styles.concat(accessible_styles.dup)
44
- end
45
- end
53
+ # @param [Thinreports::Core::Format::Base] format
54
+ # @param [Hash] default_styles ({})
55
+ def initialize(format, default_styles = {})
56
+ @format = format
57
+ @styles = default_styles
58
+ @base_styles = format.style || {}
46
59
 
47
- # @return [Hash]
48
- attr_accessor :styles
49
- # @see .accessible_styles
50
- attr_reader :accessible_styles
60
+ @accessible_styles = self.class.accessible_styles.dup
61
+ end
51
62
 
52
- # @param [Thinreports::Core::Format::Base] format
53
- # @param [Hash] default_styles ({})
54
- def initialize(format, default_styles = {})
55
- @format = format
56
- @styles = default_styles
57
- @base_styles = format.style || {}
63
+ # @param [Symbol] style_method
64
+ # @return [Object]
65
+ def [](style_method)
66
+ verify_style_method(style_method)
67
+ send(style_method.to_sym)
68
+ end
58
69
 
59
- @accessible_styles = self.class.accessible_styles.dup
60
- end
70
+ # @param [Symbol] style_method
71
+ # @param [String, Number, Array<String, Number>] value
72
+ def []=(style_method, value)
73
+ verify_style_method(style_method)
74
+ send(:"#{style_method}=", value)
75
+ end
61
76
 
62
- # @param [Symbol] style_method
63
- # @return [Object]
64
- def [](style_method)
65
- verify_style_method(style_method)
66
- send(style_method.to_sym)
67
- end
77
+ # @return [String]
78
+ def identifier
79
+ create_identifier(@styles)
80
+ end
68
81
 
69
- # @param [Symbol] style_method
70
- # @param [String, Number, Array<String, Number>] value
71
- def []=(style_method, value)
72
- verify_style_method(style_method)
73
- send(:"#{style_method}=", value)
74
- end
82
+ # @return [self]
83
+ def copy
84
+ self.class.new(@format, @styles.empty? ? {} : deep_copy(@styles))
85
+ end
75
86
 
76
- # @return [String]
77
- def identifier
78
- create_identifier(@styles)
79
- end
87
+ # @param [String, Symbol] style
88
+ # @return [Object]
89
+ def read_internal_style(style)
90
+ style = style.to_s
91
+ @styles.key?(style) ? @styles[style] : @base_styles[style]
92
+ end
80
93
 
81
- # @return [self]
82
- def copy
83
- self.class.new(@format, @styles.empty? ? {} : deep_copy(@styles))
84
- end
94
+ # @param [String, Symbol] style
95
+ # @param [Object] value
96
+ def write_internal_style(style, value)
97
+ @styles[style.to_s] = value
98
+ end
85
99
 
86
- # @param [String, Symbol] style
87
- # @return [Object]
88
- def read_internal_style(style)
89
- style = style.to_s
90
- @styles.key?(style) ? @styles[style] : @base_styles[style]
91
- end
100
+ # @param [Symbol] style_method
101
+ # @return [Boolean]
102
+ def has_style?(style_method)
103
+ accessible_styles.include?(style_method)
104
+ end
92
105
 
93
- # @param [String, Symbol] style
94
- # @param [Object] value
95
- def write_internal_style(style, value)
96
- @styles[style.to_s] = value
97
- end
106
+ # @return [Hash]
107
+ def finalized_styles
108
+ @finalized_styles ||=
109
+ if @styles.empty?
110
+ @base_styles.dup
111
+ else
112
+ @base_styles.merge(@styles)
113
+ end
114
+ end
98
115
 
99
- # @param [Symbol] style_method
100
- # @return [Boolean]
101
- def has_style?(style_method)
102
- accessible_styles.include?(style_method)
103
- end
116
+ private
104
117
 
105
- # @return [Hash]
106
- def finalized_styles
107
- @finalized_styles ||=
108
- if @styles.empty?
109
- @base_styles.dup
110
- else
111
- @base_styles.merge(@styles)
118
+ # @param [Hash] s
119
+ # @return [String]
120
+ def create_identifier(s)
121
+ s.empty? ? '' : s.hash.to_s
112
122
  end
113
- end
114
123
 
115
- private
124
+ # @param [Symbol] style_method
125
+ # @raise Thinreports::Errors::UnknownShapeStyleName
126
+ def verify_style_method(style_method)
127
+ return if has_style?(style_method)
116
128
 
117
- # @param [Hash] s
118
- # @return [String]
119
- def create_identifier(s)
120
- s.empty? ? '' : s.hash.to_s
121
- end
122
-
123
- # @param [Symbol] style_method
124
- # @return [Boolean]
125
- # @raise Thinreports::Errors::UnknownShapeStyleName
126
- def verify_style_method(style_method)
127
- unless has_style?(style_method)
128
- raise Thinreports::Errors::UnknownShapeStyleName.new(style_method,
129
- accessible_styles)
130
- end
131
- end
129
+ raise Thinreports::Errors::UnknownShapeStyleName.new(
130
+ style_method,
131
+ accessible_styles
132
+ )
133
+ end
132
134
 
133
- # @param [Object] value
134
- # @param [Array<Object>] allows
135
- # @param [String] msg (nil)
136
- # @raise ArgumentError
137
- def verify_style_value(value, allows, msg = nil)
138
- unless allows.include?(value)
139
- raise ArgumentError, msg
135
+ # @param [Object] value
136
+ # @param [Array<Object>] allows
137
+ # @param [String] msg (nil)
138
+ # @raise ArgumentError
139
+ def verify_style_value(value, allows, msg = nil)
140
+ raise ArgumentError, msg unless allows.include?(value)
141
+ end
140
142
  end
141
143
  end
142
144
  end
143
-
144
145
  end
145
146
  end
@@ -1,17 +1,19 @@
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 Style
7
+ class Basic < Style::Base
8
+ style_accessible :visible
9
+ attr_accessor :visible
5
10
 
6
- class Style::Basic < Style::Base
7
- style_accessible :visible
8
- attr_accessor :visible
9
-
10
- def initialize(*args)
11
- super
12
- @visible = @format.display?
11
+ def initialize(*args)
12
+ super
13
+ @visible = @format.display?
14
+ end
15
+ end
13
16
  end
14
17
  end
15
-
16
18
  end
17
19
  end
@@ -1,39 +1,41 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class Style::Graphic < Style::Basic
7
- style_accessible :border_color, :border_width, :fill_color, :border
8
-
9
- # @method border_color
10
- # @return [String]
11
- # @method border_color=(color)
12
- # @param [String] color
13
- style_accessor :border_color, 'border-color'
14
-
15
- # @method border_width
16
- # @return [Number]
17
- style_accessor :border_width, 'border-width'
18
-
19
- # @method fill_color
20
- # @return [String]
21
- # @method fill_color=(color)
22
- # @param [String] color
23
- style_accessor :fill_color, 'fill-color'
24
-
25
- # @return [Array<String, Number>]
26
- def border
27
- [self.border_width, self.border_color]
28
- end
29
-
30
- # @param [Array<String, Number>] width_and_color
31
- def border=(width_and_color)
32
- w, c = width_and_color
33
- self.border_width = w
34
- self.border_color = c
4
+ module Core
5
+ module Shape
6
+ module Style
7
+ class Graphic < Style::Basic
8
+ style_accessible :border_color, :border_width, :fill_color, :border
9
+
10
+ # @method border_color
11
+ # @return [String]
12
+ # @method border_color=(color)
13
+ # @param [String] color
14
+ style_accessor :border_color, 'border-color'
15
+
16
+ # @method border_width
17
+ # @return [Number]
18
+ style_accessor :border_width, 'border-width'
19
+
20
+ # @method fill_color
21
+ # @return [String]
22
+ # @method fill_color=(color)
23
+ # @param [String] color
24
+ style_accessor :fill_color, 'fill-color'
25
+
26
+ # @return [Array<String, Number>]
27
+ def border
28
+ [border_width, border_color]
29
+ end
30
+
31
+ # @param [Array<String, Number>] width_and_color
32
+ def border=(width_and_color)
33
+ w, c = width_and_color
34
+ self.border_width = w
35
+ self.border_color = c
36
+ end
37
+ end
35
38
  end
36
39
  end
37
-
38
40
  end
39
41
  end
@@ -1,114 +1,120 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Thinreports
4
- module Core::Shape
5
-
6
- class Style::Text < Style::Basic
7
- style_accessible :bold, :italic, :underline, :linethrough,
8
- :align, :valign, :color, :font_size
9
-
10
- # @method color
11
- # @return [String]
12
- # @method color=(v)
13
- # @param [String] v
14
- style_accessor :color, 'color'
15
-
16
- # @method font_size
17
- # @return [Numeric, String]
18
- # @method font_size=(v)
19
- # @param [Numeric, String]
20
- style_accessor :font_size, 'font-size'
21
-
22
- def initialize(*)
23
- super
24
- initialize_font_style
25
- end
26
-
27
- # @return [Boolean]
28
- def bold
29
- read_internal_style('font-style').include?('bold')
30
- end
31
-
32
- # @param [Boolean] enable
33
- def bold=(enable)
34
- write_font_style('bold', enable)
35
- end
36
-
37
- # @return [Boolean]
38
- def italic
39
- read_internal_style('font-style').include?('italic')
40
- end
41
-
42
- # @param [Boolean] enable
43
- def italic=(enable)
44
- write_font_style('italic', enable)
45
- end
46
-
47
- # @return [Boolean]
48
- def underline
49
- read_internal_style('font-style').include?('underline')
50
- end
51
-
52
- # @param [Boolean] enable
53
- def underline=(enable)
54
- write_font_style('underline', enable)
55
- end
56
-
57
- # @return [Boolean]
58
- def linethrough
59
- read_internal_style('font-style').include?('linethrough')
60
- end
61
-
62
- # @param [Boolean] enable
63
- def linethrough=(enable)
64
- write_font_style('linethrough', enable)
65
- end
66
-
67
- # @return [:left, :center, :right]
68
- def align
69
- read_internal_style('text-align').to_sym
70
- end
71
-
72
- # @param [:left, :center, :right] align_name
73
- def align=(align_name)
74
- verify_style_value(align_name, [:left, :center, :right],
75
- 'Only :left or :center, :right can be specified as align.')
76
- write_internal_style('text-align', align_name.to_s)
77
- end
78
-
79
- # @return [:top, :middle, :bottom]
80
- def valign
81
- vertical_align = read_internal_style('vertical-align')
82
- blank_value?(vertical_align) ? :top : vertical_align.to_sym
83
- end
84
-
85
- # @param [:top, :center, :middle, :bottom] valign_name
86
- def valign=(valign_name)
87
- if valign_name == :center
88
- warn '[DEPRECATION] :center value for valign style is deprecated and will be removed in thinreports-generator 1.0.' \
89
- ' Please use :middle instead of :center.'
90
- valign_name = :middle
91
- end
92
-
93
- verify_style_value(valign_name, [:top, :middle, :bottom],
94
- 'Only :top or :middle (:center), :bottom can be specified as valign.')
95
- write_internal_style('vertical-align', valign_name.to_s)
96
- end
97
-
98
- private
99
-
100
- def initialize_font_style
101
- styles['font-style'] ||= (@base_styles['font-style'] || []).dup
102
- end
103
-
104
- def write_font_style(style_name, enable)
105
- if enable
106
- styles['font-style'].push(style_name).uniq!
107
- else
108
- styles['font-style'].delete(style_name)
4
+ module Core
5
+ module Shape
6
+ module Style
7
+ class Text < Style::Basic
8
+ style_accessible :bold, :italic, :underline, :linethrough,
9
+ :align, :valign, :color, :font_size
10
+
11
+ # @method color
12
+ # @return [String]
13
+ # @method color=(v)
14
+ # @param [String] v
15
+ style_accessor :color, 'color'
16
+
17
+ # @method font_size
18
+ # @return [Numeric, String]
19
+ # @method font_size=(v)
20
+ # @param [Numeric, String] v
21
+ style_accessor :font_size, 'font-size'
22
+
23
+ def initialize(*)
24
+ super
25
+ initialize_font_style
26
+ end
27
+
28
+ # @return [Boolean]
29
+ def bold
30
+ read_internal_style('font-style').include?('bold')
31
+ end
32
+
33
+ # @param [Boolean] enable
34
+ def bold=(enable)
35
+ write_font_style('bold', enable)
36
+ end
37
+
38
+ # @return [Boolean]
39
+ def italic
40
+ read_internal_style('font-style').include?('italic')
41
+ end
42
+
43
+ # @param [Boolean] enable
44
+ def italic=(enable)
45
+ write_font_style('italic', enable)
46
+ end
47
+
48
+ # @return [Boolean]
49
+ def underline
50
+ read_internal_style('font-style').include?('underline')
51
+ end
52
+
53
+ # @param [Boolean] enable
54
+ def underline=(enable)
55
+ write_font_style('underline', enable)
56
+ end
57
+
58
+ # @return [Boolean]
59
+ def linethrough
60
+ read_internal_style('font-style').include?('linethrough')
61
+ end
62
+
63
+ # @param [Boolean] enable
64
+ def linethrough=(enable)
65
+ write_font_style('linethrough', enable)
66
+ end
67
+
68
+ # @return [:left, :center, :right]
69
+ def align
70
+ read_internal_style('text-align').to_sym
71
+ end
72
+
73
+ # @param [:left, :center, :right] align_name
74
+ def align=(align_name)
75
+ verify_style_value(align_name, %i[left center right],
76
+ 'Only :left or :center, :right can be specified as align.')
77
+ write_internal_style('text-align', align_name.to_s)
78
+ end
79
+
80
+ # @return [:top, :middle, :bottom]
81
+ def valign
82
+ vertical_align = read_internal_style('vertical-align')
83
+ blank_value?(vertical_align) ? :top : vertical_align.to_sym
84
+ end
85
+
86
+ # @param [:top, :center, :middle, :bottom] valign_name
87
+ def valign=(valign_name)
88
+ if valign_name == :center
89
+ warn '[DEPRECATION] :center value for valign style is deprecated' \
90
+ ' and will be removed in thinreports-generator 1.0.' \
91
+ ' Please use :middle instead of :center.'
92
+ valign_name = :middle
93
+ end
94
+
95
+ verify_style_value(
96
+ valign_name,
97
+ %i[top middle bottom],
98
+ 'Only :top or :middle (:center), :bottom can be specified as valign.'
99
+ )
100
+ write_internal_style('vertical-align', valign_name.to_s)
101
+ end
102
+
103
+ private
104
+
105
+ def initialize_font_style
106
+ styles['font-style'] ||= (@base_styles['font-style'] || []).dup
107
+ end
108
+
109
+ def write_font_style(style_name, enable)
110
+ if enable
111
+ styles['font-style'].push(style_name).uniq!
112
+ else
113
+ styles['font-style'].delete(style_name)
114
+ end
115
+ end
109
116
  end
110
117
  end
111
118
  end
112
-
113
119
  end
114
120
  end