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(parent, path, source_alcn, data = nil) ⇒ Object
Create a node under
parent
for thepath
. -
#initialize ⇒ Memory
constructor
:nodoc:.
Methods included from Base
#node_exists?, #output_path, #page_from_path
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).
32 33 34 35 36 37 38 39 |
# File 'lib/webgen/sourcehandler/memory.rb', line 32 def content(node) if @data && @data[node.absolute_lcn] @data[node.absolute_lcn].call else node.flag(:reinit) nil end end |
#create_node(parent, path, source_alcn, data = nil) ⇒ Object
Create a node under parent
for the path
. The source_alcn
specified 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 return a string (or a Webgen::Path::SourceIO object).
23 24 25 26 27 28 |
# File 'lib/webgen/sourcehandler/memory.rb', line 23 def create_node(parent, path, source_alcn, data = nil) super(parent, path) do |node| node.node_info[:memory_source_alcn] = source_alcn (@data ||= {})[node.absolute_lcn] = lambda { data || yield(node) } end end |