write_xlsx 1.13.0 → 1.15.1

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +25 -4
  3. data/Changes +23 -0
  4. data/lib/write_xlsx/chart/area.rb +2 -2
  5. data/lib/write_xlsx/chart/axis.rb +55 -32
  6. data/lib/write_xlsx/chart/axis_writer.rb +528 -0
  7. data/lib/write_xlsx/chart/bar.rb +2 -2
  8. data/lib/write_xlsx/chart/caption.rb +16 -9
  9. data/lib/write_xlsx/chart/chart_area.rb +121 -0
  10. data/lib/write_xlsx/chart/column.rb +2 -2
  11. data/lib/write_xlsx/chart/d_pt_point_writer.rb +14 -0
  12. data/lib/write_xlsx/chart/doughnut.rb +0 -3
  13. data/lib/write_xlsx/chart/formatting_writer.rb +652 -0
  14. data/lib/write_xlsx/chart/initialization.rb +100 -0
  15. data/lib/write_xlsx/chart/line.rb +4 -3
  16. data/lib/write_xlsx/chart/pie.rb +6 -2
  17. data/lib/write_xlsx/chart/radar.rb +2 -2
  18. data/lib/write_xlsx/chart/scatter.rb +4 -3
  19. data/lib/write_xlsx/chart/series.rb +35 -15
  20. data/lib/write_xlsx/chart/series_data.rb +132 -0
  21. data/lib/write_xlsx/chart/series_writer.rb +318 -0
  22. data/lib/write_xlsx/chart/settings.rb +226 -0
  23. data/lib/write_xlsx/chart/stock.rb +2 -2
  24. data/lib/write_xlsx/chart/table.rb +50 -0
  25. data/lib/write_xlsx/chart/xml_writer.rb +305 -0
  26. data/lib/write_xlsx/chart.rb +286 -2477
  27. data/lib/write_xlsx/chartsheet.rb +31 -82
  28. data/lib/write_xlsx/constants.rb +11 -0
  29. data/lib/write_xlsx/drawing.rb +5 -3
  30. data/lib/write_xlsx/format/alignment_state.rb +39 -0
  31. data/lib/write_xlsx/format/alignment_style.rb +92 -0
  32. data/lib/write_xlsx/format/border_state.rb +47 -0
  33. data/lib/write_xlsx/format/border_style.rb +116 -0
  34. data/lib/write_xlsx/format/fill_state.rb +26 -0
  35. data/lib/write_xlsx/format/fill_style.rb +52 -0
  36. data/lib/write_xlsx/format/font_state.rb +74 -0
  37. data/lib/write_xlsx/format/font_style.rb +172 -0
  38. data/lib/write_xlsx/format/format_state.rb +65 -0
  39. data/lib/write_xlsx/format/number_format_state.rb +20 -0
  40. data/lib/write_xlsx/format/number_format_style.rb +28 -0
  41. data/lib/write_xlsx/format/protection_state.rb +20 -0
  42. data/lib/write_xlsx/format/protection_style.rb +28 -0
  43. data/lib/write_xlsx/format.rb +1093 -426
  44. data/lib/write_xlsx/formats.rb +0 -2
  45. data/lib/write_xlsx/image_property.rb +4 -1
  46. data/lib/write_xlsx/inserted_chart.rb +1 -1
  47. data/lib/write_xlsx/object_positioning.rb +15 -1
  48. data/lib/write_xlsx/package/app.rb +2 -2
  49. data/lib/write_xlsx/package/button.rb +6 -2
  50. data/lib/write_xlsx/package/comments.rb +11 -3
  51. data/lib/write_xlsx/package/conditional_format.rb +7 -3
  52. data/lib/write_xlsx/package/content_types.rb +2 -2
  53. data/lib/write_xlsx/package/core.rb +2 -2
  54. data/lib/write_xlsx/package/custom.rb +3 -2
  55. data/lib/write_xlsx/package/metadata.rb +2 -2
  56. data/lib/write_xlsx/package/packager.rb +0 -3
  57. data/lib/write_xlsx/package/relationships.rb +2 -2
  58. data/lib/write_xlsx/package/rich_value.rb +4 -2
  59. data/lib/write_xlsx/package/rich_value_rel.rb +2 -2
  60. data/lib/write_xlsx/package/rich_value_structure.rb +2 -2
  61. data/lib/write_xlsx/package/rich_value_types.rb +3 -3
  62. data/lib/write_xlsx/package/shared_strings.rb +2 -2
  63. data/lib/write_xlsx/package/styles.rb +13 -9
  64. data/lib/write_xlsx/package/table.rb +8 -2
  65. data/lib/write_xlsx/package/theme.rb +0 -3
  66. data/lib/write_xlsx/package/vml.rb +2 -2
  67. data/lib/write_xlsx/page_setup.rb +3 -1
  68. data/lib/write_xlsx/shape.rb +97 -100
  69. data/lib/write_xlsx/sheets.rb +6 -1
  70. data/lib/write_xlsx/sparkline.rb +2 -2
  71. data/lib/write_xlsx/utility/cell_reference.rb +124 -0
  72. data/lib/write_xlsx/utility/chart_formatting.rb +262 -0
  73. data/lib/write_xlsx/utility/common.rb +44 -0
  74. data/lib/write_xlsx/utility/date_time.rb +113 -0
  75. data/lib/write_xlsx/utility/dimensions.rb +40 -0
  76. data/lib/write_xlsx/utility/drawing.rb +136 -0
  77. data/lib/write_xlsx/utility/rich_text.rb +184 -0
  78. data/lib/write_xlsx/utility/sheetname_quoting.rb +73 -0
  79. data/lib/write_xlsx/utility/string_width.rb +45 -0
  80. data/lib/write_xlsx/utility/url.rb +27 -0
  81. data/lib/write_xlsx/utility/xml_primitives.rb +32 -0
  82. data/lib/write_xlsx/version.rb +1 -1
  83. data/lib/write_xlsx/workbook/chart_data.rb +188 -0
  84. data/lib/write_xlsx/workbook/format_preparation.rb +199 -0
  85. data/lib/write_xlsx/workbook/initialization.rb +223 -0
  86. data/lib/write_xlsx/workbook/package_preparation.rb +231 -0
  87. data/lib/write_xlsx/workbook/workbook_writer.rb +164 -0
  88. data/lib/write_xlsx/workbook.rb +143 -981
  89. data/lib/write_xlsx/worksheet/autofilter.rb +3 -1
  90. data/lib/write_xlsx/worksheet/cell_data.rb +5 -1
  91. data/lib/write_xlsx/worksheet/columns.rb +8 -3
  92. data/lib/write_xlsx/worksheet/data_validation.rb +9 -1
  93. data/lib/write_xlsx/worksheet/data_writing.rb +42 -15
  94. data/lib/write_xlsx/worksheet/drawing_preparation.rb +1 -1
  95. data/lib/write_xlsx/worksheet/formatting.rb +3 -1
  96. data/lib/write_xlsx/worksheet/hyperlink.rb +9 -1
  97. data/lib/write_xlsx/worksheet/row_col_sizing.rb +3 -1
  98. data/lib/write_xlsx/worksheet/xml_writer.rb +9 -4
  99. data/lib/write_xlsx/worksheet.rb +19 -2
  100. metadata +42 -3
  101. data/lib/write_xlsx/utility.rb +0 -1034
