gloo-lang 0.9.2 → 0.9.3

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 (193) hide show
  1. checksums.yaml +4 -4
  2. data/lib/VERSION +1 -1
  3. data/lib/dependencies.rb +2 -2
  4. data/lib/gloo-lang.rb +1 -5
  5. data/lib/gloo_lang/app/args.rb +112 -0
  6. data/lib/gloo_lang/app/engine.rb +230 -0
  7. data/lib/gloo_lang/app/help.rb +156 -0
  8. data/lib/gloo_lang/app/log.rb +81 -0
  9. data/lib/gloo_lang/app/mode.rb +27 -0
  10. data/lib/gloo_lang/app/settings.rb +186 -0
  11. data/lib/gloo_lang/convert/converter.rb +35 -0
  12. data/lib/gloo_lang/convert/string_to_datetime.rb +21 -0
  13. data/lib/gloo_lang/convert/string_to_decimal.rb +20 -0
  14. data/lib/gloo_lang/convert/string_to_integer.rb +20 -0
  15. data/lib/gloo_lang/core/baseo.rb +30 -0
  16. data/lib/gloo_lang/core/dictionary.rb +181 -0
  17. data/lib/gloo_lang/core/error.rb +61 -0
  18. data/lib/gloo_lang/core/event_manager.rb +44 -0
  19. data/lib/gloo_lang/core/factory.rb +210 -0
  20. data/lib/gloo_lang/core/gloo_system.rb +266 -0
  21. data/lib/gloo_lang/core/heap.rb +52 -0
  22. data/lib/gloo_lang/core/here.rb +36 -0
  23. data/lib/gloo_lang/core/it.rb +36 -0
  24. data/lib/gloo_lang/core/literal.rb +30 -0
  25. data/lib/gloo_lang/core/obj.rb +303 -0
  26. data/lib/gloo_lang/core/obj_finder.rb +30 -0
  27. data/lib/gloo_lang/core/op.rb +40 -0
  28. data/lib/gloo_lang/core/parser.rb +59 -0
  29. data/lib/gloo_lang/core/pn.rb +188 -0
  30. data/lib/gloo_lang/core/tokens.rb +165 -0
  31. data/lib/gloo_lang/core/verb.rb +86 -0
  32. data/lib/gloo_lang/exec/action.rb +48 -0
  33. data/lib/gloo_lang/exec/dispatch.rb +40 -0
  34. data/lib/gloo_lang/exec/exec_env.rb +74 -0
  35. data/lib/gloo_lang/exec/runner.rb +45 -0
  36. data/lib/gloo_lang/exec/script.rb +49 -0
  37. data/lib/gloo_lang/exec/stack.rb +78 -0
  38. data/lib/gloo_lang/expr/expression.rb +118 -0
  39. data/lib/gloo_lang/expr/l_boolean.rb +36 -0
  40. data/lib/gloo_lang/expr/l_decimal.rb +39 -0
  41. data/lib/gloo_lang/expr/l_integer.rb +37 -0
  42. data/lib/gloo_lang/expr/l_string.rb +58 -0
  43. data/lib/gloo_lang/expr/op_div.rb +22 -0
  44. data/lib/gloo_lang/expr/op_minus.rb +22 -0
  45. data/lib/gloo_lang/expr/op_mult.rb +22 -0
  46. data/lib/gloo_lang/expr/op_plus.rb +24 -0
  47. data/lib/gloo_lang/help/app/application.txt +22 -0
  48. data/lib/gloo_lang/help/app/configuration.txt +7 -0
  49. data/lib/gloo_lang/help/app/default_help.txt +14 -0
  50. data/lib/gloo_lang/help/app/logging.txt +16 -0
  51. data/lib/gloo_lang/help/core/color.txt +31 -0
  52. data/lib/gloo_lang/help/core/error.txt +33 -0
  53. data/lib/gloo_lang/help/core/events.txt +21 -0
  54. data/lib/gloo_lang/help/core/gloo_system.txt +57 -0
  55. data/lib/gloo_lang/help/core/here.txt +30 -0
  56. data/lib/gloo_lang/help/core/it.txt +23 -0
  57. data/lib/gloo_lang/help/core/ops.txt +16 -0
  58. data/lib/gloo_lang/help/core/pathname.txt +29 -0
  59. data/lib/gloo_lang/help/objs/basic/alias.txt +36 -0
  60. data/lib/gloo_lang/help/objs/basic/boolean.txt +28 -0
  61. data/lib/gloo_lang/help/objs/basic/container.txt +33 -0
  62. data/lib/gloo_lang/help/objs/basic/decimal.txt +28 -0
  63. data/lib/gloo_lang/help/objs/basic/integer.txt +27 -0
  64. data/lib/gloo_lang/help/objs/basic/script.txt +29 -0
  65. data/lib/gloo_lang/help/objs/basic/string.txt +28 -0
  66. data/lib/gloo_lang/help/objs/basic/text.txt +27 -0
  67. data/lib/gloo_lang/help/objs/basic/untyped.txt +22 -0
  68. data/lib/gloo_lang/help/objs/cli/banner.txt +49 -0
  69. data/lib/gloo_lang/help/objs/cli/bar.txt +37 -0
  70. data/lib/gloo_lang/help/objs/cli/colorize.txt +33 -0
  71. data/lib/gloo_lang/help/objs/cli/confirm.txt +26 -0
  72. data/lib/gloo_lang/help/objs/cli/menu.txt +44 -0
  73. data/lib/gloo_lang/help/objs/cli/menu_item.txt +26 -0
  74. data/lib/gloo_lang/help/objs/cli/pastel.txt +43 -0
  75. data/lib/gloo_lang/help/objs/cli/prompt.txt +27 -0
  76. data/lib/gloo_lang/help/objs/cli/select.txt +34 -0
  77. data/lib/gloo_lang/help/objs/ctrl/each.txt +48 -0
  78. data/lib/gloo_lang/help/objs/ctrl/repeat.txt +38 -0
  79. data/lib/gloo_lang/help/objs/data/markdown.txt +25 -0
  80. data/lib/gloo_lang/help/objs/data/mysql.txt +40 -0
  81. data/lib/gloo_lang/help/objs/data/query.txt +37 -0
  82. data/lib/gloo_lang/help/objs/data/sqlite.txt +26 -0
  83. data/lib/gloo_lang/help/objs/data/table.txt +46 -0
  84. data/lib/gloo_lang/help/objs/dev/git_repo.txt +36 -0
  85. data/lib/gloo_lang/help/objs/dev/stats.txt +36 -0
  86. data/lib/gloo_lang/help/objs/dt/date.txt +23 -0
  87. data/lib/gloo_lang/help/objs/dt/datetime.txt +24 -0
  88. data/lib/gloo_lang/help/objs/dt/time.txt +23 -0
  89. data/lib/gloo_lang/help/objs/ror/erb.txt +37 -0
  90. data/lib/gloo_lang/help/objs/ror/eval.txt +24 -0
  91. data/lib/gloo_lang/help/objs/snd/play.txt +23 -0
  92. data/lib/gloo_lang/help/objs/snd/say.txt +28 -0
  93. data/lib/gloo_lang/help/objs/system/file.txt +48 -0
  94. data/lib/gloo_lang/help/objs/system/ssh_exec.txt +30 -0
  95. data/lib/gloo_lang/help/objs/system/system.txt +32 -0
  96. data/lib/gloo_lang/help/objs/web/http_get.txt +35 -0
  97. data/lib/gloo_lang/help/objs/web/http_post.txt +34 -0
  98. data/lib/gloo_lang/help/objs/web/json.txt +34 -0
  99. data/lib/gloo_lang/help/objs/web/slack.txt +33 -0
  100. data/lib/gloo_lang/help/objs/web/teams.txt +30 -0
  101. data/lib/gloo_lang/help/objs/web/uri.txt +38 -0
  102. data/lib/gloo_lang/help/verbs/alert.txt +33 -0
  103. data/lib/gloo_lang/help/verbs/beep.txt +25 -0
  104. data/lib/gloo_lang/help/verbs/cls.txt +24 -0
  105. data/lib/gloo_lang/help/verbs/context.txt +43 -0
  106. data/lib/gloo_lang/help/verbs/create.txt +33 -0
  107. data/lib/gloo_lang/help/verbs/execute.txt +27 -0
  108. data/lib/gloo_lang/help/verbs/help.txt +34 -0
  109. data/lib/gloo_lang/help/verbs/if.txt +37 -0
  110. data/lib/gloo_lang/help/verbs/list.txt +34 -0
  111. data/lib/gloo_lang/help/verbs/load.txt +38 -0
  112. data/lib/gloo_lang/help/verbs/move.txt +42 -0
  113. data/lib/gloo_lang/help/verbs/put.txt +38 -0
  114. data/lib/gloo_lang/help/verbs/quit.txt +25 -0
  115. data/lib/gloo_lang/help/verbs/run.txt +41 -0
  116. data/lib/gloo_lang/help/verbs/save.txt +26 -0
  117. data/lib/gloo_lang/help/verbs/show.txt +30 -0
  118. data/lib/gloo_lang/help/verbs/tell.txt +34 -0
  119. data/lib/gloo_lang/help/verbs/unless.txt +38 -0
  120. data/lib/gloo_lang/help/verbs/version.txt +32 -0
  121. data/lib/gloo_lang/help/verbs/wait.txt +29 -0
  122. data/lib/gloo_lang/objs/basic/alias.rb +78 -0
  123. data/lib/gloo_lang/objs/basic/boolean.rb +120 -0
  124. data/lib/gloo_lang/objs/basic/container.rb +76 -0
  125. data/lib/gloo_lang/objs/basic/decimal.rb +76 -0
  126. data/lib/gloo_lang/objs/basic/integer.rb +73 -0
  127. data/lib/gloo_lang/objs/basic/script.rb +99 -0
  128. data/lib/gloo_lang/objs/basic/string.rb +77 -0
  129. data/lib/gloo_lang/objs/basic/text.rb +87 -0
  130. data/lib/gloo_lang/objs/basic/untyped.rb +41 -0
  131. data/lib/gloo_lang/objs/cli/banner.rb +108 -0
  132. data/lib/gloo_lang/objs/cli/bar.rb +133 -0
  133. data/lib/gloo_lang/objs/cli/colorize.rb +73 -0
  134. data/lib/gloo_lang/objs/cli/confirm.rb +96 -0
  135. data/lib/gloo_lang/objs/cli/menu.rb +206 -0
  136. data/lib/gloo_lang/objs/cli/menu_item.rb +95 -0
  137. data/lib/gloo_lang/objs/cli/pastel.rb +97 -0
  138. data/lib/gloo_lang/objs/cli/prompt.rb +110 -0
  139. data/lib/gloo_lang/objs/cli/select.rb +126 -0
  140. data/lib/gloo_lang/objs/ctrl/each.rb +279 -0
  141. data/lib/gloo_lang/objs/ctrl/repeat.rb +108 -0
  142. data/lib/gloo_lang/objs/data/markdown.rb +84 -0
  143. data/lib/gloo_lang/objs/data/mysql.rb +192 -0
  144. data/lib/gloo_lang/objs/data/query.rb +176 -0
  145. data/lib/gloo_lang/objs/data/sqlite.rb +159 -0
  146. data/lib/gloo_lang/objs/data/table.rb +140 -0
  147. data/lib/gloo_lang/objs/dev/git.rb +140 -0
  148. data/lib/gloo_lang/objs/dev/stats.rb +120 -0
  149. data/lib/gloo_lang/objs/dt/date.rb +50 -0
  150. data/lib/gloo_lang/objs/dt/datetime.rb +62 -0
  151. data/lib/gloo_lang/objs/dt/time.rb +50 -0
  152. data/lib/gloo_lang/objs/ror/erb.rb +116 -0
  153. data/lib/gloo_lang/objs/ror/eval.rb +107 -0
  154. data/lib/gloo_lang/objs/snd/play.rb +48 -0
  155. data/lib/gloo_lang/objs/snd/say.rb +98 -0
  156. data/lib/gloo_lang/objs/system/file_handle.rb +138 -0
  157. data/lib/gloo_lang/objs/system/ssh_exec.rb +126 -0
  158. data/lib/gloo_lang/objs/system/system.rb +136 -0
  159. data/lib/gloo_lang/objs/web/http_get.rb +159 -0
  160. data/lib/gloo_lang/objs/web/http_post.rb +183 -0
  161. data/lib/gloo_lang/objs/web/json.rb +135 -0
  162. data/lib/gloo_lang/objs/web/slack.rb +130 -0
  163. data/lib/gloo_lang/objs/web/teams.rb +117 -0
  164. data/lib/gloo_lang/objs/web/uri.rb +148 -0
  165. data/lib/gloo_lang/persist/file_loader.rb +191 -0
  166. data/lib/gloo_lang/persist/file_saver.rb +49 -0
  167. data/lib/gloo_lang/persist/file_storage.rb +45 -0
  168. data/lib/gloo_lang/persist/line_splitter.rb +81 -0
  169. data/lib/gloo_lang/persist/persist_man.rb +120 -0
  170. data/lib/gloo_lang/utils/format.rb +21 -0
  171. data/lib/gloo_lang/utils/stats.rb +205 -0
  172. data/lib/gloo_lang/utils/words.rb +19 -0
  173. data/lib/gloo_lang/verbs/alert.rb +79 -0
  174. data/lib/gloo_lang/verbs/beep.rb +40 -0
  175. data/lib/gloo_lang/verbs/cls.rb +37 -0
  176. data/lib/gloo_lang/verbs/context.rb +62 -0
  177. data/lib/gloo_lang/verbs/create.rb +68 -0
  178. data/lib/gloo_lang/verbs/execute.rb +56 -0
  179. data/lib/gloo_lang/verbs/help.rb +264 -0
  180. data/lib/gloo_lang/verbs/if.rb +92 -0
  181. data/lib/gloo_lang/verbs/list.rb +98 -0
  182. data/lib/gloo_lang/verbs/load.rb +45 -0
  183. data/lib/gloo_lang/verbs/move.rb +89 -0
  184. data/lib/gloo_lang/verbs/put.rb +94 -0
  185. data/lib/gloo_lang/verbs/quit.rb +40 -0
  186. data/lib/gloo_lang/verbs/run.rb +75 -0
  187. data/lib/gloo_lang/verbs/save.rb +39 -0
  188. data/lib/gloo_lang/verbs/show.rb +64 -0
  189. data/lib/gloo_lang/verbs/tell.rb +79 -0
  190. data/lib/gloo_lang/verbs/unless.rb +92 -0
  191. data/lib/gloo_lang/verbs/version.rb +37 -0
  192. data/lib/gloo_lang/verbs/wait.rb +42 -0
  193. metadata +190 -2
