fast_excel 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3527e28360ec8d98f3bcd0e2ea27bf3c4aef8709
4
- data.tar.gz: 34e9b7d88f7070023dd38d4aa2f726ca94c04f00
3
+ metadata.gz: 5b3fea677b83c37195affe038f16bcc03cad62a0
4
+ data.tar.gz: 91383abc260bb5df19bf9153efcd53f4d1e3fd43
5
5
  SHA512:
6
- metadata.gz: 1bff87327a872ca3d0db96b05c38e3cc22d31051840711a03c7adc83484ead48395f0c6c2e481ada0baed1477fb0105e5136fa55053ccf6f5561f9073b7cc2ea
7
- data.tar.gz: 6df2008f272b89ca1169f4d29f95db6a9049c317cf8e295fc384f49627cdb997d185b9f29d972b6982d37ce5d09994bfd13d5418d19dbbb75df49f79d904fdcd
6
+ metadata.gz: 83b36430c0c230863a9659790932a39c4e670d7e0b8c687a8f26ce82998d4f362a201d07ef9bbcbedae9725e66156a5d1ea37db3b9c390b51bdd69e35f295668
7
+ data.tar.gz: 0ffe702bfd23a34bcd75e3b33d63629928acf8ca2da407a06262d16c40ca4a0ca75846483ca0cf8dff5438832ba18380a0dbef859338def57e1d836445e1ef4b
data/example.rb CHANGED
@@ -1,8 +1,14 @@
1
1
  require_relative './lib/fast_excel'
2
+ require 'pp'
2
3
 
3
4
  workbook = FastExcel.open("ffi_example.xlsx", constant_memory: true)
4
5
 
5
- workbook.default_format[:font_size] = -1 # user's default
6
+ workbook.default_format.set(
7
+ font_size: 0, # user's default
8
+ #font_family: "Arial"
9
+ )
10
+
11
+ # pp workbook.default_format
6
12
 
7
13
  worksheet = workbook.add_worksheet("Payments Report")
8
14
 
data/fast_excel.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "fast_excel"
3
- s.version = "0.1.3"
3
+ s.version = "0.1.4"
4
4
  s.author = ["Pavel Evstigneev"]
5
5
  s.email = ["pavel.evst@gmail.com"]
6
6
  s.homepage = "https://github.com/paxa/fast_excel"
data/lib/fast_excel.rb CHANGED
@@ -65,7 +65,28 @@ module FastExcel
65
65
  time.to_f / XLSX_DATE_DAY + XLSX_DATE_EPOCH_DIFF + offset / XLSX_DATE_DAY
66
66
  end
67
67
 
68
+ module AttributeHelper
69
+ def set(value)
70
+ value.each do |key, value|
71
+ if respond_to?("#{key}=")
72
+ send("#{key}=", value)
73
+ else
74
+ self[key] = value
75
+ end
76
+ end
77
+ end
78
+
79
+ def pretty_print(pp)
80
+ res = {}
81
+ members.each do |key|
82
+ res[key] = respond_to?(key) ? send(key) : self[key]
83
+ end
84
+ pp res
85
+ end
86
+ end
87
+
68
88
  module WorkbookExt
89
+ include AttributeHelper
69
90
 
70
91
  def bold_cell_format
71
92
  bold = add_format
@@ -87,6 +108,7 @@ module FastExcel
87
108
  end
88
109
 
89
110
  module WorksheetExt
111
+ include AttributeHelper
90
112
 
91
113
  def write_row(row_number, values, formats = nil)
92
114
  values.each_with_index do |value, index|
@@ -109,12 +131,63 @@ module FastExcel
109
131
  end
110
132
 
111
133
  end
134
+
135
+ module FormatExt
136
+ include AttributeHelper
137
+
138
+ [:font_size, :font_name, :underline, :font_script, :num_format, :align, :rotation, :indent, :pattern, :border].each do |prop|
139
+ define_method(prop) do
140
+ self[prop]
141
+ end
142
+ define_method("#{prop}=") do |value|
143
+ send("set_#{prop}", value)
144
+ end
145
+ end
146
+
147
+ [:bold, :italic, :font_outline, :font_shadow, :hidden, :text_wrap, :font_strikeout, :shrink, :text_justlast].each do |prop|
148
+ define_method(prop) do
149
+ self[prop]
150
+ end
151
+ define_method("#{prop}=") do |value|
152
+ value ? send("set_#{prop}") : self[prop] = false
153
+ end
154
+ end
155
+
156
+ [:num_format, :font_name].each do |prop|
157
+ define_method(prop) do
158
+ self[prop].to_ptr.read_string
159
+ end
160
+
161
+ define_method("#{prop}=") do |value|
162
+ send("set_#{prop}", value)
163
+ end
164
+ end
165
+
166
+ def set_font_size(value)
167
+ if value < 0
168
+ raise ArgumentError, "font size should be >= 0 (use 0 for user default font size)"
169
+ end
170
+ super(value)
171
+ end
172
+
173
+ def font_family
174
+ font_name
175
+ end
176
+
177
+ def font_family=(value)
178
+ self.font_name = value
179
+ end
180
+ end
112
181
  end
113
182
 
114
183
  Libxlsxwriter::Workbook.instance_eval do
115
184
  include FastExcel::WorkbookExt
116
185
  end
117
186
 
187
+ Libxlsxwriter::Format.instance_eval do
188
+ include FastExcel::FormatExt
189
+ end
190
+
118
191
  Libxlsxwriter::Worksheet.instance_eval do
119
192
  include FastExcel::WorksheetExt
120
193
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_excel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Evstigneev