Class Index [+]

Quicksearch

Webgen::ContentProcessor

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::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:

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.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]

Public Class Methods

for_name(name) click to toggle source

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
is_binary?(name) click to toggle source

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
list() click to toggle source

Return the list of all available content processors.

    # File lib/webgen/contentprocessor.rb, line 85
85:     def self.list
86:       WebsiteAccess.website.config['contentprocessor.map'].keys
87:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.