gloo 0.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.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +5 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +139 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +43 -0
  9. data/Rakefile +12 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/exe/gloo +4 -0
  13. data/exe/o +4 -0
  14. data/gloo.gemspec +38 -0
  15. data/lib/gloo.rb +19 -0
  16. data/lib/gloo/app/args.rb +71 -0
  17. data/lib/gloo/app/engine.rb +158 -0
  18. data/lib/gloo/app/help.rb +29 -0
  19. data/lib/gloo/app/info.rb +21 -0
  20. data/lib/gloo/app/log.rb +58 -0
  21. data/lib/gloo/app/mode.rb +25 -0
  22. data/lib/gloo/app/settings.rb +125 -0
  23. data/lib/gloo/core/baseo.rb +28 -0
  24. data/lib/gloo/core/dictionary.rb +101 -0
  25. data/lib/gloo/core/event_manager.rb +46 -0
  26. data/lib/gloo/core/factory.rb +67 -0
  27. data/lib/gloo/core/gloo_system.rb +190 -0
  28. data/lib/gloo/core/heap.rb +42 -0
  29. data/lib/gloo/core/it.rb +30 -0
  30. data/lib/gloo/core/literal.rb +25 -0
  31. data/lib/gloo/core/obj.rb +222 -0
  32. data/lib/gloo/core/obj_finder.rb +35 -0
  33. data/lib/gloo/core/op.rb +33 -0
  34. data/lib/gloo/core/parser.rb +52 -0
  35. data/lib/gloo/core/pn.rb +134 -0
  36. data/lib/gloo/core/script.rb +37 -0
  37. data/lib/gloo/core/tokens.rb +123 -0
  38. data/lib/gloo/core/verb.rb +63 -0
  39. data/lib/gloo/expr/expression.rb +103 -0
  40. data/lib/gloo/expr/l_boolean.rb +29 -0
  41. data/lib/gloo/expr/l_integer.rb +29 -0
  42. data/lib/gloo/expr/l_string.rb +53 -0
  43. data/lib/gloo/expr/op_div.rb +20 -0
  44. data/lib/gloo/expr/op_minus.rb +20 -0
  45. data/lib/gloo/expr/op_mult.rb +20 -0
  46. data/lib/gloo/expr/op_plus.rb +22 -0
  47. data/lib/gloo/objs/basic/boolean.rb +113 -0
  48. data/lib/gloo/objs/basic/container.rb +50 -0
  49. data/lib/gloo/objs/basic/integer.rb +65 -0
  50. data/lib/gloo/objs/basic/script.rb +101 -0
  51. data/lib/gloo/objs/basic/string.rb +65 -0
  52. data/lib/gloo/objs/basic/text.rb +64 -0
  53. data/lib/gloo/objs/basic/untyped.rb +42 -0
  54. data/lib/gloo/objs/cli/colorize.rb +73 -0
  55. data/lib/gloo/objs/cli/confirm.rb +92 -0
  56. data/lib/gloo/objs/cli/prompt.rb +92 -0
  57. data/lib/gloo/objs/ctrl/each.rb +212 -0
  58. data/lib/gloo/objs/dev/git.rb +112 -0
  59. data/lib/gloo/objs/ror/erb.rb +109 -0
  60. data/lib/gloo/objs/ror/eval.rb +92 -0
  61. data/lib/gloo/objs/system/file_handle.rb +86 -0
  62. data/lib/gloo/objs/system/system.rb +120 -0
  63. data/lib/gloo/objs/web/http_get.rb +128 -0
  64. data/lib/gloo/objs/web/http_post.rb +127 -0
  65. data/lib/gloo/objs/web/slack.rb +126 -0
  66. data/lib/gloo/objs/web/teams.rb +117 -0
  67. data/lib/gloo/persist/file_loader.rb +171 -0
  68. data/lib/gloo/persist/file_saver.rb +43 -0
  69. data/lib/gloo/persist/file_storage.rb +43 -0
  70. data/lib/gloo/persist/persist_man.rb +90 -0
  71. data/lib/gloo/utils/words.rb +19 -0
  72. data/lib/gloo/verbs/alert.rb +42 -0
  73. data/lib/gloo/verbs/context.rb +52 -0
  74. data/lib/gloo/verbs/create.rb +52 -0
  75. data/lib/gloo/verbs/help.rb +69 -0
  76. data/lib/gloo/verbs/if.rb +56 -0
  77. data/lib/gloo/verbs/list.rb +85 -0
  78. data/lib/gloo/verbs/load.rb +39 -0
  79. data/lib/gloo/verbs/put.rb +62 -0
  80. data/lib/gloo/verbs/quit.rb +40 -0
  81. data/lib/gloo/verbs/run.rb +46 -0
  82. data/lib/gloo/verbs/save.rb +37 -0
  83. data/lib/gloo/verbs/show.rb +55 -0
  84. data/lib/gloo/verbs/tell.rb +47 -0
  85. data/lib/gloo/verbs/unless.rb +56 -0
  86. data/lib/gloo/verbs/version.rb +37 -0
  87. data/lib/run.rb +13 -0
  88. metadata +254 -0
