Method: XlsxWriter::Workbook#initialize
- Defined in:
- ext/xlsxwriter/workbook.c
#initialize(*args) ⇒ Object
:nodoc:
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'ext/xlsxwriter/workbook.c', line 80
VALUE
workbook_init(int argc, VALUE *argv, VALUE self) {
struct workbook *ptr;
lxw_workbook_options options = {
.constant_memory = 0,
.tmpdir = NULL,
.use_zip64 = 0
};
if (argc < 1 || argc > 2) {
rb_raise(rb_eArgError, "wrong number of arguments");
return self;
} else if (argc == 2) {
VALUE const_mem = rb_hash_aref(argv[1], ID2SYM(rb_intern("constant_memory")));
if (!NIL_P(const_mem) && const_mem) {
options.constant_memory = 1;
VALUE tmpdir = rb_hash_aref(argv[1], ID2SYM(rb_intern("tmpdir")));
if (!NIL_P(tmpdir))
options.tmpdir = RSTRING_PTR(tmpdir);
}
VALUE use_zip64_ = rb_hash_aref(argv[1], ID2SYM(rb_intern("use_zip64")));
if (!NIL_P(use_zip64_) && use_zip64_) {
options.use_zip64 = 1;
}
}
TypedData_Get_Struct(self, struct workbook, &workbook_type, ptr);
size_t len = RSTRING_LEN(argv[0]);
ptr->path = malloc(len + 1);
strncpy(ptr->path, RSTRING_PTR(argv[0]), len + 1);
if (options.constant_memory) {
ptr->workbook = workbook_new_opt(ptr->path, &options);
} else {
ptr->workbook = workbook_new(ptr->path);
}
ptr->properties = NULL;
rb_iv_set(self, "@font_sizes", rb_hash_new());
return self;
}
|