Class FileHandlers::TemplateHandler
In: lib/webgen/plugins/filehandlers/template.rb
Parent: DefaultHandler
Webgen::Plugin DefaultHandler FileHandler CopyHandler ThumbnailWriter SipttraHandler VirtualFileHandler GalleryHandler TemplateHandler PageHandler DirectoryHandler Listener lib/webgen/plugins/filehandlers/filehandler.rb lib/webgen/plugins/filehandlers/copy.rb lib/webgen/plugins/filehandlers/directory.rb lib/webgen/plugins/filehandlers/page.rb lib/webgen/plugins/filehandlers/sipttra.rb lib/webgen/plugins/filehandlers/gallery.rb lib/webgen/plugins/filehandlers/template.rb FileHandlers dot/m_28_0.png

Handles template files. Template files are just page files with another extension.

Methods

Public Instance methods

[Source]

    # File lib/webgen/plugins/filehandlers/template.rb, line 41
41:     def create_node( src_name, parent, meta_info )
42:       begin
43:         data = WebPageData.new( File.read( src_name ), @plugin_manager['ContentConverter/Default'].registered_handlers,
44:                                 meta_info )
45:       rescue WebPageDataInvalid => e
46:         log(:error) { "Invalid template file <#{src_name}>: #{e.message}" }
47:         return nil
48:       end
49: 
50:       if node = parent.find {|n| n =~ src_name }
51:         log(:warn) { "Can't create node <#{node.full_path}> as it already exists! Using existing!" }
52:       else
53:         basename = File.basename( src_name )
54:         node = FileHandlers::PageHandler::PageNode.new( parent, basename, data  )
55:         node['title'] = 'template'
56:         node.node_info[:src] = src_name
57:         node.node_info[:processor] = self
58:         node.node_info[:pagename] = basename
59:         node.node_info[:local_pagename] = basename
60:       end
61: 
62:       node
63:     end

Returns the template chain for node.

[Source]

    # File lib/webgen/plugins/filehandlers/template.rb, line 70
70:     def templates_for_node( node )
71:       if node['template'].kind_of?( String )
72:         template_node = node.resolve_node( node['template'] )
73:         if template_node.nil?
74:           log(:warn) { "Specified template '#{node['template']}' for <#{node.node_info[:src]}> not found, using default template!" }
75:           template_node = get_default_template( node.parent, param( 'defaultTemplate' ) )
76:         end
77:         node['template'] = template_node
78:       elsif node['template'].kind_of?( Node )
79:         template_node = node['template']
80:       elsif node.meta_info.has_key?( 'template' ) && node['template'].nil?
81:         template_node = nil
82:       else
83:         log(:info) { "Using default template for <#{node.node_info[:src]}>" }
84:         template_node = get_default_template( node.parent, param( 'defaultTemplate' ) )
85:         node['template'] = template_node
86:       end
87: 
88:       if template_node.nil?
89:         []
90:       else
91:         (template_node == node ? [] : templates_for_node( template_node ) + [template_node])
92:       end
93:     end

[Source]

    # File lib/webgen/plugins/filehandlers/template.rb, line 65
65:     def write_node( node )
66:       # do not write anything
67:     end

Private Instance methods

Returns the default template of the directory node dir. If the template node is not found, the parent directories are searched.

[Source]

     # File lib/webgen/plugins/filehandlers/template.rb, line 101
101:     def get_default_template( dir, default_template )
102:       template_node = dir.find {|child| child =~ default_template }
103:       if template_node.nil?
104:         if dir.parent.nil?
105:           log(:warn) { "No default template '#{default_template}' in root directory found!" }
106:         else
107:           template_node = get_default_template( dir.parent, default_template )
108:         end
109:       end
110:       template_node
111:     end

[Validate]