Class: Inversion::Template::Node

Inherits:
Object
  • Object
show all
Extended by:
Loggability
Includes:
AbstractClass
Defined in:
lib/inversion/template/node.rb

Overview

Inversion template node base class. Template text is parsed by the Inversion::Parser into nodes, and appended to a tree that is later walked when the template is rendered.

This class is abstract; it just defines the API that other nodes are expected to implement.

Direct Known Subclasses

Tag, TextNode

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from AbstractClass

included

Methods included from AbstractClass::ClassMethods

#inherited, #pure_virtual

Constructor Details

#initialize(body, linenum = nil, colnum = nil) ⇒ Node

Create a new TextNode with the specified ‘source`.



24
25
26
27
28
# File 'lib/inversion/template/node.rb', line 24

def initialize( body, linenum=nil, colnum=nil )
	@body    = body
	@linenum = linenum
	@colnum  = colnum
end

Instance Attribute Details

#colnumObject (readonly)

The column number the node was parsed from in the template source (if known)



39
40
41
# File 'lib/inversion/template/node.rb', line 39

def colnum
  @colnum
end

#linenumObject (readonly)

The line number the node was parsed from in the template source (if known)



36
37
38
# File 'lib/inversion/template/node.rb', line 36

def linenum
  @linenum
end

Instance Method Details

#after_appending(state) ⇒ Object Also known as: after_append

Default (no-op) implementation of the after_appending callback. This exists so defining the append callbacks are optional for Node’s subclasses.



83
84
85
86
# File 'lib/inversion/template/node.rb', line 83

def after_appending( state )
	# Nothing to do
	return nil
end

#after_rendering(state = nil) ⇒ Object Also known as: after_render

Default (no-op) implementation of the after_rendering callback. This exists so defining the rendering callbacks are optional for Node’s subclasses.



101
102
103
104
# File 'lib/inversion/template/node.rb', line 101

def after_rendering( state=nil )
	# Nothing to do
	return nil
end

#as_comment_bodyObject

Render the node as a comment



50
51
52
# File 'lib/inversion/template/node.rb', line 50

def as_comment_body
	return self.inspect
end

#before_appending(state) ⇒ Object Also known as: before_append

Default (no-op) implementation of the before_appending callback. This exists so defining the append callbacks are optional for Node’s subclasses.



74
75
76
77
# File 'lib/inversion/template/node.rb', line 74

def before_appending( state )
	# Nothing to do
	return nil
end

#before_rendering(state = nil) ⇒ Object Also known as: before_render

Default (no-op) implementation of the before_rendering callback. This exists so defining the rendering callbacks are optional for Node’s subclasses.



92
93
94
95
# File 'lib/inversion/template/node.rb', line 92

def before_rendering( state=nil )
	# Nothing to do
	return nil
end

#is_container?Boolean Also known as: container?

Returns ‘true` if the node introduces a new parsing/rendering scope.

Returns:

  • (Boolean)


56
57
58
# File 'lib/inversion/template/node.rb', line 56

def is_container?
	return false
end

#locationObject

Return the location of the tag in the template, if it was parsed from one (i.e., if it was created with a StringScanner)



64
65
66
67
68
69
# File 'lib/inversion/template/node.rb', line 64

def location
	return "line %s, column %s" % [
		self.linenum || '??',
		self.colnum  || '??',
	]
end

#render(render_state) ⇒ Object

Render the node using the given ‘render_state`. By default, rendering a node returns `nil`.



44
45
46
# File 'lib/inversion/template/node.rb', line 44

def render( render_state )
	return nil
end