gloo 0.6.1 → 0.7.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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/gloo/app/args.rb +48 -6
  4. data/lib/gloo/app/engine.rb +58 -39
  5. data/lib/gloo/app/help.rb +126 -25
  6. data/lib/gloo/app/info.rb +3 -1
  7. data/lib/gloo/app/log.rb +23 -0
  8. data/lib/gloo/app/mode.rb +2 -0
  9. data/lib/gloo/app/settings.rb +75 -68
  10. data/lib/gloo/convert/converter.rb +35 -0
  11. data/lib/gloo/convert/string_to_datetime.rb +1 -1
  12. data/lib/gloo/convert/string_to_decimal.rb +1 -1
  13. data/lib/gloo/convert/string_to_integer.rb +1 -1
  14. data/lib/gloo/core/dictionary.rb +99 -22
  15. data/lib/gloo/core/error.rb +19 -8
  16. data/lib/gloo/core/event_manager.rb +4 -0
  17. data/lib/gloo/core/factory.rb +11 -0
  18. data/lib/gloo/core/gloo_system.rb +1 -1
  19. data/lib/gloo/core/heap.rb +11 -3
  20. data/lib/gloo/core/it.rb +6 -0
  21. data/lib/gloo/core/literal.rb +5 -0
  22. data/lib/gloo/core/obj.rb +14 -0
  23. data/lib/gloo/core/op.rb +7 -0
  24. data/lib/gloo/core/parser.rb +6 -0
  25. data/lib/gloo/core/pn.rb +36 -0
  26. data/lib/gloo/core/tokens.rb +66 -22
  27. data/lib/gloo/core/verb.rb +4 -0
  28. data/lib/gloo/exec/exec_env.rb +13 -1
  29. data/lib/gloo/expr/expression.rb +26 -4
  30. data/lib/gloo/expr/l_boolean.rb +6 -0
  31. data/lib/gloo/expr/l_decimal.rb +5 -0
  32. data/lib/gloo/expr/l_integer.rb +7 -0
  33. data/lib/gloo/expr/l_string.rb +7 -0
  34. data/lib/gloo/expr/op_div.rb +2 -0
  35. data/lib/gloo/expr/op_minus.rb +2 -0
  36. data/lib/gloo/expr/op_mult.rb +2 -0
  37. data/lib/gloo/expr/op_plus.rb +2 -0
  38. data/lib/gloo/help/app/application.txt +22 -0
  39. data/lib/gloo/help/app/configuration.txt +7 -0
  40. data/lib/gloo/help/app/default_help.txt +14 -0
  41. data/lib/gloo/help/app/logging.txt +16 -0
  42. data/lib/gloo/help/core/color.txt +31 -0
  43. data/lib/gloo/help/core/error.txt +33 -0
  44. data/lib/gloo/help/core/events.txt +21 -0
  45. data/lib/gloo/help/core/gloo_system.txt +54 -0
  46. data/lib/gloo/help/core/here.txt +30 -0
  47. data/lib/gloo/help/core/it.txt +23 -0
  48. data/lib/gloo/help/core/ops.txt +16 -0
  49. data/lib/gloo/help/core/pathname.txt +29 -0
  50. data/lib/gloo/help/objs/basic/alias.txt +36 -0
  51. data/lib/gloo/help/objs/basic/boolean.txt +28 -0
  52. data/lib/gloo/help/objs/basic/container.txt +33 -0
  53. data/lib/gloo/help/objs/basic/decimal.txt +28 -0
  54. data/lib/gloo/help/objs/basic/integer.txt +27 -0
  55. data/lib/gloo/help/objs/basic/script.txt +29 -0
  56. data/lib/gloo/help/objs/basic/string.txt +28 -0
  57. data/lib/gloo/help/objs/basic/text.txt +27 -0
  58. data/lib/gloo/help/objs/basic/untyped.txt +22 -0
  59. data/lib/gloo/help/objs/cli/banner.txt +49 -0
  60. data/lib/gloo/help/objs/cli/bar.txt +34 -0
  61. data/lib/gloo/help/objs/cli/colorize.txt +33 -0
  62. data/lib/gloo/help/objs/cli/confirm.txt +26 -0
  63. data/lib/gloo/help/objs/cli/menu.txt +44 -0
  64. data/lib/gloo/help/objs/cli/menu_item.txt +26 -0
  65. data/lib/gloo/help/objs/cli/pastel.txt +43 -0
  66. data/lib/gloo/help/objs/cli/prompt.txt +27 -0
  67. data/lib/gloo/help/objs/cli/select.txt +34 -0
  68. data/lib/gloo/help/objs/ctrl/each.txt +48 -0
  69. data/lib/gloo/help/objs/ctrl/repeat.txt +38 -0
  70. data/lib/gloo/help/objs/data/markdown.txt +25 -0
  71. data/lib/gloo/help/objs/data/table.txt +46 -0
  72. data/lib/gloo/help/objs/dev/git_repo.txt +35 -0
  73. data/lib/gloo/help/objs/dt/date.txt +23 -0
  74. data/lib/gloo/help/objs/dt/datetime.txt +24 -0
  75. data/lib/gloo/help/objs/dt/time.txt +23 -0
  76. data/lib/gloo/help/objs/ror/erb.txt +37 -0
  77. data/lib/gloo/help/objs/ror/eval.txt +24 -0
  78. data/lib/gloo/help/objs/snd/play.txt +23 -0
  79. data/lib/gloo/help/objs/snd/say.txt +28 -0
  80. data/lib/gloo/help/objs/system/file.txt +41 -0
  81. data/lib/gloo/help/objs/system/system.txt +32 -0
  82. data/lib/gloo/help/objs/web/http_get.txt +35 -0
  83. data/lib/gloo/help/objs/web/http_post.txt +32 -0
  84. data/lib/gloo/help/objs/web/json.txt +34 -0
  85. data/lib/gloo/help/objs/web/slack.txt +33 -0
  86. data/lib/gloo/help/objs/web/teams.txt +30 -0
  87. data/lib/gloo/help/objs/web/uri.txt +37 -0
  88. data/lib/gloo/help/verbs/alert.txt +33 -0
  89. data/lib/gloo/help/verbs/beep.txt +25 -0
  90. data/lib/gloo/help/verbs/cls.txt +24 -0
  91. data/lib/gloo/help/verbs/context.txt +43 -0
  92. data/lib/gloo/help/verbs/create.txt +33 -0
  93. data/lib/gloo/help/verbs/help.txt +34 -0
  94. data/lib/gloo/help/verbs/if.txt +37 -0
  95. data/lib/gloo/help/verbs/list.txt +34 -0
  96. data/lib/gloo/help/verbs/load.txt +38 -0
  97. data/lib/gloo/help/verbs/move.txt +42 -0
  98. data/lib/gloo/help/verbs/put.txt +38 -0
  99. data/lib/gloo/help/verbs/quit.txt +25 -0
  100. data/lib/gloo/help/verbs/run.txt +41 -0
  101. data/lib/gloo/help/verbs/save.txt +26 -0
  102. data/lib/gloo/help/verbs/show.txt +30 -0
  103. data/lib/gloo/help/verbs/tell.txt +34 -0
  104. data/lib/gloo/help/verbs/unless.txt +38 -0
  105. data/lib/gloo/help/verbs/version.txt +32 -0
  106. data/lib/gloo/help/verbs/wait.txt +29 -0
  107. data/lib/gloo/objs/basic/alias.rb +0 -33
  108. data/lib/gloo/objs/basic/boolean.rb +6 -27
  109. data/lib/gloo/objs/basic/container.rb +0 -33
  110. data/lib/gloo/objs/basic/decimal.rb +8 -28
  111. data/lib/gloo/objs/basic/integer.rb +5 -26
  112. data/lib/gloo/objs/basic/script.rb +0 -26
  113. data/lib/gloo/objs/basic/string.rb +6 -26
  114. data/lib/gloo/objs/basic/text.rb +0 -25
  115. data/lib/gloo/objs/basic/untyped.rb +0 -26
  116. data/lib/gloo/objs/cli/banner.rb +0 -29
  117. data/lib/gloo/objs/cli/bar.rb +0 -29
  118. data/lib/gloo/objs/cli/colorize.rb +4 -34
  119. data/lib/gloo/objs/cli/confirm.rb +6 -36
  120. data/lib/gloo/objs/cli/menu.rb +4 -34
  121. data/lib/gloo/objs/cli/menu_item.rb +0 -33
  122. data/lib/gloo/objs/cli/pastel.rb +4 -27
  123. data/lib/gloo/objs/cli/prompt.rb +4 -28
  124. data/lib/gloo/objs/cli/select.rb +4 -31
  125. data/lib/gloo/objs/ctrl/each.rb +33 -33
  126. data/lib/gloo/objs/ctrl/repeat.rb +8 -29
  127. data/lib/gloo/objs/data/markdown.rb +0 -25
  128. data/lib/gloo/objs/data/table.rb +4 -32
  129. data/lib/gloo/objs/dev/git.rb +12 -30
  130. data/lib/gloo/objs/dt/date.rb +3 -25
  131. data/lib/gloo/objs/dt/datetime.rb +4 -26
  132. data/lib/gloo/objs/dt/time.rb +3 -25
  133. data/lib/gloo/objs/ror/erb.rb +11 -45
  134. data/lib/gloo/objs/ror/eval.rb +11 -38
  135. data/lib/gloo/objs/snd/play.rb +2 -25
  136. data/lib/gloo/objs/snd/say.rb +9 -31
  137. data/lib/gloo/objs/system/file_handle.rb +0 -38
  138. data/lib/gloo/objs/system/system.rb +16 -46
  139. data/lib/gloo/objs/web/http_get.rb +57 -83
  140. data/lib/gloo/objs/web/http_post.rb +8 -31
  141. data/lib/gloo/objs/web/json.rb +11 -31
  142. data/lib/gloo/objs/web/slack.rb +7 -34
  143. data/lib/gloo/objs/web/teams.rb +13 -48
  144. data/lib/gloo/objs/web/uri.rb +0 -29
  145. data/lib/gloo/persist/file_loader.rb +8 -0
  146. data/lib/gloo/persist/file_saver.rb +6 -0
  147. data/lib/gloo/persist/file_storage.rb +2 -0
  148. data/lib/gloo/persist/line_splitter.rb +2 -0
  149. data/lib/gloo/persist/persist_man.rb +6 -0
  150. data/lib/gloo/verbs/alert.rb +30 -44
  151. data/lib/gloo/verbs/beep.rb +0 -30
  152. data/lib/gloo/verbs/cls.rb +0 -30
  153. data/lib/gloo/verbs/context.rb +9 -39
  154. data/lib/gloo/verbs/create.rb +17 -32
  155. data/lib/gloo/verbs/help.rb +151 -115
  156. data/lib/gloo/verbs/if.rb +46 -44
  157. data/lib/gloo/verbs/list.rb +36 -54
  158. data/lib/gloo/verbs/load.rb +8 -37
  159. data/lib/gloo/verbs/move.rb +12 -51
  160. data/lib/gloo/verbs/put.rb +28 -52
  161. data/lib/gloo/verbs/quit.rb +0 -31
  162. data/lib/gloo/verbs/run.rb +23 -39
  163. data/lib/gloo/verbs/save.rb +0 -33
  164. data/lib/gloo/verbs/show.rb +6 -31
  165. data/lib/gloo/verbs/tell.rb +31 -31
  166. data/lib/gloo/verbs/unless.rb +47 -46
  167. data/lib/gloo/verbs/version.rb +0 -30
  168. data/lib/gloo/verbs/wait.rb +0 -31
  169. metadata +72 -3
  170. data/lib/gloo/help/help.md +0 -16
