fast_excel 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }