Class: Jekyll::CollectionPages::TagPath

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll/collection_pages/tag_path.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template, field_value, slugify_value: true) ⇒ TagPath

Returns a new instance of TagPath.



8
9
10
11
12
13
# File 'lib/jekyll/collection_pages/tag_path.rb', line 8

def initialize(template, field_value, slugify_value: true)
  @template = template
  @tag = slugify_value ? Utils.slugify(field_value.to_s) : field_value.to_s
  @segments = template.split('/').reject(&:empty?)
  @explicit_file = file_segment?(@segments.last) && @segments.last.include?(':field')
end

Instance Attribute Details

#tagObject (readonly)

Returns the value of attribute tag.



6
7
8
# File 'lib/jekyll/collection_pages/tag_path.rb', line 6

def tag
  @tag
end

Instance Method Details

#dir_for(page_number) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/jekyll/collection_pages/tag_path.rb', line 15

def dir_for(page_number)
  segments = @segments
  segments = apply_field_value(segments)
  segments = page_number == 1 ? remove_paginated_segments(segments) : apply_page_number(segments, page_number)
  segments = drop_file_segment(segments)

  File.join(*segments)
end

#filename_for(page_number) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/jekyll/collection_pages/tag_path.rb', line 24

def filename_for(page_number)
  segments = @segments.last(1)
  segments = apply_field_value(segments)

  if page_number == 1
    return segments.join if @explicit_file

    return INDEXFILE
  end

  segments = apply_page_number(segments, page_number)
  segments.join
end

#url_for(page_number) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/jekyll/collection_pages/tag_path.rb', line 38

def url_for(page_number)
  return nil if page_number.nil?

  dir = dir_for(page_number)
  filename = filename_for(page_number)
  return formatted_index_path(dir) if filename == INDEXFILE

  dir.empty? ? "/#{filename}" : "/#{dir}/#{filename}"
end