@@ -11,19 +11,39 @@
11
11
  # Convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
12
12
  #
13
13
 
14
+ require 'forwardable'
14
15
  require 'write_xlsx/worksheet'
15
16
 
16
17
  module Writexlsx
17
18
  class Chartsheet < Worksheet
18
- include Writexlsx::Utility
19
+ extend Forwardable
19
20
 
20
21
  attr_writer :chart
21
22
 
23
+ def_delegators :@chart,
24
+ :add_series,
25
+ :set_x_axis,
26
+ :set_y_axis,
27
+ :set_x2_axis,
28
+ :set_y2_axis,
29
+ :set_title,
30
+ :set_legend,
31
+ :set_plotarea,
32
+ :set_chartarea,
33
+ :set_style,
34
+ :show_blanks_as,
35
+ :show_hidden_data,
36
+ :set_size,
37
+ :set_table,
38
+ :set_up_down_bars,
39
+ :set_drop_lines,
40
+ :set_high_low_lines
41
+
22
42
  def initialize(workbook, index, name)
23
43
  super
24
- @drawings = Drawings.new
25
- @is_chartsheet = true
26
- @chart = nil
44
+ @drawings = Drawings.new
45
+ @is_chartsheet = true
46
+ @chart = nil
27
47
  @zoom_scale_normal = 0
