Class: Jekyll::Converters::UrlsGenerator

Inherits:
Generator
  • Object
show all
Defined in:
lib/jekyll/generators/urls.rb

Instance Method Summary collapse

Instance Method Details

#deep_set(hash, value, *keys) ⇒ Object



7
8
9
10
11
# File 'lib/jekyll/generators/urls.rb', line 7

def deep_set(hash, value, *keys)
  keys[0...-1].inject(hash) do |acc, h|
    acc.public_send(:[], h)
  end.public_send(:[]=, keys.last, value)
end

#generate(site) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/jekyll/generators/urls.rb', line 4

def generate(site)
  lazy = lambda { |h,k| h[k] = Hash.new(&lazy) }

  def deep_set(hash, value, *keys)
    keys[0...-1].inject(hash) do |acc, h|
      acc.public_send(:[], h)
    end.public_send(:[]=, keys.last, value)
  end

  site.config['urls'] = Hash.new(&lazy)
  site.pages.each { |page|
    if page.data['id']
      keys = page.data['id'].split(".")
      deep_set(site.config['urls'], page.url, *keys)
    end
  }
end