Class: Webgen::ItemTracker::NodeMetaInfo

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

Overview

This class is used to track changes to a node’s meta information.

Depending on what should be tracked, one needs to provide the following item:

node, nil

Tracks changes to the whole meta information of the node, i.e. if any meta information value changes, a change is detected.

node, key

Tracks changes to a specific meta information key of the node.

Here are some examples:

website.ext.item_tracker.add(some_node, :node_meta_info, my_node) # first case
website.ext.item_tracker.add(some_node, :node_meta_info, my_node, 'title') # second case

Constant Summary collapse

CONTENT_MODIFICATION_KEY =
'modified_at'

Instance Method Summary collapse

Constructor Details

#initialize(website) ⇒ NodeMetaInfo

:nodoc:



28
29
30
# File 'lib/webgen/item_tracker/node_meta_info.rb', line 28

def initialize(website) #:nodoc:
  @website = website
end

Instance Method Details

#item_changed?(iid, old_data) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


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

def item_changed?(iid, old_data) #:nodoc:
  alcn, key = *iid
  @website.tree[alcn].nil? || item_data(alcn, key) != old_data
end

#item_data(alcn, key = nil) ⇒ Object

:nodoc:



36
37
38
39
40
41
42
43
44
45
# File 'lib/webgen/item_tracker/node_meta_info.rb', line 36

def item_data(alcn, key = nil) #:nodoc:
  mi = @website.tree[alcn].meta_info
  if key.nil? && mi['modified_at_in_dest_path']
    mi
  elsif key.nil?
    (mi = mi.dup; mi.delete(CONTENT_MODIFICATION_KEY); mi)
  else
    mi[key].dup
  end
end

#item_description(iid, data) ⇒ Object

:nodoc:



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

def item_description(iid, data) #:nodoc:
  alcn, key = *iid
  (key.nil? ? "Any meta info from <#{alcn}>" : "Meta info key '#{key}' from <#{alcn}>")
end

#item_id(node, key = nil) ⇒ Object

:nodoc:



32
33
34
# File 'lib/webgen/item_tracker/node_meta_info.rb', line 32

def item_id(node, key = nil) #:nodoc:
  [node.alcn, key]
end

#referenced_nodes(iid, mi) ⇒ Object

:nodoc:



52
53
54
# File 'lib/webgen/item_tracker/node_meta_info.rb', line 52

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