Class: Webgen::Context
- Inherits:
-
Object
- Object
- Webgen::Context
- Includes:
- WebsiteAccess
- Defined in:
- lib/webgen/context.rb,
lib/webgen/context/tags.rb,
lib/webgen/context/nodes.rb,
lib/webgen/context/render.rb
Overview
This class represents the context object that is passed, for example, to the call
method of a content processor.
The needed context variables are stored in the options
hash. You can set any options you like, however, there are three noteworthy options:
:content
-
The content string that should be processed.
:processors
-
Normally an ContentProcessor::AccessHash object providing access to all available content processors.
:chain
-
The chain of nodes that is processed. There are some utiltity methods for getting special nodes of the chain (see #ref_node, #content_node and #dest_node).
Instance Attribute Summary collapse
-
#options ⇒ Object
Processing options.
Instance Method Summary collapse
-
#[](name) ⇒ Object
Return the value of the option
name
. -
#[]=(name, value) ⇒ Object
Set the option
name
to the given +value. -
#clone(options = {}) ⇒ Object
Create a copy of the current object.
-
#content ⇒ Object
Return the
:content
option. -
#content=(value) ⇒ Object
Set the
:content
option to the givenvalue
. -
#content_node ⇒ Object
(also: #node)
Return the node that is ultimately rendered.
-
#dest_node ⇒ Object
Return the node which represents the file into which everything gets rendered.
-
#initialize(options = {}) ⇒ Context
constructor
Create a new Context object.
-
#ref_node ⇒ Object
Return the reference node, ie.
-
#render_block(name_or_hash) ⇒ Object
Render the named block and return the result.
-
#tag(name, params = {}, body = '') ⇒ Object
Returns the result of evaluating the webgen tag
name
with the tag parametersparams
and thebody
in the current context.
Methods included from WebsiteAccess
Constructor Details
#initialize(options = {}) ⇒ Context
Create a new Context object. You can use the options
hash to set needed options.
The following options are set by default and can be overridden via the options
hash:
:content
-
Is set to an empty string.
:processors
-
Is set to a new AccessHash.
41 42 43 44 45 46 |
# File 'lib/webgen/context.rb', line 41 def initialize( = {}) @options = { :content => '', :processors => Webgen::ContentProcessor::AccessHash.new }.merge() end |
Instance Attribute Details
#options ⇒ Object
Processing options
30 31 32 |
# File 'lib/webgen/context.rb', line 30 def @options end |
Instance Method Details
#[](name) ⇒ Object
Return the value of the option name
.
55 56 57 |
# File 'lib/webgen/context.rb', line 55 def [](name) @options[name] end |
#[]=(name, value) ⇒ Object
Set the option name
to the given +value.
60 61 62 |
# File 'lib/webgen/context.rb', line 60 def []=(name, value) @options[name] = value end |
#clone(options = {}) ⇒ Object
Create a copy of the current object. You can use the options
parameter to override options of the current Context object in the newly created Context object.
50 51 52 |
# File 'lib/webgen/context.rb', line 50 def clone( = {}) self.class.new(@options.merge()) end |
#content ⇒ Object
Return the :content
option.
65 66 67 |
# File 'lib/webgen/context.rb', line 65 def content @options[:content] end |
#content=(value) ⇒ Object
Set the :content
option to the given value
.
70 71 72 |
# File 'lib/webgen/context.rb', line 70 def content=(value) @options[:content] = value end |
#content_node ⇒ Object Also known as: node
Return the node that is ultimately rendered.
This node should be used, for example, for retrieving meta information.
29 30 31 |
# File 'lib/webgen/context/nodes.rb', line 29 def content_node @options[:chain] && @options[:chain].last end |
#dest_node ⇒ Object
Return the node which represents the file into which everything gets rendered. This is normally the same node as #content_node
but can differ in special cases. For example, when rendering the content of node called my.page
into the output of the node this.page
, this.page
would be the dest_node
and my.page
would be the content_node
.
The dest_node
is not included in the chain but can be set via the option :dest_node
!
The returned node should be used as source node for calculating relative paths to other nodes.
14 15 16 |
# File 'lib/webgen/context/nodes.rb', line 14 def dest_node @options[:dest_node] || self.content_node end |
#ref_node ⇒ Object
Return the reference node, ie. the node which provided the original content for this context object.
The returned node should be used, for example, for resolving relative paths.
22 23 24 |
# File 'lib/webgen/context/nodes.rb', line 22 def ref_node @options[:chain] && @options[:chain].first end |
#render_block(name_or_hash) ⇒ Object
Render the named block and return the result.
call-seq:
context.render_block(block_name)<br />
context.render_block(:name => block_name, :option => value, ...)
This method uses the functionality of the content processor blocks
for doing the actual work, so you may also want to look at Webgen::ContentProcessor::Blocks#render_block. You can call this method in two ways:
#render_block(block_name)
-
Renders the block named
block_name
of the next node in the current node chain. This is the version that most want to use since it is equivalent to the use of<webgen:block name="block_name" />
. It is equivalent to#render_block(:name => block_name)
. #render_block(opts_hash)
-
This version allows the same level of control over the output as the blocks content processor. For a list of valid options have a look at the documentation of the Webgen::ContentProcessor::Blocks#render_block method!
25 26 27 28 |
# File 'lib/webgen/context/render.rb', line 25 def render_block(name_or_hash) name_or_hash = {:name => name_or_hash} if name_or_hash.kind_of?(String) website.cache.instance('Webgen::ContentProcessor::Blocks').render_block(self, name_or_hash) end |
#tag(name, params = {}, body = '') ⇒ Object
Returns the result of evaluating the webgen tag name
with the tag parameters params
and the body
in the current context.
Have a look at Webgen::Tag::Base for more information about webgen tags!
This method is useful when you want to have the functionality of webgen tags available but you don’t want to use the content processor for them. Or, for example, if the used markup language uses a similar markup as webgen tags do and therefore you can’t use the normal webgen tags content processor.
14 15 16 |
# File 'lib/webgen/context/tags.rb', line 14 def tag(name, params = {}, body = '') website.cache.instance('Webgen::ContentProcessor::Tags').process_tag(name, params, body, self) end |