Class: Gloo::Objs::Erb

Inherits:
Core::Obj show all
Defined in:
lib/gloo/objs/system/erb.rb

Constant Summary collapse

KEYWORD =
'erb'.freeze
KEYWORD_SHORT =
'erb'.freeze
TEMPLATE =
'template'.freeze
PARAMS =
'params'.freeze
RESULT =
'result'.freeze

Constants inherited from Core::Baseo

Core::Baseo::NOT_IMPLEMENTED_ERR

Instance Attribute Summary

Attributes inherited from Core::Obj

#children, #parent, #value

Attributes inherited from Core::Baseo

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Core::Obj

#add_child, can_create?, #can_receive_message?, #child_count, #child_index, #contains_child?, #delete_children, #dispatch, #display_value, #find_add_child, #find_child, #find_child_resolve_alias, #find_child_value, help, inherited, #initialize, #is_alias?, #is_container?, #is_function?, #msg_blank?, #msg_contains?, #msg_reload, #msg_responds_to?, #msg_unload, #multiline_value?, #pn, #remove_child, #render, #root?, #send_message, #set_parent, #set_value, #sql_value, #type_display, #value_display, #value_is_array?, #value_is_blank?, #value_string?

Methods inherited from Core::Baseo

#initialize, #type_display

Constructor Details

This class inherits a constructor from Gloo::Core::Obj

Class Method Details

.doc_dataObject

Get the object's documentation data.



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/gloo/objs/system/erb.rb', line 120

def self.doc_data
  {
    :name => KEYWORD,
    :shortcut => KEYWORD_SHORT,
    :description => 'Use the ERB templating system to generate ' \
      'content. For example, you can use the ERB object for ' \
      'string interpolation.',
    :children => [
      'template (text) — The template that will be used when the ERB object is run.',
      'params (container) — The collection of children values used when the template is rendered.',
      'result (text) — The result of the template rendering.'
    ],
    :messages => [
      'run — Render the result based on the template and the parameter values.'
    ],
    :examples => <<~EXAMPLES.strip
      e [can] :
        erb [erb] :
          template [text] : BEGIN
            Hello <%= first %> <%= last %>!
            END
          params [container] :
            first [string] : Eric
            last [string] : Crane
          result [text] :
        on_load [script] :
          run e.erb
          show e.erb.result
    EXAMPLES
  }
end

.messagesObject

Get a list of message names that this object receives.



98
99
100
# File 'lib/gloo/objs/system/erb.rb', line 98

def self.messages
  return super + [ 'run' ]
end

.short_typenameObject

The short name of the object type.



28
29
30
# File 'lib/gloo/objs/system/erb.rb', line 28

def self.short_typename
  return KEYWORD_SHORT
end

.typenameObject

The name of the object type.



21
22
23
# File 'lib/gloo/objs/system/erb.rb', line 21

def self.typename
  return KEYWORD
end

Instance Method Details

#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.

Returns:



75
76
77
# File 'lib/gloo/objs/system/erb.rb', line 75

def add_children_on_create?
  return true
end

#add_default_childrenObject

Add children to this object. This is used by containers to add children needed for default configurations.



84
85
86
87
88
89
# File 'lib/gloo/objs/system/erb.rb', line 84

def add_default_children
  fac = @engine.factory
  fac.create_text TEMPLATE, '', self
  fac.create_can PARAMS, self
  fac.create_text RESULT, '', self
end

#msg_runObject

Run the ERB template conversion.



105
106
107
108
109
110
111
# File 'lib/gloo/objs/system/erb.rb', line 105

def msg_run
  tmpl = template_value
  return unless tmpl

  render = ERB.new( tmpl )
  set_result render.result_with_hash( param_hash )
end

#param_hashObject

Get a hash with parameters for the ERB render.



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/gloo/objs/system/erb.rb', line 54

def param_hash
  h = {}

  body = find_child PARAMS
  body.children.each do |child|
    child = Gloo::Objs::Alias.resolve_alias( @engine, child )
    h[ child.name ] = child.value
  end

  return h
end

#set_result(data) ⇒ Object

Set the result of the ERB template conversion.



44
45
46
47
48
49
# File 'lib/gloo/objs/system/erb.rb', line 44

def set_result( data )
  r = find_child_resolve_alias RESULT
  return unless r

  r.set_value data
end

#template_valueObject

Get the ERB template.



35
36
37
38
39
# File 'lib/gloo/objs/system/erb.rb', line 35

def template_value
  tmpl = find_child TEMPLATE
  tmpl = Gloo::Objs::Alias.resolve_alias( @engine, tmpl )
  return tmpl&.value
end