28
48
  @page_setup.orientation = false
29
49
  end
@@ -94,88 +114,17 @@ module Writexlsx
94
114
  @chart.protection = 1
95
115
 
96
116
  # Turn off worksheet defaults.
97
- options[:sheet] = 0
117
+ options[:sheet] = 0
98
118
  options[:scenarios] = 1
99
119
 
100
120
  super(password, options)
101
121
  end
102
122
 
103
- ###############################################################################
104
123
  #
105
- # Encapsulated Chart methods.
124
+ # Set the option for displaying #N/A as an empty cell in a chart.
106
125
  #
107
- ###############################################################################
108
-
109
- def add_series(*args)
110
- @chart.add_series(*args)
111
- end
112
-
113
- def set_x_axis(*args)
114
- @chart.set_x_axis(*args)
115
- end
116
-
117
- def set_y_axis(*args)
118
- @chart.set_y_axis(*args)
119
- end
120
-
121
- def set_x2_axis(*args)
122
- @chart.set_x2_axis(*args)
123
- end
124
-
125
- def set_y2_axis(*args)
126
- @chart.set_y2_axis(*args)
127
- end
128
-
129
- def set_title(*args)
130
- @chart.set_title(*args)
131
- end
132
-
133
- def set_legend(*args)
134
- @chart.set_legend(*args)
135
- end
136
-
137
- def set_plotarea(*args)
138
- @chart.set_plotarea(*args)
139
- end
140
-
141
- def set_chartarea(*args)
142
- @chart.set_chartarea(*args)
143
- end
144
-
145
- def set_style(*args)
146
- @chart.set_style(*args)
147
- end
148
-
149
- def show_blanks_as(*args)
150
- @chart.show_blanks_as(*args)
151
- end
152
-
153
126
  def show_na_as_empty_cell
154
- @chart.show_na_as_empty_cell(*args)
155
- end
156
-
157
- def show_hidden_data(*args)
158
- @chart.show_hidden_data(*args)
159
- end
160
-
161
- def set_size(*args)
162
- @chart.set_size(*args)
163
- end
164
-
165
- def set_table(*args)
166
- @chart.set_table(*args)
167
- end
168
-
169
- def set_up_down_bars(*args)
170
- @chart.set_up_down_bars(*args)
171
- end
172
-
173
- def set_drop_lines(*args)
174
- @chart.set_drop_lines(*args)
175
- end
176
-
177
- def set_high_low_lines(*args)
178
- @chart.set_high_low_lines(*args)
127
+ @chart.show_na_as_empty_cell
179
128
  end
180
129
 
181
130
  #
@@ -184,7 +133,7 @@ module Writexlsx
184
133
  def prepare_chart(_index, chart_id, drawing_id) # :nodoc:
185
134
  @chart.id = chart_id - 1
186
135
 
187
- drawings = Drawings.new
136
+ drawings = Drawings.new
188
137
  @drawings = drawings
189
138
  @drawings.orientation = @page_setup.orientation
190
139
 
@@ -206,12 +155,12 @@ module Writexlsx
206
155
  # Write the <chartsheet> element. This is the root element of Chartsheet.
207
156
  #
208
157
  def write_chartsheet(&block) # :nodoc:
