mill 0.16 → 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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/Rakefile +1 -9
  4. data/TODO.md +4 -0
  5. data/bin/mill +1 -27
  6. data/lib/mill/command.rb +13 -0
  7. data/lib/mill/commands/build.rb +17 -0
  8. data/lib/mill/commands/check.rb +16 -0
  9. data/lib/mill/commands/diff.rb +18 -0
  10. data/lib/mill/commands/list.rb +20 -0
  11. data/lib/mill/commands/snapshot.rb +20 -0
  12. data/lib/mill/commands/tree.rb +17 -0
  13. data/lib/mill/commands/types.rb +18 -0
  14. data/lib/mill/commands/upload.rb +24 -0
  15. data/lib/mill/config.rb +27 -0
  16. data/lib/mill/resource.rb +74 -87
  17. data/lib/mill/resources/blob.rb +4 -0
  18. data/lib/mill/resources/feed.rb +5 -13
  19. data/lib/mill/resources/image.rb +10 -18
  20. data/lib/mill/resources/markdown.rb +20 -0
  21. data/lib/mill/resources/markup.rb +62 -0
  22. data/lib/mill/resources/page.rb +140 -0
  23. data/lib/mill/resources/redirect.rb +17 -16
  24. data/lib/mill/resources/robots.rb +3 -4
  25. data/lib/mill/resources/sitemap.rb +3 -5
  26. data/lib/mill/resources/stylesheet.rb +4 -4
  27. data/lib/mill/resources/textile.rb +27 -0
  28. data/lib/mill/resources.rb +89 -0
  29. data/lib/mill/site.rb +182 -283
  30. data/lib/mill.rb +27 -9
  31. data/mill.gemspec +19 -19
  32. data/test/content/c.md +4 -0
  33. data/test/content/d.md +4 -0
  34. data/test/main_test.rb +68 -0
  35. data/test/mill.yaml +8 -0
  36. metadata +118 -51
  37. data/Gemfile +0 -6
  38. data/TODO.txt +0 -61
  39. data/lib/mill/html_helpers.rb +0 -128
  40. data/lib/mill/navigator.rb +0 -61
  41. data/lib/mill/resources/dir.rb +0 -31
  42. data/lib/mill/resources/google_site_verification.rb +0 -30
  43. data/lib/mill/resources/text.rb +0 -218
  44. data/lib/mill/version.rb +0 -5
  45. data/test/test.rb +0 -56
data/mill.gemspec CHANGED
@@ -1,10 +1,6 @@
1
- #encoding: utf-8
2
-
3
- require_relative 'lib/mill/version'
4
-
5
1
  Gem::Specification.new do |s|
6
2
  s.name = 'mill'
7
- s.version = Mill::VERSION
3
+ s.version = '0.18'
8
4
  s.summary = 'A simple but useful static site generator.'
9
5
  s.author = 'John Labovitz'
10
6
  s.email = 'johnl@johnlabovitz.com'
@@ -12,28 +8,32 @@ Gem::Specification.new do |s|
12
8
  Mill provides a simple but useful static site generator.
13
9
  }
14
10
  s.license = 'MIT'
15
- s.homepage = 'http://github.com/jslabovitz/mill'
11
+ s.homepage = 'https://github.com/jslabovitz/mill'
16
12
  s.files = `git ls-files`.split("\n")
17
13
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
14
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
15
  s.require_path = 'lib'
20
16
 
21
- s.add_dependency 'addressable', '~> 2.7'
22
- s.add_dependency 'image_size', '~> 2.1'
23
- s.add_dependency 'kramdown', '~> 2.3'
24
- s.add_dependency 'mime-types', '~> 3.3'
25
- s.add_dependency 'nokogiri', '~> 1.10'
26
- s.add_dependency 'path', '~> 2.0'
17
+ s.add_dependency 'addressable', '~> 2.8'
18
+ s.add_dependency 'hashstruct', '~> 1.6'
19
+ s.add_dependency 'http', '~> 5.3'
20
+ s.add_dependency 'image_size', '~> 3.4'
21
+ s.add_dependency 'kramdown', '~> 2.5'
22
+ s.add_dependency 'mime-types', '~> 3.7'
23
+ s.add_dependency 'nokogiri', '~> 1.18'
24
+ s.add_dependency 'path', '~> 2.1'
27
25
  s.add_dependency 'RedCloth', '~> 4.3'
