class Jekyll::Tags::PostUrl

Public Class Methods

new(tag_name, post, tokens) click to toggle source
Calls superclass method
# File lib/jekyll/tags/post_url.rb, line 45
      def initialize(tag_name, post, tokens)
        super
        @orig_post = post.strip
        begin
          @post = PostComparer.new(@orig_post)
        rescue
          raise ArgumentError.new <<-eos
Could not parse name of post "#{@orig_post}" in tag 'post_url'.

Make sure the post exists and the name is correct.
eos
        end
      end

Public Instance Methods

render(context) click to toggle source
# File lib/jekyll/tags/post_url.rb, line 59
      def render(context)
        site = context.registers[:site]

        site.posts.each do |p|
          if @post == p
            return p.url
          end
        end

        # New matching method did not match, fall back to old method
        # with deprecation warning if this matches

        site.posts.each do |p|
          if @post.deprecated_equality p
            Jekyll::Deprecator.deprecation_message "A call to '{{ post_url #{name} }}' did not match " +
              "a post using the new matching method of checking name " +
              "(path-date-slug) equality. Please make sure that you " +
              "change this tag to match the post's name exactly."
            return p.url
          end
        end

        raise ArgumentError.new <<-eos
Could not find post "#{@orig_post}" in tag 'post_url'.

Make sure the post exists and the name is correct.
eos
      end