Namespace for all content processors.
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::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 can be:
the class name, not as constant but as a string - then this content processor is assumed to work with textual data -, or
an array with the class name like before and the type, which needs to be :binary or :text.
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.message}" end end Webgen::WebsiteAccess.website.config['contentprocessor.map']['replacer'] = 'SampleProcessor' # Or one could equally write # Webgen::WebsiteAccess.website.config['contentprocessor.map']['replacer'] = ['SampleProcessor', :text]
Return the content processor object identified by name.
# File lib/webgen/contentprocessor.rb, line 90 90: def self.for_name(name) 91: klass, cp_type = WebsiteAccess.website.config['contentprocessor.map'][name] 92: klass.nil? ? nil : WebsiteAccess.website.cache.instance(klass) 93: end
Return whether the content processor identified by name is processing binary data.
# File lib/webgen/contentprocessor.rb, line 96 96: def self.is_binary?(name) 97: WebsiteAccess.website.config['contentprocessor.map'][name].kind_of?(Array) && 98: WebsiteAccess.website.config['contentprocessor.map'][name].last == :binary 99: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.