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