summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx/drawing
diff options
context:
space:
mode:
authorPaul Kmiec <[email protected]>2023-05-04 16:31:08 -0700
committerPaul Kmiec <[email protected]>2023-05-04 18:02:55 -0700
commitfabe8cb2571c8865270247ca78ddc01d493a9ee1 (patch)
tree27fe0b0df8c9bec8f746d92a0d128cad197027b2 /lib/axlsx/drawing
parentfef93ec8ae2caf8a3f8310dbf8101c103e5905e4 (diff)
downloadcaxlsx-fabe8cb2571c8865270247ca78ddc01d493a9ee1.tar.gz
caxlsx-fabe8cb2571c8865270247ca78ddc01d493a9ee1.zip
Fix tests / code to work with frozen string literals
Diffstat (limited to 'lib/axlsx/drawing')
-rw-r--r--lib/axlsx/drawing/area_chart.rb10
-rw-r--r--lib/axlsx/drawing/area_series.rb8
-rw-r--r--lib/axlsx/drawing/axes.rb4
-rw-r--r--lib/axlsx/drawing/axis.rb20
-rw-r--r--lib/axlsx/drawing/bar_3D_chart.rb14
-rw-r--r--lib/axlsx/drawing/bar_chart.rb14
-rw-r--r--lib/axlsx/drawing/bar_series.rb10
-rw-r--r--lib/axlsx/drawing/bubble_chart.rb4
-rw-r--r--lib/axlsx/drawing/bubble_series.rb6
-rw-r--r--lib/axlsx/drawing/cat_axis.rb12
-rw-r--r--lib/axlsx/drawing/chart.rb18
-rw-r--r--lib/axlsx/drawing/d_lbls.rb2
-rw-r--r--lib/axlsx/drawing/drawing.rb4
-rw-r--r--lib/axlsx/drawing/graphic_frame.rb8
-rw-r--r--lib/axlsx/drawing/hyperlink.rb2
-rw-r--r--lib/axlsx/drawing/line_3D_chart.rb4
-rw-r--r--lib/axlsx/drawing/line_chart.rb10
-rw-r--r--lib/axlsx/drawing/line_series.rb8
-rw-r--r--lib/axlsx/drawing/marker.rb4
-rw-r--r--lib/axlsx/drawing/num_data.rb10
-rw-r--r--lib/axlsx/drawing/num_data_source.rb12
-rw-r--r--lib/axlsx/drawing/num_val.rb4
-rw-r--r--lib/axlsx/drawing/one_cell_anchor.rb4
-rw-r--r--lib/axlsx/drawing/pic.rb8
-rw-r--r--lib/axlsx/drawing/picture_locking.rb2
-rw-r--r--lib/axlsx/drawing/pie_3D_chart.rb4
-rw-r--r--lib/axlsx/drawing/pie_series.rb6
-rw-r--r--lib/axlsx/drawing/scaling.rb10
-rw-r--r--lib/axlsx/drawing/scatter_chart.rb6
-rw-r--r--lib/axlsx/drawing/scatter_series.rb12
-rw-r--r--lib/axlsx/drawing/ser_axis.rb6
-rw-r--r--lib/axlsx/drawing/series.rb6
-rw-r--r--lib/axlsx/drawing/series_title.rb6
-rw-r--r--lib/axlsx/drawing/str_data.rb8
-rw-r--r--lib/axlsx/drawing/str_val.rb4
-rw-r--r--lib/axlsx/drawing/title.rb10
-rw-r--r--lib/axlsx/drawing/two_cell_anchor.rb2
-rw-r--r--lib/axlsx/drawing/val_axis.rb4
-rw-r--r--lib/axlsx/drawing/view_3D.rb2
-rw-r--r--lib/axlsx/drawing/vml_drawing.rb2
-rw-r--r--lib/axlsx/drawing/vml_shape.rb2
41 files changed, 146 insertions, 146 deletions
diff --git a/lib/axlsx/drawing/area_chart.rb b/lib/axlsx/drawing/area_chart.rb
index 9b948808..8339c255 100644
--- a/lib/axlsx/drawing/area_chart.rb
+++ b/lib/axlsx/drawing/area_chart.rb
@@ -74,16 +74,16 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
- str << ("<c:" << node_name << ">")
- str << ('<c:grouping val="' << grouping.to_s << '"/>')
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+"<c:" << node_name << ">")
+ str << (+'<c:grouping val="' << grouping.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
@d_lbls.to_xml_string(str) if @d_lbls
yield if block_given?
axes.to_xml_string(str, :ids => true)
- str << ("</c:" << node_name << ">")
+ str << (+"</c:" << node_name << ">")
axes.to_xml_string(str)
end
end
diff --git a/lib/axlsx/drawing/area_series.rb b/lib/axlsx/drawing/area_series.rb
index 55c391d9..9d87d078 100644
--- a/lib/axlsx/drawing/area_series.rb
+++ b/lib/axlsx/drawing/area_series.rb
@@ -71,15 +71,15 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
if color
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '<a:ln w="28800">'
str << '<a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '</a:ln>'
str << '<a:round/>'
@@ -94,7 +94,7 @@ module Axlsx
@labels.to_xml_string(str) unless @labels.nil?
@data.to_xml_string(str) unless @data.nil?
- str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
+ str << (+'<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
end
end
diff --git a/lib/axlsx/drawing/axes.rb b/lib/axlsx/drawing/axes.rb
index c84b4378..0baad85f 100644
--- a/lib/axlsx/drawing/axes.rb
+++ b/lib/axlsx/drawing/axes.rb
@@ -29,11 +29,11 @@ module Axlsx
# @option options ids
# If the ids option is specified only the axis identifier is
# serialized. Otherwise, each axis is serialized in full.
- def to_xml_string(str = '', options = {})
+ def to_xml_string(str = +'', options = {})
if options[:ids]
# CatAxis must come first in the XML (for Microsoft Excel at least)
sorted = axes.sort_by { |name, axis| axis.kind_of?(CatAxis) ? 0 : 1 }
- sorted.each { |axis| str << ('<c:axId val="' << axis[1].id.to_s << '"/>') }
+ sorted.each { |axis| str << (+'<c:axId val="' << axis[1].id.to_s << '"/>') }
else
axes.each { |axis| axis[1].to_xml_string(str) }
end
diff --git a/lib/axlsx/drawing/axis.rb b/lib/axlsx/drawing/axis.rb
index 6ee2b9f4..38e57da5 100644
--- a/lib/axlsx/drawing/axis.rb
+++ b/lib/axlsx/drawing/axis.rb
@@ -148,11 +148,11 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
- str << ('<c:axId val="' << @id.to_s << '"/>')
+ def to_xml_string(str = +'')
+ str << (+'<c:axId val="' << @id.to_s << '"/>')
@scaling.to_xml_string str
- str << ('<c:delete val="' << @delete.to_s << '"/>')
- str << ('<c:axPos val="' << @ax_pos.to_s << '"/>')
+ str << (+'<c:delete val="' << @delete.to_s << '"/>')
+ str << (+'<c:axPos val="' << @ax_pos.to_s << '"/>')
str << '<c:majorGridlines>'
# TODO: shape properties need to be extracted into a class
if gridlines == false
@@ -167,21 +167,21 @@ module Axlsx
# Need to set sourceLinked to 0 if we're setting a format code on this row
# otherwise it will never take, as it will always prefer the 'General' formatting
# of the cells themselves
- str << ('<c:numFmt formatCode="' << @format_code << '" sourceLinked="' << (@format_code.eql?('General') ? '1' : '0') << '"/>')
+ str << (+'<c:numFmt formatCode="' << @format_code << '" sourceLinked="' << (@format_code.eql?('General') ? '1' : '0') << '"/>')
str << '<c:majorTickMark val="none"/>'
str << '<c:minorTickMark val="none"/>'
- str << ('<c:tickLblPos val="' << @tick_lbl_pos.to_s << '"/>')
+ str << (+'<c:tickLblPos val="' << @tick_lbl_pos.to_s << '"/>')
# TODO: this is also being used for series colors
# time to extract this into a class spPr - Shape Properties
if @color
str << '<c:spPr><a:ln><a:solidFill>'
- str << ('<a:srgbClr val="' << @color << '"/>')
+ str << (+'<a:srgbClr val="' << @color << '"/>')
str << '</a:solidFill></a:ln></c:spPr>'
end
# some potential value in implementing this in full. Very detailed!
- str << ('<c:txPr><a:bodyPr rot="' << @label_rotation.to_s << '"/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr/></a:p></c:txPr>')
- str << ('<c:crossAx val="' << @cross_axis.id.to_s << '"/>')
- str << ('<c:crosses val="' << @crosses.to_s << '"/>')
+ str << (+'<c:txPr><a:bodyPr rot="' << @label_rotation.to_s << '"/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr/></a:p></c:txPr>')
+ str << (+'<c:crossAx val="' << @cross_axis.id.to_s << '"/>')
+ str << (+'<c:crosses val="' << @crosses.to_s << '"/>')
end
end
end
diff --git a/lib/axlsx/drawing/bar_3D_chart.rb b/lib/axlsx/drawing/bar_3D_chart.rb
index 0ba55eb2..37ac7dab 100644
--- a/lib/axlsx/drawing/bar_3D_chart.rb
+++ b/lib/axlsx/drawing/bar_3D_chart.rb
@@ -120,17 +120,17 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
str << '<c:bar3DChart>'
- str << ('<c:barDir val="' << bar_dir.to_s << '"/>')
- str << ('<c:grouping val="' << grouping.to_s << '"/>')
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+'<c:barDir val="' << bar_dir.to_s << '"/>')
+ str << (+'<c:grouping val="' << grouping.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
@d_lbls.to_xml_string(str) if @d_lbls
- str << ('<c:gapWidth val="' << @gap_width.to_s << '"/>') unless @gap_width.nil?
- str << ('<c:gapDepth val="' << @gap_depth.to_s << '"/>') unless @gap_depth.nil?
- str << ('<c:shape val="' << @shape.to_s << '"/>') unless @shape.nil?
+ str << (+'<c:gapWidth val="' << @gap_width.to_s << '"/>') unless @gap_width.nil?
+ str << (+'<c:gapDepth val="' << @gap_depth.to_s << '"/>') unless @gap_depth.nil?
+ str << (+'<c:shape val="' << @shape.to_s << '"/>') unless @shape.nil?
axes.to_xml_string(str, :ids => true)
str << '</c:bar3DChart>'
axes.to_xml_string(str)
diff --git a/lib/axlsx/drawing/bar_chart.rb b/lib/axlsx/drawing/bar_chart.rb
index c3240f32..eca54dfc 100644
--- a/lib/axlsx/drawing/bar_chart.rb
+++ b/lib/axlsx/drawing/bar_chart.rb
@@ -110,17 +110,17 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
str << '<c:barChart>'
- str << ('<c:barDir val="' << bar_dir.to_s << '"/>')
- str << ('<c:grouping val="' << grouping.to_s << '"/>')
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+'<c:barDir val="' << bar_dir.to_s << '"/>')
+ str << (+'<c:grouping val="' << grouping.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
@d_lbls.to_xml_string(str) if @d_lbls
- str << ('<c:overlap val="' << @overlap.to_s << '"/>') unless @overlap.nil?
- str << ('<c:gapWidth val="' << @gap_width.to_s << '"/>') unless @gap_width.nil?
- str << ('<c:shape val="' << @shape.to_s << '"/>') unless @shape.nil?
+ str << (+'<c:overlap val="' << @overlap.to_s << '"/>') unless @overlap.nil?
+ str << (+'<c:gapWidth val="' << @gap_width.to_s << '"/>') unless @gap_width.nil?
+ str << (+'<c:shape val="' << @shape.to_s << '"/>') unless @shape.nil?
axes.to_xml_string(str, :ids => true)
str << '</c:barChart>'
axes.to_xml_string(str)
diff --git a/lib/axlsx/drawing/bar_series.rb b/lib/axlsx/drawing/bar_series.rb
index 86ca4e88..c744175f 100644
--- a/lib/axlsx/drawing/bar_series.rb
+++ b/lib/axlsx/drawing/bar_series.rb
@@ -58,19 +58,19 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
colors.each_with_index do |c, index|
str << '<c:dPt>'
- str << ('<c:idx val="' << index.to_s << '"/>')
+ str << (+'<c:idx val="' << index.to_s << '"/>')
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << c << '"/>')
+ str << (+'<a:srgbClr val="' << c << '"/>')
str << '</a:solidFill></c:spPr></c:dPt>'
end
if series_color
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << series_color << '"/>')
+ str << (+'<a:srgbClr val="' << series_color << '"/>')
str << '</a:solidFill>'
str << '</c:spPr>'
end
@@ -78,7 +78,7 @@ module Axlsx
@labels.to_xml_string(str) unless @labels.nil?
@data.to_xml_string(str) unless @data.nil?
# this is actually only required for shapes other than box
- str << ('<c:shape val="' << shape.to_s << '"></c:shape>')
+ str << (+'<c:shape val="' << shape.to_s << '"></c:shape>')
end
end
diff --git a/lib/axlsx/drawing/bubble_chart.rb b/lib/axlsx/drawing/bubble_chart.rb
index 73b74035..b4932042 100644
--- a/lib/axlsx/drawing/bubble_chart.rb
+++ b/lib/axlsx/drawing/bubble_chart.rb
@@ -35,10 +35,10 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
str << '<c:bubbleChart>'
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
d_lbls.to_xml_string(str) if @d_lbls
axes.to_xml_string(str, :ids => true)
diff --git a/lib/axlsx/drawing/bubble_series.rb b/lib/axlsx/drawing/bubble_series.rb
index e44a3fd8..25335270 100644
--- a/lib/axlsx/drawing/bubble_series.rb
+++ b/lib/axlsx/drawing/bubble_series.rb
@@ -41,15 +41,15 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
# needs to override the super color here to push in ln/and something else!
if color
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '<a:ln><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
+ str << (+'<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
str << '</c:spPr>'
end
@xData.to_xml_string(str) unless @xData.nil?
diff --git a/lib/axlsx/drawing/cat_axis.rb b/lib/axlsx/drawing/cat_axis.rb
index 23568d6f..a36f62d1 100644
--- a/lib/axlsx/drawing/cat_axis.rb
+++ b/lib/axlsx/drawing/cat_axis.rb
@@ -68,14 +68,14 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:catAx>'
super(str)
- str << ('<c:auto val="' << @auto.to_s << '"/>')
- str << ('<c:lblAlgn val="' << @lbl_algn.to_s << '"/>')
- str << ('<c:lblOffset val="' << @lbl_offset.to_i.to_s << '"/>')
- str << ('<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>')
- str << ('<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>')
+ str << (+'<c:auto val="' << @auto.to_s << '"/>')
+ str << (+'<c:lblAlgn val="' << @lbl_algn.to_s << '"/>')
+ str << (+'<c:lblOffset val="' << @lbl_offset.to_i.to_s << '"/>')
+ str << (+'<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>')
+ str << (+'<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>')
str << '</c:catAx>'
end
end
diff --git a/lib/axlsx/drawing/chart.rb b/lib/axlsx/drawing/chart.rb
index 636c1713..300a5086 100644
--- a/lib/axlsx/drawing/chart.rb
+++ b/lib/axlsx/drawing/chart.rb
@@ -204,15 +204,15 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<?xml version="1.0" encoding="UTF-8"?>'
- str << ('<c:chartSpace xmlns:c="' << XML_NS_C << '" xmlns:a="' << XML_NS_A << '" xmlns:r="' << XML_NS_R << '">')
- str << ('<c:date1904 val="' << Axlsx::Workbook.date1904.to_s << '"/>')
- str << ('<c:roundedCorners val="' << rounded_corners.to_s << '"/>')
- str << ('<c:style val="' << style.to_s << '"/>')
+ str << (+'<c:chartSpace xmlns:c="' << XML_NS_C << '" xmlns:a="' << XML_NS_A << '" xmlns:r="' << XML_NS_R << '">')
+ str << (+'<c:date1904 val="' << Axlsx::Workbook.date1904.to_s << '"/>')
+ str << (+'<c:roundedCorners val="' << rounded_corners.to_s << '"/>')
+ str << (+'<c:style val="' << style.to_s << '"/>')
str << '<c:chart>'
@title.to_xml_string(str) unless @title.empty?
- str << ('<c:autoTitleDeleted val="' << @title.nil?.to_s << '"/>')
+ str << (+'<c:autoTitleDeleted val="' << @title.nil?.to_s << '"/>')
@view_3D.to_xml_string(str) if @view_3D
str << '<c:floor><c:thickness val="0"/></c:floor>'
str << '<c:sideWall><c:thickness val="0"/></c:sideWall>'
@@ -223,13 +223,13 @@ module Axlsx
str << '</c:plotArea>'
if @show_legend
str << '<c:legend>'
- str << ('<c:legendPos val="' << @legend_position.to_s << '"/>')
+ str << (+'<c:legendPos val="' << @legend_position.to_s << '"/>')
str << '<c:layout/>'
str << '<c:overlay val="0"/>'
str << '</c:legend>'
end
- str << ('<c:plotVisOnly val="' << @plot_visible_only.to_s << '"/>')
- str << ('<c:dispBlanksAs val="' << display_blanks_as.to_s << '"/>')
+ str << (+'<c:plotVisOnly val="' << @plot_visible_only.to_s << '"/>')
+ str << (+'<c:dispBlanksAs val="' << display_blanks_as.to_s << '"/>')
str << '<c:showDLblsOverMax val="1"/>'
str << '</c:chart>'
if bg_color
diff --git a/lib/axlsx/drawing/d_lbls.rb b/lib/axlsx/drawing/d_lbls.rb
index cdccf327..4e2bd40c 100644
--- a/lib/axlsx/drawing/d_lbls.rb
+++ b/lib/axlsx/drawing/d_lbls.rb
@@ -71,7 +71,7 @@ module Axlsx
# serializes the data labels
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
validate_attributes_for_chart_type
str << '<c:dLbls>'
instance_vals = Axlsx.instance_values_for(self)
diff --git a/lib/axlsx/drawing/drawing.rb b/lib/axlsx/drawing/drawing.rb
index d36e4349..7be169be 100644
--- a/lib/axlsx/drawing/drawing.rb
+++ b/lib/axlsx/drawing/drawing.rb
@@ -155,9 +155,9 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
- str << ('<xdr:wsDr xmlns:xdr="' << XML_NS_XDR << '" xmlns:a="' << XML_NS_A << '">')
+ str << (+'<xdr:wsDr xmlns:xdr="' << XML_NS_XDR << '" xmlns:a="' << XML_NS_A << '">')
anchors.each { |anchor| anchor.to_xml_string(str) }
str << '</xdr:wsDr>'
end
diff --git a/lib/axlsx/drawing/graphic_frame.rb b/lib/axlsx/drawing/graphic_frame.rb
index e245b9ab..7d0e818c 100644
--- a/lib/axlsx/drawing/graphic_frame.rb
+++ b/lib/axlsx/drawing/graphic_frame.rb
@@ -31,11 +31,11 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
# macro attribute should be optional!
str << '<xdr:graphicFrame>'
str << '<xdr:nvGraphicFramePr>'
- str << ('<xdr:cNvPr id="' << @anchor.drawing.index.to_s << '" name="' << 'item_' << @anchor.drawing.index.to_s << '"/>')
+ str << (+'<xdr:cNvPr id="' << @anchor.drawing.index.to_s << '" name="' << 'item_' << @anchor.drawing.index.to_s << '"/>')
str << '<xdr:cNvGraphicFramePr/>'
str << '</xdr:nvGraphicFramePr>'
str << '<xdr:xfrm>'
@@ -43,8 +43,8 @@ module Axlsx
str << '<a:ext cx="0" cy="0"/>'
str << '</xdr:xfrm>'
str << '<a:graphic>'
- str << ('<a:graphicData uri="' << XML_NS_C << '">')
- str << ('<c:chart xmlns:c="' << XML_NS_C << '" xmlns:r="' << XML_NS_R << '" r:id="' << rId << '"/>')
+ str << (+'<a:graphicData uri="' << XML_NS_C << '">')
+ str << (+'<c:chart xmlns:c="' << XML_NS_C << '" xmlns:r="' << XML_NS_R << '" r:id="' << rId << '"/>')
str << '</a:graphicData>'
str << '</a:graphic>'
str << '</xdr:graphicFrame>'
diff --git a/lib/axlsx/drawing/hyperlink.rb b/lib/axlsx/drawing/hyperlink.rb
index 1fd7fdd4..3fb97069 100644
--- a/lib/axlsx/drawing/hyperlink.rb
+++ b/lib/axlsx/drawing/hyperlink.rb
@@ -92,7 +92,7 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
serialized_tag 'a:hlinkClick', str, { :'r:id' => relationship.Id, :'xmlns:r' => XML_NS_R }
end
end
diff --git a/lib/axlsx/drawing/line_3D_chart.rb b/lib/axlsx/drawing/line_3D_chart.rb
index 51beaa70..6a659550 100644
--- a/lib/axlsx/drawing/line_3D_chart.rb
+++ b/lib/axlsx/drawing/line_3D_chart.rb
@@ -57,9 +57,9 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
- str << ('<c:gapDepth val="' << @gap_depth.to_s << '"/>') unless @gap_depth.nil?
+ str << (+'<c:gapDepth val="' << @gap_depth.to_s << '"/>') unless @gap_depth.nil?
end
end
end
diff --git a/lib/axlsx/drawing/line_chart.rb b/lib/axlsx/drawing/line_chart.rb
index 87757dbb..ab2012c7 100644
--- a/lib/axlsx/drawing/line_chart.rb
+++ b/lib/axlsx/drawing/line_chart.rb
@@ -74,16 +74,16 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
- str << ("<c:" << node_name << ">")
- str << ('<c:grouping val="' << grouping.to_s << '"/>')
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+"<c:" << node_name << ">")
+ str << (+'<c:grouping val="' << grouping.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
@d_lbls.to_xml_string(str) if @d_lbls
yield if block_given?
axes.to_xml_string(str, :ids => true)
- str << ("</c:" << node_name << ">")
+ str << (+"</c:" << node_name << ">")
axes.to_xml_string(str)
end
end
diff --git a/lib/axlsx/drawing/line_series.rb b/lib/axlsx/drawing/line_series.rb
index b1e36bbe..42c86873 100644
--- a/lib/axlsx/drawing/line_series.rb
+++ b/lib/axlsx/drawing/line_series.rb
@@ -71,15 +71,15 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
if color
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '<a:ln w="28800">'
str << '<a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '</a:ln>'
str << '<a:round/>'
@@ -94,7 +94,7 @@ module Axlsx
@labels.to_xml_string(str) unless @labels.nil?
@data.to_xml_string(str) unless @data.nil?
- str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
+ str << (+'<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
end
end
diff --git a/lib/axlsx/drawing/marker.rb b/lib/axlsx/drawing/marker.rb
index 0e728fc6..987af605 100644
--- a/lib/axlsx/drawing/marker.rb
+++ b/lib/axlsx/drawing/marker.rb
@@ -56,9 +56,9 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
[:col, :colOff, :row, :rowOff].each do |k|
- str << ('<xdr:' << k.to_s << '>' << self.send(k).to_s << '</xdr:' << k.to_s << '>')
+ str << (+'<xdr:' << k.to_s << '>' << self.send(k).to_s << '</xdr:' << k.to_s << '>')
end
end
diff --git a/lib/axlsx/drawing/num_data.rb b/lib/axlsx/drawing/num_data.rb
index 5c4e832f..79108777 100644
--- a/lib/axlsx/drawing/num_data.rb
+++ b/lib/axlsx/drawing/num_data.rb
@@ -36,14 +36,14 @@ module Axlsx
end
# serialize the object
- def to_xml_string(str = "")
- str << ('<c:' << @tag_name.to_s << '>')
- str << ('<c:formatCode>' << format_code.to_s << '</c:formatCode>')
- str << ('<c:ptCount val="' << @pt.size.to_s << '"/>')
+ def to_xml_string(str = +'')
+ str << (+'<c:' << @tag_name.to_s << '>')
+ str << (+'<c:formatCode>' << format_code.to_s << '</c:formatCode>')
+ str << (+'<c:ptCount val="' << @pt.size.to_s << '"/>')
@pt.each_with_index do |num_val, index|
num_val.to_xml_string index, str
end
- str << ('</c:' << @tag_name.to_s << '>')
+ str << (+'</c:' << @tag_name.to_s << '>')
end
end
end
diff --git a/lib/axlsx/drawing/num_data_source.rb b/lib/axlsx/drawing/num_data_source.rb
index 0159a9d6..af5e31ab 100644
--- a/lib/axlsx/drawing/num_data_source.rb
+++ b/lib/axlsx/drawing/num_data_source.rb
@@ -44,17 +44,17 @@ module Axlsx
# serialize the object
# @param [String] str
- def to_xml_string(str = "")
- str << ('<c:' << tag_name.to_s << '>')
+ def to_xml_string(str = +'')
+ str << (+'<c:' << tag_name.to_s << '>')
if @f
- str << ('<c:' << @ref_tag_name.to_s << '>')
- str << ('<c:f>' << @f.to_s << '</c:f>')
+ str << (+'<c:' << @ref_tag_name.to_s << '>')
+ str << (+'<c:f>' << @f.to_s << '</c:f>')
end
@data.to_xml_string str
if @f
- str << ('</c:' << @ref_tag_name.to_s << '>')
+ str << (+'</c:' << @ref_tag_name.to_s << '>')
end
- str << ('</c:' << tag_name.to_s << '>')
+ str << (+'</c:' << tag_name.to_s << '>')
end
end
end
diff --git a/lib/axlsx/drawing/num_val.rb b/lib/axlsx/drawing/num_val.rb
index 3ec9f87b..b614f561 100644
--- a/lib/axlsx/drawing/num_val.rb
+++ b/lib/axlsx/drawing/num_val.rb
@@ -23,10 +23,10 @@ module Axlsx
end
# serialize the object
- def to_xml_string(idx, str = "")
+ def to_xml_string(idx, str = +'')
Axlsx::validate_unsigned_int(idx)
if !v.to_s.empty?
- str << ('<c:pt idx="' << idx.to_s << '" formatCode="' << format_code << '"><c:v>' << v.to_s << '</c:v></c:pt>')
+ str << (+'<c:pt idx="' << idx.to_s << '" formatCode="' << format_code << '"><c:v>' << v.to_s << '</c:v></c:pt>')
end
end
end
diff --git a/lib/axlsx/drawing/one_cell_anchor.rb b/lib/axlsx/drawing/one_cell_anchor.rb
index d9999be5..f98d65a1 100644
--- a/lib/axlsx/drawing/one_cell_anchor.rb
+++ b/lib/axlsx/drawing/one_cell_anchor.rb
@@ -74,12 +74,12 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<xdr:oneCellAnchor>'
str << '<xdr:from>'
from.to_xml_string(str)
str << '</xdr:from>'
- str << ('<xdr:ext cx="' << ext[:cx].to_s << '" cy="' << ext[:cy].to_s << '"/>')
+ str << (+'<xdr:ext cx="' << ext[:cx].to_s << '" cy="' << ext[:cy].to_s << '"/>')
@object.to_xml_string(str)
str << '<xdr:clientData/>'
str << '</xdr:oneCellAnchor>'
diff --git a/lib/axlsx/drawing/pic.rb b/lib/axlsx/drawing/pic.rb
index 1f37cd0f..eec92a9c 100644
--- a/lib/axlsx/drawing/pic.rb
+++ b/lib/axlsx/drawing/pic.rb
@@ -189,10 +189,10 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<xdr:pic>'
str << '<xdr:nvPicPr>'
- str << ('<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">')
+ str << (+'<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">')
hyperlink.to_xml_string(str) if hyperlink.is_a?(Hyperlink)
str << '</xdr:cNvPr><xdr:cNvPicPr>'
picture_locking.to_xml_string(str)
@@ -213,9 +213,9 @@ module Axlsx
# Return correct xml relationship string portion
def relationship_xml_portion
if remote?
- ('<a:blip xmlns:r ="' << XML_NS_R << '" r:link="' << relationship.Id << '">')
+ (+'<a:blip xmlns:r ="' << XML_NS_R << '" r:link="' << relationship.Id << '">')
else
- ('<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
+ (+'<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
end
end
diff --git a/lib/axlsx/drawing/picture_locking.rb b/lib/axlsx/drawing/picture_locking.rb
index 08ac4527..9511cb15 100644
--- a/lib/axlsx/drawing/picture_locking.rb
+++ b/lib/axlsx/drawing/picture_locking.rb
@@ -34,7 +34,7 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
serialized_tag('a:picLocks', str)
end
end
diff --git a/lib/axlsx/drawing/pie_3D_chart.rb b/lib/axlsx/drawing/pie_3D_chart.rb
index be6e3ba7..1c68dbb7 100644
--- a/lib/axlsx/drawing/pie_3D_chart.rb
+++ b/lib/axlsx/drawing/pie_3D_chart.rb
@@ -31,10 +31,10 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
str << '<c:pie3DChart>'
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
d_lbls.to_xml_string(str) if @d_lbls
str << '</c:pie3DChart>'
diff --git a/lib/axlsx/drawing/pie_series.rb b/lib/axlsx/drawing/pie_series.rb
index 9cc50aa2..52cd2b66 100644
--- a/lib/axlsx/drawing/pie_series.rb
+++ b/lib/axlsx/drawing/pie_series.rb
@@ -44,14 +44,14 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
str << '<c:explosion val="' + @explosion.to_s + '"/>' unless @explosion.nil?
colors.each_with_index do |c, index|
str << '<c:dPt>'
- str << ('<c:idx val="' << index.to_s << '"/>')
+ str << (+'<c:idx val="' << index.to_s << '"/>')
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << c << '"/>')
+ str << (+'<a:srgbClr val="' << c << '"/>')
str << '</a:solidFill></c:spPr></c:dPt>'
end
@labels.to_xml_string str unless @labels.nil?
diff --git a/lib/axlsx/drawing/scaling.rb b/lib/axlsx/drawing/scaling.rb
index 4443f880..fc4b9d10 100644
--- a/lib/axlsx/drawing/scaling.rb
+++ b/lib/axlsx/drawing/scaling.rb
@@ -47,12 +47,12 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:scaling>'
- str << ('<c:logBase val="' << @logBase.to_s << '"/>') unless @logBase.nil?
- str << ('<c:orientation val="' << @orientation.to_s << '"/>') unless @orientation.nil?
- str << ('<c:min val="' << @min.to_s << '"/>') unless @min.nil?
- str << ('<c:max val="' << @max.to_s << '"/>') unless @max.nil?
+ str << (+'<c:logBase val="' << @logBase.to_s << '"/>') unless @logBase.nil?
+ str << (+'<c:orientation val="' << @orientation.to_s << '"/>') unless @orientation.nil?
+ str << (+'<c:min val="' << @min.to_s << '"/>') unless @min.nil?
+ str << (+'<c:max val="' << @max.to_s << '"/>') unless @max.nil?
str << '</c:scaling>'
end
end
diff --git a/lib/axlsx/drawing/scatter_chart.rb b/lib/axlsx/drawing/scatter_chart.rb
index 37d528ec..b518c594 100644
--- a/lib/axlsx/drawing/scatter_chart.rb
+++ b/lib/axlsx/drawing/scatter_chart.rb
@@ -49,11 +49,11 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
str << '<c:scatterChart>'
- str << ('<c:scatterStyle val="' << scatter_style.to_s << '"/>')
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
+ str << (+'<c:scatterStyle val="' << scatter_style.to_s << '"/>')
+ str << (+'<c:varyColors val="' << vary_colors.to_s << '"/>')
@series.each { |ser| ser.to_xml_string(str) }
d_lbls.to_xml_string(str) if @d_lbls
axes.to_xml_string(str, :ids => true)
diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb
index 9ea9b8a7..e52306f5 100644
--- a/lib/axlsx/drawing/scatter_series.rb
+++ b/lib/axlsx/drawing/scatter_series.rb
@@ -80,22 +80,22 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
super(str) do
# needs to override the super color here to push in ln/and something else!
if color
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '<a:ln><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
+ str << (+'<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
str << '</c:spPr>'
str << '<c:marker>'
str << '<c:spPr><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/>')
+ str << (+'<a:srgbClr val="' << color << '"/>')
str << '</a:solidFill>'
str << '<a:ln><a:solidFill>'
- str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
+ str << (+'<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
str << '</c:spPr>'
str << marker_symbol_xml
str << '</c:marker>'
@@ -110,7 +110,7 @@ module Axlsx
end
@xData.to_xml_string(str) unless @xData.nil?
@yData.to_xml_string(str) unless @yData.nil?
- str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
+ str << (+'<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
end
str
end
diff --git a/lib/axlsx/drawing/ser_axis.rb b/lib/axlsx/drawing/ser_axis.rb
index 4834c355..63628b14 100644
--- a/lib/axlsx/drawing/ser_axis.rb
+++ b/lib/axlsx/drawing/ser_axis.rb
@@ -32,11 +32,11 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:serAx>'
super(str)
- str << ('<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>') unless @tick_lbl_skip.nil?
- str << ('<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>') unless @tick_mark_skip.nil?
+ str << (+'<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>') unless @tick_lbl_skip.nil?
+ str << (+'<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>') unless @tick_mark_skip.nil?
str << '</c:serAx>'
end
end
diff --git a/lib/axlsx/drawing/series.rb b/lib/axlsx/drawing/series.rb
index 17c5d24e..a468a6b7 100644
--- a/lib/axlsx/drawing/series.rb
+++ b/lib/axlsx/drawing/series.rb
@@ -57,10 +57,10 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:ser>'
- str << ('<c:idx val="' << index.to_s << '"/>')
- str << ('<c:order val="' << (order || index).to_s << '"/>')
+ str << (+'<c:idx val="' << index.to_s << '"/>')
+ str << (+'<c:order val="' << (order || index).to_s << '"/>')
title.to_xml_string(str) unless title.nil?
yield if block_given?
str << '</c:ser>'
diff --git a/lib/axlsx/drawing/series_title.rb b/lib/axlsx/drawing/series_title.rb
index 124e30a0..2887495c 100644
--- a/lib/axlsx/drawing/series_title.rb
+++ b/lib/axlsx/drawing/series_title.rb
@@ -6,16 +6,16 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
clean_value = Axlsx::trust_input ? @text.to_s : ::CGI.escapeHTML(Axlsx::sanitize(@text.to_s))
str << '<c:tx>'
str << '<c:strRef>'
- str << ('<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>')
+ str << (+'<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>')
str << '<c:strCache>'
str << '<c:ptCount val="1"/>'
str << '<c:pt idx="0">'
- str << ('<c:v>' << clean_value << '</c:v>')
+ str << (+'<c:v>' << clean_value << '</c:v>')
str << '</c:pt>'
str << '</c:strCache>'
str << '</c:strRef>'
diff --git a/lib/axlsx/drawing/str_data.rb b/lib/axlsx/drawing/str_data.rb
index ab1c25ad..0765671f 100644
--- a/lib/axlsx/drawing/str_data.rb
+++ b/lib/axlsx/drawing/str_data.rb
@@ -27,13 +27,13 @@ module Axlsx
end
# serialize the object
- def to_xml_string(str = "")
- str << ('<c:' << @tag_name.to_s << '>')
- str << ('<c:ptCount val="' << @pt.size.to_s << '"/>')
+ def to_xml_string(str = +'')
+ str << (+'<c:' << @tag_name.to_s << '>')
+ str << (+'<c:ptCount val="' << @pt.size.to_s << '"/>')
@pt.each_with_index do |value, index|
value.to_xml_string index, str
end
- str << ('</c:' << @tag_name.to_s << '>')
+ str << (+'</c:' << @tag_name.to_s << '>')
end
end
end
diff --git a/lib/axlsx/drawing/str_val.rb b/lib/axlsx/drawing/str_val.rb
index f6d36d41..821c7037 100644
--- a/lib/axlsx/drawing/str_val.rb
+++ b/lib/axlsx/drawing/str_val.rb
@@ -23,10 +23,10 @@ module Axlsx
end
# serialize the object
- def to_xml_string(idx, str = "")
+ def to_xml_string(idx, str = +'')
Axlsx::validate_unsigned_int(idx)
if !v.to_s.empty?
- str << ('<c:pt idx="' << idx.to_s << '"><c:v>' << ::CGI.escapeHTML(v.to_s) << '</c:v></c:pt>')
+ str << (+'<c:pt idx="' << idx.to_s << '"><c:v>' << ::CGI.escapeHTML(v.to_s) << '</c:v></c:pt>')
end
end
end
diff --git a/lib/axlsx/drawing/title.rb b/lib/axlsx/drawing/title.rb
index 9fd90d29..7bd41b17 100644
--- a/lib/axlsx/drawing/title.rb
+++ b/lib/axlsx/drawing/title.rb
@@ -69,18 +69,18 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:title>'
unless empty?
clean_value = Axlsx::trust_input ? @text.to_s : ::CGI.escapeHTML(Axlsx::sanitize(@text.to_s))
str << '<c:tx>'
if @cell.is_a?(Cell)
str << '<c:strRef>'
- str << ('<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>')
+ str << (+'<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>')
str << '<c:strCache>'
str << '<c:ptCount val="1"/>'
str << '<c:pt idx="0">'
- str << ('<c:v>' << clean_value << '</c:v>')
+ str << (+'<c:v>' << clean_value << '</c:v>')
str << '</c:pt>'
str << '</c:strCache>'
str << '</c:strRef>'
@@ -90,8 +90,8 @@ module Axlsx
str << '<a:lstStyle/>'
str << '<a:p>'
str << '<a:r>'
- str << ('<a:rPr sz="' << @text_size.to_s << '"/>')
- str << ('<a:t>' << clean_value << '</a:t>')
+ str << (+'<a:rPr sz="' << @text_size.to_s << '"/>')
+ str << (+'<a:t>' << clean_value << '</a:t>')
str << '</a:r>'
str << '</a:p>'
str << '</c:rich>'
diff --git a/lib/axlsx/drawing/two_cell_anchor.rb b/lib/axlsx/drawing/two_cell_anchor.rb
index 7b01ae13..bebfd28c 100644
--- a/lib/axlsx/drawing/two_cell_anchor.rb
+++ b/lib/axlsx/drawing/two_cell_anchor.rb
@@ -81,7 +81,7 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<xdr:twoCellAnchor>'
str << '<xdr:from>'
from.to_xml_string str
diff --git a/lib/axlsx/drawing/val_axis.rb b/lib/axlsx/drawing/val_axis.rb
index 8ebdcc92..1200eb5d 100644
--- a/lib/axlsx/drawing/val_axis.rb
+++ b/lib/axlsx/drawing/val_axis.rb
@@ -26,10 +26,10 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:valAx>'
super(str)
- str << ('<c:crossBetween val="' << @cross_between.to_s << '"/>')
+ str << (+'<c:crossBetween val="' << @cross_between.to_s << '"/>')
str << '</c:valAx>'
end
end
diff --git a/lib/axlsx/drawing/view_3D.rb b/lib/axlsx/drawing/view_3D.rb
index a414b46a..9b1b5cb2 100644
--- a/lib/axlsx/drawing/view_3D.rb
+++ b/lib/axlsx/drawing/view_3D.rb
@@ -96,7 +96,7 @@ module Axlsx
# Serializes the object
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << '<c:view3D>'
%w(rot_x h_percent rot_y depth_percent r_ang_ax perspective).each do |key|
str << element_for_attribute(key, 'c')
diff --git a/lib/axlsx/drawing/vml_drawing.rb b/lib/axlsx/drawing/vml_drawing.rb
index 0805421e..1da4e51a 100644
--- a/lib/axlsx/drawing/vml_drawing.rb
+++ b/lib/axlsx/drawing/vml_drawing.rb
@@ -20,7 +20,7 @@ module Axlsx
# serialize the vml_drawing to xml.
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << <<BAD_PROGRAMMER
<xml xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
diff --git a/lib/axlsx/drawing/vml_shape.rb b/lib/axlsx/drawing/vml_shape.rb
index 4db280f3..5d225d2a 100644
--- a/lib/axlsx/drawing/vml_shape.rb
+++ b/lib/axlsx/drawing/vml_shape.rb
@@ -37,7 +37,7 @@ module Axlsx
# serialize the shape to a string
# @param [String] str
# @return [String]
- def to_xml_string(str = '')
+ def to_xml_string(str = +'')
str << <<SHAME_ON_YOU
<v:shape id="#{@id}" type="#_x0000_t202" fillcolor="#ffffa1 [80]" o:insetmode="auto"