@@ -0,0 +1,35 @@
1
+ HTTP_GET OBJECT TYPE
2
+ NAME: http_get
3
+ SHORTCUT: get
4
+
5
+ DESCRIPTION
6
+ Perform an HTTP Get.
7
+
8
+ CHILDREN
9
+ uri - string - 'https://web.site/'
10
+ The URI for the HTTP Get request.
11
+ params - container
12
+ Collection of parameters for the HTTP Get.
13
+ result - string
14
+ The result of the request. Whatever was returned from
15
+ the HTTP Get call.
16
+ skip_ssl_verify - boolean (optional)
17
+ Skip the SSL verification as part of the request.
18
+
19
+ MESSAGES
20
+ run - Run the HTTP Get and update the result.
21
+
22
+ EXAMPLE
23
+
24
+ g [http_get] :
25
+ uri [string] : http://api.sunrise-sunset.org/json
26
+ params [container] :
27
+ lat [string] : 36.7201600
28
+ lng [string] : -4.4203400
29
+ date [string] : today
30
+ result [string] :
31
+
32
+ > run g
33
+
34
+ SEE ALSO
35
+ http_post, json, uri
@@ -0,0 +1,32 @@
1
+ HTTP_POST OBJECT TYPE
2
+ NAME: http_post
3
+ SHORTCUT: post
4
+
5
+ DESCRIPTION
6
+ Perform an HTTP Post.
7
+
8
+ CHILDREN
9
+ uri - string - 'https://web.site/'
10
+ The URI for the HTTP Post.
11
+ body - container
12
+ Collection of parameters for the HTTP Post.
13
+ result - string - Optional parameter
14
+ The result of the request. Whatever was returned in the body
15
+ of the HTTP POST.
16
+
17
+ MESSAGES
18
+ run - Run the HTTP Post sending the body data to the
19
+ endpoint specified in the URI.
20
+
21
+ EXAMPLE
22
+
23
+ post [post] :
24
+ txt [str] : Message from gloo!
25
+ uri [str] : https://my.service.com/my-long-token
26
+ body [can] :
27
+ text [alias] : post.txt
28
+ username [str] : me
29
+ on_load [script] : run post
30
+
31
+ SEE ALSO
32
+ http_get, json, uri
@@ -0,0 +1,34 @@
1
+ JSON OBJECT TYPE
2
+ NAME: json
3
+ SHORTCUT: json
4
+
5
+ DESCRIPTION
6
+ JSON data in a text string.
7
+
8
+ CHILDREN
9
+ None
10
+
11
+ MESSAGES
12
+ get - get a value from the JSON data
13
+ Example: tell myjson to get ("title")
14
+ The additional parameter is the path to the value.
15
+ parse - parse the JSON data and put values in the
16
+ object specified by the additional parameter
17
+ Example: tell myjson to parse ("path.to.objects")
18
+ pretty - make the JSON format pretty
19
+
20
+ EXAMPLE
21
+
22
+ json [can] :
23
+ on_load [script] :
24
+ list json.objs
25
+ show json.j
26
+ tell json.j to parse (json.objs)
27
+ list json.objs
28
+ j [json] : {"title":"Brute Force","quotation":"When in doubt, use brute force.","author":"Eric Steven Raymond","source":"The Art of Unix Programming"}
29
+ objs [can] :
30
+ title [string] :
31
+ quotation [string] :
32
+
33
+ SEE ALSO
34
+ http_get, http_post, uri
@@ -0,0 +1,33 @@
1
+ SLACK OBJECT TYPE
2
+ NAME: slack
3
+ SHORTCUT: slack
4
+
5
+ DESCRIPTION
6
+ Send message to channel in Slack.
7
+
8
+ CHILDREN
9
+ uri - string - 'https://hooks.slack.com/services/...'
10
+ The URI with access to the Slack channel.
11
+ message - string - 'textual message'
12
+ Message to send to Slack.
13
+ username - string - 'Slack Bot'
14
+ Attribute the message to this user.
15
+ channel - string - 'general'
16
+ The name of the channel for the post.
17
+ icon_emoji - string - ':ghost:'
18
+ The emoji to use for the attribution.
19
+
20
+ MESSAGES
21
+ run - Post the message to Slack.
22
+
23
+ EXAMPLE
24
+
25
+ slack [slack] :
26
+ uri [string] : https://hooks.slack.com/services/MYTOKEN
27
+ message [string] : Slackbot is here to help!
28
+ username [string] : SlackBot
29
+ channel [string] : general
30
+ icon_emoji [string] : :ghost:
31
+
32
+ SEE ALSO
33
+ http_get, http_post, json, uri
@@ -0,0 +1,30 @@
1
+ TEAMS OBJECT TYPE
2
+ NAME: teams
3
+ SHORTCUT: team
4
+
5
+ DESCRIPTION
6
+ Send message to channel in Teams.
7
+
8
+ CHILDREN
9
+ uri - string - 'https://outlook.office.com/webhook/...'
10
+ The URI with access to the Teams channel.
11
+ title - string
12
+ Message title; header.
13
+ color - string - '008000'
14
+ Color theme for the message.
15
+ message - string
16
+ The message to post in Teams.
17
+
18
+ MESSAGES
19
+ run - Post the message to Teams.
20
+
21
+ EXAMPLE
22
+
23
+ team [teams] :
24
+ uri [string] : https://outlook.office.com/webhook/MYTOKEN/IncomingWebhook/MYTOKEN
25
+ title [string] : Success
26
+ color [string] : 008000
27
+ message [string] : This worked!
28
+
29
+ SEE ALSO
30
+ http_get, http_post, json, uri
@@ -0,0 +1,37 @@
1
+ URI OBJECT TYPE
2
+ NAME: uri
3
+ SHORTCUT: url
4
+
5
+ DESCRIPTION
6
+ A URI or URL.
7
+
8
+ CHILDREN
9
+ None
10
+
11
+ MESSAGES
12
+ open - open the URL in the default browser
13
+ get_scheme - get the URI scheme; example: http
14
+ get_host - get the URI host; example: google.com
15
+ get_path - get the URI resource path; example: /post
16
+ get_query - get the URI query parameterse; example: id=121
17
+ get_fragment - get the URI fragment
18
+
19
+ EXAMPLE
20
+
21
+ url [can] :
22
+ on_load [script] :
23
+ tell url.u to get_scheme
24
+ show "scheme: " + it
25
+
26
+ tell url.u to get_host
27
+ show "host: " + it
28
+
29
+ tell url.u to get_path
30
+ show "path: " + it
31
+
32
+ show "opening URL: " + url.u
33
+ tell url.u to open
34
+ u [uri] : https://my.url/path/1234
35
+
36
+ SEE ALSO
37
+ http_get, http_post, json
@@ -0,0 +1,33 @@
1
+ ALERT VERB
2
+ NAME: alert
3
+ SHORTCUT: !
4
+
5
+ DESCRIPTION
6
+ Show a pop-up notification.
7
+ This has only been implemented for the Mac OS X as of yet.
8
+
9
+ SYNTAX
10
+ alert <messsage>
11
+
12
+ PARAMETERS
13
+ messsage - The message that will be displayed in the alert.
14
+
15
+ RESULT
16
+ On the Mac, a notification will popup on screen.
17
+ <it> will be set to the message.
18
+
19
+ ERRORS
20
+ Missing Expression!
21
+ - No expression is provided as parameter to the verb.
22
+ Expression evaluated with no result!
23
+ - Expression is provided but evaluates to nil.
24
+
25
+ EXAMPLE
26
+
27
+ > create s as string : "boo"
28
+ > alert s
29
+
30
+ > alert "important message!"
31
+
32
+ SEE ALSO
33
+ show
@@ -0,0 +1,25 @@
1
+ BEEP VERB
2
+ NAME: beep
3
+ SHORTCUT: b
4
+
5
+ DESCRIPTION
6
+ Play a standard system beep sound.
7
+
8
+ SYNTAX
9
+ beep
10
+
11
+ PARAMETERS
12
+ None
13
+
14
+ RESULT
15
+ None
16
+
17
+ ERRORS
18
+ None
19
+
20
+ EXAMPLE
21
+
22
+ > beep
23
+
24
+ SEE ALSO
25
+ play, say
@@ -0,0 +1,24 @@
1
+ CLS VERB
2
+ NAME: cls
3
+ SHORTCUT: cls
4
+
5
+ DESCRIPTION
6
+ Clear the console screen.
7
+
8
+ SYNTAX
9
+ cls
10
+
11
+ PARAMETERS
12
+ None
13
+
14
+ RESULT
15
+ The screen is cleared and cursor set to the top.
16
+
17
+ ERRORS
18
+ None
19
+
20
+ EXAMPLE
21
+
22
+ > cls
23
+
24
+ SEE ALSO
@@ -0,0 +1,43 @@
1
+ CONTEXT VERB
2
+ NAME: context
3
+ SHORTCUT: @
4
+
5
+ DESCRIPTION
6
+ Get or set the current context.
7
+ When no parameter is provided, the context will be shown.
8
+ The the optional path parameter is provided, the context will
9
+ be set to that path.
10
+ Use 'context root' to set the context back to the root level.
11
+
12
+ SYNTAX
13
+ context <path.to.new.context>
14
+
15
+ PARAMETERS
16
+ path.to.new.context - Optional. The path to the new context.
17
+
18
+ RESULT
19
+ Context is optionally set.
20
+ <it> will be set to the new context path when we are changing context.
21
+ Context is show in either case.
22
+
23
+ ERRORS
24
+ None
25
+
26
+ Note that providing a context does not exist will not initially
27
+ be a problem. In other words, you can set the context to an
28
+ object before it exists. However use of context that doesn't exist
29
+ will be a problem.
30
+
31
+ EXAMPLE
32
+
33
+ > context
34
+ Context: root
35
+
36
+ > context my.object.path
37
+ Context: my.object.path
38
+
39
+ > context root
40
+ Context: root
41
+
42
+ SEE ALSO
43
+ list
@@ -0,0 +1,33 @@
1
+ CREATE VERB
2
+ NAME: create
3
+ SHORTCUT: `
4
+
5
+ DESCRIPTION
6
+ Create a new object of given type with given value.
7
+ Both type and value are optional when creating an object.
8
+
9
+ SYNTAX
10
+ create <new.object.path> as <type> : <value>
11
+
12
+ PARAMETERS
13
+ new.object.path - The path and name of the new object
14
+ type - The type of the new object
15
+ value - The initial value for the new object
16
+
17
+ RESULT
18
+ The new object will be created and added to the object heap.
19
+ <it> will be set to the new object's initial value.
20
+
21
+ ERRORS
22
+ Object name is missing!
23
+ - The name of the object was not specified and the object
24
+ cannot be created.
25
+
26
+ EXAMPLE
27
+
28
+ > create x as integer : 1
29
+ > create s : "abc"
30
+ > create t
31
+
32
+ SEE ALSO
33
+ objects
@@ -0,0 +1,34 @@
1
+ HELP VERB
2
+ NAME: help
3
+ SHORTCUT: ?
4
+
5
+ DESCRIPTION
6
+ Show information about the application.
7
+ The help command can also be used to show a list of objects,
8
+ verbs, or to show detail about a single object or a
9
+ single verb.
10
+
11
+ SYNTAX
12
+ help <topic>
13
+
14
+ PARAMETERS
15
+ about - Optional parameter.
16
+ If no parameter is given, shows the default help screen
17
+ keywords - List all keywords
18
+ verbs - List available verbs
19
+ objects - List available objects
20
+ settings - List application settings
21
+ topics - List all help topics
22
+ <verb> - Look up detail about a verb
23
+ <object> - Look up detail about an object
24
+
25
+ RESULT
26
+ The help screen will be shown with relevant information.
27
+
28
+ ERRORS
29
+ Help command could not be found
30
+ - Trying to access a help topic that does not exist will result
31
+ in an error.
32
+
33
+ SEE ALSO
34
+ application
@@ -0,0 +1,37 @@
1
+ IF VERB
2
+ NAME: if
3
+ SHORTCUT: if
4
+
5
+ DESCRIPTION
6
+ If an expression is true then do something.
7
+
8
+ SYNTAX
9
+ if <true> then <do>
10
+
11
+ PARAMETERS
12
+ true - Does the expression evaluate to true?
13
+ do - Execute command if the expression is true.
14
+
15
+ RESULT
16
+ Unchanged if the expression is not true.
17
+ If true, then the result will be based on the command
18
+ specified after the 'then' keyword.
19
+
20
+ ERRORS
21
+ Missing Expression!
22
+ - No expression is provided as parameter to the verb.
23
+
24
+ Other errors depend on the command that is run.
25
+
26
+ EXAMPLE
27
+
28
+ if [container] :
29
+ x [bool] : false
30
+ true_msg [string] : It is true!
31
+ on_load [script] :
32
+ if if.x then show "first time: " + if.true_msg
33
+ put true into if.x
34
+ if if.x then show "second time: " + if.true_msg
35
+
36
+ SEE ALSO
37
+ unless