xlsxtream 2.2.0 → 2.3.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.
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