Module: RageRender::Pipettes

Included in:
ArchiveDrop, BlogDrop, ChapterDrop, ComicDrop, ErrorDrop, PaginatedBlogDrop, WebcomicDrop
Defined in:
lib/ragerender/jekyll/pipettes.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.clean_payload(payload) ⇒ Object



7
8
9
10
11
12
# File 'lib/ragerender/jekyll/pipettes.rb', line 7

def self.clean_payload payload
  Jekyll.logger.debug("Cleaning payload")
  sets = Jekyll::Drops::DocumentDrop.subclasses.map(&:invokable_methods)
  methods = sets.reduce(Set.new) {|s,acc| acc.merge(s)} - Set.new(Jekyll::Drops::DocumentDrop.invokable_methods)
  payload.send(:fallback_data).delete_if {|k| methods.include? k}
end

.extended(mod) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ragerender/jekyll/pipettes.rb', line 20

def self.extended mod
  mod.define_method(:escape) do |str|
    str.nil? ? nil : CGI.escapeHTML(str)
  end
  mod.send(:private, :escape)

  mod.define_method(:maybe_escape) do |str|
    Pathname.new(@obj.path).extname != '.html' ?  escape(str) : str
  end
  mod.send(:private, :maybe_escape)
end

Instance Method Details

#def_data_delegator(key, aliaz) ⇒ Object



14
15
16
17
18
# File 'lib/ragerender/jekyll/pipettes.rb', line 14

def def_data_delegator key, aliaz
  define_method(aliaz.to_sym) do
    @obj.data[key.to_s]
  end
end

#def_image_metadata(prefix) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ragerender/jekyll/pipettes.rb', line 32

def  prefix
  define_method(:"#{prefix}_relative_path") do
    Pathname.new('/').join(send(prefix.to_sym)).to_path
  end

  define_method(:"#{prefix}_url") do
    File.join (@obj.site.baseurl || ''), send(:"#{prefix}_relative_path")
  end

  define_method(:"#{prefix}_obj") do
    unless instance_variable_defined? :"@#{prefix}_obj"
      instance_variable_set(:"@#{prefix}_obj", @obj.site.static_files.detect {|f| f.relative_path == send(:"#{prefix}_relative_path") })
    end
    instance_variable_get(:"@#{prefix}_obj")
  end

  define_method(:"#{prefix}_path") do
    send(:"#{prefix}_obj").path
  end

  define_method(:"#{prefix}_width") do
    send(:"#{prefix}_obj").data['width'] ||= Dimensions.width(send(:"#{prefix}_path")) rescue nil
  end

  define_method(:"#{prefix}_height") do
    send(:"#{prefix}_obj").data['height'] ||= Dimensions.height(send(:"#{prefix}_path")) rescue nil
  end
end