gloo 5.3.9 → 6.0.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.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/gloo.gemspec +2 -2
  3. data/lib/VERSION +1 -1
  4. data/lib/VERSION_NOTES +14 -0
  5. data/lib/gloo/app/engine.rb +57 -13
  6. data/lib/gloo/app/engine_context.rb +1 -1
  7. data/lib/gloo/app/info.rb +0 -1
  8. data/lib/gloo/app/log.rb +1 -1
  9. data/lib/gloo/app/platform.rb +2 -2
  10. data/lib/gloo/app/prompt.rb +1 -0
  11. data/lib/gloo/app/settings.rb +0 -5
  12. data/lib/gloo/app/table.rb +1 -1
  13. data/lib/gloo/convert/nilclass_to_datetime.rb +1 -1
  14. data/lib/gloo/convert/nilclass_to_integer.rb +1 -3
  15. data/lib/gloo/convert/nilclass_to_string.rb +0 -2
  16. data/lib/gloo/convert/nilclass_to_time.rb +1 -1
  17. data/lib/gloo/convert/string_to_decimal.rb +1 -1
  18. data/lib/gloo/core/dictionary.rb +16 -22
  19. data/lib/gloo/core/event_manager.rb +19 -0
  20. data/lib/gloo/core/here.rb +2 -1
  21. data/lib/gloo/core/literal.rb +1 -1
  22. data/lib/gloo/core/obj.rb +5 -1
  23. data/lib/gloo/core/obj_finder.rb +0 -1
  24. data/lib/gloo/core/pn.rb +4 -2
  25. data/lib/gloo/exec/exec_env.rb +0 -2
  26. data/lib/gloo/exec/runner.rb +7 -2
  27. data/lib/gloo/expr/l_decimal.rb +1 -1
  28. data/lib/gloo/expr/l_string.rb +1 -1
  29. data/lib/gloo/expr/op_eq.rb +3 -1
  30. data/lib/gloo/expr/op_gt.rb +3 -0
  31. data/lib/gloo/expr/op_gteq.rb +3 -0
  32. data/lib/gloo/expr/op_ineq.rb +3 -0
  33. data/lib/gloo/expr/op_lt.rb +3 -0
  34. data/lib/gloo/expr/op_lteq.rb +3 -0
  35. data/lib/gloo/objs/basic/alias.rb +1 -1
  36. data/lib/gloo/objs/basic/boolean.rb +1 -1
  37. data/lib/gloo/objs/basic/decimal.rb +22 -1
  38. data/lib/gloo/objs/basic/integer.rb +19 -1
  39. data/lib/gloo/objs/basic/string_generator.rb +4 -7
  40. data/lib/gloo/objs/basic/untyped.rb +1 -1
  41. data/lib/gloo/objs/ctrl/each_child.rb +0 -2
  42. data/lib/gloo/objs/ctrl/function.rb +2 -5
  43. data/lib/gloo/objs/ctrl/repeat.rb +1 -2
  44. data/lib/gloo/objs/dt/datetime.rb +19 -8
  45. data/lib/gloo/objs/dt/dt_tools.rb +101 -21
  46. data/lib/gloo/objs/dt/time.rb +17 -1
  47. data/lib/gloo/objs/str_utils/cipher.rb +8 -11
  48. data/lib/gloo/objs/str_utils/outline.rb +0 -2
  49. data/lib/gloo/objs/system/erb.rb +5 -6
  50. data/lib/gloo/objs/system/file_handle.rb +0 -1
  51. data/lib/gloo/objs/system/system.rb +5 -11
  52. data/lib/gloo/objs/web/http_get.rb +6 -12
  53. data/lib/gloo/objs/web/http_post.rb +5 -31
  54. data/lib/gloo/objs/web/json.rb +1 -1
  55. data/lib/gloo/objs/web/uri.rb +2 -2
  56. data/lib/gloo/persist/disc_mech.rb +2 -2
  57. data/lib/gloo/persist/file_loader.rb +1 -1
  58. data/lib/gloo/persist/file_saver.rb +2 -2
  59. data/lib/gloo/persist/persist_man.rb +12 -8
  60. data/lib/gloo/plugin/callback.rb +1 -1
  61. data/lib/gloo/plugin/ext_manager.rb +1 -1
  62. data/lib/gloo/plugin/lib_manager.rb +1 -1
  63. data/lib/gloo/verbs/execute.rb +0 -6
  64. data/lib/gloo/verbs/files.rb +0 -1
  65. data/lib/gloo/verbs/help.rb +0 -16
  66. data/lib/gloo/verbs/list.rb +1 -1
  67. data/lib/gloo/verbs/load.rb +1 -1
  68. data/lib/gloo/verbs/show.rb +1 -1
  69. data/lib/gloo/verbs/throw.rb +55 -0
  70. data/test.gloo/ctrl/each.test.gloo +39 -0
  71. data/test.gloo/dt/date.test.gloo +1 -1
  72. data/test.gloo/dt/datetime.test.gloo +61 -0
  73. data/test.gloo/dt/time.test.gloo +14 -1
  74. data/test.gloo/lang/dt_comparisons.test.gloo +124 -0
  75. data/test.gloo/lang/exceptions.test.gloo +63 -0
  76. data/test.gloo/objs/alias.test.gloo +24 -0
  77. data/test.gloo/objs/decimal.test.gloo +38 -0
  78. data/test.gloo/objs/erb.test.gloo +35 -0
  79. data/test.gloo/objs/int.test.gloo +14 -0
  80. data/test.gloo/objs/string.test.gloo +44 -0
  81. data/test.gloo/verbs/create.test.gloo +14 -0
  82. data/test.gloo/verbs/invoke.test.gloo +20 -0
  83. data/test.gloo/verbs/unless.test.gloo +22 -0
  84. metadata +20 -16
  85. data/lib/gloo/utils/format.rb +0 -21
  86. data/lib/gloo/utils/words.rb +0 -19
