Class: Webgen::ItemTracker::MissingNode

Inherits:
Object
  • Object
show all
Defined in:
lib/webgen/item_tracker/missing_node.rb

Overview

This class is used to track unresolved absolute node paths.

The item for this tracker is the unresolved absolute node path and, optionally, a language.

For example:

website.ext.item_tracker.add(some_node, :missing_node, '/dir/missing.html')
website.ext.item_tracker.add(some_node, :missing_node, '/dir/missing.html', 'de')

Instance Method Summary collapse

Constructor Details

#initialize(website) ⇒ MissingNode

:nodoc:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/webgen/item_tracker/missing_node.rb', line 20

def initialize(website) #:nodoc:
  @website = website
  @at_least_one_node_created = true
  @stop_reporting = false
  @nodes_to_ignore = Set.new

  @website.blackboard.add_listener(:reused_existing_node, 'item_tracker.missing_node') do |node, path|
    @nodes_to_ignore << node
  end
  @website.blackboard.add_listener(:after_node_created, 'item_tracker.missing_node') do |node|
    @at_least_one_node_created = true unless @nodes_to_ignore.include?(node)
  end
  @website.blackboard.add_listener(:after_all_nodes_written, 'item_tracker.missing_node') do
    if @at_least_one_node_created
      @at_least_one_node_created = false
    else
      @stop_reporting = true
    end
    @nodes_to_ignore = Set.new
  end
  @website.blackboard.add_listener(:website_generated, 'item_tracker.missing_node') do
    @at_least_one_node_created = true
    @stop_reporting = false
    @nodes_to_ignore = Set.new
  end
end

Instance Method Details

#item_changed?(iid, old_data) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


55
56
57
58
59
# File 'lib/webgen/item_tracker/missing_node.rb', line 55

def item_changed?(iid, old_data) #:nodoc:
  return false if @stop_reporting
  missing = item_data(*iid)
  missing || missing != old_data
end

#item_data(path, lang) ⇒ Object

:nodoc:



51
52
53
# File 'lib/webgen/item_tracker/missing_node.rb', line 51

def item_data(path, lang) #:nodoc:
  @website.tree.resolve_node(path, lang).nil?
end

#item_description(iid, data) ⇒ Object

:nodoc:



65
66
67
68
# File 'lib/webgen/item_tracker/missing_node.rb', line 65

def item_description(iid, data) #:nodoc:
  path, lang = iid
  "Missing acn, alcn or dest path <#{path}>" << (lang.nil? ? '' : " in language '#{lang}'")
end

#item_id(path, lang = nil) ⇒ Object

:nodoc:



47
48
49
# File 'lib/webgen/item_tracker/missing_node.rb', line 47

def item_id(path, lang = nil) #:nodoc:
  [path, lang]
end

#referenced_nodes(iid, missing) ⇒ Object

:nodoc:



61
62
63
# File 'lib/webgen/item_tracker/missing_node.rb', line 61

def referenced_nodes(iid, missing) #:nodoc:
  [iid.first]
end