write_xlsx 0.0.3 → 0.0.4

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.
@@ -37,15 +37,12 @@ def write_chart_type
37
37
  # Write the <c:areaChart> element.
38
38
  #
39
39
  def write_area_chart
40
- @writer.start_tag('c:areaChart')
41
-
42
- # Write the c:grouping element.
43
- write_grouping('standard')
44
-
45
- # Write the series elements.
46
- write_series
47
-
48
- @writer.end_tag('c:areaChart')
40
+ @writer.tag_elements('c:areaChart') do
41
+ # Write the c:grouping element.
42
+ write_grouping('standard')
43
+ # Write the series elements.
44
+ write_series
45
+ end
49
46
  end
50
47
  end
51
48
  end
@@ -39,29 +39,6 @@ def write_chart_type
39
39
  write_bar_chart
40
40
  end
41
41
 
42
- #
43
- # Write the <c:barChart> element.
44
- #
45
- def write_bar_chart
46
- subtype = @subtype
47
-
48
- subtype = 'percentStacked' if subtype == 'percent_stacked'
49
-
50
- @writer.start_tag('c:barChart')
51
-
52
- # Write the c:barDir element.
53
- write_bar_dir
54
-
55
- # Write the c:grouping element.
56
- write_grouping(subtype)
57
-
58
- # Write the series elements.
59
- write_series
60
-
61
- @writer.end_tag('c:barChart')
62
- end
63
-
64
-
65
42
  #
66
43
  # Write the <c:barDir> element.
67
44
  #
@@ -79,27 +56,7 @@ def write_bar_dir
79
56
  # Write the series elements.
80
57
  #
81
58
  def write_series
82
- # Write each series with subelements.
83
- index = 0
84
- @series.each do |series|
85
- write_ser(index, series)
86
- index += 1
87
- end
88
-
89
-
90
- # Write the c:marker element.
91
- write_marker_value
92
-
93
- # Write the c:overlap element.
94
- write_overlap if @subtype =~ /stacked/
95
-
96
- # Generate the axis ids.
97
- add_axis_id
98
- add_axis_id
99
-
100
- # Write the c:axId element.
101
- write_axis_id(@axis_ids[0])
102
- write_axis_id(@axis_ids[1])
59
+ write_series_base {write_overlap if @subtype =~ /stacked/}
103
60
  end
104
61
 
105
62
 
@@ -42,32 +42,6 @@ def write_chart_type
42
42
  write_bar_chart
43
43
  end
44
44
 
45
-
46
- ##############################################################################
47
- #
48
- # _write_bar_chart
49
- #
50
- # Write the <c:barChart> element.
51
- #
52
- def write_bar_chart
53
- subtype = @subtype
54
-
55
- subtype = 'percentStacked' if subtype == 'percent_stacked'
56
-
57
- @writer.start_tag('c:barChart')
58
-
59
- # Write the c:barDir element.
60
- write_bar_dir
61
-
62
- # Write the c:grouping element.
63
- write_grouping(subtype)
64
-
65
- # Write the series elements.
66
- write_series
67
-
68
- @writer.end_tag('c:barChart')
69
- end
70
-
71
45
  #
72
46
  # Write the <c:barDir> element.
73
47
  #
@@ -86,26 +60,7 @@ def write_bar_dir
86
60
  # Write the series elements.
87
61
  #
88
62
  def write_series
89
- # Write each series with subelements.
90
- index = 0
91
- @series.each do |series|
92
- write_ser(index, series)
93
- index += 1
94
- end
95
-
96
- # Write the c:marker element.
97
- write_marker_value
98
-
99
- # Write the c:overlap element.
100
- write_overlap if @subtype =~ /stacked/
101
-
102
- # Generate the axis ids.
103
- add_axis_id
104
- add_axis_id
105
-
106
- # Write the c:axId element.
107
- write_axis_id(@axis_ids[0])
108
- write_axis_id(@axis_ids[1])
63
+ write_series_base {write_overlap if @subtype =~ /stacked/}
109
64
  end
110
65
 
111
66
  #
@@ -36,15 +36,12 @@ def write_chart_type
36
36
  # Write the <c:lineChart> element.
37
37
  #
38
38
  def write_line_chart
39
- @writer.start_tag('c:lineChart')
40
-
41
- # Write the c:grouping element.
42
- write_grouping('standard')
43
-
44
- # Write the series elements.
45
- write_series
46
-
47
- @writer.end_tag('c:lineChart')
39
+ @writer.tag_elements('c:lineChart') do
40
+ # Write the c:grouping element.
41
+ write_grouping('standard')
42
+ # Write the series elements.
43
+ write_series
44
+ end
48
45
  end
49
46
  end
50
47
  end
@@ -43,18 +43,14 @@ def write_chart_type
43
43
  # Write the <c:pieChart> element.
44
44
  #
45
45
  def write_pie_chart
