| Class | FileHandlers::TemplateHandler |
| In: |
lib/webgen/plugins/filehandlers/template.rb
|
| Parent: | DefaultHandler |
Handles template files. Template files are just page files with another extension.
# 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.
# 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
# File lib/webgen/plugins/filehandlers/template.rb, line 65
65: def write_node( node )
66: # do not write anything
67: end
Returns the default template of the directory node dir. If the template node is not found, the parent directories are searched.
# 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