Class: Arrow::Template::SetDirective
- Inherits:
-
Directive
- Object
- Arrow::Object
- Node
- Directive
- Arrow::Template::SetDirective
- Defined in:
- lib/arrow/template/set.rb
Overview
The Arrow::Template::SetDirective class, a derivative of Arrow::Template::Directive. This is the class which defines the behaviour of the ‘set’ template directive.
Syntax
<?set foo 1?>
Authors
Michael Granger
Please see the file LICENSE in the top-level directory for licensing details.
Constant Summary
- SVNRev =
SVN Revision
%q$Rev$
- SVNId =
SVN Id
%q$Id$
Constants inherited from Directive
Constants inherited from Node
Constants included from Arrow::HTMLUtilities
ARRAY_HTML_CONTAINER, HASH_HTML_CONTAINER, HASH_PAIR_HTML, IMMEDIATE_OBJECT_HTML_CONTAINER, IVAR_HTML_FRAGMENT, OBJECT_HTML_CONTAINER, THREAD_DUMP_KEY
Instance Attribute Summary
-
- (Object) name
readonly
The name of the definition set by this directive.
-
- (Object) value
readonly
The raw (unevaluated) value of the definition.
Instance Method Summary
-
- (SetDirective) initialize(type, parser, state)
constructor
Create and return a new Arrow::Template::SetDirective object.
-
- (Object) parse_directive_contents(parser, state)
protected
Parse the contents of the directive.
-
- (Object) render(template, scope)
Render the directive.
Methods inherited from Directive
create, derivativeDirs, #inspect, #to_html
Methods inherited from Node
#add_to_template, #css_class, #inspect, #is_rendering_node?, #to_a, #to_html, #to_s
Methods included from Arrow::HTMLUtilities
#escape_html, #make_html_for_object, #make_object_html_wrapper
Methods inherited from Arrow::Object
deprecate_class_method, deprecate_method, inherited
Methods included from Arrow::Loggable
Constructor Details
- (SetDirective) initialize(type, parser, state)
Create and return a new Arrow::Template::SetDirective object.
29 30 31 32 33 34 |
# File 'lib/arrow/template/set.rb', line 29 def initialize( type, parser, state ) @name = nil @value = nil super end |
Instance Attribute Details
- (Object) name (readonly)
The name of the definition set by this directive.
42 43 44 |
# File 'lib/arrow/template/set.rb', line 42 def name @name end |
- (Object) value (readonly)
The raw (unevaluated) value of the definition
45 46 47 |
# File 'lib/arrow/template/set.rb', line 45 def value @value end |
Instance Method Details
- (Object) parse_directive_contents(parser, state) (protected)
Parse the contents of the directive.
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/arrow/template/set.rb', line 71 def parse_directive_contents( parser, state ) @name = parser.scan_for_identifier( state ) state.scanner.skip( /\s*=\s*/ ) @value = parser.scan_for_identifier( state ) || parser.scan_for_quoted_string( state ) or raise Arrow::ParseError, "No value for 'set' directive" if (( chain = parser.scan_for_methodchain(state) )) @value << chain end end |
- (Object) render(template, scope)
Render the directive. This adds the defined variable to the template’s rendering scope and returns an empty string (or a comment if :debuggingComments is turned on in the template.
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/arrow/template/set.rb', line 51 def render( template, scope ) rval = super self.log.debug "Evaling <%s> for 'set' directive." % @value template[@name] = eval( @value, scope.get_binding, __FILE__, __LINE__ ) if template._config[:debuggingComments] rval << template.render_comment( "Set '%s' to '%s'" % [ @name, template[@name] ] ) end return rval end |