xlsxtream 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87c2d49e093ad55cc8136a6dcdee6102f40a354dfb5302c31261bf88175081d3
4
- data.tar.gz: 38d8dc8a4b114eff3ff1b9a72066ba8a9a18f1cd368a0d6e203e5d9e36d529dd
3
+ metadata.gz: aa056909b0dd743240cb8b4ddb85a86fd1110042110cd49731e9e8d13e7df5d9
4
+ data.tar.gz: 6726cf3a9d3f52bfe690551124d2d9cd769fd6c1b20d96893a0b336536a09c44
5
5
  SHA512:
6
- metadata.gz: 6232e84980e429c99d1635a649e348d30cdaa1c91d7b452af476fd8658e5c09cc16d0578bb0eedcdf6f014981e0a958bf31aae7e8997db5e3b2adfab278bdc0b
7
- data.tar.gz: a674d3d09a69ef48aa5e4b351f331ed17a00b26142b53e0251733db1bebeac1956ec7a7dc603dcfe0155e31cf15c708bf9a3af30a285dc47c8a324b902aa7a26
6
+ metadata.gz: 27292c56f60cf20c186af8bba0d52a1c799a0c1f6a76de49660d3c591986375df39b59e5752042aa1c5bf1016e17ce81ef28ceefdf3a6f59fc34a3f7d6a5d981
7
+ data.tar.gz: 743ea2bcdac011ac472f146222c5f20e63cb4bc38304ae470f80d6cf5660a65071556d3c61afd421e4c5933a0b6c705331348bd44a20641c77a92f1c736c0ee0
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.3.0 (2019-11-27)
4
+
5
+ - Speed up date / time conversion to OA format (#39)
6
+
3
7
  ## 2.2.0 (2019-11-27)
4
8
 
5
9
  - Allow usage with zip\_tricks 5.x gem (#38)
@@ -43,10 +43,12 @@ module Xlsxtream
43
43
  xml << %Q{<c r="#{cid}" t="n"><v>#{value}</v></c>}
44
44
  when TrueClass, FalseClass
45
45
  xml << %Q{<c r="#{cid}" t="b"><v>#{value ? 1 : 0}</v></c>}
46
- when Time, DateTime
46
+ when Time
47
47
  xml << %Q{<c r="#{cid}" s="#{TIME_STYLE}"><v>#{time_to_oa_date(value)}</v></c>}
48
+ when DateTime
49
+ xml << %Q{<c r="#{cid}" s="#{TIME_STYLE}"><v>#{datetime_to_oa_date(value)}</v></c>}
48
50
  when Date
49
- xml << %Q{<c r="#{cid}" s="#{DATE_STYLE}"><v>#{time_to_oa_date(value)}</v></c>}
51
+ xml << %Q{<c r="#{cid}" s="#{DATE_STYLE}"><v>#{date_to_oa_date(value)}</v></c>}
50
52
  else
51
53
  value = value.to_s
52
54
 
@@ -85,14 +87,29 @@ module Xlsxtream
85
87
  end
86
88
  end
87
89
 
88
- # Converts Time objects to OLE Automation Date
90
+ # Converts Time instance to OLE Automation Date
89
91
  def time_to_oa_date(time)
90
- time = time.to_time if time.respond_to?(:to_time)
91
-
92
92
  # Local dates are stored as UTC by truncating the offset:
93
93
  # 1970-01-01 00:00:00 +0200 => 1970-01-01 00:00:00 UTC
94
94
  # This is done because SpreadsheetML is not timezone aware.
95
- (time + time.utc_offset).utc.to_f / 24 / 3600 + 25569
95
+ (time.to_f + time.utc_offset) / 86400 + 25569
96
+ end
97
+
98
+ # Converts DateTime instance to OLE Automation Date
99
+ if RUBY_ENGINE == 'ruby'
100
+ def datetime_to_oa_date(date)
101
+ _, jd, df, sf, of = date.marshal_dump
102
+ jd - 2415019 + (df + of + sf / 1e9) / 86400
103
+ end
104
+ else
105
+ def datetime_to_oa_date(date)
106
+ date.jd - 2415019 + (date.hour * 3600 + date.sec + date.sec_fraction.to_f) / 86400
107
+ end
108
+ end
109
+
110
+ # Converts Date instance to OLE Automation Date
111
+ def date_to_oa_date(date)
112
+ (date.jd - 2415019).to_f
96
113
  end
97
114
  end
98
115
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Xlsxtream
3
- VERSION = '2.2.0'.freeze
3
+ VERSION = '2.3.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlsxtream
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Bünemann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2019-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zip_tricks