Module: Webgen::ContentProcessor
- Defined in:
- lib/webgen/contentprocessor.rb,
lib/webgen/contentprocessor/erb.rb,
lib/webgen/contentprocessor/haml.rb,
lib/webgen/contentprocessor/rdoc.rb,
lib/webgen/contentprocessor/sass.rb,
lib/webgen/contentprocessor/tags.rb,
lib/webgen/contentprocessor/blocks.rb,
lib/webgen/contentprocessor/erubis.rb,
lib/webgen/contentprocessor/maruku.rb,
lib/webgen/contentprocessor/builder.rb,
lib/webgen/contentprocessor/context.rb,
lib/webgen/contentprocessor/redcloth.rb,
lib/webgen/contentprocessor/fragments.rb,
lib/webgen/contentprocessor/rdiscount.rb
Overview
Namespace for all content processors.
Implementing a content processor
Content processors are used to process the content of files, normally of files in Webgen Page Format. A content processor only needs to respond to one method called call
and must not take any parameters in the initialize
method. This method is invoked with a Webgen::ContentProcessor::Context object that provides the whole context (especially the content and the node chain) and the method needs to return this object. During processing a content processor normally changes the content of the context but it does not need to.
A self-written content processor does not need to be in the Webgen::ContentProcessor namespace but all shipped ones do.
After writing the content processor class, one needs to add it to the contentprocessor.map
hash so that it is used by webgen. The key for the entry needs to be a short name without special characters or spaces and the value is the class name, not as constant but as a string.
Sample Content Processor
The following sample content processor checks for a meta information replace_key
and replaces strings of the form replace_key:path/to/node
with a link to the specified node if it is found.
Note how the content node, the reference node and the destination node are used sothat the correct meta information is used, the node is correctly resolved and the correct relative link is calculated respectively!
class SampleProcessor
def call(context)
if !context.content_node['replace_key'].to_s.empty?
context.content.gsub!(/#{context.content_node['replace_key']}:([\w\/.]+)/ ) do |match|
link_node = context.ref_node.resolve($1, context.content_node.lang)
if link_node
context.dest_node.link_to(link_node, :lang => context.content_node.lang)
else
match
end
end
end
context
rescue Exception => e
raise "Error while replacing special key: #{e.}"
end
end
WebsiteAccess.website.config['contentprocessor.map']['replacer'] = 'SampleProcessor'
Defined Under Namespace
Classes: AccessHash, Blocks, Builder, Context, Erb, Erubis, Fragments, Haml, Maruku, RDiscount, RDoc, RedCloth, Sass, Tags
Class Method Summary collapse
-
.for_name(name) ⇒ Object
Return the content processor object identified by
name
. -
.list ⇒ Object
Return the list of all available content processors.
Class Method Details
.for_name(name) ⇒ Object
Return the content processor object identified by name
.
78 79 80 81 |
# File 'lib/webgen/contentprocessor.rb', line 78 def self.for_name(name) klass = WebsiteAccess.website.config['contentprocessor.map'][name] klass.nil? ? nil : WebsiteAccess.website.cache.instance(klass) end |
.list ⇒ Object
Return the list of all available content processors.
73 74 75 |
# File 'lib/webgen/contentprocessor.rb', line 73 def self.list WebsiteAccess.website.config['contentprocessor.map'].keys end |