28
26
  s.add_dependency 'rubypants', '~> 0.7'
29
- s.add_dependency 'rubytree', '~> 1.0'
27
+ s.add_dependency 'rubytree', '~> 2.1'
30
28
  s.add_dependency 'sassc', '~> 2.4'
31
- s.add_dependency 'web-checker', '~> 0.4'
29
+ s.add_dependency 'set_params', '~> 0.3'
30
+ s.add_dependency 'simple-builder', '~> 0.4'
31
+ s.add_dependency 'simple-command-parser', '~> 1.2'
32
+ s.add_dependency 'simple-configurator', '~> 0.2'
33
+ s.add_dependency 'simple-printer', '~> 0.4'
32
34
 
33
- s.add_development_dependency 'bundler', '~> 2.2'
34
- s.add_development_dependency 'minitest', '~> 5.14'
35
+ s.add_development_dependency 'minitest', '~> 5.26'
35
36
  s.add_development_dependency 'minitest-power_assert', '~> 0.3'
36
- s.add_development_dependency 'pry', '~> 0.13'
37
- s.add_development_dependency 'rake', '~> 13.0'
38
- s.add_development_dependency 'rubygems-tasks', '~> 0.2'
37
+ s.add_development_dependency 'rake', '~> 13.3'
38
+ s.add_development_dependency 'simple-rake-tasks', '~> 0.1'
39
39
  end
data/test/content/c.md ADDED
@@ -0,0 +1,4 @@
1
+ Title: c
2
+ Primary: false
3
+
4
+ This is c.
data/test/content/d.md ADDED
@@ -0,0 +1,4 @@
1
+ Title: d
2
+ Draft: true
3
+
4
+ This is d.
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
@@ -0,0 +1,8 @@
1
+ input_dir: content
2
+ output_dir: output
3
+ site_title: Test
4
+ site_uri: http://test.test
5
+ make_error: false
6
+ make_feed: false
7
+ make_sitemap: false
8
+ make_robots: false
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.16'
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: 2020-12-31 00:00:00.000000000 Z
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.7'
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.7'
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: '2.1'
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: '2.1'
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: '2.3'
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: '2.3'
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.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.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.10'
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.10'
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.0'
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.0'
123
+ version: '2.1'
97
124
  - !ruby/object:Gem::Dependency
98
125
  name: RedCloth
99
126
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +155,14 @@ dependencies:
128
155
  requirements:
129
156
  - - "~>"
130
157
  - !ruby/object:Gem::Version
131
- version: '1.0'
158
+ version: '2.1'
132
159
  type: :runtime
133
160
  prerelease: false
134
161
  version_requirements: !ruby/object:Gem::Requirement
135
162
  requirements:
136
163
  - - "~>"
137
164
  - !ruby/object:Gem::Version
138
- version: '1.0'
165
+ version: '2.1'
139
166
  - !ruby/object:Gem::Dependency
140
167
  name: sassc
141
168
  requirement: !ruby/object:Gem::Requirement
@@ -151,7 +178,21 @@ dependencies:
151
178
  - !ruby/object:Gem::Version
152
179
  version: '2.4'
153
180
  - !ruby/object:Gem::Dependency
154
- name: web-checker
181
+ name: set_params
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.3'
187
+ type: :runtime
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '0.3'
194
+ - !ruby/object:Gem::Dependency
195
+ name: simple-builder
155
196
  requirement: !ruby/object:Gem::Requirement
156
197
  requirements:
157
198
  - - "~>"
@@ -165,89 +206,103 @@ dependencies:
165
206
  - !ruby/object:Gem::Version
166
207
  version: '0.4'
167
208
  - !ruby/object:Gem::Dependency
168
- name: bundler
209
+ name: simple-command-parser
169
210
  requirement: !ruby/object:Gem::Requirement
170
211
  requirements:
171
212
  - - "~>"
172
213
  - !ruby/object:Gem::Version
173
- version: '2.2'
174
- type: :development
214
+ version: '1.2'
215
+ type: :runtime
175
216
  prerelease: false
176
217
  version_requirements: !ruby/object:Gem::Requirement
177
218
  requirements:
178
219
  - - "~>"
