class RhetButler::Stasis::TransformQueue
Attributes
loader[RW]
mapping[RW]
writer[RW]
Public Class Methods
lookup(type)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 23 def lookup(type) type.sub!(/;.*/, '') type.chomp! transformers.fetch(type) do transformers.fetch(nil) end end
new()
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 32 def initialize @list = [] @hash = {} end
register(type, klass)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 19 def register(type, klass) transformers[type] = klass end
transformers()
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 15 def transformers @transformers ||= {} end
Public Instance Methods
add(document, source)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 38 def add(document, source) store_to = mapping.storage_for(source) link_target = mapping.target_link_for(source) add_mapping(document, source, link_target, store_to) return link_target end
add_mapping(document, source_uri, target_uri, target_path)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 45 def add_mapping(document, source_uri, target_uri, target_path) @hash[source_uri] = target_uri @list << TranformationOrder.new(document, source_uri, target_uri, target_path) end
canonicalize_uri(string)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 67 def canonicalize_uri(string) uri = Addressable::URI.parse(string).normalize uri.fragment = nil uri end
go()
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 85 def go until @list.empty? order = @list.pop doc = load_document(order) transformer = transform_class(doc.type).new transformer.queue = self transformer.document = doc transformer.target_path = order.storage_target transformer.process end end
load_document(order)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 73 def load_document(order) loader.load(canonicalize_uri(order.source_link)) rescue LoadFailed require 'pp' puts "Problem loading #{order.pretty_inspect}" raise end
target_for(document, link)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 54 def target_for(document, link) link = Addressable::URI.parse(link) case link.scheme when 'data' link else link = canonicalize_uri(mapping.absolute_uri(document.source_uri).join(link)) @hash.fetch(link) do add(document, link) end end end
transform_class(type)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 50 def transform_class(type) self.class.lookup(type) end
write_document(target_path, document_body)
click to toggle source
# File lib/rhet-butler/stasis/transform-queue.rb, line 81 def write_document(target_path, document_body) writer.write(target_path, document_body) end