aardi 0.9.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/aardi/abstract_page_support.rb +2 -2
- data/lib/aardi/archive.rb +1 -1
- data/lib/aardi/atom_feed.rb +10 -8
- data/lib/aardi/config.rb +7 -2
- data/lib/aardi/content_hashes.rb +3 -3
- data/lib/aardi/custom_renderer.rb +2 -2
- data/lib/aardi/day.rb +3 -3
- data/lib/aardi/file_target.rb +1 -1
- data/lib/aardi/folder.rb +4 -4
- data/lib/aardi/home.rb +4 -4
- data/lib/aardi/json_feed.rb +6 -6
- data/lib/aardi/month.rb +3 -3
- data/lib/aardi/orphanage.rb +3 -3
- data/lib/aardi/page.rb +1 -1
- data/lib/aardi/path_servlet.rb +2 -2
- data/lib/aardi/post.rb +7 -6
- data/lib/aardi/site.rb +5 -6
- data/lib/aardi/sitemap.rb +4 -4
- data/lib/aardi/tasks/fixtimes.rake +2 -2
- data/lib/aardi/tasks/homepage.rake +1 -1
- data/lib/aardi/tasks/init.rake +28 -23
- data/lib/aardi/tasks/load_config.rake +1 -1
- data/lib/aardi/tasks/new.rake +1 -1
- data/lib/aardi/tasks/now.rake +1 -1
- data/lib/aardi/tasks/recent.rake +1 -1
- data/lib/aardi/tasks/render.rake +1 -1
- data/lib/aardi/tasks/server.rake +5 -5
- data/lib/aardi/tasks.rb +2 -2
- data/lib/aardi/template.rb +4 -4
- data/lib/aardi/timekeeper.rb +1 -1
- data/lib/aardi/version.rb +1 -1
- data/lib/aardi.rb +36 -36
- metadata +7 -143
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d7be17f66c6135658a1a7e9bcd7cf85e0ea7a1e0b73894377bc97466ca305327
|
|
4
|
+
data.tar.gz: 4a2a44e5426dbf7be491b02e5ebf4fa15feeb1213229d0de6170f5e6efe329fc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3abf73d04d38a2ec22d0e9667b91d45b7f55c06a5835f629d82bf531738f8756af7ded38cfd917d212caefc0527081b3f4846ffe5cefba8f044c6f7b7797d58b
|
|
7
|
+
data.tar.gz: e3e33868803f8adcfae3c59439f207b8664badbdad53489fc06bf0419598e581201ffbaaa36d6d05f5c27b3fef0c9eb51b31aada42ed6f0f9e6923977e27e0b6
|
|
@@ -5,7 +5,7 @@ module Aardi
|
|
|
5
5
|
attr_reader :metadata, :mtime
|
|
6
6
|
|
|
7
7
|
def parse_source(path)
|
|
8
|
-
File.open(path, encoding:
|
|
8
|
+
File.open(path, encoding: 'utf-8') do |file|
|
|
9
9
|
parts = file.read.rpartition("\n----\n")
|
|
10
10
|
@metadata = YAML.safe_load(parts.first, permitted_classes: [Time]) || {}
|
|
11
11
|
@src_content = parts.last
|
|
@@ -14,7 +14,7 @@ module Aardi
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def title
|
|
17
|
-
metadata[
|
|
17
|
+
metadata['Title'] || @src_content.split("\n").first.sub(/^#+ /, '')
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
data/lib/aardi/archive.rb
CHANGED
data/lib/aardi/atom_feed.rb
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
module Aardi
|
|
4
4
|
class ATOMFeed < AbstractFeed
|
|
5
5
|
def content
|
|
6
|
-
atom_feed = Nokogiri::XML::Builder.new(encoding:
|
|
7
|
-
feed(
|
|
6
|
+
atom_feed = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do
|
|
7
|
+
feed('xmlns' => 'http://www.w3.org/2005/Atom') do |feed|
|
|
8
8
|
feed_details(feed)
|
|
9
9
|
end
|
|
10
10
|
end
|
|
@@ -13,6 +13,7 @@ module Aardi
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
# :reek:TooManyStatements
|
|
16
|
+
# rubocop:disable Metrics/MethodLength
|
|
16
17
|
def feed_details(feed)
|
|
17
18
|
aardi_config = Aardi.config
|
|
18
19
|
|
|
@@ -20,8 +21,8 @@ module Aardi
|
|
|
20
21
|
name(aardi_config[:site_author])
|
|
21
22
|
end
|
|
22
23
|
|
|
23
|
-
subnodes = {id: feed_url, link: {href: feed_url, rel:
|
|
24
|
-
|
|
24
|
+
subnodes = { id: feed_url, link: { href: feed_url, rel: 'self' },
|
|
25
|
+
title: aardi_config[:site_title], updated: updated.iso8601 }
|
|
25
26
|
|
|
26
27
|
subnodes.each do |node, value|
|
|
27
28
|
feed.public_send node, value
|
|
@@ -31,11 +32,12 @@ module Aardi
|
|
|
31
32
|
post_details(post, feed)
|
|
32
33
|
end
|
|
33
34
|
end
|
|
35
|
+
# rubocop:enable Metrics/MethodLength
|
|
34
36
|
|
|
35
37
|
private
|
|
36
38
|
|
|
37
39
|
def feed_file
|
|
38
|
-
|
|
40
|
+
'index.xml'
|
|
39
41
|
end
|
|
40
42
|
|
|
41
43
|
# :reek:FeatureEnvy
|
|
@@ -45,10 +47,10 @@ module Aardi
|
|
|
45
47
|
post_url = post.url
|
|
46
48
|
|
|
47
49
|
# For safety, must use content_ and not content:
|
|
48
|
-
content_(post.feed_snippet).type =
|
|
50
|
+
content_(post.feed_snippet).type = 'html'
|
|
49
51
|
|
|
50
|
-
subnodes = {id: post_url, link: {href: post_url}, title: post.title,
|
|
51
|
-
|
|
52
|
+
subnodes = { id: post_url, link: { href: post_url }, title: post.title,
|
|
53
|
+
published: post.creation.iso8601, updated: post.updated.iso8601 }
|
|
52
54
|
subnodes.each do |node, value|
|
|
53
55
|
feed.public_send node, value
|
|
54
56
|
end
|
data/lib/aardi/config.rb
CHANGED
|
@@ -8,9 +8,14 @@ module Aardi
|
|
|
8
8
|
|
|
9
9
|
def [](key) = @data[key]
|
|
10
10
|
|
|
11
|
-
# :reek:TooManyStatements
|
|
12
11
|
def load(path)
|
|
13
|
-
|
|
12
|
+
config_yaml = File.read path
|
|
13
|
+
prepare config_yaml
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# :reek:TooManyStatements
|
|
17
|
+
def prepare(config_yaml)
|
|
18
|
+
config_hash = YAML.safe_load config_yaml
|
|
14
19
|
config_hash.transform_keys!(&:to_sym)
|
|
15
20
|
config_hash[:markup_options]&.transform_keys!(&:to_sym)
|
|
16
21
|
@data.merge!(config_hash)
|
data/lib/aardi/content_hashes.rb
CHANGED
|
@@ -25,13 +25,13 @@ module Aardi
|
|
|
25
25
|
private
|
|
26
26
|
|
|
27
27
|
def new_hashes
|
|
28
|
-
@new_hashes ||= @hashes.sort.map
|
|
28
|
+
@new_hashes ||= @hashes.sort.map { |path, hash| "#{path}: #{hash}\n" }.join
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def read_hashes
|
|
32
|
-
@original_hashes = File.exist?(@path) ? File.read(@path) :
|
|
32
|
+
@original_hashes = File.exist?(@path) ? File.read(@path) : ''
|
|
33
33
|
@hashes = @original_hashes.split("\n").to_h do |line|
|
|
34
|
-
path, hash = line.split(
|
|
34
|
+
path, hash = line.split(':', 2)
|
|
35
35
|
[path.strip, hash.to_i]
|
|
36
36
|
end
|
|
37
37
|
end
|
|
@@ -7,7 +7,7 @@ module Aardi
|
|
|
7
7
|
HEADER_SQUEEZE = /&#.*?;|"|[^a-z0-9\-_]/
|
|
8
8
|
|
|
9
9
|
def header(text, header_level)
|
|
10
|
-
squeezed_text = text.squeeze(
|
|
10
|
+
squeezed_text = text.squeeze(' ')
|
|
11
11
|
id = header_id(text)
|
|
12
12
|
"<h#{header_level} id=\"#{id}\">#{squeezed_text}</h#{header_level}>"
|
|
13
13
|
end
|
|
@@ -33,7 +33,7 @@ module Aardi
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def header_stub_id(text)
|
|
36
|
-
text.downcase.strip.tr(
|
|
36
|
+
text.downcase.strip.tr(' ', '-').gsub(HEADER_SQUEEZE, '').squeeze('-')
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def ids
|
data/lib/aardi/day.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Aardi
|
|
|
18
18
|
def content
|
|
19
19
|
@content ||= begin
|
|
20
20
|
sorted_posts = @posts.sort_by(&:creation)
|
|
21
|
-
posts_content = sorted_posts.reverse
|
|
21
|
+
posts_content = sorted_posts.reverse.map(&:content)
|
|
22
22
|
"# #{title}\n#{posts_content.join}"
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -29,7 +29,7 @@ module Aardi
|
|
|
29
29
|
"./#{@archive_path}/#{@year}/#{@month}/#{self}/index.html"
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def title = date.strftime(
|
|
32
|
+
def title = date.strftime('%A, %-e %B %Y')
|
|
33
33
|
|
|
34
34
|
private
|
|
35
35
|
|
|
@@ -39,6 +39,6 @@ module Aardi
|
|
|
39
39
|
|
|
40
40
|
def date = Date.new(@year.key, @month.key, @key)
|
|
41
41
|
|
|
42
|
-
def to_s = @key.to_s.rjust(2,
|
|
42
|
+
def to_s = @key.to_s.rjust(2, '0')
|
|
43
43
|
end
|
|
44
44
|
end
|
data/lib/aardi/file_target.rb
CHANGED
data/lib/aardi/folder.rb
CHANGED
|
@@ -4,10 +4,10 @@ module Aardi
|
|
|
4
4
|
class Folder
|
|
5
5
|
def initialize(path)
|
|
6
6
|
@path = path
|
|
7
|
-
@normalized_path = "#{path.sub(/^\./,
|
|
7
|
+
@normalized_path = "#{path.sub(/^\./, '')}/"
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def mtime = children.max_by(&:mtime)
|
|
10
|
+
def mtime = children.max_by(&:mtime)&.mtime
|
|
11
11
|
|
|
12
12
|
def render
|
|
13
13
|
children.each(&:render)
|
|
@@ -30,12 +30,12 @@ module Aardi
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def sources
|
|
33
|
-
@sources ||= paths.filter_map { |path| Page.new(path) if path.end_with?(
|
|
33
|
+
@sources ||= paths.filter_map { |path| Page.new(path) if path.end_with?('.md') }
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def update_sitemap
|
|
37
37
|
# '.' is the top level so skip it since the homepage will register itself
|
|
38
|
-
Aardi.ledger[:sitemap].update_mtime(@normalized_path, mtime) unless @path ==
|
|
38
|
+
Aardi.ledger[:sitemap].update_mtime(@normalized_path, mtime) unless @path == '.'
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
data/lib/aardi/home.rb
CHANGED
|
@@ -12,11 +12,11 @@ module Aardi
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def render
|
|
15
|
-
Aardi.ledger[:sitemap].update_mtime(
|
|
15
|
+
Aardi.ledger[:sitemap].update_mtime('/', mtime)
|
|
16
16
|
write_target
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
def target_path =
|
|
19
|
+
def target_path = './index.html'
|
|
20
20
|
|
|
21
21
|
def title = Aardi.config[:blog_home_title]
|
|
22
22
|
|
|
@@ -35,11 +35,11 @@ module Aardi
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def days_hash
|
|
38
|
-
@days_hash ||= @posts.group_by { |post| post.creation.strftime(
|
|
38
|
+
@days_hash ||= @posts.group_by { |post| post.creation.strftime('%Y-%m-%d') }
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def post_day_content(post_day)
|
|
42
|
-
date_header = post_day.first.creation.strftime(
|
|
42
|
+
date_header = post_day.first.creation.strftime('%A, %e %B %Y')
|
|
43
43
|
posts_content = post_day.map(&:content).join
|
|
44
44
|
"## #{date_header}\n#{posts_content}"
|
|
45
45
|
end
|
data/lib/aardi/json_feed.rb
CHANGED
|
@@ -4,8 +4,8 @@ module Aardi
|
|
|
4
4
|
class JSONFeed < AbstractFeed
|
|
5
5
|
def content
|
|
6
6
|
aardi_config = Aardi.config
|
|
7
|
-
feed_content = {version:
|
|
8
|
-
|
|
7
|
+
feed_content = { version: 'https://jsonfeed.org/version/1.1', title: aardi_config[:site_title],
|
|
8
|
+
home_page_url: aardi_config[:site_url], feed_url: }
|
|
9
9
|
feed_content[:items] = @posts.map { |post| post_details(post) }
|
|
10
10
|
|
|
11
11
|
JSON.pretty_generate(feed_content)
|
|
@@ -14,19 +14,19 @@ module Aardi
|
|
|
14
14
|
private
|
|
15
15
|
|
|
16
16
|
def feed_file
|
|
17
|
-
|
|
17
|
+
'index.json'
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def post_details(post)
|
|
21
21
|
post_updated = post.updated
|
|
22
22
|
post_creation = post.creation
|
|
23
23
|
|
|
24
|
-
details = {id: post.name, url: post.url, title: post.title,
|
|
25
|
-
|
|
24
|
+
details = { id: post.name, url: post.url, title: post.title,
|
|
25
|
+
date_published: post_creation.iso8601, content_html: post.feed_snippet }
|
|
26
26
|
|
|
27
27
|
details[:date_modified] = post_updated.iso8601 unless post_creation == post_updated
|
|
28
28
|
|
|
29
|
-
details
|
|
29
|
+
details
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|
data/lib/aardi/month.rb
CHANGED
|
@@ -14,7 +14,7 @@ module Aardi
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def archive_cell(month_fmt)
|
|
17
|
-
cell = count.zero? ?
|
|
17
|
+
cell = count.zero? ? '' : format(month_fmt, count:, archive_path: @archive_path, year: @year, month: self)
|
|
18
18
|
"#{cell} |"
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -31,9 +31,9 @@ module Aardi
|
|
|
31
31
|
"./#{@archive_path}/#{@year}/#{self}/index.html"
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
def title = Date.new(@year.key, @key).strftime(
|
|
34
|
+
def title = Date.new(@year.key, @key).strftime('%B %Y')
|
|
35
35
|
|
|
36
|
-
def to_s = @key.to_s.rjust(2,
|
|
36
|
+
def to_s = @key.to_s.rjust(2, '0')
|
|
37
37
|
|
|
38
38
|
private
|
|
39
39
|
|
data/lib/aardi/orphanage.rb
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
module Aardi
|
|
4
4
|
class Orphanage
|
|
5
|
-
def
|
|
6
|
-
Aardi.ledger[:html_files].each { |path|
|
|
5
|
+
def report
|
|
6
|
+
Aardi.ledger[:html_files].each { |path| warn("Orphan: #{path}") unless ignored?(path) }
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
11
|
def ignored?(path)
|
|
12
|
-
Aardi.config[:ignore_orphans].any? { |prefix| path.start_with?(prefix) }
|
|
12
|
+
Array(Aardi.config[:ignore_orphans]).any? { |prefix| path.start_with?(prefix) }
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
end
|
data/lib/aardi/page.rb
CHANGED
data/lib/aardi/path_servlet.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'webrick'
|
|
4
4
|
|
|
5
5
|
module Aardi
|
|
6
6
|
class PathServlet < WEBrick::HTTPServlet::AbstractServlet
|
|
7
7
|
def service(req, res)
|
|
8
8
|
# use index if folder
|
|
9
|
-
path = "./#{req.path}".sub(%r{/$},
|
|
9
|
+
path = "./#{req.path}".sub(%r{/$}, '/index.html')
|
|
10
10
|
|
|
11
11
|
file = path if File.exist?(path)
|
|
12
12
|
file ||= "#{path}.html" if File.exist?("#{path}.html")
|
data/lib/aardi/post.rb
CHANGED
|
@@ -7,27 +7,28 @@ module Aardi
|
|
|
7
7
|
def initialize(path)
|
|
8
8
|
@path = path
|
|
9
9
|
parse_source path
|
|
10
|
+
raise "#{path}: missing Creation metadata" unless metadata['Creation']
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def content
|
|
13
14
|
"#{@src_content}\n<div><span class=\"bookmark\">[<a href=\"#{url}\">bookmark</a>]</span></div>\n"
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
def creation = metadata[
|
|
17
|
+
def creation = metadata['Creation']
|
|
17
18
|
|
|
18
19
|
def day = creation.day
|
|
19
20
|
|
|
20
21
|
def feed_snippet
|
|
21
|
-
clean_content = @src_content.sub(/\A(### .*\n)?\n+/,
|
|
22
|
+
clean_content = @src_content.sub(/\A(### .*\n)?\n+/, '')
|
|
22
23
|
render_markup(clean_content).strip
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
def month = creation.month
|
|
26
27
|
|
|
27
|
-
def name = File.basename(@path,
|
|
28
|
+
def name = File.basename(@path, '.*')
|
|
28
29
|
|
|
29
30
|
def report_field_summary
|
|
30
|
-
creation_header = creation.strftime(
|
|
31
|
+
creation_header = creation.strftime('%e %b %Y')
|
|
31
32
|
puts "#{creation_header} | #{@path} | #{title}"
|
|
32
33
|
end
|
|
33
34
|
|
|
@@ -35,7 +36,7 @@ module Aardi
|
|
|
35
36
|
"./#{short_target}.html"
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
def updated = metadata[
|
|
39
|
+
def updated = metadata['Updated'] || creation
|
|
39
40
|
|
|
40
41
|
def url = "#{Aardi.config[:site_url]}/#{short_target}"
|
|
41
42
|
|
|
@@ -50,7 +51,7 @@ module Aardi
|
|
|
50
51
|
end
|
|
51
52
|
|
|
52
53
|
def short_target
|
|
53
|
-
"#{Aardi.config[:blog_archive_path]}/#{creation.strftime(
|
|
54
|
+
"#{Aardi.config[:blog_archive_path]}/#{creation.strftime('%Y/%m/%d')}/#{name}"
|
|
54
55
|
end
|
|
55
56
|
end
|
|
56
57
|
end
|
data/lib/aardi/site.rb
CHANGED
|
@@ -21,7 +21,7 @@ module Aardi
|
|
|
21
21
|
private
|
|
22
22
|
|
|
23
23
|
def children
|
|
24
|
-
[Folder.new(
|
|
24
|
+
[Folder.new('.'), blog, sitemap]
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def content_hashes
|
|
@@ -33,7 +33,7 @@ module Aardi
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def html_files
|
|
36
|
-
@html_files ||= Dir.glob(
|
|
36
|
+
@html_files ||= Dir.glob('./**/*.html').to_set
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def initialize_ledger
|
|
@@ -41,7 +41,7 @@ module Aardi
|
|
|
41
41
|
# set up content hashes so they're in place while building out the rest
|
|
42
42
|
ledger[:content_hashes] = content_hashes
|
|
43
43
|
|
|
44
|
-
{custom_renderer:, markdown_renderer:, html_files:, sitemap:, template:}.each do |message, value|
|
|
44
|
+
{ custom_renderer:, markdown_renderer:, html_files:, sitemap:, template: }.each do |message, value|
|
|
45
45
|
ledger[message] = value
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -59,10 +59,9 @@ module Aardi
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def warn_about_orphans
|
|
62
|
-
Orphanage.new.
|
|
62
|
+
Orphanage.new.report
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
def write_target
|
|
66
|
-
end
|
|
65
|
+
def write_target; end
|
|
67
66
|
end
|
|
68
67
|
end
|
data/lib/aardi/sitemap.rb
CHANGED
|
@@ -4,8 +4,8 @@ module Aardi
|
|
|
4
4
|
class Sitemap
|
|
5
5
|
# :reek:NestedIterators
|
|
6
6
|
def content
|
|
7
|
-
sitemap = Nokogiri::XML::Builder.new(encoding:
|
|
8
|
-
urlset(xmlns:
|
|
7
|
+
sitemap = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do
|
|
8
|
+
urlset(xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9') do |urlset|
|
|
9
9
|
urls.each do |path, details|
|
|
10
10
|
url_details(path, details, urlset)
|
|
11
11
|
end
|
|
@@ -20,7 +20,7 @@ module Aardi
|
|
|
20
20
|
FileTarget.new(source, target_path).write
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
def target_path =
|
|
23
|
+
def target_path = './sitemap.xml'
|
|
24
24
|
|
|
25
25
|
def update_mtime(path, path_mtime)
|
|
26
26
|
urls[path][:lastmod] = path_mtime.iso8601
|
|
@@ -50,7 +50,7 @@ module Aardi
|
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def url_values(path, changefreq)
|
|
53
|
-
{loc: "#{Aardi.config[:site_url]}#{path}", changefreq:}
|
|
53
|
+
{ loc: "#{Aardi.config[:site_url]}#{path}", changefreq: }
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
data/lib/aardi/tasks/init.rake
CHANGED
|
@@ -1,34 +1,39 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
INIT_FILES_DIR = File.expand_path(
|
|
3
|
+
INIT_FILES_DIR = File.expand_path('../init_files', __dir__)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
dest = File.basename(src)
|
|
5
|
+
unless defined?(InitTask)
|
|
6
|
+
module InitTask
|
|
7
|
+
def self.install_file(src)
|
|
8
|
+
dest = File.basename(src)
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
FileUtils.cp(src, dest)
|
|
14
|
-
puts "Created #{dest}"
|
|
15
|
-
next
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
loop do
|
|
19
|
-
print "#{dest} already exists. Overwrite? [y]es / [n]o: "
|
|
20
|
-
answer = $stdin.gets&.strip&.downcase
|
|
21
|
-
case answer
|
|
22
|
-
when "y"
|
|
10
|
+
if !File.exist?(dest) || prompt_overwrite?(dest)
|
|
23
11
|
FileUtils.cp(src, dest)
|
|
24
|
-
puts "
|
|
25
|
-
|
|
26
|
-
when "n"
|
|
12
|
+
puts "Wrote #{dest}"
|
|
13
|
+
else
|
|
27
14
|
puts "Skipped #{dest}"
|
|
28
|
-
break
|
|
29
15
|
end
|
|
30
16
|
end
|
|
17
|
+
|
|
18
|
+
def self.prompt_overwrite?(filename)
|
|
19
|
+
loop do
|
|
20
|
+
print "#{filename} already exists. Overwrite? [y]es / [n]o: "
|
|
21
|
+
case $stdin.gets&.strip&.downcase
|
|
22
|
+
when 'y' then return true
|
|
23
|
+
when 'n' then return false
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
desc('Scaffold a new Aardi site')
|
|
31
|
+
task :init do
|
|
32
|
+
Dir.glob("#{INIT_FILES_DIR}/**/*", File::FNM_DOTMATCH).each do |src|
|
|
33
|
+
next if File.directory?(src)
|
|
34
|
+
|
|
35
|
+
InitTask.install_file(src)
|
|
31
36
|
end
|
|
32
37
|
|
|
33
|
-
puts
|
|
38
|
+
puts 'Site scaffolding installed.'
|
|
34
39
|
end
|
data/lib/aardi/tasks/new.rake
CHANGED
data/lib/aardi/tasks/now.rake
CHANGED
data/lib/aardi/tasks/recent.rake
CHANGED
data/lib/aardi/tasks/render.rake
CHANGED
data/lib/aardi/tasks/server.rake
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
desc(
|
|
3
|
+
desc('Run a server')
|
|
4
4
|
task :server do
|
|
5
|
-
require
|
|
5
|
+
require 'aardi/path_servlet'
|
|
6
6
|
|
|
7
7
|
port = 8000
|
|
8
8
|
url = "http://localhost:#{port}/"
|
|
9
|
-
root =
|
|
9
|
+
root = '.'
|
|
10
10
|
puts(url)
|
|
11
11
|
|
|
12
12
|
server = WEBrick::HTTPServer.new(Port: port, DocumentRoot: root)
|
|
13
|
-
server.mount(
|
|
13
|
+
server.mount('/', Aardi::PathServlet)
|
|
14
14
|
|
|
15
|
-
trap(
|
|
15
|
+
trap('INT') { server.shutdown }
|
|
16
16
|
system("(open '#{url}')&")
|
|
17
17
|
server.start
|
|
18
18
|
end
|
data/lib/aardi/tasks.rb
CHANGED
data/lib/aardi/template.rb
CHANGED
|
@@ -24,18 +24,18 @@ module Aardi
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
26
|
def add_description(dom, src)
|
|
27
|
-
description = src.metadata[
|
|
27
|
+
description = src.metadata['Description']
|
|
28
28
|
return unless description
|
|
29
29
|
|
|
30
|
-
dom.at_css('meta[name="description"]')[
|
|
30
|
+
dom.at_css('meta[name="description"]')['content'] = description
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def add_main(dom, src)
|
|
34
|
-
dom.at_css(
|
|
34
|
+
dom.at_css('main').add_child(Aardi.ledger[:markdown_renderer].render(src.content))
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def add_title(dom, src)
|
|
38
|
-
dom.at_css(
|
|
38
|
+
dom.at_css('title').content += " #{src.title}"
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
data/lib/aardi/timekeeper.rb
CHANGED
data/lib/aardi/version.rb
CHANGED
data/lib/aardi.rb
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
3
|
+
require 'date'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require 'json'
|
|
6
|
+
require 'yaml'
|
|
7
|
+
require 'zlib'
|
|
8
8
|
|
|
9
|
-
require
|
|
10
|
-
require
|
|
11
|
-
require
|
|
9
|
+
require 'nokogiri'
|
|
10
|
+
require 'rake'
|
|
11
|
+
require 'redcarpet'
|
|
12
12
|
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative
|
|
15
|
-
require_relative
|
|
16
|
-
require_relative
|
|
17
|
-
require_relative
|
|
18
|
-
require_relative
|
|
19
|
-
require_relative
|
|
20
|
-
require_relative
|
|
21
|
-
require_relative
|
|
22
|
-
require_relative
|
|
23
|
-
require_relative
|
|
24
|
-
require_relative
|
|
25
|
-
require_relative
|
|
26
|
-
require_relative
|
|
27
|
-
require_relative
|
|
28
|
-
require_relative
|
|
29
|
-
require_relative
|
|
30
|
-
require_relative
|
|
31
|
-
require_relative
|
|
32
|
-
require_relative
|
|
33
|
-
require_relative
|
|
34
|
-
require_relative
|
|
35
|
-
require_relative
|
|
36
|
-
require_relative
|
|
37
|
-
require_relative
|
|
38
|
-
require_relative
|
|
39
|
-
require_relative
|
|
13
|
+
require_relative 'aardi/version'
|
|
14
|
+
require_relative 'aardi/config'
|
|
15
|
+
require_relative 'aardi/ledger'
|
|
16
|
+
require_relative 'aardi/content'
|
|
17
|
+
require_relative 'aardi/content_hashes'
|
|
18
|
+
require_relative 'aardi/custom_renderer'
|
|
19
|
+
require_relative 'aardi/abstract_blog'
|
|
20
|
+
require_relative 'aardi/abstract_page_support'
|
|
21
|
+
require_relative 'aardi/abstract_feed'
|
|
22
|
+
require_relative 'aardi/file_target'
|
|
23
|
+
require_relative 'aardi/page_target'
|
|
24
|
+
require_relative 'aardi/page_content'
|
|
25
|
+
require_relative 'aardi/template'
|
|
26
|
+
require_relative 'aardi/page'
|
|
27
|
+
require_relative 'aardi/post'
|
|
28
|
+
require_relative 'aardi/day'
|
|
29
|
+
require_relative 'aardi/month'
|
|
30
|
+
require_relative 'aardi/year'
|
|
31
|
+
require_relative 'aardi/archive'
|
|
32
|
+
require_relative 'aardi/home'
|
|
33
|
+
require_relative 'aardi/atom_feed'
|
|
34
|
+
require_relative 'aardi/json_feed'
|
|
35
|
+
require_relative 'aardi/blog'
|
|
36
|
+
require_relative 'aardi/folder'
|
|
37
|
+
require_relative 'aardi/sitemap'
|
|
38
|
+
require_relative 'aardi/orphanage'
|
|
39
|
+
require_relative 'aardi/site'
|
|
40
40
|
|
|
41
|
-
RubyVM::YJIT.enable if RUBY_ENGINE ==
|
|
41
|
+
RubyVM::YJIT.enable if RUBY_ENGINE == 'ruby'
|
|
42
42
|
|
|
43
43
|
module Aardi
|
|
44
44
|
class << self
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aardi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Faisal N Jawdat
|
|
@@ -79,146 +79,6 @@ dependencies:
|
|
|
79
79
|
- - ">="
|
|
80
80
|
- !ruby/object:Gem::Version
|
|
81
81
|
version: '0'
|
|
82
|
-
- !ruby/object:Gem::Dependency
|
|
83
|
-
name: flog
|
|
84
|
-
requirement: !ruby/object:Gem::Requirement
|
|
85
|
-
requirements:
|
|
86
|
-
- - ">="
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '0'
|
|
89
|
-
type: :development
|
|
90
|
-
prerelease: false
|
|
91
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
-
requirements:
|
|
93
|
-
- - ">="
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: '0'
|
|
96
|
-
- !ruby/object:Gem::Dependency
|
|
97
|
-
name: reek
|
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - ">="
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '0'
|
|
103
|
-
type: :development
|
|
104
|
-
prerelease: false
|
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - ">="
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
-
- !ruby/object:Gem::Dependency
|
|
111
|
-
name: rubocop-minitest
|
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
117
|
-
type: :development
|
|
118
|
-
prerelease: false
|
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - ">="
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
124
|
-
- !ruby/object:Gem::Dependency
|
|
125
|
-
name: rubocop-ordered_methods
|
|
126
|
-
requirement: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '0'
|
|
131
|
-
type: :development
|
|
132
|
-
prerelease: false
|
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - ">="
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '0'
|
|
138
|
-
- !ruby/object:Gem::Dependency
|
|
139
|
-
name: rubocop-performance
|
|
140
|
-
requirement: !ruby/object:Gem::Requirement
|
|
141
|
-
requirements:
|
|
142
|
-
- - ">="
|
|
143
|
-
- !ruby/object:Gem::Version
|
|
144
|
-
version: '0'
|
|
145
|
-
type: :development
|
|
146
|
-
prerelease: false
|
|
147
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
-
requirements:
|
|
149
|
-
- - ">="
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
version: '0'
|
|
152
|
-
- !ruby/object:Gem::Dependency
|
|
153
|
-
name: rubocop-rake
|
|
154
|
-
requirement: !ruby/object:Gem::Requirement
|
|
155
|
-
requirements:
|
|
156
|
-
- - ">="
|
|
157
|
-
- !ruby/object:Gem::Version
|
|
158
|
-
version: '0'
|
|
159
|
-
type: :development
|
|
160
|
-
prerelease: false
|
|
161
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
162
|
-
requirements:
|
|
163
|
-
- - ">="
|
|
164
|
-
- !ruby/object:Gem::Version
|
|
165
|
-
version: '0'
|
|
166
|
-
- !ruby/object:Gem::Dependency
|
|
167
|
-
name: rubocop-rubyfmt
|
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
|
169
|
-
requirements:
|
|
170
|
-
- - ">="
|
|
171
|
-
- !ruby/object:Gem::Version
|
|
172
|
-
version: '0'
|
|
173
|
-
type: :development
|
|
174
|
-
prerelease: false
|
|
175
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
-
requirements:
|
|
177
|
-
- - ">="
|
|
178
|
-
- !ruby/object:Gem::Version
|
|
179
|
-
version: '0'
|
|
180
|
-
- !ruby/object:Gem::Dependency
|
|
181
|
-
name: rubocop
|
|
182
|
-
requirement: !ruby/object:Gem::Requirement
|
|
183
|
-
requirements:
|
|
184
|
-
- - ">="
|
|
185
|
-
- !ruby/object:Gem::Version
|
|
186
|
-
version: '0'
|
|
187
|
-
type: :development
|
|
188
|
-
prerelease: false
|
|
189
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
-
requirements:
|
|
191
|
-
- - ">="
|
|
192
|
-
- !ruby/object:Gem::Version
|
|
193
|
-
version: '0'
|
|
194
|
-
- !ruby/object:Gem::Dependency
|
|
195
|
-
name: minitest
|
|
196
|
-
requirement: !ruby/object:Gem::Requirement
|
|
197
|
-
requirements:
|
|
198
|
-
- - ">="
|
|
199
|
-
- !ruby/object:Gem::Version
|
|
200
|
-
version: '0'
|
|
201
|
-
type: :development
|
|
202
|
-
prerelease: false
|
|
203
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
204
|
-
requirements:
|
|
205
|
-
- - ">="
|
|
206
|
-
- !ruby/object:Gem::Version
|
|
207
|
-
version: '0'
|
|
208
|
-
- !ruby/object:Gem::Dependency
|
|
209
|
-
name: standard
|
|
210
|
-
requirement: !ruby/object:Gem::Requirement
|
|
211
|
-
requirements:
|
|
212
|
-
- - ">="
|
|
213
|
-
- !ruby/object:Gem::Version
|
|
214
|
-
version: 1.35.1
|
|
215
|
-
type: :development
|
|
216
|
-
prerelease: false
|
|
217
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
-
requirements:
|
|
219
|
-
- - ">="
|
|
220
|
-
- !ruby/object:Gem::Version
|
|
221
|
-
version: 1.35.1
|
|
222
82
|
email: aardi@faisal.com
|
|
223
83
|
executables: []
|
|
224
84
|
extensions: []
|
|
@@ -265,10 +125,14 @@ files:
|
|
|
265
125
|
- lib/aardi/timekeeper.rb
|
|
266
126
|
- lib/aardi/version.rb
|
|
267
127
|
- lib/aardi/year.rb
|
|
128
|
+
homepage: https://github.com/faisal/aardi
|
|
268
129
|
licenses:
|
|
269
130
|
- MIT
|
|
270
131
|
metadata:
|
|
271
|
-
source_code_uri: https://
|
|
132
|
+
source_code_uri: https://github.com/faisal/aardi
|
|
133
|
+
bug_tracker_uri: https://github.com/faisal/aardi/issues
|
|
134
|
+
changelog_uri: https://github.com/faisal/aardi/blob/main/CHANGELOG.md
|
|
135
|
+
documentation_uri: https://github.com/faisal/aardi/blob/main/README.md
|
|
272
136
|
rubygems_mfa_required: 'true'
|
|
273
137
|
rdoc_options: []
|
|
274
138
|
require_paths:
|
|
@@ -284,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
284
148
|
- !ruby/object:Gem::Version
|
|
285
149
|
version: '0'
|
|
286
150
|
requirements: []
|
|
287
|
-
rubygems_version: 4.0.
|
|
151
|
+
rubygems_version: 4.0.10
|
|
288
152
|
specification_version: 4
|
|
289
153
|
summary: A static site generator.
|
|
290
154
|
test_files: []
|