Class: GlooLang::Core::Obj
Direct Known Subclasses
GlooSystem, Objs::Alias, Objs::Boolean, Objs::Container, Objs::Date, Objs::Datetime, Objs::Decimal, Objs::Each, Objs::Erb, Objs::Eval, Objs::HttpGet, Objs::HttpPost, Objs::Integer, Objs::Json, Objs::Markdown, Objs::Repeat, Objs::Script, Objs::Slack, Objs::String, Objs::Table, Objs::Teams, Objs::Text, Objs::Time, Objs::Untyped, Objs::Uri
Constant Summary
Constants inherited from Baseo
Instance Attribute Summary collapse
-
#children ⇒ Object
readonly
Returns the value of attribute children.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#value ⇒ Object
Returns the value of attribute value.
Attributes inherited from Baseo
Class Method Summary collapse
-
.can_create? ⇒ Boolean
Can this object be created? This is true by default and only false for some special cases such as the System object.
-
.help ⇒ Object
Get help for this object.
-
.inherited(subclass) ⇒ Object
Register object types when they are loaded.
-
.messages ⇒ Object
Get a list of message names that this object receives.
-
.typename ⇒ Object
The name of the object type.
Instance Method Summary collapse
-
#add_child(obj) ⇒ Object
Add a child object to the container.
-
#add_children_on_create? ⇒ Boolean
Does this object have children to add when an object is created in interactive mode? This does not apply during obj load, etc.
-
#add_default_children ⇒ Object
Add children to this object.
-
#can_receive_message?(msg) ⇒ Boolean
Can this object receive a message?.
-
#child_count ⇒ Object
Get the number of children.
-
#contains_child?(name) ⇒ Boolean
Does this object contain an object with the given name?.
-
#delete_children ⇒ Object
Delete all children from the container.
-
#dispatch(msg) ⇒ Object
Dispatch the message to the object.
-
#display_value ⇒ Object
Generic function to get display value.
-
#find_add_child(name, type) ⇒ Object
Find a child of the given name.
-
#find_child(name) ⇒ Object
Find a child object with the given name.
-
#initialize(engine) ⇒ Obj
constructor
Set up the object.
-
#msg_reload ⇒ Object
Send the object the reload message.
-
#msg_unload ⇒ Object
Send the object the unload message.
-
#multiline_value? ⇒ Boolean
Does this object support multi-line values? Initially only true for scripts.
-
#pn ⇒ Object
Get the path and name to this object.
-
#remove_child(obj) ⇒ Object
Remove the object from the children collection.
-
#root? ⇒ Boolean
Is this the root object?.
-
#send_message(msg, params = nil) ⇒ Object
Sent this object the given message.
-
#set_parent(obj) ⇒ Object
Set the parent for the object.
-
#set_value(new_value) ⇒ Object
Set the value with any necessary type conversions.
-
#type_display ⇒ Object
The object type, suitable for display.
-
#value_display ⇒ Object
Get the value for display purposes.
-
#value_is_array? ⇒ Boolean
Is the value an Array?.
-
#value_is_blank? ⇒ Boolean
Is the value a blank string?.
-
#value_string? ⇒ Boolean
Is the value a String?.
Constructor Details
#initialize(engine) ⇒ Obj
Set up the object.
18 19 20 21 22 23 |
# File 'lib/gloo_lang/core/obj.rb', line 18 def initialize( engine ) @engine = engine @value = '' @children = [] @parent = nil end |
Instance Attribute Details
#children ⇒ Object (readonly)
Returns the value of attribute children.
13 14 15 |
# File 'lib/gloo_lang/core/obj.rb', line 13 def children @children end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
13 14 15 |
# File 'lib/gloo_lang/core/obj.rb', line 13 def parent @parent end |
#value ⇒ Object
Returns the value of attribute value.
12 13 14 |
# File 'lib/gloo_lang/core/obj.rb', line 12 def value @value end |
Class Method Details
.can_create? ⇒ Boolean
Can this object be created? This is true by default and only false for some special cases such as the System object.
66 67 68 |
# File 'lib/gloo_lang/core/obj.rb', line 66 def self.can_create? true end |
.help ⇒ Object
Get help for this object.
312 313 314 |
# File 'lib/gloo_lang/core/obj.rb', line 312 def self.help return 'No help found.' end |
.inherited(subclass) ⇒ Object
Register object types when they are loaded.
28 29 30 |
# File 'lib/gloo_lang/core/obj.rb', line 28 def self.inherited( subclass ) Dictionary.instance.register_obj( subclass ) end |
.messages ⇒ Object
Get a list of message names that this object receives.
241 242 243 |
# File 'lib/gloo_lang/core/obj.rb', line 241 def self. return %w[reload unload] end |
.typename ⇒ Object
The name of the object type.
35 36 37 |
# File 'lib/gloo_lang/core/obj.rb', line 35 def self.typename raise 'this method should be overriden' end |
Instance Method Details
#add_child(obj) ⇒ Object
Add a child object to the container.
162 163 164 165 |
# File 'lib/gloo_lang/core/obj.rb', line 162 def add_child( obj ) @children << obj obj.set_parent self end |
#add_children_on_create? ⇒ Boolean
Does this object have children to add when an object is created in interactive mode? This does not apply during obj load, etc.
223 224 225 |
# File 'lib/gloo_lang/core/obj.rb', line 223 def add_children_on_create? return false end |
#add_default_children ⇒ Object
Add children to this object. This is used by containers to add children needed for default configurations.
230 231 232 |
# File 'lib/gloo_lang/core/obj.rb', line 230 def add_default_children # Override this. end |
#can_receive_message?(msg) ⇒ Boolean
Can this object receive a message?
248 249 250 251 |
# File 'lib/gloo_lang/core/obj.rb', line 248 def ( msg ) msgs = self.class. return msgs.include?( msg.strip.downcase ) end |
#child_count ⇒ Object
Get the number of children.
170 171 172 |
# File 'lib/gloo_lang/core/obj.rb', line 170 def child_count return @children.count end |
#contains_child?(name) ⇒ Boolean
Does this object contain an object with the given name?
177 178 179 180 181 182 |
# File 'lib/gloo_lang/core/obj.rb', line 177 def contains_child?( name ) @children.each do |o| return true if name.downcase == o.name.downcase end return false end |
#delete_children ⇒ Object
Delete all children from the container.
207 208 209 210 211 |
# File 'lib/gloo_lang/core/obj.rb', line 207 def delete_children @children.reverse.each do |o| self.remove_child o end end |
#dispatch(msg) ⇒ Object
Dispatch the message to the object.
267 268 269 270 271 272 273 274 275 276 |
# File 'lib/gloo_lang/core/obj.rb', line 267 def dispatch( msg ) o = "msg_#{msg}" if self.respond_to? o self.public_send( o ) return true else @engine.log.error "Message #{msg} not implemented" return false end end |
#display_value ⇒ Object
Generic function to get display value. Can be used for debugging, etc.
87 88 89 |
# File 'lib/gloo_lang/core/obj.rb', line 87 def display_value return self.pn end |
#find_add_child(name, type) ⇒ Object
Find a child of the given name. If found, return it. If not found create it.
148 149 150 151 152 153 154 155 156 157 |
# File 'lib/gloo_lang/core/obj.rb', line 148 def find_add_child( name, type ) child = self.find_child( name ) return child if child params = { :name => name, :type => type, :value => nil, :parent => self } return @engine.factory.create params end |
#find_child(name) ⇒ Object
Find a child object with the given name.
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/gloo_lang/core/obj.rb', line 187 def find_child( name ) if name.end_with?( GlooLang::Objs::Alias::ALIAS_REFERENCE ) name = name[ 0..-2 ] end @children.each do |o| return o if name.downcase == o.name.downcase end if self.type_display == GlooLang::Objs::Alias.typename ln = GlooLang::Core::Pn.new( @engine, self.value ) redirect = ln.resolve return redirect.find_child( name ) end return nil end |
#msg_reload ⇒ Object
Send the object the reload message. Note that this will only work for objects with file assoications.
296 297 298 299 300 301 302 303 |
# File 'lib/gloo_lang/core/obj.rb', line 296 def msg_reload if self.root? @engine.log.error 'Cannot reload the root object.' return end @engine.persist_man.reload self end |
#msg_unload ⇒ Object
Send the object the unload message.
281 282 283 284 285 286 287 288 289 290 |
# File 'lib/gloo_lang/core/obj.rb', line 281 def msg_unload if self.root? @engine.log.error 'Cannot unload the root object.' return end @engine.event_manager.on_unload self @engine.heap.unload self @engine.persist_man.unload self end |
#multiline_value? ⇒ Boolean
Does this object support multi-line values? Initially only true for scripts.
113 114 115 |
# File 'lib/gloo_lang/core/obj.rb', line 113 def multiline_value? return false end |
#pn ⇒ Object
Get the path and name to this object.
73 74 75 76 77 78 79 80 81 |
# File 'lib/gloo_lang/core/obj.rb', line 73 def pn str = self.name p = self.parent while p && !p.root? str = "#{p.name}.#{str}" p = p.parent end return str end |
#remove_child(obj) ⇒ Object
Remove the object from the children collection.
216 217 218 |
# File 'lib/gloo_lang/core/obj.rb', line 216 def remove_child( obj ) @children.delete obj end |
#root? ⇒ Boolean
Is this the root object?
56 57 58 59 60 61 |
# File 'lib/gloo_lang/core/obj.rb', line 56 def root? return false if @parent return false unless name.downcase == 'root' return true end |
#send_message(msg, params = nil) ⇒ Object
Sent this object the given message.
256 257 258 259 260 261 262 |
# File 'lib/gloo_lang/core/obj.rb', line 256 def ( msg, params = nil ) @params = params return self.dispatch msg if self. msg @engine.log.error "Object #{self.name} cannot receive message #{msg}" return false end |
#set_parent(obj) ⇒ Object
Set the parent for the object.
49 50 51 |
# File 'lib/gloo_lang/core/obj.rb', line 49 def set_parent( obj ) @parent = obj end |
#set_value(new_value) ⇒ Object
Set the value with any necessary type conversions.
98 99 100 |
# File 'lib/gloo_lang/core/obj.rb', line 98 def set_value( new_value ) self.value = new_value end |
#type_display ⇒ Object
The object type, suitable for display.
42 43 44 |
# File 'lib/gloo_lang/core/obj.rb', line 42 def type_display return self.class.typename end |
#value_display ⇒ Object
Get the value for display purposes.
105 106 107 |
# File 'lib/gloo_lang/core/obj.rb', line 105 def value_display return self.value.to_s end |
#value_is_array? ⇒ Boolean
Is the value an Array?
127 128 129 |
# File 'lib/gloo_lang/core/obj.rb', line 127 def value_is_array? return self.value.is_a? Array end |
#value_is_blank? ⇒ Boolean
Is the value a blank string?
134 135 136 137 138 |
# File 'lib/gloo_lang/core/obj.rb', line 134 def value_is_blank? return true if value.nil? return self.value.to_s.strip.empty? end |
#value_string? ⇒ Boolean
Is the value a String?
120 121 122 |
# File 'lib/gloo_lang/core/obj.rb', line 120 def value_string? return self.value.is_a? String end |