gloo 4.1.1 → 4.2.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: 1d9b6223c71e44de42c8c7b4c65eed2b115637e19ddff41d312bf2dbdd49862b
4
- data.tar.gz: 30364ee85c87f6c13d2e0ae378243a7c6142c09cd05a3381b8987629b36dbd8e
3
+ metadata.gz: cf2e3b4867f61cc9d1efcf48e5bbd409301cd981c3c060fd5da9d44341886068
4
+ data.tar.gz: d792df8a9e6b02db122bc4e6a59ed6169bd2cef0de02fe60a9c8c0f024551dc0
5
5
  SHA512:
6
- metadata.gz: ae6327342d2d1aa26a8b54f552f897ae92fe0181db0f2ce3415cde972297adf394c35279172cdf282f53b57d3c83a827e4a0096a5d87faf401fe6c7186028946
7
- data.tar.gz: 6795c6979ecbfd98172bdb861938843c06b9e616db340ca4c39daf7b91596b5133ba2e7d46f0b6cdfaac7ddffe240aaf31d8f2c7f53ef7777d7e2893b0f23dec
6
+ metadata.gz: b17991f005f58b517044bd2ac2cc08f21f67f5e8bf7023cbfc3895ddbf24a7d3fdc88ed8c4ce61489c140c6d20488a2516988d72111066b2850eb92e3238ad96
7
+ data.tar.gz: 5fe442bd9578e773785a66c08eb1e12b454b0e1f2d7be78401ebc893a432b066a7c94c07e69c384384c24bb26c660840cb2e45b32c61b1d431cf19c3e134c1ff
data/lib/VERSION CHANGED
@@ -1 +1 @@
1
- 4.1.1
1
+ 4.2.0
data/lib/VERSION_NOTES CHANGED
@@ -1,3 +1,7 @@
1
+ 4.2.0 - 2025.05.15
2
+ - Adds add and sub messages to date objects
3
+
4
+
1
5
  4.1.1 - 2025.05.09
2
6
  Fixes issue with empty table renderer data.
3
7
 
@@ -58,7 +58,7 @@ module Gloo
58
58
  # Get a list of message names that this object receives.
59
59
  #
60
60
  def self.messages
61
- return super + %w[now]
61
+ return super + %w[now add sub]
62
62
  end
63
63
 
64
64
  #
@@ -69,6 +69,39 @@ module Gloo
69
69
  @engine.heap.it.set_to self.value
70
70
  end
71
71
 
72
+ #
73
+ # Add the given modifier to the date.
74
+ #
75
+ def msg_add
76
+ modifier = "1 day"
77
+ if @params&.token_count&.positive?
78
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
79
+ data = expr.evaluate
80
+ modifier = data
81
+ end
82
+
83
+ dt = Chronic.parse( self.value )
84
+ new_value = DtTools.add( dt, modifier )
85
+ self.set_value( new_value )
86
+ @engine.heap.it.set_to self.value
87
+ end
88
+
89
+ #
90
+ # Subtract the given modifier from the date.
91
+ #
92
+ def msg_sub
93
+ modifier = "1 day"
94
+ if @params&.token_count&.positive?
95
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
96
+ data = expr.evaluate
97
+ modifier = data
98
+ end
99
+
100
+ dt = Chronic.parse( self.value )
101
+ self.set_value( DtTools.sub( dt, modifier ) )
102
+ @engine.heap.it.set_to self.value
103
+ end
104
+
72
105
  end
73
106
  end
74
107
  end
@@ -59,12 +59,44 @@ module Gloo
59
59
  # Get a list of message names that this object receives.
60
60
  #
61
61
  def self.messages