@@ -0,0 +1,37 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Save an object to a file or other persistance mechcanism.
5
+ #
6
+
7
+ module Gloo
8
+ module Verbs
9
+ class Save < Gloo::Core::Verb
10
+
11
+ KEYWORD = 'save'
12
+ KEYWORD_SHORT = '>'
13
+
14
+ #
15
+ # Run the verb.
16
+ #
17
+ def run
18
+ $engine.persist_man.save @tokens.second
19
+ end
20
+
21
+ #
22
+ # Get the Verb's keyword.
23
+ #
24
+ def self.keyword
25
+ return KEYWORD
26
+ end
27
+
28
+ #
29
+ # Get the Verb's keyword shortcut.
30
+ #
31
+ def self.keyword_shortcut
32
+ return KEYWORD_SHORT
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,55 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Show a single object's value.
5
+ #
6
+ require 'colorized_string'
7
+
8
+ module Gloo
9
+ module Verbs
10
+ class Show < Gloo::Core::Verb
11
+
12
+ KEYWORD = 'show'
13
+ KEYWORD_SHORT = '='
14
+
15
+ #
16
+ # Run the verb.
17
+ #
18
+ def run
19
+ if @tokens.token_count > 1
20
+ expr = Gloo::Expr::Expression.new( @tokens.params )
21
+ result = expr.evaluate
22
+ $log.show get_formatted_string( result )
23
+ $engine.heap.it.set_to result
24
+ else
25
+ $log.show ""
26
+ end
27
+ end
28
+
29
+ #
30
+ # Get the Verb's keyword.
31
+ #
32
+ def self.keyword
33
+ return KEYWORD
34
+ end
35
+
36
+ #
37
+ # Get the Verb's keyword shortcut.
38
+ #
39
+ def self.keyword_shortcut
40
+ return KEYWORD_SHORT
41
+ end
42
+
43
+ def get_formatted_string str
44
+ if @params && @params.token_count > 0
45
+ expr = Gloo::Expr::Expression.new( @params.tokens )
46
+ val = expr.evaluate
47
+ color = val.to_sym
48
+ return ColorizedString[ "#{str}" ].colorize( color )
49
+ end
50
+ return str
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,47 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Create an object, optionally of a type.
5
+ #
6
+
7
+ module Gloo
8
+ module Verbs
9
+ class Tell < Gloo::Core::Verb
10
+
11
+ KEYWORD = 'tell'
12
+ KEYWORD_SHORT = '->'
13
+ TO = 'to'
14
+
15
+ #
16
+ # Run the verb.
17
+ #
18
+ def run
19
+ name = @tokens.second
20
+ msg = @tokens.after_token( TO )
21
+ pn = Gloo::Core::Pn.new name
22
+ o = pn.resolve
23
+
24
+ if o
25
+ o.send_message( msg, @params )
26
+ else
27
+ $log.error "Could not send message to object. Bad path: #{name}"
28
+ end
29
+ end
30
+
31
+ #
32
+ # Get the Verb's keyword.
33
+ #
34
+ def self.keyword
35
+ return KEYWORD
36
+ end
37
+
38
+ #
39
+ # Get the Verb's keyword shortcut.
40
+ #
41
+ def self.keyword_shortcut
42
+ return KEYWORD_SHORT
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,56 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # If something is false, do something.
5
+ #
6
+
7
+ module Gloo
8
+ module Verbs
9
+ class Unless < Gloo::Core::Verb
10
+
11
+ KEYWORD = 'unless'
12
+ KEYWORD_SHORT = 'if!'
13
+ THEN = 'do'
14
+
15
+ #
16
+ # Run the verb.
17
+ #
18
+ def run
19
+ value = @tokens.before_token( THEN )
20
+ if value.count > 1
21
+ # The first token is the verb, so we drop it.
22
+ value = value[1..-1]
23
+ end
24
+
25
+ evals_false = false
26
+ if value.count > 0
27
+ expr = Gloo::Expr::Expression.new( value )
28
+ result = expr.evaluate
29
+ evals_false = true if result == false
30
+ end
31
+
32
+ if evals_false
33
+ cmd = @tokens.expr_after( THEN )
34
+ i = $engine.parser.parse_immediate cmd
35
+ return unless i
36
+ i.run
37
+ end
38
+ end
39
+
40
+ #
41
+ # Get the Verb's keyword.
42
+ #
43
+ def self.keyword
44
+ return KEYWORD
45
+ end
46
+
47
+ #
48
+ # Get the Verb's keyword shortcut.
49
+ #
50
+ def self.keyword_shortcut
51
+ return KEYWORD_SHORT
52
+ end
53
+
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,37 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Show the current application version.
5
+ #
6
+
7
+ module Gloo
8
+ module Verbs
9
+ class Version < Gloo::Core::Verb
10
+
11
+ KEYWORD = 'version'
12
+ KEYWORD_SHORT = 'v'
13
+
14
+ #
15
+ # Run the verb.
16
+ #
17
+ def run
18
+ $log.show Gloo::App::Info.display_title
19
+ end
20
+
21
+ #
22
+ # Get the Verb's keyword.
23
+ #
24
+ def self.keyword
25
+ return KEYWORD
26
+ end
27
+
28
+ #
29
+ # Get the Verb's keyword shortcut.
30
+ #
31
+ def self.keyword_shortcut
32
+ return KEYWORD_SHORT
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,13 @@
1
+ #
2
+ # The following can be used to run the application in CLI mode
3
+ # in development and use source rather than the gem.
4
+ #
5
+ # From the /lib/ directory: ruby run.rb
6
+ #
7
+ path = File.dirname( File.absolute_path( __FILE__ ) )
8
+ root = File.join( path, "gloo", "**/*.rb" )
9
+ Dir.glob( root ) { |ruby_file| require ruby_file }
10
+
11
+ params = []
12
+ ( params << "--cli" ) if ARGV.count == 0
13
+ Gloo::App::Engine.new( params ).start
metadata ADDED
@@ -0,0 +1,254 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gloo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Eric Crane
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-06-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.2'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 5.2.1
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '5.2'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 5.2.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: chronic
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.10'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.10.2
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '0.10'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 0.10.2
95
+ - !ruby/object:Gem::Dependency
96
+ name: tty
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '0.8'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 0.8.1
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.8'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 0.8.1
115
+ - !ruby/object:Gem::Dependency
116
+ name: colorize
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '0.8'
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 0.8.1
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.8'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 0.8.1
135
+ description: A scripting languge to keep it all together.
136
+ email:
137
+ - eric.crane@mac.com
138
+ executables:
139
+ - gloo
140
+ - o
141
+ extensions: []
142
+ extra_rdoc_files: []
143
+ files:
144
+ - ".gitignore"
145
+ - ".travis.yml"
146
+ - CODE_OF_CONDUCT.md
147
+ - Gemfile
148
+ - Gemfile.lock
149
+ - LICENSE.txt
150
+ - README.md
151
+ - Rakefile
152
+ - bin/console
153
+ - bin/setup
154
+ - exe/gloo
155
+ - exe/o
156
+ - gloo.gemspec
157
+ - lib/gloo.rb
158
+ - lib/gloo/app/args.rb
159
+ - lib/gloo/app/engine.rb
160
+ - lib/gloo/app/help.rb
161
+ - lib/gloo/app/info.rb
162
+ - lib/gloo/app/log.rb
163
+ - lib/gloo/app/mode.rb
164
+ - lib/gloo/app/settings.rb
165
+ - lib/gloo/core/baseo.rb
166
+ - lib/gloo/core/dictionary.rb
167
+ - lib/gloo/core/event_manager.rb
168
+ - lib/gloo/core/factory.rb
169
+ - lib/gloo/core/gloo_system.rb
170
+ - lib/gloo/core/heap.rb
171
+ - lib/gloo/core/it.rb
172
+ - lib/gloo/core/literal.rb
173
+ - lib/gloo/core/obj.rb
174
+ - lib/gloo/core/obj_finder.rb
175
+ - lib/gloo/core/op.rb
176
+ - lib/gloo/core/parser.rb
177
+ - lib/gloo/core/pn.rb
178
+ - lib/gloo/core/script.rb
179
+ - lib/gloo/core/tokens.rb
180
+ - lib/gloo/core/verb.rb
181
+ - lib/gloo/expr/expression.rb
182
+ - lib/gloo/expr/l_boolean.rb
183
+ - lib/gloo/expr/l_integer.rb
184
+ - lib/gloo/expr/l_string.rb
185
+ - lib/gloo/expr/op_div.rb
186
+ - lib/gloo/expr/op_minus.rb
187
+ - lib/gloo/expr/op_mult.rb
188
+ - lib/gloo/expr/op_plus.rb
189
+ - lib/gloo/objs/basic/boolean.rb
190
+ - lib/gloo/objs/basic/container.rb
191
+ - lib/gloo/objs/basic/integer.rb
192
+ - lib/gloo/objs/basic/script.rb
193
+ - lib/gloo/objs/basic/string.rb
194
+ - lib/gloo/objs/basic/text.rb
195
+ - lib/gloo/objs/basic/untyped.rb
196
+ - lib/gloo/objs/cli/colorize.rb
197
+ - lib/gloo/objs/cli/confirm.rb
198
+ - lib/gloo/objs/cli/prompt.rb
199
+ - lib/gloo/objs/ctrl/each.rb
200
+ - lib/gloo/objs/dev/git.rb
201
+ - lib/gloo/objs/ror/erb.rb
202
+ - lib/gloo/objs/ror/eval.rb
203
+ - lib/gloo/objs/system/file_handle.rb
204
+ - lib/gloo/objs/system/system.rb
205
+ - lib/gloo/objs/web/http_get.rb
206
+ - lib/gloo/objs/web/http_post.rb
207
+ - lib/gloo/objs/web/slack.rb
208
+ - lib/gloo/objs/web/teams.rb
209
+ - lib/gloo/persist/file_loader.rb
210
+ - lib/gloo/persist/file_saver.rb
211
+ - lib/gloo/persist/file_storage.rb
212
+ - lib/gloo/persist/persist_man.rb
213
+ - lib/gloo/utils/words.rb
214
+ - lib/gloo/verbs/alert.rb
215
+ - lib/gloo/verbs/context.rb
216
+ - lib/gloo/verbs/create.rb
217
+ - lib/gloo/verbs/help.rb
218
+ - lib/gloo/verbs/if.rb
219
+ - lib/gloo/verbs/list.rb
220
+ - lib/gloo/verbs/load.rb
221
+ - lib/gloo/verbs/put.rb
222
+ - lib/gloo/verbs/quit.rb
223
+ - lib/gloo/verbs/run.rb
224
+ - lib/gloo/verbs/save.rb
225
+ - lib/gloo/verbs/show.rb
226
+ - lib/gloo/verbs/tell.rb
227
+ - lib/gloo/verbs/unless.rb
228
+ - lib/gloo/verbs/version.rb
229
+ - lib/run.rb
230
+ homepage: http://github.com/ecrane/gloo
231
+ licenses:
232
+ - MIT
233
+ metadata: {}
234
+ post_install_message:
235
+ rdoc_options: []
236
+ require_paths:
237
+ - lib
238
+ required_ruby_version: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: '0'
243
+ required_rubygems_version: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
248
+ requirements: []
249
+ rubyforge_project:
250
+ rubygems_version: 2.7.7
251
+ signing_key:
252
+ specification_version: 4
253
+ summary: Gloo scripting language. A scripting language built on ruby.
254
+ test_files: []