gloo 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: []