caxlsx 3.2.0 → 3.3.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.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +385 -354
- data/LICENSE +21 -21
- data/README.md +165 -168
- data/Rakefile +29 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
- data/lib/axlsx/content_type/content_type.rb +26 -26
- data/lib/axlsx/content_type/default.rb +25 -25
- data/lib/axlsx/content_type/override.rb +25 -25
- data/lib/axlsx/doc_props/app.rb +235 -235
- data/lib/axlsx/doc_props/core.rb +39 -39
- data/lib/axlsx/drawing/area_chart.rb +99 -99
- data/lib/axlsx/drawing/area_series.rb +110 -110
- data/lib/axlsx/drawing/ax_data_source.rb +26 -26
- data/lib/axlsx/drawing/axes.rb +61 -61
- data/lib/axlsx/drawing/axis.rb +190 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
- data/lib/axlsx/drawing/bar_chart.rb +138 -138
- data/lib/axlsx/drawing/bar_series.rb +97 -97
- data/lib/axlsx/drawing/bubble_chart.rb +59 -59
- data/lib/axlsx/drawing/bubble_series.rb +63 -63
- data/lib/axlsx/drawing/cat_axis.rb +85 -85
- data/lib/axlsx/drawing/chart.rb +299 -276
- data/lib/axlsx/drawing/d_lbls.rb +91 -90
- data/lib/axlsx/drawing/drawing.rb +167 -167
- data/lib/axlsx/drawing/graphic_frame.rb +54 -54
- data/lib/axlsx/drawing/hyperlink.rb +100 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
- data/lib/axlsx/drawing/line_chart.rb +99 -99
- data/lib/axlsx/drawing/line_series.rb +110 -110
- data/lib/axlsx/drawing/marker.rb +84 -84
- data/lib/axlsx/drawing/num_data.rb +52 -52
- data/lib/axlsx/drawing/num_data_source.rb +62 -62
- data/lib/axlsx/drawing/num_val.rb +34 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
- data/lib/axlsx/drawing/pic.rb +211 -211
- data/lib/axlsx/drawing/picture_locking.rb +42 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
- data/lib/axlsx/drawing/pie_series.rb +74 -74
- data/lib/axlsx/drawing/scaling.rb +60 -60
- data/lib/axlsx/drawing/scatter_chart.rb +74 -74
- data/lib/axlsx/drawing/scatter_series.rb +129 -129
- data/lib/axlsx/drawing/ser_axis.rb +45 -45
- data/lib/axlsx/drawing/series.rb +69 -69
- data/lib/axlsx/drawing/series_title.rb +25 -25
- data/lib/axlsx/drawing/str_data.rb +42 -42
- data/lib/axlsx/drawing/str_val.rb +34 -34
- data/lib/axlsx/drawing/title.rb +107 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
- data/lib/axlsx/drawing/val_axis.rb +37 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +42 -42
- data/lib/axlsx/drawing/vml_shape.rb +66 -66
- data/lib/axlsx/package.rb +398 -388
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -73
- data/lib/axlsx/stylesheet/border_pr.rb +71 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
- data/lib/axlsx/stylesheet/cell_style.rb +72 -72
- data/lib/axlsx/stylesheet/color.rb +76 -76
- data/lib/axlsx/stylesheet/dxf.rb +79 -79
- data/lib/axlsx/stylesheet/fill.rb +35 -35
- data/lib/axlsx/stylesheet/font.rb +156 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
- data/lib/axlsx/stylesheet/styles.rb +535 -494
- data/lib/axlsx/stylesheet/table_style.rb +54 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
- data/lib/axlsx/stylesheet/table_styles.rb +46 -46
- data/lib/axlsx/stylesheet/xf.rb +147 -147
- data/lib/axlsx/util/accessors.rb +64 -64
- data/lib/axlsx/util/constants.rb +416 -410
- data/lib/axlsx/util/mime_type_utils.rb +11 -11
- data/lib/axlsx/util/options_parser.rb +16 -16
- data/lib/axlsx/util/serialized_attributes.rb +89 -89
- data/lib/axlsx/util/simple_typed_list.rb +179 -179
- data/lib/axlsx/util/storage.rb +146 -146
- data/lib/axlsx/util/validators.rb +312 -312
- data/lib/axlsx/util/zip_command.rb +73 -73
- data/lib/axlsx/version.rb +5 -5
- data/lib/axlsx/workbook/defined_name.rb +128 -128
- data/lib/axlsx/workbook/defined_names.rb +21 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
- data/lib/axlsx/workbook/workbook.rb +425 -395
- data/lib/axlsx/workbook/workbook_view.rb +80 -80
- data/lib/axlsx/workbook/workbook_views.rb +22 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
- data/lib/axlsx/workbook/worksheet/col.rb +145 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
- data/lib/axlsx/workbook/worksheet/row.rb +164 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
- data/lib/axlsx/workbook/worksheet/table.rb +102 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +204 -185
- data/lib/caxlsx.rb +2 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
module Axlsx
|
|
3
|
-
# A relationship defines a reference between package parts.
|
|
4
|
-
# @note Packages automatically manage relationships.
|
|
5
|
-
class Relationship
|
|
6
|
-
|
|
7
|
-
class << self
|
|
8
|
-
# Keeps track of relationship ids in use.
|
|
9
|
-
# @return [Array]
|
|
10
|
-
def ids_cache
|
|
11
|
-
Thread.current[:axlsx_relationship_ids_cache] ||= {}
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Initialize cached ids.
|
|
15
|
-
#
|
|
16
|
-
# This should be called before serializing a package (see {Package#serialize} and
|
|
17
|
-
# {Package#to_stream}) to make sure that serialization is idempotent (i.e.
|
|
18
|
-
# Relationship instances are generated with the same IDs everytime the package
|
|
19
|
-
# is serialized).
|
|
20
|
-
def initialize_ids_cache
|
|
21
|
-
Thread.current[:axlsx_relationship_ids_cache] = {}
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Clear cached ids.
|
|
25
|
-
#
|
|
26
|
-
# This should be called after serializing a package (see {Package#serialize} and
|
|
27
|
-
# {Package#to_stream}) to free the memory allocated for cache.
|
|
28
|
-
#
|
|
29
|
-
# Also, calling this avoids memory leaks (cached ids lingering around
|
|
30
|
-
# forever).
|
|
31
|
-
def clear_ids_cache
|
|
32
|
-
Thread.current[:axlsx_relationship_ids_cache] = nil
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Generate and return a unique id (eg. `rId123`) Used for setting {#Id}.
|
|
36
|
-
#
|
|
37
|
-
# The generated id depends on the number of previously cached ids, so using
|
|
38
|
-
# {clear_ids_cache} will automatically reset the generated ids, too.
|
|
39
|
-
# @return [String]
|
|
40
|
-
def next_free_id
|
|
41
|
-
"rId#{ids_cache.size + 1}"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# The id of the relationship (eg. "rId123"). Most instances get their own unique id.
|
|
46
|
-
# However, some instances need to share the same id – see {#should_use_same_id_as?}
|
|
47
|
-
# for details.
|
|
48
|
-
# @return [String]
|
|
49
|
-
attr_reader :Id
|
|
50
|
-
|
|
51
|
-
# The location of the relationship target
|
|
52
|
-
# @return [String]
|
|
53
|
-
attr_reader :Target
|
|
54
|
-
|
|
55
|
-
# The type of relationship
|
|
56
|
-
# @note Supported types are defined as constants in Axlsx:
|
|
57
|
-
# @see XML_NS_R
|
|
58
|
-
# @see TABLE_R
|
|
59
|
-
# @see PIVOT_TABLE_R
|
|
60
|
-
# @see WORKBOOK_R
|
|
61
|
-
# @see WORKSHEET_R
|
|
62
|
-
# @see APP_R
|
|
63
|
-
# @see RELS_R
|
|
64
|
-
# @see CORE_R
|
|
65
|
-
# @see STYLES_R
|
|
66
|
-
# @see CHART_R
|
|
67
|
-
# @see DRAWING_R
|
|
68
|
-
# @return [String]
|
|
69
|
-
attr_reader :Type
|
|
70
|
-
|
|
71
|
-
# The target mode of the relationship
|
|
72
|
-
# used for hyperlink type relationships to mark the relationship to an external resource
|
|
73
|
-
# TargetMode can be specified during initialization by passing in a :target_mode option
|
|
74
|
-
# Target mode must be :external for now.
|
|
75
|
-
attr_reader :TargetMode
|
|
76
|
-
|
|
77
|
-
# The source object the relations belongs to (e.g. a hyperlink, drawing, ...). Needed when
|
|
78
|
-
# looking up the relationship for a specific object (see {Relationships#for}).
|
|
79
|
-
attr_reader :source_obj
|
|
80
|
-
|
|
81
|
-
# Initializes a new relationship.
|
|
82
|
-
# @param [Object] source_obj see {#source_obj}
|
|
83
|
-
# @param [String] type The type of the relationship
|
|
84
|
-
# @param [String] target The target for the relationship
|
|
85
|
-
# @option [Symbol] :target_mode only accepts :external.
|
|
86
|
-
def initialize(source_obj, type, target, options={})
|
|
87
|
-
@source_obj = source_obj
|
|
88
|
-
self.Target=target
|
|
89
|
-
self.Type=type
|
|
90
|
-
self.TargetMode = options[:target_mode] if options[:target_mode]
|
|
91
|
-
@Id = (self.class.ids_cache[ids_cache_key] ||= self.class.next_free_id)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
# @see Target
|
|
95
|
-
def Target=(v) Axlsx::validate_string v; @Target = v end
|
|
96
|
-
# @see Type
|
|
97
|
-
def Type=(v) Axlsx::validate_relationship_type v; @Type = v end
|
|
98
|
-
|
|
99
|
-
# @see TargetMode
|
|
100
|
-
def TargetMode=(v) RestrictionValidator.validate 'Relationship.TargetMode', [:External, :Internal], v; @TargetMode = v; end
|
|
101
|
-
|
|
102
|
-
# serialize relationship
|
|
103
|
-
# @param [String] str
|
|
104
|
-
# @return [String]
|
|
105
|
-
def to_xml_string(str = '')
|
|
106
|
-
h = self.
|
|
107
|
-
str << '<Relationship '
|
|
108
|
-
str << (h.map { |key, value| '' << key.to_s << '="' << Axlsx::coder.encode(value.to_s) << '"'}.join(' '))
|
|
109
|
-
str << '/>'
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
# A key that determines whether this relationship should use already generated id.
|
|
113
|
-
#
|
|
114
|
-
# Instances designating the same relationship need to use the same id. We can not simply
|
|
115
|
-
# compare the {#Target} attribute, though: `foo/bar.xml`, `../foo/bar.xml`,
|
|
116
|
-
# `../../foo/bar.xml` etc. are all different but probably mean the same file (this
|
|
117
|
-
# is especially an issue for relationships in the context of pivot tables). So lets
|
|
118
|
-
# just ignore this attribute for now (except when {#TargetMode} is set to `:External` –
|
|
119
|
-
# then {#Target} will be an absolute URL and thus can safely be compared).
|
|
120
|
-
#
|
|
121
|
-
# @todo Implement comparison of {#Target} based on normalized path names.
|
|
122
|
-
# @return [Array]
|
|
123
|
-
def ids_cache_key
|
|
124
|
-
key = [source_obj, self.Type, self.TargetMode]
|
|
125
|
-
key << self.Target if self.TargetMode == :External
|
|
126
|
-
key
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
end
|
|
130
|
-
end
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# A relationship defines a reference between package parts.
|
|
4
|
+
# @note Packages automatically manage relationships.
|
|
5
|
+
class Relationship
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
# Keeps track of relationship ids in use.
|
|
9
|
+
# @return [Array]
|
|
10
|
+
def ids_cache
|
|
11
|
+
Thread.current[:axlsx_relationship_ids_cache] ||= {}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Initialize cached ids.
|
|
15
|
+
#
|
|
16
|
+
# This should be called before serializing a package (see {Package#serialize} and
|
|
17
|
+
# {Package#to_stream}) to make sure that serialization is idempotent (i.e.
|
|
18
|
+
# Relationship instances are generated with the same IDs everytime the package
|
|
19
|
+
# is serialized).
|
|
20
|
+
def initialize_ids_cache
|
|
21
|
+
Thread.current[:axlsx_relationship_ids_cache] = {}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Clear cached ids.
|
|
25
|
+
#
|
|
26
|
+
# This should be called after serializing a package (see {Package#serialize} and
|
|
27
|
+
# {Package#to_stream}) to free the memory allocated for cache.
|
|
28
|
+
#
|
|
29
|
+
# Also, calling this avoids memory leaks (cached ids lingering around
|
|
30
|
+
# forever).
|
|
31
|
+
def clear_ids_cache
|
|
32
|
+
Thread.current[:axlsx_relationship_ids_cache] = nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Generate and return a unique id (eg. `rId123`) Used for setting {#Id}.
|
|
36
|
+
#
|
|
37
|
+
# The generated id depends on the number of previously cached ids, so using
|
|
38
|
+
# {clear_ids_cache} will automatically reset the generated ids, too.
|
|
39
|
+
# @return [String]
|
|
40
|
+
def next_free_id
|
|
41
|
+
"rId#{ids_cache.size + 1}"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# The id of the relationship (eg. "rId123"). Most instances get their own unique id.
|
|
46
|
+
# However, some instances need to share the same id – see {#should_use_same_id_as?}
|
|
47
|
+
# for details.
|
|
48
|
+
# @return [String]
|
|
49
|
+
attr_reader :Id
|
|
50
|
+
|
|
51
|
+
# The location of the relationship target
|
|
52
|
+
# @return [String]
|
|
53
|
+
attr_reader :Target
|
|
54
|
+
|
|
55
|
+
# The type of relationship
|
|
56
|
+
# @note Supported types are defined as constants in Axlsx:
|
|
57
|
+
# @see XML_NS_R
|
|
58
|
+
# @see TABLE_R
|
|
59
|
+
# @see PIVOT_TABLE_R
|
|
60
|
+
# @see WORKBOOK_R
|
|
61
|
+
# @see WORKSHEET_R
|
|
62
|
+
# @see APP_R
|
|
63
|
+
# @see RELS_R
|
|
64
|
+
# @see CORE_R
|
|
65
|
+
# @see STYLES_R
|
|
66
|
+
# @see CHART_R
|
|
67
|
+
# @see DRAWING_R
|
|
68
|
+
# @return [String]
|
|
69
|
+
attr_reader :Type
|
|
70
|
+
|
|
71
|
+
# The target mode of the relationship
|
|
72
|
+
# used for hyperlink type relationships to mark the relationship to an external resource
|
|
73
|
+
# TargetMode can be specified during initialization by passing in a :target_mode option
|
|
74
|
+
# Target mode must be :external for now.
|
|
75
|
+
attr_reader :TargetMode
|
|
76
|
+
|
|
77
|
+
# The source object the relations belongs to (e.g. a hyperlink, drawing, ...). Needed when
|
|
78
|
+
# looking up the relationship for a specific object (see {Relationships#for}).
|
|
79
|
+
attr_reader :source_obj
|
|
80
|
+
|
|
81
|
+
# Initializes a new relationship.
|
|
82
|
+
# @param [Object] source_obj see {#source_obj}
|
|
83
|
+
# @param [String] type The type of the relationship
|
|
84
|
+
# @param [String] target The target for the relationship
|
|
85
|
+
# @option [Symbol] :target_mode only accepts :external.
|
|
86
|
+
def initialize(source_obj, type, target, options={})
|
|
87
|
+
@source_obj = source_obj
|
|
88
|
+
self.Target=target
|
|
89
|
+
self.Type=type
|
|
90
|
+
self.TargetMode = options[:target_mode] if options[:target_mode]
|
|
91
|
+
@Id = (self.class.ids_cache[ids_cache_key] ||= self.class.next_free_id)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# @see Target
|
|
95
|
+
def Target=(v) Axlsx::validate_string v; @Target = v end
|
|
96
|
+
# @see Type
|
|
97
|
+
def Type=(v) Axlsx::validate_relationship_type v; @Type = v end
|
|
98
|
+
|
|
99
|
+
# @see TargetMode
|
|
100
|
+
def TargetMode=(v) RestrictionValidator.validate 'Relationship.TargetMode', [:External, :Internal], v; @TargetMode = v; end
|
|
101
|
+
|
|
102
|
+
# serialize relationship
|
|
103
|
+
# @param [String] str
|
|
104
|
+
# @return [String]
|
|
105
|
+
def to_xml_string(str = '')
|
|
106
|
+
h = Axlsx.instance_values_for(self).reject{|k, _| k == "source_obj"}
|
|
107
|
+
str << '<Relationship '
|
|
108
|
+
str << (h.map { |key, value| '' << key.to_s << '="' << Axlsx::coder.encode(value.to_s) << '"'}.join(' '))
|
|
109
|
+
str << '/>'
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# A key that determines whether this relationship should use already generated id.
|
|
113
|
+
#
|
|
114
|
+
# Instances designating the same relationship need to use the same id. We can not simply
|
|
115
|
+
# compare the {#Target} attribute, though: `foo/bar.xml`, `../foo/bar.xml`,
|
|
116
|
+
# `../../foo/bar.xml` etc. are all different but probably mean the same file (this
|
|
117
|
+
# is especially an issue for relationships in the context of pivot tables). So lets
|
|
118
|
+
# just ignore this attribute for now (except when {#TargetMode} is set to `:External` –
|
|
119
|
+
# then {#Target} will be an absolute URL and thus can safely be compared).
|
|
120
|
+
#
|
|
121
|
+
# @todo Implement comparison of {#Target} based on normalized path names.
|
|
122
|
+
# @return [Array]
|
|
123
|
+
def ids_cache_key
|
|
124
|
+
key = [source_obj, self.Type, self.TargetMode]
|
|
125
|
+
key << self.Target if self.TargetMode == :External
|
|
126
|
+
key
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
module Axlsx
|
|
3
|
-
require 'axlsx/rels/relationship.rb'
|
|
4
|
-
|
|
5
|
-
# Relationships are a collection of Relations that define how package parts are related.
|
|
6
|
-
# @note The package automatically manages releationships.
|
|
7
|
-
class Relationships < SimpleTypedList
|
|
8
|
-
|
|
9
|
-
# Creates a new Relationships collection based on SimpleTypedList
|
|
10
|
-
def initialize
|
|
11
|
-
super Relationship
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# The relationship instance for the given source object, or nil if none exists.
|
|
15
|
-
# @see Relationship#source_obj
|
|
16
|
-
# @return [Relationship]
|
|
17
|
-
def for(source_obj)
|
|
18
|
-
find{ |rel| rel.source_obj == source_obj }
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# serialize relationships
|
|
22
|
-
# @param [String] str
|
|
23
|
-
# @return [String]
|
|
24
|
-
def to_xml_string(str = '')
|
|
25
|
-
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
26
|
-
str << ('<Relationships xmlns="' << RELS_R << '">')
|
|
27
|
-
each{ |rel| rel.to_xml_string(str) }
|
|
28
|
-
str << '</Relationships>'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
end
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
require 'axlsx/rels/relationship.rb'
|
|
4
|
+
|
|
5
|
+
# Relationships are a collection of Relations that define how package parts are related.
|
|
6
|
+
# @note The package automatically manages releationships.
|
|
7
|
+
class Relationships < SimpleTypedList
|
|
8
|
+
|
|
9
|
+
# Creates a new Relationships collection based on SimpleTypedList
|
|
10
|
+
def initialize
|
|
11
|
+
super Relationship
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# The relationship instance for the given source object, or nil if none exists.
|
|
15
|
+
# @see Relationship#source_obj
|
|
16
|
+
# @return [Relationship]
|
|
17
|
+
def for(source_obj)
|
|
18
|
+
find{ |rel| rel.source_obj == source_obj }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# serialize relationships
|
|
22
|
+
# @param [String] str
|
|
23
|
+
# @return [String]
|
|
24
|
+
def to_xml_string(str = '')
|
|
25
|
+
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
26
|
+
str << ('<Relationships xmlns="' << RELS_R << '">')
|
|
27
|
+
each{ |rel| rel.to_xml_string(str) }
|
|
28
|
+
str << '</Relationships>'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
module Axlsx
|
|
3
|
-
# This class details a border used in Office Open XML spreadsheet styles.
|
|
4
|
-
class Border
|
|
5
|
-
|
|
6
|
-
include Axlsx::SerializedAttributes
|
|
7
|
-
include Axlsx::OptionsParser
|
|
8
|
-
|
|
9
|
-
EDGES = [:left, :right, :top, :bottom].freeze
|
|
10
|
-
|
|
11
|
-
# Creates a new Border object
|
|
12
|
-
# @option options [Boolean] diagonal_up
|
|
13
|
-
# @option options [Boolean] diagonal_down
|
|
14
|
-
# @option options [Boolean] outline
|
|
15
|
-
# @example - Making a border
|
|
16
|
-
# p = Axlsx::Package.new
|
|
17
|
-
# red_border = p.workbook.styles.add_style :border => { :style => :thin, :color => "FFFF0000" }
|
|
18
|
-
# ws = p.workbook.add_worksheet
|
|
19
|
-
# ws.add_row [1,2,3], :style => red_border
|
|
20
|
-
# p.serialize('red_border.xlsx')
|
|
21
|
-
#
|
|
22
|
-
# @note The recommended way to manage borders is with Style#add_style
|
|
23
|
-
# @see Style#add_style
|
|
24
|
-
def initialize(options={})
|
|
25
|
-
@prs = SimpleTypedList.new BorderPr
|
|
26
|
-
parse_options options
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
serializable_attributes :diagonal_up, :diagonal_down, :outline
|
|
30
|
-
|
|
31
|
-
# @return [Boolean] The diagonal up property for the border that indicates if the border should include a diagonal line from the bottom left to the top right of the cell.
|
|
32
|
-
attr_reader :diagonal_up
|
|
33
|
-
alias :diagonalUp :diagonal_up
|
|
34
|
-
|
|
35
|
-
# @return [Boolean] The diagonal down property for the border that indicates if the border should include a diagonal line from the top left to the top right of the cell.
|
|
36
|
-
attr_reader :diagonal_down
|
|
37
|
-
alias :diagonalDown :diagonal_down
|
|
38
|
-
|
|
39
|
-
# @return [Boolean] The outline property for the border indicating that top, left, right and bottom borders should only be applied to the outside border of a range of cells.
|
|
40
|
-
attr_reader :outline
|
|
41
|
-
|
|
42
|
-
# @return [SimpleTypedList] A list of BorderPr objects for this border.
|
|
43
|
-
attr_reader :prs
|
|
44
|
-
|
|
45
|
-
# @see diagonalUp
|
|
46
|
-
def diagonal_up=(v) Axlsx::validate_boolean v; @diagonal_up = v end
|
|
47
|
-
alias :diagonalUp= :diagonal_up=
|
|
48
|
-
|
|
49
|
-
# @see diagonalDown
|
|
50
|
-
def diagonal_down=(v) Axlsx::validate_boolean v; @diagonal_down = v end
|
|
51
|
-
alias :diagonalDown= :diagonal_down=
|
|
52
|
-
|
|
53
|
-
# @see outline
|
|
54
|
-
def outline=(v) Axlsx::validate_boolean v; @outline = v end
|
|
55
|
-
|
|
56
|
-
# Serializes the object
|
|
57
|
-
# @param [String] str
|
|
58
|
-
# @return [String]
|
|
59
|
-
def to_xml_string(str = '')
|
|
60
|
-
str << '<border '
|
|
61
|
-
serialized_attributes str
|
|
62
|
-
str << '>'
|
|
63
|
-
# enforces order
|
|
64
|
-
[:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal].each do |k|
|
|
65
|
-
@prs.select { |pr| pr.name == k }.each do |part|
|
|
66
|
-
part.to_xml_string(str)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
str << '</border>'
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
end
|
|
73
|
-
end
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# This class details a border used in Office Open XML spreadsheet styles.
|
|
4
|
+
class Border
|
|
5
|
+
|
|
6
|
+
include Axlsx::SerializedAttributes
|
|
7
|
+
include Axlsx::OptionsParser
|
|
8
|
+
|
|
9
|
+
EDGES = [:left, :right, :top, :bottom].freeze
|
|
10
|
+
|
|
11
|
+
# Creates a new Border object
|
|
12
|
+
# @option options [Boolean] diagonal_up
|
|
13
|
+
# @option options [Boolean] diagonal_down
|
|
14
|
+
# @option options [Boolean] outline
|
|
15
|
+
# @example - Making a border
|
|
16
|
+
# p = Axlsx::Package.new
|
|
17
|
+
# red_border = p.workbook.styles.add_style :border => { :style => :thin, :color => "FFFF0000" }
|
|
18
|
+
# ws = p.workbook.add_worksheet
|
|
19
|
+
# ws.add_row [1,2,3], :style => red_border
|
|
20
|
+
# p.serialize('red_border.xlsx')
|
|
21
|
+
#
|
|
22
|
+
# @note The recommended way to manage borders is with Style#add_style
|
|
23
|
+
# @see Style#add_style
|
|
24
|
+
def initialize(options={})
|
|
25
|
+
@prs = SimpleTypedList.new BorderPr
|
|
26
|
+
parse_options options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
serializable_attributes :diagonal_up, :diagonal_down, :outline
|
|
30
|
+
|
|
31
|
+
# @return [Boolean] The diagonal up property for the border that indicates if the border should include a diagonal line from the bottom left to the top right of the cell.
|
|
32
|
+
attr_reader :diagonal_up
|
|
33
|
+
alias :diagonalUp :diagonal_up
|
|
34
|
+
|
|
35
|
+
# @return [Boolean] The diagonal down property for the border that indicates if the border should include a diagonal line from the top left to the top right of the cell.
|
|
36
|
+
attr_reader :diagonal_down
|
|
37
|
+
alias :diagonalDown :diagonal_down
|
|
38
|
+
|
|
39
|
+
# @return [Boolean] The outline property for the border indicating that top, left, right and bottom borders should only be applied to the outside border of a range of cells.
|
|
40
|
+
attr_reader :outline
|
|
41
|
+
|
|
42
|
+
# @return [SimpleTypedList] A list of BorderPr objects for this border.
|
|
43
|
+
attr_reader :prs
|
|
44
|
+
|
|
45
|
+
# @see diagonalUp
|
|
46
|
+
def diagonal_up=(v) Axlsx::validate_boolean v; @diagonal_up = v end
|
|
47
|
+
alias :diagonalUp= :diagonal_up=
|
|
48
|
+
|
|
49
|
+
# @see diagonalDown
|
|
50
|
+
def diagonal_down=(v) Axlsx::validate_boolean v; @diagonal_down = v end
|
|
51
|
+
alias :diagonalDown= :diagonal_down=
|
|
52
|
+
|
|
53
|
+
# @see outline
|
|
54
|
+
def outline=(v) Axlsx::validate_boolean v; @outline = v end
|
|
55
|
+
|
|
56
|
+
# Serializes the object
|
|
57
|
+
# @param [String] str
|
|
58
|
+
# @return [String]
|
|
59
|
+
def to_xml_string(str = '')
|
|
60
|
+
str << '<border '
|
|
61
|
+
serialized_attributes str
|
|
62
|
+
str << '>'
|
|
63
|
+
# enforces order
|
|
64
|
+
[:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal].each do |k|
|
|
65
|
+
@prs.select { |pr| pr.name == k }.each do |part|
|
|
66
|
+
part.to_xml_string(str)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
str << '</border>'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
module Axlsx
|
|
3
|
-
# A border part.
|
|
4
|
-
class BorderPr
|
|
5
|
-
include Axlsx::OptionsParser
|
|
6
|
-
# @return [Color] The color of this border part.
|
|
7
|
-
attr_reader :color
|
|
8
|
-
|
|
9
|
-
# @return [Symbol] The syle of this border part.
|
|
10
|
-
# @note
|
|
11
|
-
# The following are allowed
|
|
12
|
-
# :none
|
|
13
|
-
# :thin
|
|
14
|
-
# :medium
|
|
15
|
-
# :dashed
|
|
16
|
-
# :dotted
|
|
17
|
-
# :thick
|
|
18
|
-
# :double
|
|
19
|
-
# :hair
|
|
20
|
-
# :mediumDashed
|
|
21
|
-
# :dashDot
|
|
22
|
-
# :mediumDashDot
|
|
23
|
-
# :dashDotDot
|
|
24
|
-
# :mediumDashDotDot
|
|
25
|
-
# :slantDashDot
|
|
26
|
-
attr_reader :style
|
|
27
|
-
|
|
28
|
-
# @return [Symbol] The name of this border part
|
|
29
|
-
# @note
|
|
30
|
-
# The following are allowed
|
|
31
|
-
# :start
|
|
32
|
-
# :end
|
|
33
|
-
# :left
|
|
34
|
-
# :right
|
|
35
|
-
# :top
|
|
36
|
-
# :bottom
|
|
37
|
-
# :diagonal
|
|
38
|
-
# :vertical
|
|
39
|
-
# :horizontal
|
|
40
|
-
attr_reader :name
|
|
41
|
-
|
|
42
|
-
# Creates a new Border Part Object
|
|
43
|
-
# @option options [Color] color
|
|
44
|
-
# @option options [Symbol] name
|
|
45
|
-
# @option options [Symbol] style
|
|
46
|
-
# @see Axlsx::Border
|
|
47
|
-
def initialize(options={})
|
|
48
|
-
parse_options(options)
|
|
49
|
-
#options.each do |o|
|
|
50
|
-
# self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
51
|
-
#end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# @see name
|
|
55
|
-
def name=(v) RestrictionValidator.validate "BorderPr.name", [:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal], v; @name = v end
|
|
56
|
-
# @see color
|
|
57
|
-
def color=(v) DataTypeValidator.validate(:color, Color, v); @color = v end
|
|
58
|
-
# @see style
|
|
59
|
-
def style=(v) RestrictionValidator.validate "BorderPr.style", [:none, :thin, :medium, :dashed, :dotted, :thick, :double, :hair, :mediumDashed, :dashDot, :mediumDashDot, :dashDotDot, :mediumDashDotDot, :slantDashDot], v; @style = v end
|
|
60
|
-
|
|
61
|
-
# Serializes the object
|
|
62
|
-
# @param [String] str
|
|
63
|
-
# @return [String]
|
|
64
|
-
def to_xml_string(str = '')
|
|
65
|
-
str << ('<' << @name.to_s << ' style="' << @style.to_s << '">')
|
|
66
|
-
@color.to_xml_string(str) if @color.is_a?(Color)
|
|
67
|
-
str << ('</' << @name.to_s << '>')
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
end
|
|
71
|
-
end
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# A border part.
|
|
4
|
+
class BorderPr
|
|
5
|
+
include Axlsx::OptionsParser
|
|
6
|
+
# @return [Color] The color of this border part.
|
|
7
|
+
attr_reader :color
|
|
8
|
+
|
|
9
|
+
# @return [Symbol] The syle of this border part.
|
|
10
|
+
# @note
|
|
11
|
+
# The following are allowed
|
|
12
|
+
# :none
|
|
13
|
+
# :thin
|
|
14
|
+
# :medium
|
|
15
|
+
# :dashed
|
|
16
|
+
# :dotted
|
|
17
|
+
# :thick
|
|
18
|
+
# :double
|
|
19
|
+
# :hair
|
|
20
|
+
# :mediumDashed
|
|
21
|
+
# :dashDot
|
|
22
|
+
# :mediumDashDot
|
|
23
|
+
# :dashDotDot
|
|
24
|
+
# :mediumDashDotDot
|
|
25
|
+
# :slantDashDot
|
|
26
|
+
attr_reader :style
|
|
27
|
+
|
|
28
|
+
# @return [Symbol] The name of this border part
|
|
29
|
+
# @note
|
|
30
|
+
# The following are allowed
|
|
31
|
+
# :start
|
|
32
|
+
# :end
|
|
33
|
+
# :left
|
|
34
|
+
# :right
|
|
35
|
+
# :top
|
|
36
|
+
# :bottom
|
|
37
|
+
# :diagonal
|
|
38
|
+
# :vertical
|
|
39
|
+
# :horizontal
|
|
40
|
+
attr_reader :name
|
|
41
|
+
|
|
42
|
+
# Creates a new Border Part Object
|
|
43
|
+
# @option options [Color] color
|
|
44
|
+
# @option options [Symbol] name
|
|
45
|
+
# @option options [Symbol] style
|
|
46
|
+
# @see Axlsx::Border
|
|
47
|
+
def initialize(options={})
|
|
48
|
+
parse_options(options)
|
|
49
|
+
#options.each do |o|
|
|
50
|
+
# self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
51
|
+
#end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @see name
|
|
55
|
+
def name=(v) RestrictionValidator.validate "BorderPr.name", [:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal], v; @name = v end
|
|
56
|
+
# @see color
|
|
57
|
+
def color=(v) DataTypeValidator.validate(:color, Color, v); @color = v end
|
|
58
|
+
# @see style
|
|
59
|
+
def style=(v) RestrictionValidator.validate "BorderPr.style", [:none, :thin, :medium, :dashed, :dotted, :thick, :double, :hair, :mediumDashed, :dashDot, :mediumDashDot, :dashDotDot, :mediumDashDotDot, :slantDashDot], v; @style = v end
|
|
60
|
+
|
|
61
|
+
# Serializes the object
|
|
62
|
+
# @param [String] str
|
|
63
|
+
# @return [String]
|
|
64
|
+
def to_xml_string(str = '')
|
|
65
|
+
str << ('<' << @name.to_s << ' style="' << @style.to_s << '">')
|
|
66
|
+
@color.to_xml_string(str) if @color.is_a?(Color)
|
|
67
|
+
str << ('</' << @name.to_s << '>')
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
end
|