aardi 2.0.2 → 2.1.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_blog.rb +2 -0
- data/lib/aardi/abstract_feed.rb +0 -2
- data/lib/aardi/atom_feed.rb +3 -3
- data/lib/aardi/blog.rb +19 -9
- data/lib/aardi/feed_menu.rb +36 -0
- data/lib/aardi/home_footer_links.rb +2 -2
- data/lib/aardi/json_feed.rb +3 -3
- data/lib/aardi/metadata.rb +4 -1
- data/lib/aardi/post.rb +1 -0
- data/lib/aardi/site.rb +1 -1
- data/lib/aardi/tag_blog.rb +7 -1
- data/lib/aardi/tags.rb +2 -0
- data/lib/aardi/tasks/drafts.rake +6 -0
- data/lib/aardi/version.rb +1 -1
- data/lib/aardi.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c9340db9893eccb7d2baf3feec16d6f6a83b9cac636148e9d61bcdcb1985d35a
|
|
4
|
+
data.tar.gz: 60cbb069a0fe969cec7995bebea986ab2b746b41e540cf7c72a8fa2d427cf769
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ca27e334665f953031f784dd006fc91c9609d323ebd80f59d2336760450df87ffd5a5591fbf0bc06783e4df45db07d97b77c3d50540dca920208da713550ddf
|
|
7
|
+
data.tar.gz: ea187d4cc70feb39ae2b72aef0a3d66ccf641184c6eba393aa4fbfe236fb71824e27f528c58a0d18851f25ca233b1c959d48f62391b465742cf41ad89c358b59
|
data/lib/aardi/abstract_blog.rb
CHANGED
data/lib/aardi/abstract_feed.rb
CHANGED
data/lib/aardi/atom_feed.rb
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Aardi
|
|
4
4
|
class ATOMFeed < AbstractFeed
|
|
5
|
+
FEED_FILE = 'index.xml'
|
|
6
|
+
|
|
5
7
|
def content
|
|
6
8
|
atom_feed = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do
|
|
7
9
|
feed('xmlns' => 'http://www.w3.org/2005/Atom') do |feed|
|
|
@@ -34,9 +36,7 @@ module Aardi
|
|
|
34
36
|
|
|
35
37
|
private
|
|
36
38
|
|
|
37
|
-
def feed_file
|
|
38
|
-
'index.xml'
|
|
39
|
-
end
|
|
39
|
+
def feed_file = FEED_FILE
|
|
40
40
|
|
|
41
41
|
# :reek:FeatureEnvy
|
|
42
42
|
# :reek:TooManyStatements
|
data/lib/aardi/blog.rb
CHANGED
|
@@ -1,36 +1,46 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Aardi
|
|
4
|
+
# :reek:TooManyInstanceVariables
|
|
4
5
|
class Blog < AbstractBlog
|
|
5
6
|
def initialize
|
|
6
7
|
@posts = []
|
|
8
|
+
@draft_posts = []
|
|
7
9
|
@blog_path = nil
|
|
8
10
|
@archive_path = Config[:blog_archive_path]
|
|
9
11
|
@tags = Tags.new
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
def <<(post)
|
|
15
|
+
return @draft_posts << post if post.draft?
|
|
16
|
+
|
|
13
17
|
@posts << post
|
|
14
18
|
archive << post
|
|
15
19
|
@tags << post
|
|
16
20
|
end
|
|
17
21
|
|
|
22
|
+
def report_drafts
|
|
23
|
+
report_posts @draft_posts
|
|
24
|
+
end
|
|
25
|
+
|
|
18
26
|
def report_recent
|
|
19
|
-
recent_posts(:blog_recent_posts)
|
|
27
|
+
report_posts recent_posts(:blog_recent_posts)
|
|
20
28
|
end
|
|
21
29
|
|
|
30
|
+
def tag_blogs = @tags.tag_blogs
|
|
31
|
+
|
|
22
32
|
private
|
|
23
33
|
|
|
24
34
|
def archive
|
|
25
35
|
@archive ||= Archive.new(@archive_path, tag, @tags)
|
|
26
36
|
end
|
|
27
37
|
|
|
28
|
-
def
|
|
29
|
-
ATOMFeed
|
|
38
|
+
def children
|
|
39
|
+
[archive, home, feed(ATOMFeed), feed(JSONFeed), *@tags, *@draft_posts]
|
|
30
40
|
end
|
|
31
41
|
|
|
32
|
-
def
|
|
33
|
-
|
|
42
|
+
def feed(feed_klass)
|
|
43
|
+
feed_klass.new(feed_posts, @blog_path, tag)
|
|
34
44
|
end
|
|
35
45
|
|
|
36
46
|
def feed_posts
|
|
@@ -41,14 +51,14 @@ module Aardi
|
|
|
41
51
|
Home.new(recent_posts(:blog_home_posts), @archive_path, @blog_path, tag)
|
|
42
52
|
end
|
|
43
53
|
|
|
44
|
-
def json_feed
|
|
45
|
-
JSONFeed.new(feed_posts, @blog_path, tag)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
54
|
def recent_posts(conf_key)
|
|
49
55
|
@posts.max_by(Config[conf_key], &:creation)
|
|
50
56
|
end
|
|
51
57
|
|
|
58
|
+
def report_posts(posts)
|
|
59
|
+
posts.each(&:report_field_summary)
|
|
60
|
+
end
|
|
61
|
+
|
|
52
62
|
def tag = nil
|
|
53
63
|
|
|
54
64
|
def write_target = {}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Aardi
|
|
4
|
+
class FeedMenu
|
|
5
|
+
def initialize(blog)
|
|
6
|
+
@blog = blog
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def content
|
|
10
|
+
JSON.pretty_generate(menu_data)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def render
|
|
14
|
+
source = Content.new(content)
|
|
15
|
+
FileTarget.new(source, target_path).write
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def target_path = './.well-known/feed-menu.json'
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def items = [site_item, *tag_items]
|
|
23
|
+
|
|
24
|
+
def menu_data = { 'feed-menu' => site_title, 'items' => items }
|
|
25
|
+
|
|
26
|
+
def site_item
|
|
27
|
+
{ 'feed-title' => site_title,
|
|
28
|
+
'rss' => "/#{ATOMFeed::FEED_FILE}",
|
|
29
|
+
'json' => "/#{JSONFeed::FEED_FILE}" }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def site_title = Config[:site_title]
|
|
33
|
+
|
|
34
|
+
def tag_items = @blog.tag_blogs.map(&:feed_menu_item)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -15,7 +15,7 @@ module Aardi
|
|
|
15
15
|
def archive_url = "#{base_url}/#{Config[:blog_archive_path]}/"
|
|
16
16
|
def base_url = "#{Config[:site_url]}#{feed_base}"
|
|
17
17
|
def feed_base = @blog_path ? "/#{@blog_path}" : ''
|
|
18
|
-
def json_url = "#{base_url}
|
|
19
|
-
def rss_url = "#{base_url}
|
|
18
|
+
def json_url = "#{base_url}/#{JSONFeed::FEED_FILE}"
|
|
19
|
+
def rss_url = "#{base_url}/#{ATOMFeed::FEED_FILE}"
|
|
20
20
|
end
|
|
21
21
|
end
|
data/lib/aardi/json_feed.rb
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Aardi
|
|
4
4
|
class JSONFeed < AbstractFeed
|
|
5
|
+
FEED_FILE = 'index.json'
|
|
6
|
+
|
|
5
7
|
def content
|
|
6
8
|
feed_content = { version: 'https://jsonfeed.org/version/1.1', title:,
|
|
7
9
|
home_page_url: Config[:site_url], feed_url: }
|
|
@@ -12,9 +14,7 @@ module Aardi
|
|
|
12
14
|
|
|
13
15
|
private
|
|
14
16
|
|
|
15
|
-
def feed_file
|
|
16
|
-
'index.json'
|
|
17
|
-
end
|
|
17
|
+
def feed_file = FEED_FILE
|
|
18
18
|
|
|
19
19
|
def post_details(post)
|
|
20
20
|
post_updated = post.updated
|
data/lib/aardi/metadata.rb
CHANGED
|
@@ -4,17 +4,20 @@ module Aardi
|
|
|
4
4
|
class Metadata
|
|
5
5
|
KNOWN_KEYS = %w[Title Description Creation Updated Tags HomePriority TagPriority Draft].freeze
|
|
6
6
|
|
|
7
|
+
attr_reader :tags
|
|
8
|
+
|
|
7
9
|
def initialize(yaml_str = '', source = nil)
|
|
8
10
|
yaml = YAML.safe_load(yaml_str, permitted_classes: [Time])
|
|
9
11
|
@yaml = {}
|
|
10
12
|
@yaml = yaml if yaml.is_a? Hash
|
|
13
|
+
@tags = @yaml['Tags']&.split&.sort
|
|
11
14
|
confirm_keys(source)
|
|
12
15
|
end
|
|
13
16
|
|
|
14
17
|
def creation = @yaml['Creation']
|
|
15
18
|
def description = @yaml['Description']
|
|
19
|
+
def draft? = @yaml.key?('Draft')
|
|
16
20
|
def empty? = @yaml.empty?
|
|
17
|
-
def tags = @yaml['Tags']&.split&.sort
|
|
18
21
|
def title = @yaml['Title']
|
|
19
22
|
def updated = @yaml['Updated']
|
|
20
23
|
|
data/lib/aardi/post.rb
CHANGED
data/lib/aardi/site.rb
CHANGED
data/lib/aardi/tag_blog.rb
CHANGED
|
@@ -19,6 +19,12 @@ module Aardi
|
|
|
19
19
|
@posts.count
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def feed_menu_item
|
|
23
|
+
{ 'feed-title' => title,
|
|
24
|
+
'rss' => "/#{@blog_path}/#{ATOMFeed::FEED_FILE}",
|
|
25
|
+
'json' => "/#{@blog_path}/#{JSONFeed::FEED_FILE}" }
|
|
26
|
+
end
|
|
27
|
+
|
|
22
28
|
def index_line
|
|
23
29
|
"- #{inline_link_text}"
|
|
24
30
|
end
|
|
@@ -36,7 +42,7 @@ module Aardi
|
|
|
36
42
|
attr_reader :tag
|
|
37
43
|
|
|
38
44
|
def children
|
|
39
|
-
[archive, home,
|
|
45
|
+
[archive, home, feed(ATOMFeed), feed(JSONFeed)]
|
|
40
46
|
end
|
|
41
47
|
end
|
|
42
48
|
end
|
data/lib/aardi/tags.rb
CHANGED
data/lib/aardi/version.rb
CHANGED
data/lib/aardi.rb
CHANGED
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: 2.0
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Faisal N Jawdat
|
|
@@ -97,6 +97,7 @@ files:
|
|
|
97
97
|
- lib/aardi/custom_renderer.rb
|
|
98
98
|
- lib/aardi/day.rb
|
|
99
99
|
- lib/aardi/errors.rb
|
|
100
|
+
- lib/aardi/feed_menu.rb
|
|
100
101
|
- lib/aardi/file_target.rb
|
|
101
102
|
- lib/aardi/folder.rb
|
|
102
103
|
- lib/aardi/home.rb
|
|
@@ -118,6 +119,7 @@ files:
|
|
|
118
119
|
- lib/aardi/tag_blog.rb
|
|
119
120
|
- lib/aardi/tags.rb
|
|
120
121
|
- lib/aardi/tasks.rb
|
|
122
|
+
- lib/aardi/tasks/drafts.rake
|
|
121
123
|
- lib/aardi/tasks/fixtimes.rake
|
|
122
124
|
- lib/aardi/tasks/homepage.rake
|
|
123
125
|
- lib/aardi/tasks/init.rake
|
|
@@ -154,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
154
156
|
- !ruby/object:Gem::Version
|
|
155
157
|
version: '0'
|
|
156
158
|
requirements: []
|
|
157
|
-
rubygems_version: 4.0.
|
|
159
|
+
rubygems_version: 4.0.18
|
|
158
160
|
specification_version: 4
|
|
159
161
|
summary: A static site generator.
|
|
160
162
|
test_files: []
|