179
220
  - !ruby/object:Gem::Version
180
- version: '2.2'
221
+ version: '1.2'
181
222
  - !ruby/object:Gem::Dependency
182
- name: minitest
223
+ name: simple-configurator
183
224
  requirement: !ruby/object:Gem::Requirement
184
225
  requirements:
185
226
  - - "~>"
186
227
  - !ruby/object:Gem::Version
187
- version: '5.14'
188
- type: :development
228
+ version: '0.2'
229
+ type: :runtime
189
230
  prerelease: false
190
231
  version_requirements: !ruby/object:Gem::Requirement
191
232
  requirements:
192
233
  - - "~>"
193
234
  - !ruby/object:Gem::Version
194
- version: '5.14'
235
+ version: '0.2'
195
236
  - !ruby/object:Gem::Dependency
196
- name: minitest-power_assert
237
+ name: simple-printer
197
238
  requirement: !ruby/object:Gem::Requirement
198
239
  requirements:
199
240
  - - "~>"
200
241
  - !ruby/object:Gem::Version
201
- version: '0.3'
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'
202
257
  type: :development
203
258
  prerelease: false
204
259
  version_requirements: !ruby/object:Gem::Requirement
205
260
  requirements:
206
261
  - - "~>"
207
262
  - !ruby/object:Gem::Version
208
- version: '0.3'
263
+ version: '5.26'
209
264
  - !ruby/object:Gem::Dependency
210
- name: pry
265
+ name: minitest-power_assert
211
266
  requirement: !ruby/object:Gem::Requirement
212
267
  requirements:
213
268
  - - "~>"
214
269
  - !ruby/object:Gem::Version
215
- version: '0.13'
270
+ version: '0.3'
216
271
  type: :development
217
272
  prerelease: false
218
273
  version_requirements: !ruby/object:Gem::Requirement
219
274
  requirements:
220
275
  - - "~>"
221
276
  - !ruby/object:Gem::Version
222
- version: '0.13'
277
+ version: '0.3'
223
278
  - !ruby/object:Gem::Dependency
224
279
  name: rake
225
280
  requirement: !ruby/object:Gem::Requirement
226
281
  requirements:
227
282
  - - "~>"
228
283
  - !ruby/object:Gem::Version
229
- version: '13.0'
284
+ version: '13.3'
230
285
  type: :development
231
286
  prerelease: false
232
287
  version_requirements: !ruby/object:Gem::Requirement
233
288
  requirements:
234
289
  - - "~>"
235
290
  - !ruby/object:Gem::Version
236
- version: '13.0'
291
+ version: '13.3'
237
292
  - !ruby/object:Gem::Dependency
238
- name: rubygems-tasks
293
+ name: simple-rake-tasks
239
294
  requirement: !ruby/object:Gem::Requirement
240
295
  requirements:
241
296
  - - "~>"
242
297
  - !ruby/object:Gem::Version
243
- version: '0.2'
298
+ version: '0.1'
244
299
  type: :development
245
300
  prerelease: false
246
301
  version_requirements: !ruby/object:Gem::Requirement
247
302
  requirements:
248
303
  - - "~>"
249
304
  - !ruby/object:Gem::Version
250
- version: '0.2'
305
+ version: '0.1'
251
306
  description: "\n Mill provides a simple but useful static site generator.\n "
252
307
  email: johnl@johnlabovitz.com
253
308
  executables:
@@ -256,41 +311,51 @@ extensions: []
256
311
  extra_rdoc_files: []
257
312
  files:
258
313
  - ".gitignore"
259
- - Gemfile
260
314
  - LICENSE
261
315
  - README.md
262
316
  - Rakefile
263
- - TODO.txt
317
+ - TODO.md
264
318
  - bin/mill
265
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
266
330
  - lib/mill/error.rb
267
- - lib/mill/html_helpers.rb
268
- - lib/mill/navigator.rb
269
331
  - lib/mill/resource.rb
332
+ - lib/mill/resources.rb
270
333
  - lib/mill/resources/blob.rb
271
- - lib/mill/resources/dir.rb
272
334
  - lib/mill/resources/feed.rb
273
- - lib/mill/resources/google_site_verification.rb
274
335
  - lib/mill/resources/image.rb