209
- schema = 'http://schemas.openxmlformats.org/'
210
- xmlns = schema + 'spreadsheetml/2006/main'
158
+ schema = 'http://schemas.openxmlformats.org/'
159
+ xmlns = schema + 'spreadsheetml/2006/main'
211
160
  xmlns_r = schema + 'officeDocument/2006/relationships'
212
161
 
213
162
  attributes = [
214
- ['xmlns', xmlns],
163
+ ['xmlns', xmlns],
215
164
  ['xmlns:r', xmlns_r]
216
165
  ]
217
166
 
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ module Constants
6
+ ROW_MAX = 1048576 # :nodoc:
7
+ COL_MAX = 16384 # :nodoc:
8
+ STR_MAX = 32767 # :nodoc:
9
+ SHEETNAME_MAX = 31 # :nodoc:
10
+ end
11
+ end
@@ -2,11 +2,13 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'write_xlsx/package/xml_writer_simple'
5
- require 'write_xlsx/utility'
5
+ require 'write_xlsx/utility/common'
6
+ require 'write_xlsx/utility/xml_primitives'
6
7
 
7
8
  module Writexlsx
8
9
  class Drawing
9
- include Writexlsx::Utility
10
+ include Writexlsx::Utility::Common
11
+ include Writexlsx::Utility::XmlPrimitives
10
12
 
11
13
  attr_accessor :type, :dimensions, :width, :height, :shape, :anchor, :rel_index, :url_rel_index, :name, :description
12
14
  attr_reader :tip, :decorative
@@ -871,7 +873,7 @@ module Writexlsx
871
873
  end
872
874
 
873
875
  class Drawings
874
- include Writexlsx::Utility
876
+ include Writexlsx::Utility::XmlPrimitives
875
877
 
876
878
  attr_writer :embedded, :orientation
