class Jekyll::Tags::PostComparer
Constants
- MATCHER
Attributes
date[R]
name[R]
path[R]
slug[R]
Public Class Methods
new(name)
click to toggle source
# File lib/jekyll/tags/post_url.rb, line 10 def initialize(name) @name = name all, @path, @date, @slug = *name.sub(%r!^/!, "").match(MATCHER) unless all raise Jekyll::Errors::InvalidPostNameError, "'#{name}' does not contain valid date and/or title." end basename_pattern = "#{date}-#{Regexp.escape(slug)}\\.[^.]+" @name_regex = %r!^_posts/#{path}#{basename_pattern}|^#{path}_posts/?#{basename_pattern}! end
Public Instance Methods
==(other)
click to toggle source
# File lib/jekyll/tags/post_url.rb, line 30 def ==(other) other.relative_path.match(@name_regex) end
deprecated_equality(other)
click to toggle source
# File lib/jekyll/tags/post_url.rb, line 34 def deprecated_equality(other) slug == post_slug(other) && post_date.year == other.date.year && post_date.month == other.date.month && post_date.day == other.date.day end
post_date()
click to toggle source
# File lib/jekyll/tags/post_url.rb, line 23 def post_date @post_date ||= Utils.parse_date( date, "'#{date}' does not contain valid date and/or title." ) end
Private Instance Methods
post_slug(other)
click to toggle source
Construct the directory-aware post slug for a Jekyll::Post
other - the Jekyll::Post
Returns the post slug with the subdirectory (relative to _posts)
# File lib/jekyll/tags/post_url.rb, line 48 def post_slug(other) path = other.basename.split("/")[0...-1].join("/") if path.nil? || path == "" other.data["slug"] else "#{path}/#{other.data["slug"]}" end end