@@ -0,0 +1,35 @@
1
+ #
2
+ # ERB tests
3
+ #
4
+
5
+ tests [can] :
6
+ objs [can] :
7
+ erb [can] :
8
+
9
+ greeting [string] : <%= name %>!!
10
+
11
+ basic [erb] :
12
+ template [text] : <%= name %>
13
+ params [can] :
14
+ name [string] : world
15
+ result [text] :
16
+
17
+ aliased_template [erb] :
18
+ template [alias] : tests.objs.erb.greeting
19
+ params [can] :
20
+ name [string] : gloo
21
+ result [text] :
22
+
23
+ run_basic [test] :
24
+ description [string] : Render a template with a param
25
+ on_test [script] :
26
+ tell ^^.basic to run
27
+ eval ^^.basic.result = 'world'
28
+ assert "expected template to render with the param value"
29
+
30
+ run_with_aliased_template [test] :
31
+ description [string] : Render a template whose 'template' child is an alias to another object
32
+ on_test [script] :
33
+ tell ^^.aliased_template to run
34
+ eval ^^.aliased_template.result = 'gloo!!'
35
+ assert "expected alias to be resolved before rendering the template"
@@ -54,3 +54,17 @@ tests [can] :
54
54
  tell ^^.b to randomize (10000)
55
55
  eval ^^.a = ^^.b
56
56
  refute "expected them to not be equal"