@@ -0,0 +1,36 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # An Expression that can be evaluated.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class LBoolean < GlooLang::Core::Literal
10
+
11
+ #
12
+ # Is the given token a boolean?
13
+ #
14
+ def self.boolean?( token )
15
+ return GlooLang::Objs::Boolean.boolean? token
16
+ end
17
+
18
+ #
19
+ # Set the value, converting to an boolean.
20
+ #
21
+ def set_value( value )
22
+ @value = GlooLang::Objs::Boolean.coerse_to_bool value
23
+ end
24
+
25
+ #
26
+ # Get string representation
27
+ #
28
+ def to_s
29
+ return 'false' unless @value
30
+
31
+ return @value.to_s
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
+ #
4
+ # A literal decimal value.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class LDecimal < GlooLang::Core::Literal
10
+
11
+ #
12
+ # Is the given token a decimal?
13
+ #
14
+ def self.decimal?( token )
15
+ return true if token.is_a? Numeric
16
+
17
+ s = token.strip
18
+ return s.to_f.to_s == s
19
+ end
20
+
21
+ #
22
+ # Set the value, converting to an integer.
23
+ #
24
+ def set_value( value )
25
+ value = value.to_s if value.is_a? Numeric
26
+
27
+ @value = value.to_f
28
+ end
29
+
30
+ #
31
+ # Get string representation
32
+ #
33
+ def to_s
34
+ return self.value.to_s
35
+ end
36
+
37
+ end
38
+ end
39
+ 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
+ # An Expression that can be evaluated.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class LInteger < GlooLang::Core::Literal
10
+
11
+ #
12
+ # Is the given token an integer?
13
+ #
14
+ def self.integer?( token )
15
+ return true if token.is_a? Integer
16
+
17
+ s = token.strip
18
+ return s.to_i.to_s == s
19
+ end
20
+
21
+ #
22
+ # Set the value, converting to an integer.
23
+ #
24
+ def set_value( value )
25
+ @value = value.to_i
26
+ end
27
+
28
+ #
29
+ # Get string representation
30
+ #
31
+ def to_s
32
+ return self.value.to_s
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,58 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # An Expression that can be evaluated.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class LString < GlooLang::Core::Literal
10
+
11
+ #
12
+ # Set the value, triming opening and closing
13
+ # quotations if necessary.
14
+ #
15
+ def set_value( value )
16
+ @value = value
17
+ return unless value
18
+
19
+ @value = LString.strip_quotes( @value )
20
+ end
21
+
22
+ #
23
+ # Is the given token a string?
24
+ #
25
+ def self.string?( token )
26
+ return false unless token.is_a? String
27
+ return true if token.start_with?( '"' )
28
+ return true if token.start_with?( "'" )
29
+
30
+ return false
31
+ end
32
+
33
+ #
34
+ # Given a string with leading and trailing quotes,
35
+ # strip them out.
36
+ #
37
+ def self.strip_quotes( str )
38
+ if str.start_with?( '"' )
39
+ str = str[ 1..-1 ]
40
+ str = str[ 0..-2 ] if str.end_with?( '"' )
41
+ return str
42
+ elsif str.start_with?( "'" )
43
+ str = str[ 1..-1 ]
44
+ str = str[ 0..-2 ] if str.end_with?( "'" )
45
+ return str
46
+ end
47
+ end
48
+
49
+ #
50
+ # Get string representation
51
+ #
52
+ def to_s
53
+ return self.value
54
+ end
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,22 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Division operator.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class OpDiv < GlooLang::Core::Op
10
+
11
+ #
12
+ # Perform the operation and return the result.
13
+ #
14
+ def perform( left, right )
15
+ return left / right.to_i if left.is_a? Integer
16
+
17
+ return left / right.to_f if left.is_a? Numeric
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Subtraction operator.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class OpMinus < GlooLang::Core::Op
10
+
11
+ #
12
+ # Perform the operation and return the result.
13
+ #
14
+ def perform( left, right )
15
+ return left - right.to_i if left.is_a? Integer
16
+
17
+ return left - right.to_f if left.is_a? Numeric
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Multiplication operator.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class OpMult < GlooLang::Core::Op
10
+
11
+ #
12
+ # Perform the operation and return the result.
13
+ #
14
+ def perform( left, right )
15
+ return left * right.to_i if left.is_a? Integer
16
+
17
+ return left * right.to_f if left.is_a? Numeric
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Addition operator.
5
+ #
6
+
7
+ module GlooLang
8
+ module Expr
9
+ class OpPlus < GlooLang::Core::Op
10
+
11
+ #
12
+ # Perform the operation and return the result.
13
+ #
14
+ def perform( left, right )
15
+ return left + right.to_s if left.is_a? String
16
+
17
+ return left + right.to_i if left.is_a? Integer
18
+
19
+ return left + right.to_f if left.is_a? Numeric
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ GLOO APPLICATION
2
+
3
+ DESCRIPTION
4
+ Gloo scripting language. A scripting language built on ruby.
5
+ More information coming soon.
6
+
7
+ SYNOPSIS
8
+ gloo [global option] [file]
9
+
10
+ GLOBAL OPTIONS
11
+ --cli - Run in CLI mode
12
+ - If no options are specified, this is the default.
13
+ --version - Show application version
14
+ --help - Show this help page
15
+
16
+ FILE
17
+ TODO: document running a gloo script
18
+ how to reference files by relative path in gloo folder
19
+ and also by absolute path
20
+
21
+ SEE ALSO
22
+ application, configuration
@@ -0,0 +1,7 @@
1
+ CONFIGURATION
2
+
3
+ DESCRIPTION
4
+ TODO: document the application configuration and settings
5
+
6
+ SEE ALSO
7
+ application, help
@@ -0,0 +1,14 @@
1
+ GLOO HELP
2
+
3
+ TODO: write this article
4
+
5
+ LISTS
6
+ Show options for object and verb lists
7
+
8
+ DETAIL
9
+ How to get help detail for verbs and objects
10
+ How to see a help pages
11
+ How to see a list of help pages (topics)
12
+
13
+ SEE ALSO
14
+ application, configuration
@@ -0,0 +1,16 @@
1
+ GLOO APPLICATION LOGGING
2
+
3
+ DESCRIPTION
4
+ Gloo writes to the gloo.log as well as to the console.
5
+ Debug messages are written to the log only, but other messages
6
+ are also written to the console unless the application is
7
+ running in quiet mode.
8
+
9
+ CONFIGURATION
10
+ The application logs folder is in the gloo folder.
11
+ When gloo is run, the gloo.log file will be written to.
12
+
13
+ TAIL
14
+ Example tail command to watch the gloo log:
15
+
16
+ tail -f ~/gloo/logs/gloo.log
@@ -0,0 +1,31 @@
1
+ COLOR
2
+
3
+ DESCRIPTION
4
+ The following colors can be used by the show verb to display
5
+ colored text:
6
+
7
+ red
8
+ blue
9
+ green
10
+ white
11
+ black
12
+ yellow
13
+
14
+ The color names are considered as virtual objects but may
15
+ also be referenced in variables. See the example below.
16
+
17
+ EXAMPLE
18
+ Here are some examples of expression usage:
19
+
20
+ #
21
+ # Show multiple messages in color
22
+ #
23
+ colors [can] :
24
+ var [string] : red
25
+ on_load [script] :
26
+ show "red" (colors.var)
27
+ show "blue" (blue)
28
+ show "green" (green)
29
+
30
+ SEE ALSO
31
+ show
@@ -0,0 +1,33 @@
1
+ ERROR
2
+
3
+ DESCRIPTION
4
+ Gloo has a special 'error' variable that's not part of the normal
5
+ object heap. The error will be empty most of the time, but
6
+ if a command results in an error, this variable will hold the
7
+ error message until the next command is executed. The error
8
+ is a string and can be accessed by simply referring to the
9
+ path-name 'error'.
10
+
11
+ EXAMPLE
12
+ To see the last error:
13
+
14
+ > show error
15
+
16
+ To run a command that generates an error:
17
+
18
+ > put 3 into
19
+ 'put' must include 'into' target
20
+
21
+ Then, showing the error
22
+
23
+ > show error
24
+ 'put' must include 'into' target
25
+
26
+ But, as mentioned, the next command will clear out the last error.
27
+ If you need to keep track of the result of a command, you should
28
+ put the error into another object.
29
+
30
+ > create err as string
31
+ > put 3 into
32
+ > put error into err
33
+
@@ -0,0 +1,21 @@
1
+ EVENTS
2
+
3
+ DESCRIPTION
4
+ Scripts can be written to be triggered by events. The current list is as
5
+ follows, but it is expected that the list of events will grow.
6
+
7
+ on_load - run when a script loads
8
+ on_unload - run when an object receives an unload message
9
+
10
+ TODO: add event types.
11
+
12
+ EXAMPLE
13
+ Show a message when a file is loaded:
14
+
15
+ start [container] :
16
+ on_load [script] : show "Welcome back!" (white)
17
+
18
+ Show a message when a file unloaded:
19
+
20
+ done [container] :
21
+ on_unload [script] : show "See ya soon!" (white)
@@ -0,0 +1,57 @@
1
+ GLOO SYSTEM OBJECTS
2
+
3
+ DESCRIPTION
4
+ The gloo system objects are virtual objects. That is that they
5
+ can be accessed like other objects. But the values are set by
6
+ the system. The values cannot be updated. The other difference
7
+ is that the virtual objects do not show up in the object heap.
8
+
9
+ ACCESS
10
+ The gloo objects can be accessed through the 'gloo' root level
11
+ virtual object designation. There is also a shortcut for the virtual
12
+ object path: '$'. For example, to see the current user:
13
+
14
+ > show gloo.user
15
+
16
+ Or:
17
+
18
+ > show $.user
19
+
20
+ Some objects include an '_' to separate words. As an alternative,
21
+ a '.' can be used instead. The following commands are treated as
22
+ identical:
23
+
24
+ > show gloo.working_dir
25
+ > show gloo.working.dir
26
+ > show $.working_dir
27
+ > show $.working.dir
28
+
29
+ OBJECTS
30
+
31
+ IDENTITY
32
+ gloo.hostname # Get the system hostname.
33
+ gloo.user # Get the logged in User.
34
+
35
+ SPECIAL CHARS
36
+ gloo.line # A carriage return (line feed) character.
37
+
38
+ FILE SYSTEM
39
+ gloo.user_home # Get the user's home directory.
40
+ gloo.working_dir # Get the working directory.
41
+ gloo.gloo_home # Get the gloo home directory
42
+ gloo.gloo_config # Get the gloo configuration directory
43
+ gloo.gloo_projects # Get the gloo projects directory
44
+ gloo.gloo_log # Get the gloo logging directory
45
+
46
+ SCREEN
47
+ gloo.screen_lines # Get the number of lines on screen.
48
+ gloo.screen_cols # Get the number of columns on screen.
49
+
50
+ PLATFORM
51
+ gloo.platform_cpu # Get the platform CPU
52
+ gloo.platform_os # Get the platform Operating System
53
+ gloo.platform_version # Get the platform version
54
+ gloo.platform_windows? # Is the platform Windows?
55
+ gloo.platform_unix? # Is the platform Unix?
56
+ gloo.platform_linux? # Is the platform Linux?
57
+ gloo.platform_mac? # Is the platform Mac?
@@ -0,0 +1,30 @@
1
+ HERE
2
+
3
+ DESCRIPTION
4
+ Gloo scripts can use relative referencing to access objects
5
+ without specifying the full path. This relative referencing is
6
+ referred to with the 'here' operator: ^
7
+
8
+ EXAMPLE
9
+ In the following script, the here reference is used several times:
10
+
11
+ #
12
+ # Use here reference.
13
+ #
14
+ here [can] :
15
+ s [str] : local string
16
+ on_load [script] : show ^.s
17
+ a [can] :
18
+ s [str] : A string
19
+ b [can] :
20
+ s [str] : B string
21
+ on_load [script] :
22
+ show ^.s
23
+ show ^^.s
24
+
25
+ A single use of '^' means: refer to an object at the same level
26
+ as the running script. It tells the interpreter to 'look here'
27
+ for the object.
28
+
29
+ Use of two ^^ here references means to go up a level, and
30
+ so forth.
@@ -0,0 +1,23 @@
1
+ IT
2
+
3
+ DESCRIPTION
4
+ 'It' is a special virtual object. 'It' contains the value of
5
+ the last expression or command run. Not all commands result in
6
+ a change to the value of it.
7
+
8
+ EXAMPLE
9
+ Get the value of an expression and store it somewhere for later use:
10
+
11
+ #
12
+ # Example of usage of 'it'.
13
+ #
14
+ it_example [can] :
15
+ result [int] :
16
+ on_load [script] :
17
+ show 3 + 4
18
+ put it into ^.result
19
+ show ^.result
20
+
21
+ Running this script will show 7 twice. The first time will be the
22
+ result of the addition. The second time will be showing the
23
+ result object.
@@ -0,0 +1,16 @@
1
+ OPERATORS
2
+
3
+ DESCRIPTION
4
+ These are the gloo operators:
5
+
6
+ + addition
7
+ - subtraction
8
+ * multiplication
9
+ / division
10
+
11
+ EXAMPLE
12
+ Here are some examples of expression usage:
13
+
14
+ > show 2 + 5
15
+ > put 12 / 3 into x
16
+ > show 23 * 3 - 6
@@ -0,0 +1,29 @@
1
+ PATHNAME
2
+
3
+ DESCRIPTION
4
+ All gloo object data and scripts are stored in a heap of objects or
5
+ just "the heap". The heap is hierarchical, with some objects having
6
+ children objects. To reference an object, we use a "pathname". The
7
+ pathname starts with the root level object then has a period, ".",
8
+ then the child object name, and so forth. "a.b.c" refers to the "c"
9
+ object in the "b" container, which is in the "a" container.
10
+
11
+ ROOT
12
+ The word "root" is not needed when referring to objects. In some
13
+ special cases, "root" can be used to point to the first level of
14
+ the object heap. One such use would be with the "context" verb.
15
+
16
+ EXAMPLE
17
+ Here is an example of objects and a pathname reference to an
18
+ object within the hierarchy:
19
+
20
+ #
21
+ # Hierarchical containers.
22
+ #
23
+ a [can] :
24
+ b [can] :
25
+ c [string] : Hello World
26
+ on_load [script] : show a.b.c
27
+
28
+ SEE ALSO
29
+ context
@@ -0,0 +1,36 @@
1
+ ALIAS OBJECT TYPE
2
+ NAME: alias
3
+ SHORTCUT: ln
4
+
5
+ DESCRIPTION
6
+ A pointer to another object.
7
+ Normal path-name references will refere to the aliased object.
8
+ To refer to the alias itself, add an * at the end of the path-name.
9
+ This is neeed, for example, to set the value of the alias.
10
+ The value of the alias is merely the path-name of the
11
+ referenced object.
12
+
13
+ CHILDREN
14
+ None
15
+
16
+ MESSAGES
17
+ The alias will reflect the mesages of the object to which
18
+ it points.
19
+ The alias itself can receive the following message:
20
+ resolve - Check to see if the object referenced exists.
21
+ Sets it to true or false.
22
+
23
+ EXAMPLE
24
+
25
+ a [can] :
26
+ s [string] : a string
27
+ i [integer] : 13
28
+ ln [alias] : a.s
29
+ on_load [script] :
30
+ show a.ln
31
+ show a.ln*
32
+ put 'a.i' into a.ln*
33
+ put 7 into a.ln
34
+ show a.ln
35
+
36
+ SEE ALSO
@@ -0,0 +1,28 @@
1
+ BOOLEAN OBJECT TYPE
2
+ NAME: boolean
3
+ SHORTCUT: bool
4
+
5
+ DESCRIPTION
6
+ A boolean value.
7
+ Value will be either true or false.
8
+
9
+ CHILDREN
10
+ None
11
+
12
+ MESSAGES
13
+ not - Set the boolean to the opposite of what it is now.
14
+ true - Set the boolean to true.
15
+ false - Set the boolean to false.
16
+
17
+ EXAMPLE
18
+
19
+ b [can] :
20
+ flag [boolean] : true
21
+ on_load [script] :
22
+ show b.flag
23
+ put false into b.flag
24
+ show b.flag
25
+ tell b.flag to not
26
+ show b.flag
27
+
28
+ SEE ALSO
@@ -0,0 +1,33 @@
1
+ CONTAINER OBJECT TYPE
2
+ NAME: container
3
+ SHORTCUT: can
4
+
5
+ DESCRIPTION
6
+ A container of other objects.
7
+ A container is similar to a folder in a file system.
8
+ It can contain any number of objects including other containers.
9
+ The container structure provides direct access to any object
10
+ within it through the object.object.object path-name structure.
11
+
12
+ CHILDREN
13
+ None by default. But any container can have any number of
14
+ objects added to it.
15
+
16
+ MESSAGES
17
+ count - Count the number of children objects in the container.
18
+ The result is put in <it>.
19
+ delete_children - Delete all children objects from the container.
20
+ show_key_value_tbl - Show a table with key (name) and values
21
+ for all children in the container.
22
+
23
+ EXAMPLE
24
+
25
+ can [can] :
26
+ data [can] :
27
+ 1 : one
28
+ 2 : two
29
+ 3 : three
30
+ on_load [script] :
31
+ tell can.data to show_key_value_table
32
+
33
+ SEE ALSO