62
- return super + %w[now is_today is_future
62
+ return super + %w[now add sub is_today is_future
63
63
  is_past is_yesterday is_tomorrow is_this_week
64
64
  begin_day end_day begin_week end_week
65
65
  begin_month end_month begin_year end_year]
66
66
  end
67
67
 
68
+ #
69
+ # Add the given modifier to the date.
70
+ #
71
+ def msg_add
72
+ modifier = "1 day"
73
+ if @params&.token_count&.positive?
74
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
75
+ data = expr.evaluate
76
+ modifier = data
77
+ end
78
+
79
+ dt = Chronic.parse( self.value )
80
+ new_value = DtTools.add( dt, modifier )
81
+ self.set_value( new_value )
82
+ @engine.heap.it.set_to self.value
83
+ end
84
+
85
+ #
86
+ # Subtract the given modifier from the date.
87
+ #
88
+ def msg_sub
89
+ modifier = "1 day"
90
+ if @params&.token_count&.positive?
91
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
92
+ data = expr.evaluate
93
+ modifier = data
94
+ end
95
+
96
+ dt = Chronic.parse( self.value )
97
+ self.set_value( DtTools.sub( dt, modifier ) )
98
+ @engine.heap.it.set_to self.value
99
+ end
68
100
  #
69
101
  # Set the value to the beginning of the month.
70
102
  #
@@ -21,6 +21,38 @@ class DtTools
21
21
  return false
22
22
  end
23
23
 
24
+
25
+ # ---------------------------------------------------------------------
26
+ # Date Math
27
+ # ---------------------------------------------------------------------
28
+
29
+ #
30
+ # Given a date, add the modifier to it.
31
+ # The modifier takes the form of "1 day" or "2 weeks".
32
+ #
33
+ def self.add date, modifier="1 day"
34
+ # Split out amount and unit
35
+ amount, unit = modifier.split(' ')
36
+
37
+ # converts "1 day" to 1.day
38
+ duration = amount.to_i.send( unit )
39
+ return date + duration
40
+ end
41
+
42
+ #
43
+ # Given a date, subtract the modifier from it.
44
+ # The modifier takes the form of "1 day" or "2 weeks".
45
+ #
46
+ def self.sub dt, modifier="1 day"
47
+ # Split out amount and unit
48
+ amount, unit = modifier.split(' ')
49
+
50
+ # converts "1 day" to 1.day
51
+ duration = amount.to_i.send( unit )
52
+ return dt - duration
53
+ end
54
+
55
+
24
56
  # ---------------------------------------------------------------------
25
57
  # Language helpers
26
58
  # ---------------------------------------------------------------------
@@ -58,7 +58,7 @@ module Gloo
58
58
  # Get a list of message names that this object receives.
59
59
  #
60
60
  def self.messages
61
- return super + %w[now]
61
+ return super + %w[now add sub]
62
62
  end
63
63
 
64
64
  #
@@ -69,6 +69,38 @@ module Gloo
69
69
  @engine.heap.it.set_to self.value
70
70
  end
71
71
 
72
+ #
73
+ # Add the given modifier to the time.
74
+ #
75
+ def msg_add
76
+ modifier = "1 hour"
77
+ if @params&.token_count&.positive?
78
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
79
+ data = expr.evaluate
80
+ modifier = data
81
+ end
82
+
83
+ dt = Chronic.parse( self.value )
84
+ new_value = DtTools.add( dt, modifier )
85
+ self.set_value( new_value )
86
+ @engine.heap.it.set_to self.value
87
+ end
88
+
89
+ #
90
+ # Subtract the given modifier from the time.
91
+ #
92
+ def msg_sub
93
+ modifier = "1 hour"
94
+ if @params&.token_count&.positive?
95
+ expr = Gloo::Expr::Expression.new( @engine, @params.tokens )
96
+ data = expr.evaluate
97
+ modifier = data
98
+ end
99
+
100
+ dt = Chronic.parse( self.value )
101
+ self.set_value( DtTools.sub( dt, modifier ) )
102
+ @engine.heap.it.set_to self.value
103
+ end
72
104
  end
73
105
  end
74
106
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Crane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-05-09 00:00:00.000000000 Z
11
+ date: 2025-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler