module Jekyll::FlattrFilters

Public Instance Methods

flattr_atom(site, page = nil) click to toggle source

Returns a ATOM payment link.

{{ site | flattr_atom:post }}
# File lib/jekyll/flattr_filters.rb, line 46
def flattr_atom(site, page = nil)
  return if site['flattr_uid'].nil?
  link =  '<link rel="payment" href="https://flattr.com/submit/auto?'
  link << %Q{#{flattr_feed_options(site, page)}" type="text/html" />}
end
flattr_button(site, page = nil) click to toggle source

Returns a flattr button

{{ site | flattr_button:page }}
# File lib/jekyll/flattr_filters.rb, line 20
def flattr_button(site, page = nil)
  return if site['flattr_uid'].nil?

  keys = %w[url title description uid popout button category language tags]
  options = flattr_options(site, page, keys)

  button =  '<a class="FlattrButton" style="display:none;" '
  button << %Q{title="#{options.delete('title')}" href="#{options.delete('url')}" }
  button << options.map { |k, v|
    %Q{data-flattr-#{k}="#{v}"} unless k == 'description'
  }.join(' ')
  button << ">\n\n#{options['description'].gsub(/<\/?[^>]*>/, "")}\n</a>"
end
flattr_feed_options(site, page) click to toggle source
# File lib/jekyll/flattr_filters.rb, line 97
def flattr_feed_options(site, page)
  keys = %w[url uid]
  options = flattr_options(site, page, keys).map { |k, v|
    "#{k == 'uid' ? 'user_id' : k}=#{ERB::Util.url_encode(v)}"
  }.join('&amp;')
end
flattr_loader_options(site) click to toggle source

Generates the query string part for the flattr load.js from the configurations in _config.yml

{{ site | flattr_loader_options }}
# File lib/jekyll/flattr_filters.rb, line 9
def flattr_loader_options(site)
  return if site['flattr_uid'].nil?
  keys = %w[mode https popout uid button language category]
  options = flattr_options(site, nil, keys).delete_if { |_, v| v.to_s.empty? }

  options.map { |k, v| "#{k}=#{ERB::Util.url_encode(v)}" }.join('&')
end
flattr_options(site, page, keys) click to toggle source
# File lib/jekyll/flattr_filters.rb, line 69
def flattr_options(site, page, keys)
  page = {} if page.nil?
  site = flattrize(site)
  page = flattrize(page)
  options = {}

  keys.each { |k|
    case k
    when 'https'
      options[k] = 1
    when 'url'
      options[k] = "#{site['url']}#{page['url']}"
    when 'description'
      options[k] = page['content'] || site['description'] || site['title']
    when 'category'
      options[k] = page['category'] || site['category'] || 'audio'
    when 'language'
      options[k] = page['language'] || site['language'] || 'en_GB'
    when 'tags'
      options[k] = page['tags'].join(', ') if page['tags']
    else
      options[k] = page[k] || site[k]
    end
   }

   options
end
flattr_rss(site, page = nil) click to toggle source

Returns a RSS payment link.

{{ site | flattr_rss:post }}
# File lib/jekyll/flattr_filters.rb, line 37
def flattr_rss(site, page = nil)
  return if site['flattr_uid'].nil?
  link =  '<atom:link rel="payment" href="https://flattr.com/submit/auto?'
  link << %Q{#{flattr_feed_options(site, page)}" type="text/html" />}
end
flattrize(hsh) click to toggle source

Removes all leading “flattr_” from the keys of the given hash.

flattrize({ 'octopod' => 'awesome', 'flattr_uid' => 'pattex' })
=> { "octopod" => "awesome", "uid" => "pattex" }
# File lib/jekyll/flattr_filters.rb, line 56
def flattrize(hsh)
  config = {}
  hsh.to_hash.each { |k, v|
    if new_key = k.to_s.match(/\Aflattr_(.*)\z/)
      config[new_key[1]] = v
    else
      config[k] = v
    end
  }

  config
end