Class: Webgen::SourceHandler::Memory
- Inherits:
-
Object
- Object
- Webgen::SourceHandler::Memory
- Includes:
- Base, WebsiteAccess
- Defined in:
- lib/webgen/sourcehandler/memory.rb
Overview
This source handler should be used for handling nodes that are created during the write phase.
Instance Method Summary collapse
-
#content(node) ⇒ Object
Return the content of the memory
node. -
#create_node(path, source_alcn, data = nil) ⇒ Object
Create a node for the
path. -
#initialize ⇒ Memory
constructor
:nodoc:.
Methods included from Base
#node_exists?, #output_path, #page_from_path, #parent_node
Methods included from Base::OutputPathHelpers
Methods included from Loggable
Methods included from WebsiteAccess
Constructor Details
#initialize ⇒ Memory
:nodoc:
12 13 14 15 16 |
# File 'lib/webgen/sourcehandler/memory.rb', line 12 def initialize #:nodoc: website.blackboard.add_listener(:node_flagged) do |node, *flags| node.tree[node.node_info[:memory_source_alcn]].flag(:dirty) if node.node_info[:memory_source_alcn] end end |
Instance Method Details
#content(node) ⇒ Object
Return the content of the memory node. If the memory node was not created in this webgen run, it will be flagged for reinitialization (and therefore recreation).
31 32 33 34 35 36 37 38 |
# File 'lib/webgen/sourcehandler/memory.rb', line 31 def content(node) if @data && @data[node.alcn] @data[node.alcn].call else node.flag(:reinit) nil end end |
#create_node(path, source_alcn, data = nil) ⇒ Object
Create a node for the path. The source_alcn specifies the node that creates this memory node when written. You have two options for providing the content for this node: either you set data to a string (or a Webgen::Path::SourceIO object) or you provide a block which takes the created node as argument and returns a string (or a Webgen::Path::SourceIO object).
22 23 24 25 26 27 |
# File 'lib/webgen/sourcehandler/memory.rb', line 22 def create_node(path, source_alcn, data = nil) super(path) do |node| node.node_info[:memory_source_alcn] = source_alcn (@data ||= {})[node.alcn] = lambda { data || yield(node) } end end |