mill 0.11 → 0.18
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/.gitignore +11 -1
- data/LICENSE +1 -1
- data/Rakefile +1 -2
- data/TODO.md +4 -0
- data/bin/mill +1 -27
- data/lib/mill/command.rb +13 -0
- data/lib/mill/commands/build.rb +17 -0
- data/lib/mill/commands/check.rb +16 -0
- data/lib/mill/commands/diff.rb +18 -0
- data/lib/mill/commands/list.rb +20 -0
- data/lib/mill/commands/snapshot.rb +20 -0
- data/lib/mill/commands/tree.rb +17 -0
- data/lib/mill/commands/types.rb +18 -0
- data/lib/mill/commands/upload.rb +24 -0
- data/lib/mill/config.rb +27 -0
- data/lib/mill/resource.rb +81 -81
- data/lib/mill/resources/blob.rb +4 -0
- data/lib/mill/resources/feed.rb +5 -13
- data/lib/mill/resources/image.rb +10 -18
- data/lib/mill/resources/markdown.rb +20 -0
- data/lib/mill/resources/markup.rb +62 -0
- data/lib/mill/resources/page.rb +140 -0
- data/lib/mill/resources/redirect.rb +17 -16
- data/lib/mill/resources/robots.rb +3 -4
- data/lib/mill/resources/sitemap.rb +3 -5
- data/lib/mill/resources/stylesheet.rb +4 -4
- data/lib/mill/resources/textile.rb +27 -0
- data/lib/mill/resources.rb +89 -0
- data/lib/mill/site.rb +181 -251
- data/lib/mill.rb +28 -8
- data/mill.gemspec +22 -17
- data/test/content/a.md +3 -0
- data/test/content/b/ba.md +3 -0
- data/test/content/b/bb.md +3 -0
- data/test/content/b/index.md +3 -0
- data/test/content/c.md +4 -0
- data/test/content/d.md +4 -0
- data/test/content/index.md +3 -0
- data/test/main_test.rb +68 -0
- data/test/mill.yaml +8 -0
- metadata +189 -40
- data/TODO.txt +0 -61
- data/lib/mill/html_helpers.rb +0 -122
- data/lib/mill/navigator.rb +0 -61
- data/lib/mill/resources/dir.rb +0 -31
- data/lib/mill/resources/google_site_verification.rb +0 -30
- data/lib/mill/resources/text.rb +0 -207
- data/lib/mill/version.rb +0 -5
data/test/content/d.md
ADDED
data/test/main_test.rb
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
require 'minitest/autorun'
|
|
2
|
+
require 'minitest/power_assert'
|
|
3
|
+
|
|
4
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
|
5
|
+
require 'mill'
|
|
6
|
+
|
|
7
|
+
module Mill
|
|
8
|
+
|
|
9
|
+
class Test < Minitest::Test
|
|
10
|
+
|
|
11
|
+
def setup
|
|
12
|
+
@site = Site.load('test')
|
|
13
|
+
@site.build
|
|
14
|
+
@site.save
|
|
15
|
+
# ;;pp @site
|
|
16
|
+
# ;;@site.resources.print_tree
|
|
17
|
+
# ;;@site.list
|
|
18
|
+
@root = @site.find_resource('/')
|
|
19
|
+
@a = @site.find_resource('/a')
|
|
20
|
+
@b = @site.find_resource('/b')
|
|
21
|
+
@ba = @site.find_resource('/b/ba')
|
|
22
|
+
@bb = @site.find_resource('/b/bb')
|
|
23
|
+
@c = @site.find_resource('/c')
|
|
24
|
+
@d = @site.find_resource('/d')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_has_index
|
|
28
|
+
assert { @root }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_resources
|
|
32
|
+
assert { @a }
|
|
33
|
+
assert { @b }
|
|
34
|
+
assert { @ba }
|
|
35
|
+
assert { @bb }
|
|
36
|
+
assert { @c }
|
|
37
|
+
assert { @d == nil }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_primary
|
|
41
|
+
assert { !@c.primary? }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_children
|
|
45
|
+
children = @root.children
|
|
46
|
+
assert { children == [@a, @b] }
|
|
47
|
+
assert { @a.children.empty? }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_parent
|
|
51
|
+
assert { @a.parent == @root }
|
|
52
|
+
assert { @b.parent == @root }
|
|
53
|
+
assert { @ba.parent == @b }
|
|
54
|
+
assert { @bb.parent == @b }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_siblings
|
|
58
|
+
root_siblings = @root.siblings
|
|
59
|
+
a_siblings = @a.siblings
|
|
60
|
+
ba_siblings = @ba.siblings
|
|
61
|
+
assert { root_siblings.empty? }
|
|
62
|
+
assert { a_siblings == [@b] }
|
|
63
|
+
assert { ba_siblings == [@bb] }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
data/test/mill.yaml
ADDED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mill
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.
|
|
4
|
+
version: '0.18'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Labovitz
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: addressable
|
|
@@ -16,84 +15,112 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.
|
|
18
|
+
version: '2.8'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.
|
|
25
|
+
version: '2.8'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: hashstruct
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.6'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.6'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: http
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '5.3'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '5.3'
|
|
27
54
|
- !ruby/object:Gem::Dependency
|
|
28
55
|
name: image_size
|
|
29
56
|
requirement: !ruby/object:Gem::Requirement
|
|
30
57
|
requirements:
|
|
31
58
|
- - "~>"
|
|
32
59
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
60
|
+
version: '3.4'
|
|
34
61
|
type: :runtime
|
|
35
62
|
prerelease: false
|
|
36
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
64
|
requirements:
|
|
38
65
|
- - "~>"
|
|
39
66
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
67
|
+
version: '3.4'
|
|
41
68
|
- !ruby/object:Gem::Dependency
|
|
42
69
|
name: kramdown
|
|
43
70
|
requirement: !ruby/object:Gem::Requirement
|
|
44
71
|
requirements:
|
|
45
72
|
- - "~>"
|
|
46
73
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
74
|
+
version: '2.5'
|
|
48
75
|
type: :runtime
|
|
49
76
|
prerelease: false
|
|
50
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
78
|
requirements:
|
|
52
79
|
- - "~>"
|
|
53
80
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
81
|
+
version: '2.5'
|
|
55
82
|
- !ruby/object:Gem::Dependency
|
|
56
83
|
name: mime-types
|
|
57
84
|
requirement: !ruby/object:Gem::Requirement
|
|
58
85
|
requirements:
|
|
59
86
|
- - "~>"
|
|
60
87
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '3.
|
|
88
|
+
version: '3.7'
|
|
62
89
|
type: :runtime
|
|
63
90
|
prerelease: false
|
|
64
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
92
|
requirements:
|
|
66
93
|
- - "~>"
|
|
67
94
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '3.
|
|
95
|
+
version: '3.7'
|
|
69
96
|
- !ruby/object:Gem::Dependency
|
|
70
97
|
name: nokogiri
|
|
71
98
|
requirement: !ruby/object:Gem::Requirement
|
|
72
99
|
requirements:
|
|
73
100
|
- - "~>"
|
|
74
101
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '1.
|
|
102
|
+
version: '1.18'
|
|
76
103
|
type: :runtime
|
|
77
104
|
prerelease: false
|
|
78
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
106
|
requirements:
|
|
80
107
|
- - "~>"
|
|
81
108
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '1.
|
|
109
|
+
version: '1.18'
|
|
83
110
|
- !ruby/object:Gem::Dependency
|
|
84
111
|
name: path
|
|
85
112
|
requirement: !ruby/object:Gem::Requirement
|
|
86
113
|
requirements:
|
|
87
114
|
- - "~>"
|
|
88
115
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '2.
|
|
116
|
+
version: '2.1'
|
|
90
117
|
type: :runtime
|
|
91
118
|
prerelease: false
|
|
92
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
120
|
requirements:
|
|
94
121
|
- - "~>"
|
|
95
122
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '2.
|
|
123
|
+
version: '2.1'
|
|
97
124
|
- !ruby/object:Gem::Dependency
|
|
98
125
|
name: RedCloth
|
|
99
126
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -114,70 +141,168 @@ dependencies:
|
|
|
114
141
|
requirements:
|
|
115
142
|
- - "~>"
|
|
116
143
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0.
|
|
144
|
+
version: '0.7'
|
|
118
145
|
type: :runtime
|
|
119
146
|
prerelease: false
|
|
120
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
148
|
requirements:
|
|
122
149
|
- - "~>"
|
|
123
150
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0.
|
|
151
|
+
version: '0.7'
|
|
152
|
+
- !ruby/object:Gem::Dependency
|
|
153
|
+
name: rubytree
|
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - "~>"
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '2.1'
|
|
159
|
+
type: :runtime
|
|
160
|
+
prerelease: false
|
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
162
|
+
requirements:
|
|
163
|
+
- - "~>"
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: '2.1'
|
|
125
166
|
- !ruby/object:Gem::Dependency
|
|
126
167
|
name: sassc
|
|
127
168
|
requirement: !ruby/object:Gem::Requirement
|
|
128
169
|
requirements:
|
|
129
170
|
- - "~>"
|
|
130
171
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '2.
|
|
172
|
+
version: '2.4'
|
|
173
|
+
type: :runtime
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - "~>"
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '2.4'
|
|
180
|
+
- !ruby/object:Gem::Dependency
|
|
181
|
+
name: set_params
|
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - "~>"
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '0.3'
|
|
132
187
|
type: :runtime
|
|
133
188
|
prerelease: false
|
|
134
189
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
190
|
requirements:
|
|
136
191
|
- - "~>"
|
|
137
192
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
193
|
+
version: '0.3'
|
|
139
194
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
195
|
+
name: simple-builder
|
|
141
196
|
requirement: !ruby/object:Gem::Requirement
|
|
142
197
|
requirements:
|
|
143
198
|
- - "~>"
|
|
144
199
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '0'
|
|
200
|
+
version: '0.4'
|
|
146
201
|
type: :runtime
|
|
147
202
|
prerelease: false
|
|
148
203
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
204
|
requirements:
|
|
150
205
|
- - "~>"
|
|
151
206
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '0'
|
|
207
|
+
version: '0.4'
|
|
208
|
+
- !ruby/object:Gem::Dependency
|
|
209
|
+
name: simple-command-parser
|
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
|
211
|
+
requirements:
|
|
212
|
+
- - "~>"
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '1.2'
|
|
215
|
+
type: :runtime
|
|
216
|
+
prerelease: false
|
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - "~>"
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '1.2'
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: simple-configurator
|
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - "~>"
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: '0.2'
|
|
229
|
+
type: :runtime
|
|
230
|
+
prerelease: false
|
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
232
|
+
requirements:
|
|
233
|
+
- - "~>"
|
|
234
|
+
- !ruby/object:Gem::Version
|
|
235
|
+
version: '0.2'
|
|
236
|
+
- !ruby/object:Gem::Dependency
|
|
237
|
+
name: simple-printer
|
|
238
|
+
requirement: !ruby/object:Gem::Requirement
|
|
239
|
+
requirements:
|
|
240
|
+
- - "~>"
|
|
241
|
+
- !ruby/object:Gem::Version
|
|
242
|
+
version: '0.4'
|
|
243
|
+
type: :runtime
|
|
244
|
+
prerelease: false
|
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
246
|
+
requirements:
|
|
247
|
+
- - "~>"
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: '0.4'
|
|
250
|
+
- !ruby/object:Gem::Dependency
|
|
251
|
+
name: minitest
|
|
252
|
+
requirement: !ruby/object:Gem::Requirement
|
|
253
|
+
requirements:
|
|
254
|
+
- - "~>"
|
|
255
|
+
- !ruby/object:Gem::Version
|
|
256
|
+
version: '5.26'
|
|
257
|
+
type: :development
|
|
258
|
+
prerelease: false
|
|
259
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
260
|
+
requirements:
|
|
261
|
+
- - "~>"
|
|
262
|
+
- !ruby/object:Gem::Version
|
|
263
|
+
version: '5.26'
|
|
264
|
+
- !ruby/object:Gem::Dependency
|
|
265
|
+
name: minitest-power_assert
|
|
266
|
+
requirement: !ruby/object:Gem::Requirement
|
|
267
|
+
requirements:
|
|
268
|
+
- - "~>"
|
|
269
|
+
- !ruby/object:Gem::Version
|
|
270
|
+
version: '0.3'
|
|
271
|
+
type: :development
|
|
272
|
+
prerelease: false
|
|
273
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
274
|
+
requirements:
|
|
275
|
+
- - "~>"
|
|
276
|
+
- !ruby/object:Gem::Version
|
|
277
|
+
version: '0.3'
|
|
153
278
|
- !ruby/object:Gem::Dependency
|
|
154
279
|
name: rake
|
|
155
280
|
requirement: !ruby/object:Gem::Requirement
|
|
156
281
|
requirements:
|
|
157
282
|
- - "~>"
|
|
158
283
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: '
|
|
284
|
+
version: '13.3'
|
|
160
285
|
type: :development
|
|
161
286
|
prerelease: false
|
|
162
287
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
288
|
requirements:
|
|
164
289
|
- - "~>"
|
|
165
290
|
- !ruby/object:Gem::Version
|
|
166
|
-
version: '
|
|
291
|
+
version: '13.3'
|
|
167
292
|
- !ruby/object:Gem::Dependency
|
|
168
|
-
name:
|
|
293
|
+
name: simple-rake-tasks
|
|
169
294
|
requirement: !ruby/object:Gem::Requirement
|
|
170
295
|
requirements:
|
|
171
296
|
- - "~>"
|
|
172
297
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: '0.
|
|
298
|
+
version: '0.1'
|
|
174
299
|
type: :development
|
|
175
300
|
prerelease: false
|
|
176
301
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
302
|
requirements:
|
|
178
303
|
- - "~>"
|
|
179
304
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: '0.
|
|
305
|
+
version: '0.1'
|
|
181
306
|
description: "\n Mill provides a simple but useful static site generator.\n "
|
|
182
307
|
email: johnl@johnlabovitz.com
|
|
183
308
|
executables:
|
|
@@ -189,31 +314,48 @@ files:
|
|
|
189
314
|
- LICENSE
|
|
190
315
|
- README.md
|
|
191
316
|
- Rakefile
|
|
192
|
-
- TODO.
|
|
317
|
+
- TODO.md
|
|
193
318
|
- bin/mill
|
|
194
319
|
- lib/mill.rb
|
|
320
|
+
- lib/mill/command.rb
|
|
321
|
+
- lib/mill/commands/build.rb
|
|
322
|
+
- lib/mill/commands/check.rb
|
|
323
|
+
- lib/mill/commands/diff.rb
|
|
324
|
+
- lib/mill/commands/list.rb
|
|
325
|
+
- lib/mill/commands/snapshot.rb
|
|
326
|
+
- lib/mill/commands/tree.rb
|
|
327
|
+
- lib/mill/commands/types.rb
|
|
328
|
+
- lib/mill/commands/upload.rb
|
|
329
|
+
- lib/mill/config.rb
|
|
195
330
|
- lib/mill/error.rb
|
|
196
|
-
- lib/mill/html_helpers.rb
|
|
197
|
-
- lib/mill/navigator.rb
|
|
198
331
|
- lib/mill/resource.rb
|
|
332
|
+
- lib/mill/resources.rb
|
|
199
333
|
- lib/mill/resources/blob.rb
|
|
200
|
-
- lib/mill/resources/dir.rb
|
|
201
334
|
- lib/mill/resources/feed.rb
|
|
202
|
-
- lib/mill/resources/google_site_verification.rb
|
|
203
335
|
- lib/mill/resources/image.rb
|
|
336
|
+
- lib/mill/resources/markdown.rb
|
|
337
|
+
- lib/mill/resources/markup.rb
|
|
338
|
+
- lib/mill/resources/page.rb
|
|
204
339
|
- lib/mill/resources/redirect.rb
|
|
205
340
|
- lib/mill/resources/robots.rb
|
|
206
341
|
- lib/mill/resources/sitemap.rb
|
|
207
342
|
- lib/mill/resources/stylesheet.rb
|
|
208
|
-
- lib/mill/resources/
|
|
343
|
+
- lib/mill/resources/textile.rb
|
|
209
344
|
- lib/mill/site.rb
|
|
210
|
-
- lib/mill/version.rb
|
|
211
345
|
- mill.gemspec
|
|
212
|
-
|
|
346
|
+
- test/content/a.md
|
|
347
|
+
- test/content/b/ba.md
|
|
348
|
+
- test/content/b/bb.md
|
|
349
|
+
- test/content/b/index.md
|
|
350
|
+
- test/content/c.md
|
|
351
|
+
- test/content/d.md
|
|
352
|
+
- test/content/index.md
|
|
353
|
+
- test/main_test.rb
|
|
354
|
+
- test/mill.yaml
|
|
355
|
+
homepage: https://github.com/jslabovitz/mill
|
|
213
356
|
licenses:
|
|
214
357
|
- MIT
|
|
215
358
|
metadata: {}
|
|
216
|
-
post_install_message:
|
|
217
359
|
rdoc_options: []
|
|
218
360
|
require_paths:
|
|
219
361
|
- lib
|
|
@@ -228,9 +370,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
228
370
|
- !ruby/object:Gem::Version
|
|
229
371
|
version: '0'
|
|
230
372
|
requirements: []
|
|
231
|
-
|
|
232
|
-
rubygems_version: 2.7.7
|
|
233
|
-
signing_key:
|
|
373
|
+
rubygems_version: 3.7.2
|
|
234
374
|
specification_version: 4
|
|
235
375
|
summary: A simple but useful static site generator.
|
|
236
|
-
test_files:
|
|
376
|
+
test_files:
|
|
377
|
+
- test/content/a.md
|
|
378
|
+
- test/content/b/ba.md
|
|
379
|
+
- test/content/b/bb.md
|
|
380
|
+
- test/content/b/index.md
|
|
381
|
+
- test/content/c.md
|
|
382
|
+
- test/content/d.md
|
|
383
|
+
- test/content/index.md
|
|
384
|
+
- test/main_test.rb
|
|
385
|
+
- test/mill.yaml
|
data/TODO.txt
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
- initialize site by setting ivars directly, not by passing params to super's initialize()
|
|
2
|
-
|
|
3
|
-
- create alternate sites (beta, final, etc.) by subclassing site, and changing @output or @location
|
|
4
|
-
|
|
5
|
-
- rework resource URI usage
|
|
6
|
-
- 'uri' attribute should be canonical
|
|
7
|
-
- 'output_file' should be derived from @site.output_dir + uri
|
|
8
|
-
- URIs should be fully qualified
|
|
9
|
-
- start with '/'
|
|
10
|
-
- have extension according to file type
|
|
11
|
-
- referencing URIs should follow server rules (e.g., / -> /index.html)
|
|
12
|
-
- #shorten_uris should only apply to writing final files
|
|
13
|
-
|
|
14
|
-
- combine @input_file & @content?
|
|
15
|
-
- if @content.kind_of?(Path): copy
|
|
16
|
-
- else: write as string
|
|
17
|
-
|
|
18
|
-
- rename Resource #load to #import
|
|
19
|
-
- uses path argument instead of @input_file
|
|
20
|
-
- sets @content to path
|
|
21
|
-
- sets @date to mtime of path
|
|
22
|
-
- subclasses should:
|
|
23
|
-
- call super
|
|
24
|
-
- subclasses may:
|
|
25
|
-
- assigned @content
|
|
26
|
-
- change URI
|
|
27
|
-
|
|
28
|
-
- rename Resource #build to #process
|
|
29
|
-
|
|
30
|
-
- formalize widget creation & access
|
|
31
|
-
- any object that responds to #to_html
|
|
32
|
-
- doesn't have to be specific class (e.g., Mill::Widget)
|
|
33
|
-
- object that is used across site
|
|
34
|
-
- possibly with different states or parameters (eg, navigation)
|
|
35
|
-
- built from current html_fragment use
|
|
36
|
-
- eg:
|
|
37
|
-
- navigation
|
|
38
|
-
- buy buttons
|
|
39
|
-
- Google Analytics bug
|
|
40
|
-
- link to resource (<a ...>)
|
|
41
|
-
- sidebars
|
|
42
|
-
- strings (existing String extensions)
|
|
43
|
-
|
|
44
|
-
- create bin/mill tool to replace Rake
|
|
45
|
-
|
|
46
|
-
- split Resource#date into Resource#published & Resource#updated
|
|
47
|
-
+ add <published> element to feed
|
|
48
|
-
+ #published should be stated date (e.g., from header)
|
|
49
|
-
+ #updated should be mtime of source file
|
|
50
|
-
|
|
51
|
-
- make Navigator into more generic Collection
|
|
52
|
-
+ include Enumerable
|
|
53
|
-
|
|
54
|
-
- make Resource::External for external links?
|
|
55
|
-
+ add on import of HTML (by examining href/src/etc attributes)
|
|
56
|
-
|
|
57
|
-
- save compressed versions of files
|
|
58
|
-
- write compressed versions along with non-compressed
|
|
59
|
-
- serve compressed versions if asked by client
|
|
60
|
-
|
|
61
|
-
- add MailChimp signup form generator to HTMLHelpers
|
data/lib/mill/html_helpers.rb
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
module HTMLHelpers
|
|
2
|
-
|
|
3
|
-
LinkElementsXPath = '//@href | //@src'
|
|
4
|
-
|
|
5
|
-
def html_document(type=:html4_transitional, &block)
|
|
6
|
-
doc = Nokogiri::HTML::Document.new
|
|
7
|
-
doc.encoding = 'UTF-8'
|
|
8
|
-
doc.internal_subset.remove
|
|
9
|
-
case type
|
|
10
|
-
when :html4_transitional
|
|
11
|
-
doc.create_internal_subset('html', '-//W3C//DTD HTML 4.01 Transitional//EN', 'http://www.w3.org/TR/html4/loose.dtd')
|
|
12
|
-
when :html5
|
|
13
|
-
doc.create_internal_subset('html', nil, nil)
|
|
14
|
-
else
|
|
15
|
-
raise "Unknown HTML type: #{type.inspect}"
|
|
16
|
-
end
|
|
17
|
-
Nokogiri::HTML::Builder.with(doc) do |doc|
|
|
18
|
-
yield(doc)
|
|
19
|
-
end
|
|
20
|
-
doc
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def html_fragment(&block)
|
|
24
|
-
html = Nokogiri::HTML::DocumentFragment.parse('')
|
|
25
|
-
Nokogiri::HTML::Builder.with(html) do |html|
|
|
26
|
-
yield(html) if block_given?
|
|
27
|
-
end
|
|
28
|
-
html
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def parse_html(str)
|
|
32
|
-
if str.strip.empty?
|
|
33
|
-
html = html_fragment
|
|
34
|
-
else
|
|
35
|
-
html = Nokogiri::HTML::Document.parse(str) { |config| config.strict }
|
|
36
|
-
check_errors(html)
|
|
37
|
-
end
|
|
38
|
-
html
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def parse_html_fragment(str)
|
|
42
|
-
html = Nokogiri::HTML::DocumentFragment.parse(str) { |config| config.strict }
|
|
43
|
-
check_errors(html)
|
|
44
|
-
html
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def check_errors(html)
|
|
48
|
-
html.errors.each do |error|
|
|
49
|
-
raise Mill::Error, "HTML error #{error}" unless error.message =~ /Tag .+? invalid$/
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def find_link_elements(html)
|
|
54
|
-
html.xpath(LinkElementsXPath)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def replace_element(html, xpath, &block)
|
|
58
|
-
html.xpath(xpath).each do |elem|
|
|
59
|
-
elem.replace(yield(elem))
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def google_analytics(tracker_id)
|
|
64
|
-
html_fragment do |html|
|
|
65
|
-
html.script(type: 'text/javascript') do
|
|
66
|
-
html << %Q{
|
|
67
|
-
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
|
68
|
-
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
|
69
|
-
}
|
|
70
|
-
end
|
|
71
|
-
html.script(type: 'text/javascript') do
|
|
72
|
-
html << %Q{
|
|
73
|
-
try {
|
|
74
|
-
var pageTracker = _gat._getTracker("#{tracker_id}");
|
|
75
|
-
pageTracker._trackPageview();
|
|
76
|
-
} catch(err) {}
|
|
77
|
-
}
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def link_if(state, html, &block)
|
|
83
|
-
elem = html_fragment { |h| yield(h) }
|
|
84
|
-
if state
|
|
85
|
-
html.a(href: uri) { html << elem.to_html }
|
|
86
|
-
else
|
|
87
|
-
html << elem.to_html
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
class PreText < String
|
|
92
|
-
|
|
93
|
-
def to_html
|
|
94
|
-
html_fragment do |html|
|
|
95
|
-
html.pre(self)
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
class ::String
|
|
102
|
-
|
|
103
|
-
Converters = {
|
|
104
|
-
nil => RubyPants,
|
|
105
|
-
smart_quotes: RubyPants,
|
|
106
|
-
markdown: Kramdown::Document,
|
|
107
|
-
textile: RedCloth,
|
|
108
|
-
pre: PreText,
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
def to_html(options={})
|
|
112
|
-
converter = Converters[options[:mode]] or raise "Unknown to_html mode: #{options[:mode].inspect}"
|
|
113
|
-
html = Nokogiri::HTML::DocumentFragment.parse(converter.new(self).to_html)
|
|
114
|
-
if !options[:multiline] && (p_elem = html.at_xpath('p'))
|
|
115
|
-
html = p_elem.children.to_html
|
|
116
|
-
end
|
|
117
|
-
html.to_html
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
end
|