Sha256: 314d61550297b26106911457519f0ed6f3570e29a478afee2630ab0469d3ee3e

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

# coding: utf-8

module Retter
  module Page::ViewHelper
    include Site

    def entry_path(*args)
      case args.first
      when Date, Time
        entry_path_by_date(*args)
      when Entry
        entry_path_by_entry(args.first)
      else
        raise TypeError, "wrong argument type #{args.first.class} (expected Date, Time or Retter::Entry)"
      end
    end

    def entry_url(*args)
      URI.parse(config.url) + entry_path(*args)
    end

    def article_url(*args)
      URI.parse(config.url) + article_path(*args)
    end

    def article_path(*args)
      case args.first
      when Date, Time
        article_path_by_date_and_id(*args)
      when Entry::Article
        article_path_by_article(args.first)
      else
        raise TypeError, "wrong argument type #{args.first.class} (expected Date, Time or Retter::Entry::Article)"
      end
    end

    def render_disqus_comment_form(disqus_shortname = config.disqus_shortname)
      Haml::Engine.new(<<-HAML).render
#disqus_thread
  :javascript
    var disqus_shortname = '#{disqus_shortname}';
    (function() {
      var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
      dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
      HAML
    end

    def article_path_by_date_and_id(date, id)
      date.strftime("/entries/%Y%m%d/#{id}.html")
    end

    def article_path_by_article(article)
      article_path(article.entry.date, article.id)
    end

    def entry_path_by_date(date, id = nil)
      date.strftime('/entries/%Y%m%d.html') + (id ? "##{id}" : '')
    end

    def entry_path_by_entry(entry)
      entry_path(entry.date)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
retter-0.2.5 lib/retter/page/view_helper.rb
retter-0.2.4 lib/retter/page/view_helper.rb
retter-0.2.3 lib/retter/page/view_helper.rb