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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/statikaj/cli.rb', line 35
def build
source = Pathname.new "./src"
destination = Pathname.new "./public"
config = {}
config[:url] = options[:url].split("/").join("/")
articles_files = Dir[source.join('articles/*.md')].sort_by {|entry| File.basename(entry) }.reverse
articles = articles_files.map{|f| Article.new(f, config) }
categories = {}
articles.each do |article|
categories[article.category] ||= []
categories[article.category] << article
article_file = destination.join("#{article.slug}").to_s
render = Render.new(source, article: article)
content = render.article do |page|
page.title = article.title
page.description = article.summary
end
create_file article_file, content, force: options[:force]
end
render = Render.new(source, page: 'index', articles: articles.reverse)
content = render.page {}
create_file destination.join("index.html"), content, force: true
render = Render.new(source, page: 'index', articles: articles.reverse, type: :atom)
atom_content = render.page do |page|
page.url = config[:url]
end
create_file destination.join("feed.atom"), atom_content, force: true
unless options[:"no-category"]
empty_directory destination.join("category")
categories.each do |key, _articles|
key = "No Category" if key.nil?
slug = key.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
render = Render.new(source, page: 'category', url: slug, articles: _articles.reverse)
content = render.page{|page| page.category = key }
create_file destination.join("category/#{slug}"), content, force: true
end
end
end
|