Class: Jekyll::GeneratorSingleSource::SingleSourcePage

Inherits:
Page
  • Object
show all
Defined in:
lib/jekyll/generator-single-source/single_source_page.rb

Instance Method Summary collapse

Constructor Details

#initialize(nav_item) ⇒ SingleSourcePage

rubocop:disable Lint/MissingSuper, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/jekyll/generator-single-source/single_source_page.rb', line 6

def initialize(nav_item) # rubocop:disable Lint/MissingSuper, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity
   # Configure variables that Jekyll depends on
   @site = nav_item.site

   # Set self.ext and self.basename by extracting information from the page filename
   process('index.md')

   # Override Jekyll::Page's @dir
   # This is the directory that we're going to write the output file to
   @dir = nav_item.dest.file_path

   content = File.read(nav_item.source.full_file_path)

   # Load content + frontmatter from the file
   if content =~ Jekyll::Document::YAML_FRONT_MATTER_REGEXP
     @content = Regexp.last_match.post_match
     @data = SafeYAML.load(Regexp.last_match(1))
   end

   # Set the "Edit on GitHub" link url
   @data['edit_link'] = nav_item.source.file_path

   # Make it clear that this content comes from a generated file
   @data['path'] = "GENERATED:nav=#{nav_item.nav}:src=#{nav_item.source.file_path}:#{@dir}"
   @data['is_dir_index'] = nav_item.source.dir?

   # Set the current release and concrete version
   @data['release'] = nav_item.release
   @data['version'] = nav_item.versions['default']
   @data['versions'] = nav_item.versions

   # Set the layout if it's not already provided
   @data['layout'] ||= 'docs-v2'


  # Apply any overrides
  current = to_version(@data['release'])
  @data['overrides']&.each do |key, entries|
    entries.each do |value, conditions|
      gte = conditions['gte'] ? to_version(conditions['gte']) : nil
      lte = conditions['lte'] ? to_version(conditions['lte']) : nil
      eq = conditions['eq'] ? to_version(conditions['eq']) : nil

      if gte && lte
        @data[key] = value if current >= gte && current <= lte
      elsif gte
        @data[key] = value if current >= gte
      elsif lte
        @data[key] = value if current <= lte
      elsif eq
        @data[key] = value if current == eq
      end
    end
  end
end

Instance Method Details

#to_version(input) ⇒ Object



62
63
64
# File 'lib/jekyll/generator-single-source/single_source_page.rb', line 62

def to_version(input)
 Gem::Version.new(input.gsub(/\.x$/, '.0'))
end