ragerender 0.1.6 → 0.1.7
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/README.rdoc +4 -1
- data/assets/comic-not-found.html +7 -0
- data/lib/ragerender/jekyll/archive.rb +4 -1
- data/lib/ragerender/jekyll/blog_archive.rb +30 -26
- data/lib/ragerender/jekyll/chapter.rb +6 -1
- data/lib/ragerender/jekyll/comics.rb +48 -1
- data/lib/ragerender/jekyll/overview.rb +7 -2
- data/lib/ragerender/jekyll/pipettes.rb +13 -2
- data/lib/ragerender/jekyll/search.rb +3 -0
- data/lib/ragerender/jekyll.rb +27 -2
- metadata +7 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 152c14ba01c06c930b537a0e1c72a994e673fa8aea1176b82f92adfc912e5e77
|
|
4
|
+
data.tar.gz: bfb9fa9e0e5d4e1dae45c3bdc7fc09fd7de45fdcbb3043fd45c26e11404b0d1d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 78e6690eb005da5ac9604c4111612b3e3dcf2d68c52bb8b351dc6165d3fecf9acc8267cfb69d551a6ee8374bb6b660d812465e2bb14875e2d95199c5b1a81a6e
|
|
7
|
+
data.tar.gz: 841b860abb04b124f88aa730ece8650fce559f08a889598f4121b503eb6d5c3ef03bb396f6afffe860ded22cffb92d887750cd597b170369dbc74e7660d8f1ea
|
data/README.rdoc
CHANGED
|
@@ -49,7 +49,7 @@ To set up a new site, open a terminal and type:
|
|
|
49
49
|
mkdir mycomic && cd mycomic
|
|
50
50
|
bundle init
|
|
51
51
|
bundle add jekyll
|
|
52
|
-
bundle add ragerender
|
|
52
|
+
bundle add ragerender --group=jekyll_plugins
|
|
53
53
|
|
|
54
54
|
Now you can add comics! Add the image into an <tt>images</tt> folder:
|
|
55
55
|
|
|
@@ -92,6 +92,9 @@ Put something like this in your webcomic folder and call it
|
|
|
92
92
|
description: >
|
|
93
93
|
My epic story about how him and her
|
|
94
94
|
fell into a romantic polycule with they and them
|
|
95
|
+
genres:
|
|
96
|
+
- Comedy
|
|
97
|
+
- Romance
|
|
95
98
|
|
|
96
99
|
defaults:
|
|
97
100
|
- scope:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'jekyll/generator'
|
|
2
2
|
require 'jekyll/drops/drop'
|
|
3
3
|
require_relative 'comics'
|
|
4
|
+
require_relative 'chapter'
|
|
4
5
|
require_relative 'pagination'
|
|
5
6
|
require_relative 'pipettes'
|
|
6
7
|
|
|
@@ -113,6 +114,7 @@ module RageRender
|
|
|
113
114
|
!show_comic_list
|
|
114
115
|
end
|
|
115
116
|
|
|
117
|
+
def_loop :chapters, *(RageRender::ChapterDrop.invokable_methods - Jekyll::Drops::DocumentDrop.invokable_methods)
|
|
116
118
|
def chapters
|
|
117
119
|
unless show_chapter_overview
|
|
118
120
|
@obj.site.collections['chapters'].docs.reject do |page|
|
|
@@ -123,13 +125,14 @@ module RageRender
|
|
|
123
125
|
end
|
|
124
126
|
end
|
|
125
127
|
|
|
128
|
+
def_loop :comics_paginated, :number, :newchapter, :chapterend, *ComicDrop::PAGINATION_FIELDS, *ChapterDrop::PAGINATION_FIELDS
|
|
126
129
|
def comics_paginated
|
|
127
130
|
number = @obj.data['number']
|
|
128
131
|
comics = if number
|
|
129
132
|
selected_comics.to_a[number - 1]
|
|
130
133
|
else
|
|
131
134
|
selected_comics.to_a.flatten
|
|
132
|
-
end
|
|
135
|
+
end&.group_by {|c| c.data['chapter'] } || []
|
|
133
136
|
|
|
134
137
|
comics.map do |chapter, comics|
|
|
135
138
|
chapter_data = ChapterDrop.new(@obj.site.collections['chapters'].docs.detect {|c| c.data['slug'] == chapter })
|
|
@@ -52,11 +52,40 @@ module RageRender
|
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
+
# Data representing a single paginated blog entry, as available from
|
|
56
|
+
# [l:blogs_paginated].
|
|
57
|
+
class PaginatedBlogDrop < Jekyll::Drops::DocumentDrop
|
|
58
|
+
extend Pipettes
|
|
59
|
+
|
|
60
|
+
def_data_delegator :title, :blogtitle
|
|
61
|
+
def_delegator :@obj, :url, :bloglink
|
|
62
|
+
def_data_delegator :author, :authorname
|
|
63
|
+
def_delegator :@obj, :content, :blog
|
|
64
|
+
# TODO profilelink
|
|
65
|
+
|
|
66
|
+
private delegate_method_as :data, :fallback_data
|
|
67
|
+
|
|
68
|
+
def posttime
|
|
69
|
+
comicfury_date(@obj.date)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def allowcomments
|
|
73
|
+
@obj.site.config['allowcomments']
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def comments
|
|
77
|
+
(@obj.data['comments'] || []).size
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
55
81
|
# Data to pass to a blog archive page.
|
|
56
82
|
class BlogArchiveDrop < Jekyll::Drops::Drop
|
|
83
|
+
extend Pipettes
|
|
84
|
+
|
|
57
85
|
private delegate_method_as :data, :fallback_data
|
|
58
86
|
data_delegator 'number'
|
|
59
87
|
|
|
88
|
+
def_loop :blogs_paginated, *(RageRender::PaginatedBlogDrop.invokable_methods - Jekyll::Drops::DocumentDrop.invokable_methods)
|
|
60
89
|
def blogs_paginated
|
|
61
90
|
all_blogs[number-1]&.map {|blog| PaginatedBlogDrop.new(blog).to_liquid } || []
|
|
62
91
|
end
|
|
@@ -81,36 +110,11 @@ module RageRender
|
|
|
81
110
|
}
|
|
82
111
|
end
|
|
83
112
|
end
|
|
113
|
+
def_loop :pages, :page, :pagelink, :is_current, :skipped_ahead
|
|
84
114
|
|
|
85
115
|
private
|
|
86
116
|
def all_blogs
|
|
87
117
|
@all_blogs = @obj.site.posts.docs.each_slice(BLOGS_PER_PAGE).to_a
|
|
88
118
|
end
|
|
89
119
|
end
|
|
90
|
-
|
|
91
|
-
# Data representing a single paginated blog entry, as available from
|
|
92
|
-
# [l:blogs_paginated].
|
|
93
|
-
class PaginatedBlogDrop < Jekyll::Drops::DocumentDrop
|
|
94
|
-
extend Pipettes
|
|
95
|
-
|
|
96
|
-
def_data_delegator :title, :blogtitle
|
|
97
|
-
def_delegator :@obj, :url, :bloglink
|
|
98
|
-
def_data_delegator :author, :authorname
|
|
99
|
-
def_delegator :@obj, :content, :blog
|
|
100
|
-
# TODO profilelink
|
|
101
|
-
|
|
102
|
-
private delegate_method_as :data, :fallback_data
|
|
103
|
-
|
|
104
|
-
def posttime
|
|
105
|
-
comicfury_date(@obj.date)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def allowcomments
|
|
109
|
-
@obj.site.config['allowcomments']
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def comments
|
|
113
|
-
(@obj.data['comments'] || []).size
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
120
|
end
|
|
@@ -74,7 +74,7 @@ module RageRender
|
|
|
74
74
|
COVER_MAX_HEIGHT = 420
|
|
75
75
|
COVER_MAX_WIDTH = 300
|
|
76
76
|
|
|
77
|
-
PAGINATION_FIELDS = %w[ chaptername chapterdescription ]
|
|
77
|
+
PAGINATION_FIELDS = %w[ chaptername chapterdescription chapterid ]
|
|
78
78
|
|
|
79
79
|
delegate_method_as :data, :fallback_data
|
|
80
80
|
extend Pipettes
|
|
@@ -84,6 +84,10 @@ module RageRender
|
|
|
84
84
|
def_data_delegator :image, :image
|
|
85
85
|
def_delegator :@obj, :url, :chapterarchiveurl
|
|
86
86
|
|
|
87
|
+
def chapterid
|
|
88
|
+
@obj.collection.docs.index @obj
|
|
89
|
+
end
|
|
90
|
+
|
|
87
91
|
def chaptername
|
|
88
92
|
escape @obj.data['title']
|
|
89
93
|
end
|
|
@@ -116,6 +120,7 @@ module RageRender
|
|
|
116
120
|
|
|
117
121
|
private
|
|
118
122
|
def_image_metadata :image
|
|
123
|
+
private :image_url, :image_width, :image_height
|
|
119
124
|
|
|
120
125
|
def first_comic
|
|
121
126
|
@obj.site.collections['comics'].docs.select {|c| c.data['chapter'] == @obj.data['slug'] }.first
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
require 'uri'
|
|
2
|
+
require 'liquid/drop'
|
|
3
|
+
require 'jekyll/hooks'
|
|
4
|
+
require 'jekyll/plugin'
|
|
1
5
|
require 'jekyll/generator'
|
|
2
6
|
require 'jekyll/document'
|
|
7
|
+
require 'jekyll/drops/drop'
|
|
3
8
|
require 'jekyll/drops/document_drop'
|
|
4
9
|
require_relative '../date_formats'
|
|
5
10
|
require_relative 'pipettes'
|
|
@@ -12,6 +17,8 @@ end
|
|
|
12
17
|
module RageRender
|
|
13
18
|
SPECIAL_COMIC_SLUGS = %w{frontpage index}
|
|
14
19
|
|
|
20
|
+
BASE_DIR = File.join(File.dirname(__FILE__), '..', '..', '..')
|
|
21
|
+
|
|
15
22
|
# Creates comics for each file found in the 'images' directory
|
|
16
23
|
# that does not already have an associated comic object.
|
|
17
24
|
class ComicFromImageGenerator < Jekyll::Generator
|
|
@@ -42,9 +49,14 @@ module RageRender
|
|
|
42
49
|
def generate site
|
|
43
50
|
comics = site.collections['comics']
|
|
44
51
|
index = comics.docs.last.dup
|
|
52
|
+
collection = comics.docs
|
|
53
|
+
if index.nil?
|
|
54
|
+
index = site.pages.detect {|p| p.data["title"] == "Comic not found" }.dup
|
|
55
|
+
collection = site.pages
|
|
56
|
+
end
|
|
45
57
|
index.instance_variable_set(:"@data", index.data.dup)
|
|
46
58
|
index.data['slug'] = 'index'
|
|
47
|
-
|
|
59
|
+
collection << index
|
|
48
60
|
end
|
|
49
61
|
end
|
|
50
62
|
|
|
@@ -91,10 +103,26 @@ module RageRender
|
|
|
91
103
|
escape @obj.data['title']
|
|
92
104
|
end
|
|
93
105
|
|
|
106
|
+
def comicnumber
|
|
107
|
+
1 + all_comics.index(@obj)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def comicsnum
|
|
111
|
+
all_comics.size
|
|
112
|
+
end
|
|
113
|
+
|
|
94
114
|
def posttime
|
|
95
115
|
comicfury_date(@obj.date)
|
|
96
116
|
end
|
|
97
117
|
|
|
118
|
+
def postyear
|
|
119
|
+
@obj.date.year
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def postmonth
|
|
123
|
+
@obj.date.month
|
|
124
|
+
end
|
|
125
|
+
|
|
98
126
|
def usechapters
|
|
99
127
|
all_comics.any? {|comic| comic.data.include? 'chapter' }
|
|
100
128
|
end
|
|
@@ -111,6 +139,7 @@ module RageRender
|
|
|
111
139
|
chapter&.url
|
|
112
140
|
end
|
|
113
141
|
|
|
142
|
+
def_loop :dropdown, :is_selected, :is_disabled, :title, :grouplabel, :newgroup, :endgroup, :url
|
|
114
143
|
def dropdown
|
|
115
144
|
all_comics.each_with_object([]) do |c, dropdown|
|
|
116
145
|
new_group = dropdown.last.nil? ? true : dropdown.last['grouplabel'] != c.data['chapter']
|
|
@@ -143,6 +172,7 @@ module RageRender
|
|
|
143
172
|
end
|
|
144
173
|
end
|
|
145
174
|
|
|
175
|
+
def_loop :authornotes, :is_reply, :comment, :isguest, :avatar, :authorname, :commentanchor, :posttime, :profilelink
|
|
146
176
|
def authornotes
|
|
147
177
|
@obj.data['authornotes'] || [{
|
|
148
178
|
'is_reply' => false,
|
|
@@ -178,10 +208,22 @@ module RageRender
|
|
|
178
208
|
@obj.previous_doc&.url
|
|
179
209
|
end
|
|
180
210
|
|
|
211
|
+
def prevcomicpermalink
|
|
212
|
+
unless @obj.previous_doc.nil?
|
|
213
|
+
URI.join(@obj.site.config["url"], @obj.site.baseurl || '/', @obj.previous_doc&.url).to_s
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
181
217
|
def nextcomic
|
|
182
218
|
@obj.next_doc&.url
|
|
183
219
|
end
|
|
184
220
|
|
|
221
|
+
def nextcomicpermalink
|
|
222
|
+
unless @obj.next_doc.nil?
|
|
223
|
+
URI.join(@obj.site.config["url"], @obj.site.baseurl || '/', @obj.next_doc&.url).to_s
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
185
227
|
# An HTML tag to print for the comic image. If there is a future image, then
|
|
186
228
|
# this is also a link to the next comic page.
|
|
187
229
|
def comicimage
|
|
@@ -197,6 +239,10 @@ module RageRender
|
|
|
197
239
|
[linkopen, image, linkclose].join
|
|
198
240
|
end
|
|
199
241
|
|
|
242
|
+
def keys
|
|
243
|
+
super.reject {|k| private_methods.include? k.to_sym }
|
|
244
|
+
end
|
|
245
|
+
|
|
200
246
|
def to_liquid
|
|
201
247
|
super.reject do |k, v|
|
|
202
248
|
Jekyll::Drops::DocumentDrop::NESTED_OBJECT_FIELD_BLACKLIST.include? k
|
|
@@ -214,6 +260,7 @@ module RageRender
|
|
|
214
260
|
|
|
215
261
|
data_delegator 'image'
|
|
216
262
|
def_image_metadata :image
|
|
263
|
+
private :image, :image_url, :image_width, :image_height
|
|
217
264
|
|
|
218
265
|
public
|
|
219
266
|
alias comicimageurl image_url
|
|
@@ -7,17 +7,22 @@ require_relative 'blog_archive'
|
|
|
7
7
|
Jekyll::Hooks.register :pages, :pre_render do |page, payload|
|
|
8
8
|
if page.data['layout'] == 'overview'
|
|
9
9
|
RageRender::Pipettes.clean_payload payload
|
|
10
|
-
|
|
10
|
+
latest_comic = page.site.collections['comics'].docs.last
|
|
11
|
+
if latest_comic
|
|
12
|
+
payload.merge! RageRender::ComicDrop.new(latest_comic).to_liquid
|
|
13
|
+
end
|
|
11
14
|
payload.merge! RageRender::OverviewDrop.new(page).to_liquid
|
|
12
15
|
end
|
|
13
16
|
end
|
|
14
17
|
|
|
15
18
|
module RageRender
|
|
16
19
|
class OverviewDrop < Jekyll::Drops::Drop
|
|
20
|
+
extend Pipettes
|
|
17
21
|
private delegate_method_as :data, :fallback_data
|
|
18
22
|
|
|
23
|
+
def_loop :latestblogs, *(RageRender::PaginatedBlogDrop.invokable_methods - Jekyll::Drops::DocumentDrop.invokable_methods)
|
|
19
24
|
def latestblogs
|
|
20
|
-
@obj.site.posts.docs[-5..]
|
|
25
|
+
@obj.site.posts.docs[-5..]&.map {|post| RageRender::PaginatedBlogDrop.new(post) } || []
|
|
21
26
|
end
|
|
22
27
|
end
|
|
23
28
|
end
|
|
@@ -17,6 +17,14 @@ module RageRender
|
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def def_loop method, *fields
|
|
21
|
+
(@loops ||= {})[method.to_sym] = fields
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def loops
|
|
25
|
+
@loops || {}
|
|
26
|
+
end
|
|
27
|
+
|
|
20
28
|
def self.extended mod
|
|
21
29
|
mod.define_method(:escape) do |str|
|
|
22
30
|
str.nil? ? nil : CGI.escapeHTML(str)
|
|
@@ -33,6 +41,7 @@ module RageRender
|
|
|
33
41
|
define_method(:"#{prefix}_relative_path") do
|
|
34
42
|
Pathname.new('/').join(send(prefix.to_sym)).to_path
|
|
35
43
|
end
|
|
44
|
+
private :"#{prefix}_relative_path"
|
|
36
45
|
|
|
37
46
|
define_method(:"#{prefix}_url") do
|
|
38
47
|
File.join (@obj.site.baseurl || ''), send(:"#{prefix}_relative_path")
|
|
@@ -44,17 +53,19 @@ module RageRender
|
|
|
44
53
|
end
|
|
45
54
|
instance_variable_get(:"@#{prefix}_obj")
|
|
46
55
|
end
|
|
56
|
+
private :"#{prefix}_obj"
|
|
47
57
|
|
|
48
58
|
define_method(:"#{prefix}_path") do
|
|
49
59
|
send(:"#{prefix}_obj").path
|
|
50
60
|
end
|
|
61
|
+
private :"#{prefix}_path"
|
|
51
62
|
|
|
52
63
|
define_method(:"#{prefix}_width") do
|
|
53
|
-
send(:"#{prefix}_obj").data['width'] ||= Dimensions.width(send(:"#{prefix}_path")) rescue nil
|
|
64
|
+
send(:"#{prefix}_obj") && (send(:"#{prefix}_obj").data['width'] ||= Dimensions.width(send(:"#{prefix}_path")) rescue nil)
|
|
54
65
|
end
|
|
55
66
|
|
|
56
67
|
define_method(:"#{prefix}_height") do
|
|
57
|
-
send(:"#{prefix}_obj").data['height'] ||= Dimensions.height(send(:"#{prefix}_path")) rescue nil
|
|
68
|
+
send(:"#{prefix}_obj") && (send(:"#{prefix}_obj").data['height'] ||= Dimensions.height(send(:"#{prefix}_path")) rescue nil)
|
|
58
69
|
end
|
|
59
70
|
end
|
|
60
71
|
end
|
|
@@ -7,6 +7,8 @@ end
|
|
|
7
7
|
|
|
8
8
|
module RageRender
|
|
9
9
|
class SearchDrop < Jekyll::Drops::Drop
|
|
10
|
+
extend Pipettes
|
|
11
|
+
|
|
10
12
|
private delegate_method_as :data, :fallback_data
|
|
11
13
|
data_delegator 'searchterm'
|
|
12
14
|
|
|
@@ -14,6 +16,7 @@ module RageRender
|
|
|
14
16
|
!searchterm.nil?
|
|
15
17
|
end
|
|
16
18
|
|
|
19
|
+
def_loop :searchresults, :number, *ComicDrop::PAGINATION_FIELDS
|
|
17
20
|
def searchresults
|
|
18
21
|
return [] unless searched
|
|
19
22
|
@results ||= @obj.site.collections['comics'].docs.select do |comic|
|
data/lib/ragerender/jekyll.rb
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
require 'etc'
|
|
2
2
|
require 'stringio'
|
|
3
|
-
require 'jekyll'
|
|
3
|
+
require 'jekyll/command'
|
|
4
|
+
require 'jekyll/hooks'
|
|
5
|
+
require 'jekyll/plugin'
|
|
6
|
+
require 'jekyll/generator'
|
|
7
|
+
require 'liquid/drop'
|
|
4
8
|
require_relative 'language'
|
|
5
9
|
require_relative 'functions'
|
|
6
10
|
require_relative 'to_liquid'
|
|
@@ -57,6 +61,7 @@ Jekyll::Hooks.register :site, :after_init do |site|
|
|
|
57
61
|
site.config['theme'] ||= 'ragerender'
|
|
58
62
|
site.config['title'] ||= File.basename(site.source)
|
|
59
63
|
site.config['search'] ||= true
|
|
64
|
+
site.config['url'] ||= "https://#{File.basename(site.source)}.thecomicseries.com"
|
|
60
65
|
site.config = site.config
|
|
61
66
|
|
|
62
67
|
setup_collection site, :comics, '/:collection/:slug/', layout: 'comic-page', chapter: '0'
|
|
@@ -105,6 +110,10 @@ class RageRender::FrontpageGenerator < Jekyll::Generator
|
|
|
105
110
|
collection = site.pages
|
|
106
111
|
site.pages.detect {|p| p.data["slug"] == frontpage }
|
|
107
112
|
end.dup
|
|
113
|
+
if index.nil?
|
|
114
|
+
collection = site.pages
|
|
115
|
+
index = site.pages.detect {|p| p.data['title'] == 'Comic not found' }.dup
|
|
116
|
+
end
|
|
108
117
|
index.instance_variable_set(:"@data", index.data.dup)
|
|
109
118
|
index.data['permalink'] = '/index.html'
|
|
110
119
|
index.data['slug'] = 'frontpage'
|
|
@@ -142,6 +151,20 @@ class RageRender::WebcomicDrop < Jekyll::Drops::Drop
|
|
|
142
151
|
escape @obj.site.config['description']
|
|
143
152
|
end
|
|
144
153
|
|
|
154
|
+
def_loop :webcomicgenres, :genre_link, :genre_name
|
|
155
|
+
def webcomicgenres
|
|
156
|
+
(@obj.site.config['genres'] || []).map do |g|
|
|
157
|
+
{
|
|
158
|
+
'genre_name' => escape(g),
|
|
159
|
+
'genre_link' => "https://comicfury.com/search.php?vr=1&query=&tags=#{g.downcase.gsub(/[^a-z]/, '')}"
|
|
160
|
+
}
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def webcomicgenre
|
|
165
|
+
(webcomicgenres.first || {})['genre_name']
|
|
166
|
+
end
|
|
167
|
+
|
|
145
168
|
def webcomicurl
|
|
146
169
|
@obj.site.baseurl
|
|
147
170
|
end
|
|
@@ -151,7 +174,7 @@ class RageRender::WebcomicDrop < Jekyll::Drops::Drop
|
|
|
151
174
|
end
|
|
152
175
|
|
|
153
176
|
def copyrights
|
|
154
|
-
escape @obj.site.config
|
|
177
|
+
escape @obj.site.config.fetch('copyrights', '').gsub('[year]', Date.today.year.to_s)
|
|
155
178
|
end
|
|
156
179
|
|
|
157
180
|
def banner
|
|
@@ -175,6 +198,7 @@ class RageRender::WebcomicDrop < Jekyll::Drops::Drop
|
|
|
175
198
|
false
|
|
176
199
|
end
|
|
177
200
|
|
|
201
|
+
def_loop :extrapages, :link, :title
|
|
178
202
|
def extrapages
|
|
179
203
|
@obj.site.pages.reject {|page| page.data['hidden'] }.map do |page|
|
|
180
204
|
{'link' => page.url, 'title' => escape(page.data['title'])}
|
|
@@ -194,6 +218,7 @@ class RageRender::WebcomicDrop < Jekyll::Drops::Drop
|
|
|
194
218
|
css_files << Pathname.new(@obj.site.theme.includes_path).join('layout.css') unless css_files.any?
|
|
195
219
|
css_files.map {|f| File.read f }.join
|
|
196
220
|
end
|
|
221
|
+
private :css
|
|
197
222
|
|
|
198
223
|
def layoutcss
|
|
199
224
|
<<~HTML
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ragerender
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simon Worthington
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-02-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rsec
|
|
@@ -141,7 +141,7 @@ description: |-
|
|
|
141
141
|
mkdir mycomic && cd mycomic
|
|
142
142
|
bundle init
|
|
143
143
|
bundle add jekyll
|
|
144
|
-
bundle add ragerender
|
|
144
|
+
bundle add ragerender --group=jekyll_plugins
|
|
145
145
|
|
|
146
146
|
Now you can add comics! Add the image into an <tt>images</tt> folder:
|
|
147
147
|
|
|
@@ -184,6 +184,9 @@ description: |-
|
|
|
184
184
|
description: >
|
|
185
185
|
My epic story about how him and her
|
|
186
186
|
fell into a romantic polycule with they and them
|
|
187
|
+
genres:
|
|
188
|
+
- Comedy
|
|
189
|
+
- Romance
|
|
187
190
|
|
|
188
191
|
defaults:
|
|
189
192
|
- scope:
|
|
@@ -350,6 +353,7 @@ files:
|
|
|
350
353
|
- assets/archive-comics.html
|
|
351
354
|
- assets/archive.html
|
|
352
355
|
- assets/blog.html
|
|
356
|
+
- assets/comic-not-found.html
|
|
353
357
|
- assets/overview.html
|
|
354
358
|
- assets/search.html
|
|
355
359
|
- lib/ragerender.rb
|