keisan 0.8.1 → 0.8.2

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: 25f0cd7f7a5bd124a62c244a270bb4db0632fc0ce295d7f55fa25409eae66473
4
- data.tar.gz: 5cdeae27276969608966b56891abe91fe8b2bddaef9f7ef3fdeb6a3fe6696176
3
+ metadata.gz: 120e92a22f1bc276073eb006d158c63749382d71ace8c8bee3ea301590dc0f34
4
+ data.tar.gz: ae55746c285031ee69471663aa07930bb8b77cea65ad9df46764758d0908027f
5
5
  SHA512:
6
- metadata.gz: 32d761e97663ad54bc37d2e3894875068daa8567ae521dd877879a94f66417c752cc338eba7f1a06bbe23f2a1455fce7751690323fcf4948f243d8254c69f1b4
7
- data.tar.gz: 6c62bfc43752fe4918022e0217227c4a31d1fae6225bf70d65bc61afb025dbef5af74597055b1216a4ef9d261252e2f2d9ac26467319e33c4c842a2764711053
6
+ metadata.gz: f6efb7ea75b6895ceb32b657edcccc924a50ee8d58d66eb0702e2b5bdf9d00a7f1718be17f663ce9140ac3563dcd61ea8fee47819f7e899052644909bbacc8f1
7
+ data.tar.gz: 33b991e75ca42b6e1039572da84ce0d10ec4f5461fdf04f0925e0bc5425b9d712d5b7ef76f5a65f7928e26fd4a4661016773bb8de90a66f8fd09c3f4cb0cff87
data/README.md CHANGED
@@ -256,6 +256,7 @@ calculator.evaluate("range(1, 6).map(x, [x, x**2]).to_h")
256
256
  Keisan supports date and time objects like in Ruby.
257
257
  You create a date object using either the method `date` (either a string to be parsed, or year, month, day numerical arguments) or `today`.
258
258
  They support methods `year`, `month`, `day`, `weekday`, `strftime`, and `to_time` to convert to a time object.
259
+ `epoch_days` computes the number of days since Unix epoch (Jan 1, 1970).
259
260
 
260
261
  ```ruby
261
262
  calculator = Keisan::Calculator.new
@@ -266,10 +267,13 @@ calculator.evaluate("today() > date(2018, 11, 1)")
266
267
  #=> true
267
268
  calculator.evaluate("date('1999-12-31').to_time + 10")
268
269
  #=> Time.new(1999, 12, 31, 0, 0, 10)
270
+ calculator.evaluate("date(1970, 1, 15).epoch_days")
271
+ #=> 14
269
272
  ```
270
273
 
271
274
  Time objects are created using `time` (either a string to be parsed, or year, month, day, hour, minute, second arguments) or `now`.
272
275
  They support methods `year`, `month`, `day`, `hour`, `minute`, `second`, `weekday`, `strftime`, and `to_date` to convert to a date object.
276
+ `epoch_seconds` computes the number of seconds since Unix epoch (00:00:00 on Jan 1, 1970).
273
277
 
274
278
  ```ruby
275
279
  calculator = Keisan::Calculator.new
@@ -279,6 +283,8 @@ calculator.evaluate("time('2000-4-15 12:34:56').minute")
279
283
  #=> 34
280
284
  calculator.evaluate("time('5000-10-10 20:30:40').strftime('%b %d, %Y')")
281
285
  #=> "Oct 10, 5000"
286
+ calculator.evaluate("time(1970, 1, 1, 2, 3, 4).epoch_seconds")
287
+ #=> 7384
282
288
  ```
283
289
 
284
290
  ##### Functional programming methods
@@ -147,6 +147,9 @@ module Keisan
147
147
 
148
148
  registry.register!(:to_time, Proc.new {|d| d.to_time }, force: true)
149
149
  registry.register!(:to_date, Proc.new {|t| t.to_date }, force: true)
150
+
151
+ registry.register!(:epoch_seconds, Proc.new {|d| d.to_time - Time.new(1970, 1, 1, 0, 0, 0) }, force: true)
152
+ registry.register!(:epoch_days, Proc.new {|t| t.to_date - Date.new(1970, 1, 1) }, force: true)
150
153
  end
151
154
 
152
155
  def self.register_date_time!(registry)
@@ -1,3 +1,3 @@
1
1
  module Keisan
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keisan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Locke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-15 00:00:00.000000000 Z
11
+ date: 2020-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmath