Class: Dimples::Site

Inherits:
Object
  • Object
show all
Defined in:
lib/dimples/site.rb

Overview

A class representing a single generated website.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config: {}) ⇒ Site

Returns a new instance of Site.



17
18
19
# File 'lib/dimples/site.rb', line 17

def initialize(config: {})
  @config = Config.new(config)
end

Instance Attribute Details

#configObject

Returns the value of attribute config.



11
12
13
# File 'lib/dimples/site.rb', line 11

def config
  @config
end

Class Method Details

.generate(config: {}) ⇒ Object



13
14
15
# File 'lib/dimples/site.rb', line 13

def self.generate(config: {})
  new(config: config).generate
end

Instance Method Details

#categoriesObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/dimples/site.rb', line 51

def categories
  @categories ||= {}.tap do |categories|
    posts.each do |post|
      post.categories.each do |category|
        categories[category] ||= []
        categories[category].append(post)
      end
    end
  end
end

#generateObject



21
22
23
24
25
26
27
28
29
# File 'lib/dimples/site.rb', line 21

def generate
  prepare_output_directory

  generate_posts
  generate_categories
  generate_pages

  copy_assets
end

#pagesObject



39
40
41
42
43
# File 'lib/dimples/site.rb', line 39

def pages
  @pages ||= source_files(path: :pages, extension: 'erb').map do |path|
    Dimples::Template.new(path: path)
  end
end

#postsObject



31
32
33
34
35
36
37
# File 'lib/dimples/site.rb', line 31

def posts
  @posts ||= source_files(path: :posts, extension: 'markdown').map do |path|
    Dimples::Post.new(path: path)
  end
    .sort_by!(&:date)
    .reverse!
end

#templatesObject



45
46
47
48
49
# File 'lib/dimples/site.rb', line 45

def templates
  @templates ||= source_files(path: :templates, extension: 'erb').to_h do |path|
    [File.basename(path, '.erb').to_sym, Dimples::Template.new(path: path)]
  end
end