57
+
58
+ format_int [test] :
59
+ description [string] : Format an integer
60
+ f [int] :
61
+ on_test [script] :
62
+ put 1234567 into ^.f
63
+ tell ^.f to format
64
+ eval it = '1,234,567'
65
+ assert "expected formatted integer to match"
66
+
67
+ put 42 into ^.f
68
+ tell ^.f to format ('%05d')
69
+ eval it = '00042'
70
+ assert "expected formatted integer to match"
@@ -0,0 +1,44 @@
1
+ #
2
+ # String tests
3
+ #
4
+
5
+ tests [can] :
6
+ objs [can] :
7
+ string [can] :
8
+
9
+ s [string] :
10
+
11
+ up_down [test] :
12
+ description [string] : Convert string case
13
+ on_test [script] :
14
+ put 'hello' into ^^.s
15
+ tell ^^.s to up
16
+ eval ^^.s = 'HELLO'
17
+ assert "expected string to be uppercase"
18
+ tell ^^.s to down
19
+ eval ^^.s = 'hello'
20
+ assert "expected string to be lowercase"
21
+
22
+ trim [test] :
23
+ description [string] : Trim whitespace from a string
24
+ on_test [script] :
25
+ put ' hello ' into ^^.s
26
+ tell ^^.s to trim
27
+ eval it = 'hello'
28
+ assert "expected trimmed string to equal 'hello'"
29
+
30
+ sub [test] :
31
+ description [string] : Substitute in a string
32
+ on_test [script] :
33
+ put 'hello world' into ^^.s
34
+ tell ^^.s to sub ('world' 'gloo')
35
+ eval it = 'hello gloo'
36
+ assert "expected substituted string to equal 'hello gloo'"
37
+
38
+ count_chars [test] :
39
+ description [string] : Count the characters in a string
40
+ on_test [script] :
41
+ put 'hello' into ^^.s
42
+ tell ^^.s to count_chars
43
+ eval it = 5
44
+ assert "expected 5 characters"
@@ -0,0 +1,14 @@
1
+ #
2
+ # Create verb tests
3
+ #
4
+
5
+ tests [can] :
6
+ verbs [can] :
7
+ create [can] :
8
+
9
+ create_str [test] :
10
+ description [string] : Create sets it to the initial value.
11
+ on_test [script] :
12
+ create cx as string : 'hello'
13
+ eval it = 'hello'
14
+ assert "expected it to equal the created value"
@@ -0,0 +1,20 @@
1
+ #
2
+ # Invoke verb tests
3
+ #
4
+
5
+ tests [can] :
6
+ verbs [can] :
7
+ invoke [can] :
8
+
9
+ f [ƒ] :
10
+ params [can] :
11
+ on_invoke [script] :
12
+ put 42 into ^.result
13
+ result [int] :
14
+
15
+ invoke_test [test] :
16
+ description [string] : Invoke a function and check the result.
17
+ on_test [script] :
18
+ invoke tests.verbs.invoke.f
19
+ eval it = 42
20
+ assert "expected it to be 42"
@@ -0,0 +1,22 @@
1
+ #
2
+ # Unless verb tests
3
+ #
4
+
5
+ tests [can] :
6
+ verbs [can] :
7
+ unless [can] :
8
+
9
+ b [bool] : false
10
+
11
+ unless_false [test] :
12
+ description [string] : Unless false, do block runs.
13
+ on_test [script] :
14
+ unless ^^.b do eval true
15
+ assert "expected do block to run when condition is false"
16
+
17
+ unless_true [test] :
18
+ description [string] : Unless true, do block is skipped.
19
+ on_test [script] :
20
+ eval false
21
+ unless true do eval true
22
+ refute "expected do block to be skipped when condition is true"
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: 5.3.9
4
+ version: 6.0.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: 2026-06-11 00:00:00.000000000 Z
11
+ date: 2026-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,36 +68,30 @@ dependencies:
68
68
  name: concurrent-ruby
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - '='
71
+ - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: 1.3.4
73
+ version: 1.3.7
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - '='
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: 1.3.4
80
+ version: 1.3.7
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activesupport
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
85
  - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: '6.1'
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: 6.1.5
87
+ version: 7.2.3.1
91
88
  type: :runtime
92
89
  prerelease: false
93
90
  version_requirements: !ruby/object:Gem::Requirement
94
91
  requirements:
95
92
  - - "~>"
96
93
  - !ruby/object:Gem::Version
97
- version: '6.1'
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: 6.1.5
94
+ version: 7.2.3.1
101
95
  - !ruby/object:Gem::Dependency
102
96
  name: chronic
103
97
  requirement: !ruby/object:Gem::Requirement
@@ -385,8 +379,6 @@ files:
385
379
  - lib/gloo/plugin/callback.rb
