class SignedForm::Digestor
Attributes
view_paths[RW]
Public Class Methods
new(template)
click to toggle source
# File lib/signed_form/digestor.rb, line 7 def initialize(template) @view_paths = Set.new @views = Set.new self << template end
Public Instance Methods
<<(template)
click to toggle source
# File lib/signed_form/digestor.rb, line 13 def <<(template) virtual_path = get_virtual_path(template) raise Errors::UnableToDigest, "Unable to get virtual path from template" unless virtual_path @views << virtual_path @view_paths += template.view_paths.map(&:to_s) @digest = nil rescue NoMethodError raise Errors::UnableToDigest, "Unable get view paths from template" end
marshal_dump()
click to toggle source
# File lib/signed_form/digestor.rb, line 24 def marshal_dump [@views.to_a, to_s] end
marshal_load(input)
click to toggle source
# File lib/signed_form/digestor.rb, line 28 def marshal_load(input) @views, @digest = input @view_paths = [] @digest.taint end
refresh()
click to toggle source
# File lib/signed_form/digestor.rb, line 39 def refresh @digest = nil end
to_s()
click to toggle source
# File lib/signed_form/digestor.rb, line 34 def to_s @digest ||= SignedForm.digest_store.fetch(@views.sort.join(':')) { hash_files(glob_files) } end
Also aliased as: digest
Private Instance Methods
get_virtual_path(template)
click to toggle source
# File lib/signed_form/digestor.rb, line 63 def get_virtual_path(template) template.respond_to?(:virtual_path) ? template.virtual_path : template.instance_variable_get(:@virtual_path) end
glob_files()
click to toggle source
# File lib/signed_form/digestor.rb, line 45 def glob_files globbed_files = [] view_paths.each do |path| @views.each { |view| globbed_files += Dir["#{path}/#{view}.*"] } end globbed_files end
hash_files(files)
click to toggle source
# File lib/signed_form/digestor.rb, line 53 def hash_files(files) raise Errors::UnableToDigest, "No files to digest" if files.empty? md5 = Digest::MD5.new files.sort.each do |entry| File.open(entry) { |f| md5 << f.read } end md5.to_s end