fast_excel 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -7
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -1
  5. data/examples/example.rb +2 -0
  6. data/examples/example_date_time.rb +38 -0
  7. data/fast_excel.gemspec +2 -2
  8. data/lib/fast_excel/binding/format.rb +17 -0
  9. data/lib/fast_excel/binding/workbook.rb +39 -17
  10. data/lib/fast_excel/binding/worksheet.rb +57 -13
  11. data/lib/fast_excel/binding.rb +7 -7
  12. data/lib/fast_excel.rb +27 -20
  13. data/libxlsxwriter/.github/FUNDING.yml +1 -0
  14. data/libxlsxwriter/.github/ISSUE_TEMPLATE.md +85 -0
  15. data/libxlsxwriter/.github/PULL_REQUEST_TEMPLATE.md +130 -0
  16. data/libxlsxwriter/.github/workflows/cmake_actions.yml +48 -0
  17. data/libxlsxwriter/.github/workflows/code_style.yml +23 -0
  18. data/libxlsxwriter/.github/workflows/coverity.yml +22 -0
  19. data/libxlsxwriter/.github/workflows/make_actions.yml +52 -0
  20. data/libxlsxwriter/.github/workflows/valgrind.yml +23 -0
  21. data/libxlsxwriter/.github/workflows/windows_build.yml +54 -0
  22. data/libxlsxwriter/.github/workflows/zig_build.yml +22 -0
  23. data/libxlsxwriter/.gitignore +16 -1
  24. data/libxlsxwriter/.indent.pro +24 -0
  25. data/libxlsxwriter/CMakeLists.txt +156 -56
  26. data/libxlsxwriter/CONTRIBUTING.md +2 -2
  27. data/libxlsxwriter/Changes.txt +344 -2
  28. data/libxlsxwriter/LICENSE.txt +66 -8
  29. data/libxlsxwriter/Makefile +151 -54
  30. data/libxlsxwriter/Package.swift +42 -0
  31. data/libxlsxwriter/Readme.md +4 -2
  32. data/libxlsxwriter/build.zig +324 -0
  33. data/libxlsxwriter/build.zig.zon +11 -0
  34. data/libxlsxwriter/cmake/FindMINIZIP.cmake +3 -3
  35. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +6 -0
  36. data/libxlsxwriter/include/xlsxwriter/app.h +2 -1
  37. data/libxlsxwriter/include/xlsxwriter/chart.h +236 -32
  38. data/libxlsxwriter/include/xlsxwriter/chartsheet.h +7 -7
  39. data/libxlsxwriter/include/xlsxwriter/comment.h +76 -0
  40. data/libxlsxwriter/include/xlsxwriter/common.h +111 -50
  41. data/libxlsxwriter/include/xlsxwriter/content_types.h +8 -1
  42. data/libxlsxwriter/include/xlsxwriter/core.h +1 -1
  43. data/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
  44. data/libxlsxwriter/include/xlsxwriter/drawing.h +11 -20
  45. data/libxlsxwriter/include/xlsxwriter/format.h +121 -8
  46. data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
  47. data/libxlsxwriter/include/xlsxwriter/metadata.h +49 -0
  48. data/libxlsxwriter/include/xlsxwriter/packager.h +27 -16
  49. data/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
  50. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
  51. data/libxlsxwriter/include/xlsxwriter/styles.h +13 -7
  52. data/libxlsxwriter/include/xlsxwriter/table.h +51 -0
  53. data/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
  54. data/libxlsxwriter/include/xlsxwriter/third_party/emyg_dtoa.h +26 -0
  55. data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +27 -25
  56. data/libxlsxwriter/include/xlsxwriter/third_party/md5.h +45 -0
  57. data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +155 -153
  58. data/libxlsxwriter/include/xlsxwriter/utility.h +70 -8
  59. data/libxlsxwriter/include/xlsxwriter/vml.h +55 -0
  60. data/libxlsxwriter/include/xlsxwriter/workbook.h +218 -47
  61. data/libxlsxwriter/include/xlsxwriter/worksheet.h +2770 -241
  62. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +12 -8
  63. data/libxlsxwriter/include/xlsxwriter.h +4 -2
  64. data/libxlsxwriter/libxlsxwriter.podspec +8 -5
  65. data/libxlsxwriter/src/Makefile +58 -21
  66. data/libxlsxwriter/src/app.c +5 -2
  67. data/libxlsxwriter/src/chart.c +396 -81
  68. data/libxlsxwriter/src/chartsheet.c +22 -22
  69. data/libxlsxwriter/src/comment.c +443 -0
  70. data/libxlsxwriter/src/content_types.c +40 -1
  71. data/libxlsxwriter/src/core.c +2 -2
  72. data/libxlsxwriter/src/custom.c +1 -1
  73. data/libxlsxwriter/src/drawing.c +160 -40
  74. data/libxlsxwriter/src/format.c +109 -25
  75. data/libxlsxwriter/src/hash_table.c +1 -1
  76. data/libxlsxwriter/src/metadata.c +283 -0
  77. data/libxlsxwriter/src/packager.c +794 -94
  78. data/libxlsxwriter/src/relationships.c +1 -1
  79. data/libxlsxwriter/src/shared_strings.c +2 -4
  80. data/libxlsxwriter/src/styles.c +353 -58
  81. data/libxlsxwriter/src/table.c +304 -0
  82. data/libxlsxwriter/src/theme.c +1 -1
  83. data/libxlsxwriter/src/utility.c +143 -43
  84. data/libxlsxwriter/src/vml.c +1062 -0
  85. data/libxlsxwriter/src/workbook.c +567 -77
  86. data/libxlsxwriter/src/worksheet.c +6668 -1462
  87. data/libxlsxwriter/src/xmlwriter.c +95 -5
  88. data/libxlsxwriter/third_party/dtoa/Makefile +42 -0
  89. data/libxlsxwriter/third_party/dtoa/emyg_dtoa.c +461 -0
  90. data/libxlsxwriter/third_party/dtoa/emyg_dtoa.h +26 -0
  91. data/libxlsxwriter/third_party/md5/Makefile +42 -0
  92. data/libxlsxwriter/third_party/md5/md5.c +291 -0
  93. data/libxlsxwriter/third_party/md5/md5.h +45 -0
  94. data/libxlsxwriter/third_party/minizip/Makefile +3 -8
  95. data/libxlsxwriter/third_party/minizip/Makefile.orig +8 -4
  96. data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +1 -1
  97. data/libxlsxwriter/third_party/minizip/configure.ac +1 -1
  98. data/libxlsxwriter/third_party/minizip/crypt.h +13 -16
  99. data/libxlsxwriter/third_party/minizip/ioapi.c +31 -57
  100. data/libxlsxwriter/third_party/minizip/ioapi.h +31 -23
  101. data/libxlsxwriter/third_party/minizip/iowin32.c +29 -45
  102. data/libxlsxwriter/third_party/minizip/iowin32.h +4 -4
  103. data/libxlsxwriter/third_party/minizip/miniunz.c +29 -56
  104. data/libxlsxwriter/third_party/minizip/minizip.c +38 -49
  105. data/libxlsxwriter/third_party/minizip/mztools.c +1 -7
  106. data/libxlsxwriter/third_party/minizip/unzip.c +202 -342
  107. data/libxlsxwriter/third_party/minizip/unzip.h +74 -74
  108. data/libxlsxwriter/third_party/minizip/zip.c +165 -218
  109. data/libxlsxwriter/third_party/minizip/zip.h +164 -154
  110. data/libxlsxwriter/third_party/tmpfileplus/Makefile +3 -3
  111. data/libxlsxwriter/version.txt +1 -1
  112. data/test/auto_width_test.rb +20 -0
  113. data/test/default_format_test.rb +1 -1
  114. data/test/validations_test.rb +3 -3
  115. data/test/worksheet_test.rb +6 -1
  116. metadata +33 -7
  117. data/libxlsxwriter/.travis.yml +0 -37