46
- @writer.start_tag('c:pieChart')
47
-
48
- # Write the c:varyColors element.
49
- write_vary_colors
50
-
51
- # Write the series elements.
52
- write_series
53
-
54
- # Write the c:firstSliceAng element.
55
- write_first_slice_ang
56
-
57
- @writer.end_tag('c:pieChart')
46
+ @writer.tag_elements('c:pieChart') do
47
+ # Write the c:varyColors element.
48
+ write_vary_colors
49
+ # Write the series elements.
50
+ write_series
51
+ # Write the c:firstSliceAng element.
52
+ write_first_slice_ang
53
+ end
58
54
  end
59
55
 
60
56
  #
@@ -64,15 +60,12 @@ def write_pie_chart
64
60
  # Write the <c:plotArea> element.
65
61
  #
66
62
  def write_plot_area
67
- @writer.start_tag('c:plotArea')
68
-
69
- # Write the c:layout element.
70
- write_layout
71
-
72
- # Write the subclass chart type element.
73
- write_chart_type
74
-
75
- @writer.end_tag('c:plotArea')
63
+ @writer.tag_elements('c:plotArea') do
64
+ # Write the c:layout element.
65
+ write_layout
66
+ # Write the subclass chart type element.
67
+ write_chart_type
68
+ end
76
69
  end
77
70
 
78
71
  #
@@ -116,21 +109,16 @@ def write_legend
116
109
 
117
110
  position = allowed[position]
118
111
 
119
- @writer.start_tag('c:legend')
120
-
121
- # Write the c:legendPos element.
122
- write_legend_pos(position)
123
-
124
- # Write the c:layout element.
125
- write_layout
126
-
127
- # Write the c:overlay element.
128
- write_overlay if overlay != 0
129
-
130
- # Write the c:txPr element. Over-ridden.
131
- write_tx_pr_legend
132
-
133
- @writer.end_tag('c:legend')
112
+ @writer.tag_elements('c:legend') do
113
+ # Write the c:legendPos element.
114
+ write_legend_pos(position)
115
+ # Write the c:layout element.
116
+ write_layout
117
+ # Write the c:overlay element.
118
+ write_overlay if overlay != 0
119
+ # Write the c:txPr element. Over-ridden.
120
+ write_tx_pr_legend
121
+ end
134
122
  end
135
123
 
136
124
  #
@@ -139,33 +127,26 @@ def write_legend
139
127
  def write_tx_pr_legend
140
128
  horiz = 0
141
129
 
142
- @writer.start_tag('c:txPr')
143
-
144
- # Write the a:bodyPr element.
145
- write_a_body_pr(horiz)
146
-
147
- # Write the a:lstStyle element.
148
- write_a_lst_style
149
-
150
- # Write the a:p element.
151
- write_a_p_legend
152
-
153
- @writer.end_tag('c:txPr')
130
+ @writer.tag_elements('c:txPr') do
131
+ # Write the a:bodyPr element.
132
+ write_a_body_pr(horiz)
133
+ # Write the a:lstStyle element.
134
+ write_a_lst_style
135
+ # Write the a:p element.
136
+ write_a_p_legend
137
+ end
154
138
  end
155
139
 
156
140
  #
157
141
  # Write the <a:p> element for legends.
158
142
  #
159
143
  def write_a_p_legend
160
- @writer.start_tag('a:p')
161
-
162
- # Write the a:pPr element.
163
- write_a_p_pr_legend
164
-
165
- # Write the a:endParaRPr element.
166
- write_a_end_para_rpr
167
-
168
- @writer.end_tag('a:p')
144
+ @writer.tag_elements('a:p') do
145
+ # Write the a:pPr element.
146
+ write_a_p_pr_legend
147
+ # Write the a:endParaRPr element.
148
+ write_a_end_para_rpr
149
+ end
169
150
  end
170
151
 
171
152
  #
@@ -176,12 +157,10 @@ def write_a_p_pr_legend
176
157
 
177
158
  attributes = ['rtl', rtl]
178
159
 
179
- @writer.start_tag('a:pPr', attributes)
180
-
181
- # Write the a:defRPr element.
182
- write_a_def_rpr
183
-
184
- @writer.end_tag('a:pPr')
160
+ @writer.tag_elements('a:pPr', attributes) do
161
+ # Write the a:defRPr element.
162
+ write_a_def_rpr
163
+ end
185
164
  end
186
165
 
187
166
  #
@@ -68,15 +68,12 @@ def write_scatter_chart
68
68
  # Add default formatting to the series data.
69
69
  modify_series_formatting
70
70
 
71
- @writer.start_tag('c:scatterChart')
72
-
73
- # Write the c:scatterStyle element.
74
- write_scatter_style(style)
75
-
76
- # Write the series elements.
77
- write_series
78
-
79
- @writer.end_tag('c:scatterChart')
71
+ @writer.tag_elements('c:scatterChart') do
72
+ # Write the c:scatterStyle element.
73
+ write_scatter_style(style)
74
+ # Write the series elements.
75
+ write_series
76
+ end
80
77
  end
