Class: Webgen::SourceHandler::Metainfo
- Inherits:
-
Object
- Object
- Webgen::SourceHandler::Metainfo
- Includes:
- Base, WebsiteAccess
- Defined in:
- lib/webgen/sourcehandler/metainfo.rb
Overview
Handles meta information files which provide meta information for other files.
Constant Summary collapse
- CKEY =
[:metainfo, :nodes]
Instance Method Summary collapse
-
#create_node(path) ⇒ Object
Create a meta info node from
path
. -
#initialize ⇒ Metainfo
constructor
Upon creation the object registers itself as listener for some node hooks.
-
#nodes ⇒ Object
:nodoc:.
-
#nodes=(val) ⇒ Object
:nodoc:.
Methods included from WebsiteAccess
Methods included from Base
#content, #node_exists?, #output_path, #page_from_path, #parent_node
Methods included from Base::OutputPathHelpers
Methods included from Loggable
Constructor Details
#initialize ⇒ Metainfo
Upon creation the object registers itself as listener for some node hooks.
17 18 19 20 21 22 23 |
# File 'lib/webgen/sourcehandler/metainfo.rb', line 17 def initialize website.blackboard.add_listener(:node_meta_info_changed?, method(:node_meta_info_changed?)) website.blackboard.add_listener(:before_node_created, method(:before_node_created)) website.blackboard.add_listener(:before_node_deleted, method(:before_node_deleted)) website.blackboard.add_listener(:after_node_created, method(:after_node_created)) self.nodes ||= [] end |
Instance Method Details
#create_node(path) ⇒ Object
Create a meta info node from path
.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/webgen/sourcehandler/metainfo.rb', line 26 def create_node(path) page = page_from_path(path) super(path) do |node| [[:mi_paths, 'paths'], [:mi_alcn, 'alcn']].each do |mi_key, block_name| node.node_info[mi_key] = {} if page.blocks.has_key?(block_name) && (data = YAML::load(page.blocks[block_name].content)) data.each do |key, value| key = Webgen::Path.make_absolute(path.parent_path, key) node.node_info[mi_key][key] = value end end end mark_all_matched_dirty(node, :no_old_data) website.cache.permanent[[:sh_metainfo_node_mi, node.alcn]] = { :mi_paths => node.node_info[:mi_paths], :mi_alcn => node.node_info[:mi_alcn] } self.nodes << node unless self.nodes.include?(node) self.nodes = self.nodes.sort_by {|n| n.alcn} end end |
#nodes ⇒ Object
:nodoc:
51 52 53 |
# File 'lib/webgen/sourcehandler/metainfo.rb', line 51 def nodes #:nodoc: website.cache.permanent[CKEY] end |
#nodes=(val) ⇒ Object
:nodoc:
55 56 57 |
# File 'lib/webgen/sourcehandler/metainfo.rb', line 55 def nodes=(val) #:nodoc: website.cache.permanent[CKEY] = val end |