@@ -0,0 +1,283 @@
1
+ /*****************************************************************************
2
+ * metadata - A library for creating Excel XLSX metadata files.
3
+ *
4
+ * Used in conjunction with the libxlsxwriter library.
5
+ *
6
+ * Copyright 2014-2022, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
7
+ *
8
+ */
9
+
10
+ #include "xlsxwriter/xmlwriter.h"
11
+ #include "xlsxwriter/metadata.h"
12
+ #include "xlsxwriter/utility.h"
13
+
14
+ /*
15
+ * Forward declarations.
16
+ */
17
+
18
+ /*****************************************************************************
19
+ *
20
+ * Private functions.
21
+ *
22
+ ****************************************************************************/
23
+
24
+ /*
25
+ * Create a new metadata object.
26
+ */
27
+ lxw_metadata *
28
+ lxw_metadata_new(void)
29
+ {
30
+ lxw_metadata *metadata = calloc(1, sizeof(lxw_metadata));
31
+ GOTO_LABEL_ON_MEM_ERROR(metadata, mem_error);
32
+
33
+ return metadata;
34
+
35
+ mem_error:
36
+ lxw_metadata_free(metadata);
37
+ return NULL;
38
+ }
39
+
40
+ /*
41
+ * Free a metadata object.
42
+ */
43
+ void
44
+ lxw_metadata_free(lxw_metadata *metadata)
45
+ {
46
+ if (!metadata)
47
+ return;
48
+
49
+ free(metadata);
50
+ }
51
+
52
+ /*****************************************************************************
53
+ *
54
+ * XML functions.
55
+ *
56
+ ****************************************************************************/
57
+
58
+ /*
59
+ * Write the XML declaration.
60
+ */
61
+ STATIC void
62
+ _metadata_xml_declaration(lxw_metadata *self)
63
+ {
64
+ lxw_xml_declaration(self->file);
65
+ }
66
+
67
+ /*
68
+ * Write the <metadata> element.
69
+ */
70
+ STATIC void
71
+ _metadata_write_metadata(lxw_metadata *self)
72
+ {
73
+ struct xml_attribute_list attributes;
74
+ struct xml_attribute *attribute;
75
+ char xmlns[] = "http://schemas.openxmlformats.org/"
76
+ "spreadsheetml/2006/main";
77
+ char xmlns_xda[] = "http://schemas.microsoft.com/office/"
78
+ "spreadsheetml/2017/dynamicarray";
79
+
80
+ LXW_INIT_ATTRIBUTES();
81
+ LXW_PUSH_ATTRIBUTES_STR("xmlns", xmlns);
82
+ LXW_PUSH_ATTRIBUTES_STR("xmlns:xda", xmlns_xda);
83
+
84
+ lxw_xml_start_tag(self->file, "metadata", &attributes);
85
+
86
+ LXW_FREE_ATTRIBUTES();
87
+ }
88
+
89
+ /*
90
+ * Write the <metadataType> element.
91
+ */
92
+ STATIC void
93
+ _metadata_write_metadata_type(lxw_metadata *self)
94
+ {
95
+ struct xml_attribute_list attributes;
96
+ struct xml_attribute *attribute;
97
+
98
+ LXW_INIT_ATTRIBUTES();
99
+ LXW_PUSH_ATTRIBUTES_STR("name", "XLDAPR");
100
+ LXW_PUSH_ATTRIBUTES_INT("minSupportedVersion", 120000);
101
+ LXW_PUSH_ATTRIBUTES_INT("copy", 1);
102
+ LXW_PUSH_ATTRIBUTES_INT("pasteAll", 1);
103
+ LXW_PUSH_ATTRIBUTES_INT("pasteValues", 1);
104
+ LXW_PUSH_ATTRIBUTES_INT("merge", 1);
105
+ LXW_PUSH_ATTRIBUTES_INT("splitFirst", 1);
106
+ LXW_PUSH_ATTRIBUTES_INT("rowColShift", 1);
107
+ LXW_PUSH_ATTRIBUTES_INT("clearFormats", 1);
108
+ LXW_PUSH_ATTRIBUTES_INT("clearComments", 1);
109
+ LXW_PUSH_ATTRIBUTES_INT("assign", 1);
110
+ LXW_PUSH_ATTRIBUTES_INT("coerce", 1);
111
+ LXW_PUSH_ATTRIBUTES_INT("cellMeta", 1);
112
+
113
+ lxw_xml_empty_tag(self->file, "metadataType", &attributes);
114
+
115
+ LXW_FREE_ATTRIBUTES();
116
+ }
117
+
118
+ /*
119
+ * Write the <metadataTypes> element.
120
+ */
121
+ STATIC void
122
+ _metadata_write_metadata_types(lxw_metadata *self)
123
+ {
124
+ struct xml_attribute_list attributes;
125
+ struct xml_attribute *attribute;
126
+
127
+ LXW_INIT_ATTRIBUTES();
128
+ LXW_PUSH_ATTRIBUTES_INT("count", 1);
129
+
130
+ lxw_xml_start_tag(self->file, "metadataTypes", &attributes);
131
+
132
+ /* Write the metadataType element. */
133
+ _metadata_write_metadata_type(self);
134
+
135
+ lxw_xml_end_tag(self->file, "metadataTypes");
136
+
137
+ LXW_FREE_ATTRIBUTES();
138
+ }
139
+
140
+ /*
141
+ * Write the <xda:dynamicArrayProperties> element.
142
+ */
143
+ STATIC void
144
+ _metadata_write_xda_dynamic_array_properties(lxw_metadata *self)
145
+ {
146
+ struct xml_attribute_list attributes;
147
+ struct xml_attribute *attribute;
148
+
149
+ LXW_INIT_ATTRIBUTES();
150
+ LXW_PUSH_ATTRIBUTES_STR("fDynamic", "1");
151
+ LXW_PUSH_ATTRIBUTES_STR("fCollapsed", "0");
152
+
153
+ lxw_xml_empty_tag(self->file, "xda:dynamicArrayProperties", &attributes);
154
+
155
+ LXW_FREE_ATTRIBUTES();
156
+ }
157
+
158
+ /*
159
+ * Write the <ext> element.
160
+ */
161
+ STATIC void
162
+ _metadata_write_ext(lxw_metadata *self)
163
+ {
164
+ struct xml_attribute_list attributes;
165
+ struct xml_attribute *attribute;
166
+
167
+ LXW_INIT_ATTRIBUTES();
168
+ LXW_PUSH_ATTRIBUTES_STR("uri", "{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}");
169
+
170
+ lxw_xml_start_tag(self->file, "ext", &attributes);
171
+
172
+ /* Write the xda:dynamicArrayProperties element. */
173
+ _metadata_write_xda_dynamic_array_properties(self);
174
+
175
+ lxw_xml_end_tag(self->file, "ext");
176
+
177
+ LXW_FREE_ATTRIBUTES();
178
+ }
179
+
180
+ /*
181
+ * Write the <futureMetadata> element.
182
+ */
183
+ STATIC void
184
+ _metadata_write_future_metadata(lxw_metadata *self)
185
+ {
186
+ struct xml_attribute_list attributes;
187
+ struct xml_attribute *attribute;
188
+
189
+ LXW_INIT_ATTRIBUTES();
190
+ LXW_PUSH_ATTRIBUTES_STR("name", "XLDAPR");
191
+ LXW_PUSH_ATTRIBUTES_INT("count", 1);
192
+
193
+ lxw_xml_start_tag(self->file, "futureMetadata", &attributes);
194
+
195
+ lxw_xml_start_tag(self->file, "bk", NULL);
196
+
197
+ lxw_xml_start_tag(self->file, "extLst", NULL);
198
+
199
+ /* Write the ext element. */
200
+ _metadata_write_ext(self);
201
+
202
+ lxw_xml_end_tag(self->file, "extLst");
203
+
204
+ lxw_xml_end_tag(self->file, "bk");
205
+
206
+ lxw_xml_end_tag(self->file, "futureMetadata");
207
+
208
+ LXW_FREE_ATTRIBUTES();
209
+ }
210
+
211
+ /*
212
+ * Write the <rc> element.
213
+ */
214
+ STATIC void
215
+ _metadata_write_rc(lxw_metadata *self)
216
+ {
217
+ struct xml_attribute_list attributes;
218
+ struct xml_attribute *attribute;
219
+
220
+ LXW_INIT_ATTRIBUTES();
221
+ LXW_PUSH_ATTRIBUTES_STR("t", "1");
222
+ LXW_PUSH_ATTRIBUTES_STR("v", "0");
223
+
224
+ lxw_xml_empty_tag(self->file, "rc", &attributes);
225
+
226
+ LXW_FREE_ATTRIBUTES();
227
+ }
228
+
229
+ /*
230
+ * Write the <cellMetadata> element.
231
+ */
232
+ STATIC void
233
+ _metadata_write_cell_metadata(lxw_metadata *self)
234
+ {
235
+ struct xml_attribute_list attributes;
236
+ struct xml_attribute *attribute;
237
+
238
+ LXW_INIT_ATTRIBUTES();
239
+ LXW_PUSH_ATTRIBUTES_STR("count", "1");
240
+
241
+ lxw_xml_start_tag(self->file, "cellMetadata", &attributes);
242
+
243
+ lxw_xml_start_tag(self->file, "bk", NULL);
244
+
245
+ /* Write the rc element. */
246
+ _metadata_write_rc(self);
247
+
248
+ lxw_xml_end_tag(self->file, "bk");
249
+
250
+ lxw_xml_end_tag(self->file, "cellMetadata");
251
+
252
+ LXW_FREE_ATTRIBUTES();
253
+ }
254
+
255
+ /*****************************************************************************
256
+ *
257
+ * XML file assembly functions.
258
+ *
259
+ ****************************************************************************/
260
+
261
+ /*
262
+ * Assemble and write the XML file.
263
+ */
264
+ void
265
+ lxw_metadata_assemble_xml_file(lxw_metadata *self)
266
+ {
267
+ /* Write the XML declaration. */
268
+ _metadata_xml_declaration(self);
269
+
270
+ /* Write the metadata element. */
271
+ _metadata_write_metadata(self);
272
+
273
+ /* Write the metadataTypes element. */
274
+ _metadata_write_metadata_types(self);
275
+
276
+ /* Write the futureMetadata element. */
277
+ _metadata_write_future_metadata(self);
278
+
279
+ /* Write the cellMetadata element. */
280
+ _metadata_write_cell_metadata(self);
281
+
282
+ lxw_xml_end_tag(self->file, "metadata");
283
+ }