877
879
 
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class AlignmentState
7
+ attr_accessor :horizontal, :vertical,
8
+ :wrap, :justlast, :rotation,
9
+ :indent, :shrink, :merge_range,
10
+ :reading_order, :just_distrib
11
+
12
+ def initialize
13
+ @horizontal = 0
14
+ @vertical = 0
15
+ @wrap = 0
16
+ @justlast = 0
17
+ @rotation = 0
18
+ @indent = 0
19
+ @shrink = 0
20
+ @merge_range = 0
21
+ @reading_order = 0
22
+ @just_distrib = 0
23
+ end
24
+
25
+ def initialize_copy(other)
26
+ @horizontal = other.horizontal
27
+ @vertical = other.vertical
28
+ @wrap = other.wrap
29
+ @justlast = other.justlast
30
+ @rotation = other.rotation
31
+ @indent = other.indent
32
+ @shrink = other.shrink
33
+ @merge_range = other.merge_range
34
+ @reading_order = other.reading_order
35
+ @just_distrib = other.just_distrib
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,92 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class AlignmentStyle
7
+ def initialize(format)
8
+ @format = format
9
+ end
10
+
11
+ def horizontal
12
+ @format.state.alignment.horizontal
13
+ end
14
+
15
+ def horizontal=(value)
16
+ @format.state.alignment.horizontal = value
17
+ end
18
+
19
+ def wrap
20
+ @format.state.alignment.wrap
21
+ end
22
+
23
+ def wrap=(value)
24
+ @format.state.alignment.wrap = value
25
+ end
26
+
27
+ def vertical
28
+ @format.state.alignment.vertical
29
+ end
30
+
31
+ def vertical=(value)
32
+ @format.state.alignment.vertical = value
33
+ end
34
+
35
+ def justlast
36
+ @format.state.alignment.justlast
37
+ end
38
+
39
+ def justlast=(value)
40
+ @format.state.alignment.justlast = value
41
+ end
42
+
43
+ def rotation
44
+ @format.state.alignment.rotation
45
+ end
46
+
47
+ def rotation=(value)
48
+ @format.state.alignment.rotation = value
49
+ end
50
+
51
+ def indent
52
+ @format.state.alignment.indent
53
+ end
54
+
55
+ def indent=(value)
56
+ @format.state.alignment.indent = value
57
+ end
58
+
59
+ def shrink
60
+ @format.state.alignment.shrink
61
+ end
62
+
63
+ def shrink=(value)
64
+ @format.state.alignment.shrink = value
65
+ end
66
+
67
+ def merge_range
68
+ @format.state.alignment.merge_range
69
+ end
70
+
71
+ def merge_range=(value)
72
+ @format.state.alignment.merge_range = value
73
+ end
74
+
75
+ def reading_order
76
+ @format.state.alignment.reading_order
77
+ end
78
+
79
+ def reading_order=(value)
80
+ @format.state.alignment.reading_order = value
81
+ end
82
+
83
+ def just_distrib
84
+ @format.state.alignment.just_distrib
85
+ end
86
+
87
+ def just_distrib=(value)
88
+ @format.state.alignment.just_distrib = value
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class BorderState
7
+ attr_accessor :index, :count,
8
+ :bottom, :bottom_color,
9
+ :diag_border, :diag_color, :diag_type,
10
+ :left, :left_color,
11
+ :right, :right_color,
12
+ :top, :top_color
13
+
14
+ def initialize
15
+ @index = 0
16
+ @count = 0
17
+ @bottom = 0
18
+ @bottom_color = 0x0
19
+ @diag_border = 0
20
+ @diag_color = 0x0
21
+ @diag_type = 0
22
+ @left = 0
23
+ @left_color = 0x0
24
+ @right = 0
25
+ @right_color = 0x0
26
+ @top = 0
27
+ @top_color = 0x0
28
+ end
29
+
30
+ def initialize_copy(other)
31
+ @index = other.index
32
+ @count = other.count
33
+ @bottom = other.bottom
34
+ @bottom_color = other.bottom_color
35
+ @diag_border = other.diag_border
36
+ @diag_color = other.diag_color
37
+ @diag_type = other.diag_type
38
+ @left = other.left
39
+ @left_color = other.left_color
40
+ @right = other.right
41
+ @right_color = other.right_color
42
+ @top = other.top
43
+ @top_color = other.top_color
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,116 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class BorderStyle
7
+ def initialize(format)
8
+ @format = format
9
+ end
10
+
11
+ def index
12
+ @format.state.border.index
13
+ end
14
+
15
+ def index=(value)
16
+ @format.state.border.index = value
17
+ end
18
+
19
+ def count
20
+ @format.state.border.count
21
+ end
22
+
23
+ def count=(value)
24
+ @format.state.border.count = value
25
+ end
26
+
27
+ def left
28
+ @format.state.border.left
29
+ end
30
+
31
+ def left=(value)
32
+ @format.state.border.left = value
33
+ end
34
+
35
+ def left_color
36
+ @format.state.border.left_color
37
+ end
38
+
39
+ def left_color=(value)
40
+ @format.state.border.left_color = value
41
+ end
42
+
43
+ def right
44
+ @format.state.border.right
45
+ end
46
+
47
+ def right=(value)
48
+ @format.state.border.right = value
49
+ end
50
+
51
+ def right_color
52
+ @format.state.border.right_color
53
+ end
54
+
55
+ def right_color=(value)
56
+ @format.state.border.right_color = value
57
+ end
58
+
59
+ def top
60
+ @format.state.border.top
61
+ end
62
+
63
+ def top=(value)
64
+ @format.state.border.top = value
65
+ end
66
+
67
+ def top_color
68
+ @format.state.border.top_color
69
+ end
70
+
71
+ def top_color=(value)
72
+ @format.state.border.top_color = value
73
+ end
74
+
75
+ def bottom
76
+ @format.state.border.bottom
77
+ end
78
+
79
+ def bottom=(value)
80
+ @format.state.border.bottom = value
81
+ end
82
+
83
+ def bottom_color
84
+ @format.state.border.bottom_color
85
+ end
86
+
87
+ def bottom_color=(value)
88
+ @format.state.border.bottom_color = value
89
+ end
90
+
91
+ def diag_border
92
+ @format.state.border.diag_border
93
+ end
94
+
95
+ def diag_border=(value)
96
+ @format.state.border.diag_border = value
97
+ end
98
+
99
+ def diag_color
100
+ @format.state.border.diag_color
101
+ end
102
+
103
+ def diag_color=(value)
104
+ @format.state.border.diag_color = value
105
+ end
106
+
107
+ def diag_type
108
+ @format.state.border.diag_type
109
+ end
110
+
111
+ def diag_type=(value)
112
+ @format.state.border.diag_type = value
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class FillState
7
+ attr_accessor :fg_color, :bg_color, :pattern, :index, :count
8
+
9
+ def initialize
10
+ @fg_color = 0x00
11
+ @bg_color = 0x00
12
+ @pattern = 0
13
+ @index = 0
14
+ @count = 0
15
+ end
16
+
17
+ def initialize_copy(other)
18
+ @fg_color = other.fg_color
19
+ @bg_color = other.bg_color
20
+ @pattern = other.pattern
21
+ @index = other.index
22
+ @count = other.count
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class FillStyle
7
+ def initialize(format)
8
+ @format = format
9
+ end
10
+
11
+ def fg_color
12
+ @format.state.fill.fg_color
13
+ end
14
+
15
+ def bg_color
16
+ @format.state.fill.bg_color
17
+ end
18
+
19
+ def pattern
20
+ @format.state.fill.pattern
21
+ end
22
+
23
+ def index
24
+ @format.state.fill.index
25
+ end
26
+
27
+ def count
28
+ @format.state.fill.count
29
+ end
30
+
31
+ def fg_color=(value)
32
+ @format.state.fill.fg_color = value
33
+ end
34
+
35
+ def bg_color=(value)
36
+ @format.state.fill.bg_color = value
37
+ end
38
+
39
+ def pattern=(value)
40
+ @format.state.fill.pattern = value
41
+ end
42
+
43
+ def index=(value)
44
+ @format.state.fill.index = value
45
+ end
46
+
47
+ def count=(value)
48
+ @format.state.fill.count = value
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,74 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class FontState
7
+ attr_accessor(
8
+ :index,
9
+ :name,
10
+ :size,
11
+ :bold,
12
+ :italic,
13
+ :color,
14
+ :underline,
15
+ :strikeout,
16
+ :outline,
17
+ :shadow,
18
+ :script,
19
+ :family,
20
+ :charset,
21
+ :scheme,
22
+ :condense,
23
+ :extend,
24
+ :theme,
25
+ :hyperlink,
26
+ :color_indexed
27
+ )
28
+
29
+ def initialize
30
+ @index = 0
31
+ @name = 'Calibri'
32
+ @size = 11
33
+ @bold = 0
34
+ @italic = 0
35
+ @color = 0x0
36
+ @underline = 0
37
+ @strikeout = 0
38
+ @outline = 0
39
+ @shadow = 0
40
+ @script = 0
41
+ @family = 2
42
+ @charset = 0
43
+ @scheme = 'minor'
44
+ @condense = 0
45
+ @extend = 0
46
+ @theme = 0
47
+ @hyperlink = 0
48
+ @color_indexed = 0
49
+ end
50
+
51
+ def initialize_copy(other)
52
+ @index = other.index
53
+ @name = other.name
54
+ @size = other.size
55
+ @bold = other.bold
56
+ @italic = other.italic
57
+ @color = other.color
58
+ @underline = other.underline
59
+ @strikeout = other.strikeout
60
+ @outline = other.outline
61
+ @shadow = other.shadow
62
+ @script = other.script
63
+ @family = other.family
64
+ @charset = other.charset
65
+ @scheme = other.scheme
66
+ @condense = other.condense
67
+ @extend = other.extend
68
+ @theme = other.theme
69
+ @hyperlink = other.hyperlink
70
+ @color_indexed = other.color_indexed
71
+ end
72
+ end
73
+ end
74
+ end