gloo 4.1.1 → 4.2.1

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: 1776f8bb92860bc0338c79c0ce77a2a9eb06e22a68bf2007812c173280b109f6
4
+ data.tar.gz: 1beb107590b4f91bf964953c3808179ac3e0b1e2e35012ff02d7b5e0cb96a4d6
5
5
  SHA512:
6
- metadata.gz: ae6327342d2d1aa26a8b54f552f897ae92fe0181db0f2ce3415cde972297adf394c35279172cdf282f53b57d3c83a827e4a0096a5d87faf401fe6c7186028946
7
- data.tar.gz: 6795c6979ecbfd98172bdb861938843c06b9e616db340ca4c39daf7b91596b5133ba2e7d46f0b6cdfaac7ddffe240aaf31d8f2c7f53ef7777d7e2893b0f23dec
6
+ metadata.gz: 69d271ac18569be4d22bacabcdb6b5233c47c3be8db86057ed0833d0a09b028e45eca167b7e2b74a8a427ff07b1e2cb156926e3374228a05324668bd9a9c6b51
7
+ data.tar.gz: 113a69b5a18f303a67c363c2ddce2b22d325802e78db5e7490e5d3bf2a9f025caeba1c68cda163f0f195ae4e90fd145902256718fa1d5678704b725bf80e613e
data/lib/VERSION CHANGED
@@ -1 +1 @@
1
- 4.1.1
1
+ 4.2.1
data/lib/VERSION_NOTES CHANGED
@@ -1,3 +1,11 @@
1
+ 4.2.1 - 2025.05.15
2
+ - Fixes bug with begin and end month date messages
3
+
4
+
5
+ 4.2.0 - 2025.05.15
6
+ - Adds add and sub messages to date objects
7
+
8
+
1
9
  4.1.1 - 2025.05.09
2
10
  Fixes issue with empty table renderer data.
3
11
 
@@ -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,17 +59,54 @@ 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
100
+
68
101
  #
69
102
  # Set the value to the beginning of the month.
70
103
  #
71
104
  def msg_begin_month
72
- dt = DtTools.beginning_of_month( self.value.to_time )
105
+ # dt = DtTools.beginning_of_month( self.value.to_time )
106
+ dt = self.value.to_time.beginning_of_month
107
+ self.set_value dt
108
+ @engine.heap.it.set_to dt
109
+
73
110
  self.set_value dt
74
111
  @engine.heap.it.set_to dt
75
112
  end
@@ -78,7 +115,8 @@ module Gloo
78
115
  # Set the value to the end of the month.
79
116
  #
80
117
  def msg_end_month
81
- dt = DtTools.end_of_month( self.value.to_time )
118
+ # dt = DtTools.end_of_month( self.value.to_time )
119
+ dt = self.value.to_time.end_of_month
82
120
  self.set_value dt
83
121
  @engine.heap.it.set_to dt
84
122
  end
@@ -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.1
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