386
380
  - lib/gloo/plugin/ext_manager.rb
387
381
  - lib/gloo/plugin/lib_manager.rb
388
- - lib/gloo/utils/format.rb
389
- - lib/gloo/utils/words.rb
390
382
  - lib/gloo/verbs/break.rb
391
383
  - lib/gloo/verbs/check.rb
392
384
  - lib/gloo/verbs/cls.rb
@@ -411,39 +403,51 @@ files:
411
403
  - lib/gloo/verbs/save.rb
412
404
  - lib/gloo/verbs/show.rb
413
405
  - lib/gloo/verbs/tell.rb
406
+ - lib/gloo/verbs/throw.rb
414
407
  - lib/gloo/verbs/unless.rb
415
408
  - lib/gloo/verbs/unload.rb
416
409
  - lib/gloo/verbs/version.rb
417
410
  - lib/gloo/verbs/wait.rb
418
411
  - lib/run.rb
419
412
  - test.gloo/basic.test.gloo
413
+ - test.gloo/ctrl/each.test.gloo
420
414
  - test.gloo/dt/date.test.gloo
415
+ - test.gloo/dt/datetime.test.gloo
421
416
  - test.gloo/dt/time.test.gloo
417
+ - test.gloo/lang/dt_comparisons.test.gloo
418
+ - test.gloo/lang/exceptions.test.gloo
422
419
  - test.gloo/lang/gloo_sys.test.gloo
423
420
  - test.gloo/lang/ops.test.gloo
424
421
  - test.gloo/math/add.test.gloo
425
422
  - test.gloo/math/div.test.gloo
426
423
  - test.gloo/math/mult.test.gloo
427
424
  - test.gloo/math/sub.test.gloo
425
+ - test.gloo/objs/alias.test.gloo
428
426
  - test.gloo/objs/bool.test.gloo
429
427
  - test.gloo/objs/can.test.gloo
428
+ - test.gloo/objs/decimal.test.gloo
429
+ - test.gloo/objs/erb.test.gloo
430
430
  - test.gloo/objs/int.test.gloo
431
431
  - test.gloo/objs/obj.test.gloo
432
432
  - test.gloo/objs/script.test.gloo
433
+ - test.gloo/objs/string.test.gloo
433
434
  - test.gloo/objs/text.test.gloo
434
435
  - test.gloo/objs/untyped.test.gloo
435
436
  - test.gloo/string/str.test.gloo
436
437
  - test.gloo/string/str_gen.test.gloo
437
438
  - test.gloo/verbs/break.test.gloo
438
439
  - test.gloo/verbs/check.test.gloo
440
+ - test.gloo/verbs/create.test.gloo
439
441
  - test.gloo/verbs/eval.test.gloo
440
442
  - test.gloo/verbs/exists.test.gloo
441
443
  - test.gloo/verbs/if.test.gloo
444
+ - test.gloo/verbs/invoke.test.gloo
442
445
  - test.gloo/verbs/log.test.gloo
443
446
  - test.gloo/verbs/move.test.gloo
444
447
  - test.gloo/verbs/put.test.gloo
445
448
  - test.gloo/verbs/run.test.gloo
446
449
  - test.gloo/verbs/tell.test.gloo
450
+ - test.gloo/verbs/unless.test.gloo
447
451
  homepage: http://github.com/ecrane/gloo
448
452
  licenses:
449
453
  - MIT
@@ -1,21 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Formatting utilities
5
- #
6
-
7
- module Gloo
8
- module Utils
9
- class Format
10
-
11
- #
12
- # Format number, adding comma separators.
13
- # Ex: 1000 -> 1,000
14
- #
15
- def self.number( num )
16
- return num.to_s.reverse.scan( /.{1,3}/ ).join( ',' ).reverse
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,19 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
- #
4
- # Utilities related to words (strings).
5
- #
6
-
7
- require 'active_support/inflector'
8
-
9
- module Gloo
10
- module Utils
11
- class Words
12
-
13
- def self.pluralize( word )
14
- return word.pluralize
15
- end
16
-
17
- end
18
- end
19
- end