81
78
 
82
79
  #
@@ -85,39 +82,28 @@ def write_scatter_chart
85
82
  # Write the <c:ser> element.
86
83
  #
87
84
  def write_ser(index, series)
88
- @writer.start_tag('c:ser')
89
-
90
- # Write the c:idx element.
91
- write_idx(index)
92
-
93
- # Write the c:order element.
94
- write_order(index)
95
-
96
- # Write the series name.
97
- write_series_name(series)
98
-
99
- # Write the c:spPr element.
100
- write_sp_pr(series)
101
-
102
- # Write the c:marker element.
103
- write_marker(series[:_marker])
104
-
105
- # Write the c:dLbls element.
106
- write_d_lbls(series[:_labels])
107
-
108
- # Write the c:trendline element.
109
- write_trendline(series[:_trendline])
110
-
111
- # Write the c:xVal element.
112
- write_x_val(series)
113
-
114
- # Write the c:yVal element.
115
- write_y_val(series)
116
-
117
- # Write the c:smooth element.
118
- write_c_smooth
119
-
120
- @writer.end_tag('c:ser')
85
+ @writer.tag_elements('c:ser') do
86
+ # Write the c:idx element.
87
+ write_idx(index)
88
+ # Write the c:order element.
89
+ write_order(index)
90
+ # Write the series name.
91
+ write_series_name(series)
92
+ # Write the c:spPr element.
93
+ write_sp_pr(series)
94
+ # Write the c:marker element.
95
+ write_marker(series[:_marker])
96
+ # Write the c:dLbls element.
97
+ write_d_lbls(series[:_labels])
98
+ # Write the c:trendline element.
99
+ write_trendline(series[:_trendline])
100
+ # Write the c:xVal element.
101
+ write_x_val(series)
102
+ # Write the c:yVal element.
103
+ write_y_val(series)
104
+ # Write the c:smooth element.
105
+ write_c_smooth
106
+ end
121
107
  end
122
108
 
123
109
  #
@@ -127,72 +113,32 @@ def write_ser(index, series)
127
113
  # Write the <c:plotArea> element.
128
114
  #
129
115
  def write_plot_area
130
- @writer.start_tag('c:plotArea')
131
-
132
- # Write the c:layout element.
133
- write_layout
134
-
135
- # Write the subclass chart type element.
136
- write_chart_type
137
-
138
- # Write the c:catAx element.
139
- write_cat_val_axis('b', 1)
140
-
141
- # Write the c:catAx element.
142
- @horiz_val_axis = 1
143
- write_val_axis('l')
144
-
145
- @writer.end_tag('c:plotArea')
116
+ @writer.tag_elements('c:plotArea') do
117
+ # Write the c:layout element.
118
+ write_layout
119
+ # Write the subclass chart type element.
120
+ write_chart_type
121
+ # Write the c:catAx element.
122
+ write_cat_val_axis('b', 1)
123
+ # Write the c:catAx element.
124
+ @horiz_val_axis = 1
125
+
126
+ write_val_axis('l')
127
+ end
146
128
  end
147
129
 
148
130
  #
149
131
  # Write the <c:xVal> element.
150
132
  #
151
133
  def write_x_val(series)
152
- formula = series[:_categories]
153
- data_id = series[:_cat_data_id]
154
- data = @formula_data[data_id]
155
-
156
- @writer.start_tag('c:xVal')
157
-
158
- # Check the type of cached data.
159
- type = get_data_type(data)
160
-
161
- # TODO. Can a scatter plot have non-numeric data.
162
-
163
- if type == 'str'
164
- # Write the c:numRef element.
165
- write_str_ref(formula, data, type)
166
- else
167
- # Write the c:numRef element.
168
- write_num_ref(formula, data, type)
169
- end
170
-
171
- @writer.end_tag('c:xVal')
134
+ write_val_base(series[:_categories], series[:_cat_data_id], 'c:xVal')
172
135
  end
173
136
 
174
137
  #
175
138
  # Write the <c:yVal> element.
176
139
  #
177
140
  def write_y_val(series)
178
- formula = series[:_values]
179
- data_id = series[:_val_data_id]
180
- data = @formula_data[data_id]
181
-
182
- @writer.start_tag('c:yVal')
183
-
184
- # Check the type of cached data.
185
- type = get_data_type(data)
186
-
187
- if type == 'str'
188
- # Write the c:numRef element.
189
- write_str_ref(formula, data, type)
190
- else
191
- # Write the c:numRef element.
192
- write_num_ref(formula, data, type)
193
- end
194
-
195
- @writer.end_tag('c:yVal')
141
+ write_val_base(series[:_values], series[:_val_data_id], 'c:yVal')
196
142
  end
197
143
 
198
144
  #