336
+ - lib/mill/resources/markdown.rb
337
+ - lib/mill/resources/markup.rb
338
+ - lib/mill/resources/page.rb
275
339
  - lib/mill/resources/redirect.rb
276
340
  - lib/mill/resources/robots.rb
277
341
  - lib/mill/resources/sitemap.rb
278
342
  - lib/mill/resources/stylesheet.rb
279
- - lib/mill/resources/text.rb
343
+ - lib/mill/resources/textile.rb
280
344
  - lib/mill/site.rb
281
- - lib/mill/version.rb
282
345
  - mill.gemspec
283
346
  - test/content/a.md
284
347
  - test/content/b/ba.md
285
348
  - test/content/b/bb.md
286
349
  - test/content/b/index.md
350
+ - test/content/c.md
351
+ - test/content/d.md
287
352
  - test/content/index.md
288
- - test/test.rb
289
- homepage: http://github.com/jslabovitz/mill
353
+ - test/main_test.rb
354
+ - test/mill.yaml
355
+ homepage: https://github.com/jslabovitz/mill
290
356
  licenses:
291
357
  - MIT
292
358
  metadata: {}
293
- post_install_message:
294
359
  rdoc_options: []
295
360
  require_paths:
296
361
  - lib
@@ -305,8 +370,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
370
  - !ruby/object:Gem::Version
306
371
  version: '0'
307
372
  requirements: []
308
- rubygems_version: 3.2.3
309
- signing_key:
373
+ rubygems_version: 3.7.2
310
374
  specification_version: 4
311
375
  summary: A simple but useful static site generator.
312
376
  test_files:
@@ -314,5 +378,8 @@ test_files:
314
378
  - test/content/b/ba.md
315
379
  - test/content/b/bb.md
316
380
  - test/content/b/index.md
381
+ - test/content/c.md
382
+ - test/content/d.md
317
383
  - test/content/index.md
318
- - test/test.rb
384
+ - test/main_test.rb
385
+ - test/mill.yaml
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
4
-
5
- gem 'path', github: 'eregon/path'
6
- gem 'rubytree', github: 'evolve75/RubyTree'
data/TODO.txt DELETED
@@ -1,61 +0,0 @@
1
- - remove textile/pre processors from Resource::Text
2
- - streamline to allow domain-specific subclassing if needed
3
-
4
- - initialize site by setting ivars directly, not by passing params to super's initialize()
5
-
6
- - create alternate sites (beta, final, etc.) by subclassing site, and changing @output or @location
7
- - allow CLI option to specify site
8
-
9
- - rework resource URI usage
10
- - 'uri' attribute should be canonical
11
- - 'output_file' should be derived from @site.output_dir + uri
12
- - URIs should be fully qualified
13
- - start with '/'
14
- - have extension according to file type
15
- - referencing URIs should follow server rules (e.g., / -> /index.html)
16
- - #shorten_uris should only apply to writing final files
17
-
18
- - combine @input_file & @content?
19
- - if @content.kind_of?(Path): copy
20
- - else: write as string
21
-
22
- - rename Resource #load to #import
23
- - uses path argument instead of @input_file
24
- - sets @content to path
25
- - sets @date to mtime of path
26
- - subclasses should:
27
- - call super
28
- - subclasses may:
29
- - assigned @content
30
- - change URI
31
-
32
- - rename Resource #build to #process
33
-
34
- - formalize widget creation & access
35
- - any object that responds to #to_html
36
- - doesn't have to be specific class (e.g., Mill::Widget)
37
- - object that is used across site
38
- - possibly with different states or parameters (eg, navigation)
39
- - built from current html_fragment use
40
- - eg:
41
- - navigation
42
- - buy buttons
43
- - Google Analytics bug
44
- - link to resource (<a ...>)
45
- - sidebars
46
- - strings (existing String extensions)
47
-
48
- - split Resource#date into Resource#published & Resource#updated
49
- + add <published> element to feed
50
- + #published should be stated date (e.g., from header)
51
- + #updated should be mtime of source file
52
-
53
- - make Navigator into more generic Collection
54
- + include Enumerable
55
-
56
- - make Resource::External for external links?
57
- + add on import of HTML (by examining href/src/etc attributes)
58
-
59
- - save compressed versions of files
60
- - write compressed versions along with non-compressed
61
- - serve compressed versions if asked by client