nanoc 4.0.0a2 → 4.0.0b1
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/Gemfile.lock +16 -2
- data/NEWS.md +23 -1
- data/lib/nanoc/base/compilation/compiler.rb +4 -3
- data/lib/nanoc/base/compilation/compiler_dsl.rb +9 -5
- data/lib/nanoc/base/compilation/filter.rb +2 -0
- data/lib/nanoc/base/source_data/identifier.rb +12 -1
- data/lib/nanoc/base/views/item.rb +3 -16
- data/lib/nanoc/base/views/item_collection.rb +10 -0
- data/lib/nanoc/base/views/item_rep.rb +0 -75
- data/lib/nanoc/base/views/layout_collection.rb +34 -0
- data/lib/nanoc/base/views/site.rb +0 -20
- data/lib/nanoc/cli/commands/compile.rb +0 -3
- data/lib/nanoc/cli/commands/create-site.rb +1 -1
- data/lib/nanoc/cli/commands/shell.rb +1 -1
- data/lib/nanoc/helpers/capturing.rb +5 -5
- data/lib/nanoc/helpers/filtering.rb +3 -3
- data/lib/nanoc/helpers/rendering.rb +5 -4
- data/lib/nanoc/helpers/tagging.rb +3 -4
- data/lib/nanoc/version.rb +1 -1
- data/tasks/test.rake +1 -1
- data/test/base/test_compiler_dsl.rb +29 -0
- data/test/cli/commands/test_create_site.rb +10 -0
- data/test/filters/test_markaby.rb +0 -6
- data/test/helper.rb +0 -1
- data/test/helpers/test_capturing.rb +13 -11
- data/test/helpers/test_filtering.rb +6 -0
- data/test/helpers/test_rendering.rb +48 -9
- data/test/helpers/test_tagging.rb +5 -5
- metadata +2 -9
- data/lib/nanoc/tasks.rb +0 -11
- data/lib/nanoc/tasks/clean.rake +0 -16
- data/lib/nanoc/tasks/clean.rb +0 -23
- data/lib/nanoc/tasks/deploy/rsync.rake +0 -16
- data/lib/nanoc/tasks/validate.rake +0 -30
- data/test/extra/test_file_proxy.rb +0 -15
- data/test/tasks/test_clean.rb +0 -63
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90ed92857b63ba5cdfc7ea40b6f8a47d028a9dd4
|
|
4
|
+
data.tar.gz: 634df8e12745fe703ff012cea92e430a90dc5880
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0fcd435c5cfd92929ce88041689e8ad9cfe370194335a40d70ead941acdb22579a4741d53a3331bf75ff1cf248496233289140d207c0a734893859398b34306c
|
|
7
|
+
data.tar.gz: 3e19e77f09ae7a5afbc52cfadf2a53f10e267e2c4dba4c436b75b749181ec1972adcf07f4795015074ec799fec2bd7afeaf1b7fbe2afd90b8983c6c0fca0ca8d
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
nanoc (4.0.
|
|
4
|
+
nanoc (4.0.0b1)
|
|
5
5
|
cri (~> 2.3)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -9,6 +9,7 @@ GEM
|
|
|
9
9
|
specs:
|
|
10
10
|
CFPropertyList (2.3.1)
|
|
11
11
|
RedCloth (4.2.9)
|
|
12
|
+
RedCloth (4.2.9-java)
|
|
12
13
|
addressable (2.3.8)
|
|
13
14
|
adsf (1.2.0)
|
|
14
15
|
rack (>= 1.0.0)
|
|
@@ -49,6 +50,7 @@ GEM
|
|
|
49
50
|
excon (0.45.3)
|
|
50
51
|
execjs (2.5.2)
|
|
51
52
|
ffi (1.9.8)
|
|
53
|
+
ffi (1.9.8-java)
|
|
52
54
|
fission (0.5.0)
|
|
53
55
|
CFPropertyList (~> 2.2)
|
|
54
56
|
fog (1.30.0)
|
|
@@ -127,7 +129,7 @@ GEM
|
|
|
127
129
|
fog-serverlove (0.1.2)
|
|
128
130
|
fog-core
|
|
129
131
|
fog-json
|
|
130
|
-
fog-softlayer (0.4.
|
|
132
|
+
fog-softlayer (0.4.6)
|
|
131
133
|
fog-core
|
|
132
134
|
fog-json
|
|
133
135
|
fog-storm_on_demand (0.1.1)
|
|
@@ -154,11 +156,13 @@ GEM
|
|
|
154
156
|
therubyracer (~> 0.12.1)
|
|
155
157
|
handlebars-source (3.0.3)
|
|
156
158
|
hitimes (1.2.2)
|
|
159
|
+
hitimes (1.2.2-java)
|
|
157
160
|
http-cookie (1.0.2)
|
|
158
161
|
domain_name (~> 0.5)
|
|
159
162
|
inflecto (0.0.2)
|
|
160
163
|
ipaddress (0.8.0)
|
|
161
164
|
json (1.8.2)
|
|
165
|
+
json (1.8.2-java)
|
|
162
166
|
kramdown (1.7.0)
|
|
163
167
|
less (2.6.0)
|
|
164
168
|
commonjs (~> 0.2.7)
|
|
@@ -185,6 +189,7 @@ GEM
|
|
|
185
189
|
netrc (0.10.3)
|
|
186
190
|
nokogiri (1.6.6.2)
|
|
187
191
|
mini_portile (~> 0.6.0)
|
|
192
|
+
nokogiri (1.6.6.2-java)
|
|
188
193
|
pandoc-ruby (1.0.0)
|
|
189
194
|
parser (2.2.2.2)
|
|
190
195
|
ast (>= 1.1, < 3.0)
|
|
@@ -194,6 +199,11 @@ GEM
|
|
|
194
199
|
coderay (~> 1.1.0)
|
|
195
200
|
method_source (~> 0.8.1)
|
|
196
201
|
slop (~> 3.4)
|
|
202
|
+
pry (0.10.1-java)
|
|
203
|
+
coderay (~> 1.1.0)
|
|
204
|
+
method_source (~> 0.8.1)
|
|
205
|
+
slop (~> 3.4)
|
|
206
|
+
spoon (~> 0.0)
|
|
197
207
|
pygments.rb (0.6.3)
|
|
198
208
|
posix-spawn (~> 0.3.6)
|
|
199
209
|
yajl-ruby (~> 1.2.0)
|
|
@@ -245,6 +255,8 @@ GEM
|
|
|
245
255
|
temple (~> 0.7.3)
|
|
246
256
|
tilt (>= 1.3.3, < 2.1)
|
|
247
257
|
slop (3.6.0)
|
|
258
|
+
spoon (0.0.4)
|
|
259
|
+
ffi
|
|
248
260
|
temple (0.7.5)
|
|
249
261
|
term-ansicolor (1.3.0)
|
|
250
262
|
tins (~> 1.0)
|
|
@@ -263,6 +275,7 @@ GEM
|
|
|
263
275
|
json (>= 1.8.0)
|
|
264
276
|
unf (0.1.4)
|
|
265
277
|
unf_ext
|
|
278
|
+
unf (0.1.4-java)
|
|
266
279
|
unf_ext (0.0.7.1)
|
|
267
280
|
vcr (2.9.3)
|
|
268
281
|
w3c_validators (1.2)
|
|
@@ -276,6 +289,7 @@ GEM
|
|
|
276
289
|
yuicompressor (1.3.3)
|
|
277
290
|
|
|
278
291
|
PLATFORMS
|
|
292
|
+
java
|
|
279
293
|
ruby
|
|
280
294
|
|
|
281
295
|
DEPENDENCIES
|
data/NEWS.md
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
# nanoc news
|
|
2
2
|
|
|
3
|
-
## 4.0.
|
|
3
|
+
## 4.0.0b1 (2015-05-??)
|
|
4
|
+
|
|
5
|
+
Changes:
|
|
6
|
+
|
|
7
|
+
* Removed tasks
|
|
8
|
+
* Removed several private methods in the view API
|
|
9
|
+
* Removed default `base_url` in tagging helper
|
|
10
|
+
|
|
11
|
+
Enhancements:
|
|
12
|
+
|
|
13
|
+
* Removed unused options from CLI
|
|
14
|
+
* Added `Nanoc::Identifier#without_ext`
|
|
15
|
+
* Made `Nanoc::Identifier#=~` work with a glob
|
|
16
|
+
* Added `Nanoc::LayoutCollectionView#[]`
|
|
17
|
+
* Added `--force` to `create-site` command (#549) [David Alexander]
|
|
18
|
+
|
|
19
|
+
Fixes:
|
|
20
|
+
|
|
21
|
+
* Fixed `#passthrough` for identifiers with extensions
|
|
22
|
+
* Fixed rendering helper for identifiers with extensions
|
|
23
|
+
* Fixed filtering helper
|
|
24
|
+
|
|
25
|
+
## 4.0.0a2 (2015-05-12)
|
|
4
26
|
|
|
5
27
|
Features:
|
|
6
28
|
|
|
@@ -336,9 +336,10 @@ module Nanoc::Int
|
|
|
336
336
|
compile_rep(rep)
|
|
337
337
|
content_dependency_graph.delete_vertex(rep)
|
|
338
338
|
rescue Nanoc::Int::Errors::UnmetDependency => e
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
339
|
+
other_rep = e.rep.unwrap rescue e.rep
|
|
340
|
+
content_dependency_graph.add_edge(other_rep, rep)
|
|
341
|
+
unless content_dependency_graph.vertices.include?(other_rep)
|
|
342
|
+
content_dependency_graph.add_vertex(other_rep)
|
|
342
343
|
end
|
|
343
344
|
end
|
|
344
345
|
end
|
|
@@ -194,11 +194,15 @@ module Nanoc::Int
|
|
|
194
194
|
|
|
195
195
|
# Create routing rule
|
|
196
196
|
routing_block = proc do
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
197
|
+
if item.identifier.full?
|
|
198
|
+
item.identifier.to_s
|
|
199
|
+
else
|
|
200
|
+
# This is a temporary solution until an item can map back to its data
|
|
201
|
+
# source.
|
|
202
|
+
# ATM item[:content_filename] is nil for items coming from the static
|
|
203
|
+
# data source.
|
|
204
|
+
item[:extension].nil? || (item[:content_filename].nil? && item.identifier =~ %r{#{item[:extension]}/$}) ? item.identifier.chop : item.identifier.chop + '.' + item[:extension]
|
|
205
|
+
end
|
|
202
206
|
end
|
|
203
207
|
routing_rule = Nanoc::Int::Rule.new(create_pattern(identifier), rep_name, routing_block, snapshot_name: :last)
|
|
204
208
|
@rules_collection.add_item_routing_rule(routing_rule)
|
|
@@ -43,13 +43,19 @@ module Nanoc
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def =~(pat)
|
|
46
|
-
to_s
|
|
46
|
+
Nanoc::Int::Pattern.from(pat).match?(to_s) ? 0 : nil
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def <=>(other)
|
|
50
50
|
to_s <=> other.to_s
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
# @return [Boolean] True if this is a full-style identifier (i.e. includes
|
|
54
|
+
# the extension), false otherwise
|
|
55
|
+
def full?
|
|
56
|
+
@style == :full
|
|
57
|
+
end
|
|
58
|
+
|
|
53
59
|
# @return [String]
|
|
54
60
|
def chop
|
|
55
61
|
to_s.chop
|
|
@@ -97,6 +103,11 @@ module Nanoc
|
|
|
97
103
|
end
|
|
98
104
|
end
|
|
99
105
|
|
|
106
|
+
# @return [String]
|
|
107
|
+
def without_ext
|
|
108
|
+
with_ext('')
|
|
109
|
+
end
|
|
110
|
+
|
|
100
111
|
def to_s
|
|
101
112
|
@string
|
|
102
113
|
end
|
|
@@ -125,12 +125,9 @@ module Nanoc
|
|
|
125
125
|
@item.raw_content
|
|
126
126
|
end
|
|
127
127
|
|
|
128
|
-
#
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
# @api private
|
|
128
|
+
# Returns the representations of this item.
|
|
129
|
+
#
|
|
130
|
+
# @return [Enumerable<Nanoc::ItemRepView>]
|
|
134
131
|
def reps
|
|
135
132
|
@item.reps.map { |r| Nanoc::ItemRepView.new(r) }
|
|
136
133
|
end
|
|
@@ -139,15 +136,5 @@ module Nanoc
|
|
|
139
136
|
def raw_filename
|
|
140
137
|
@item.raw_filename
|
|
141
138
|
end
|
|
142
|
-
|
|
143
|
-
# @api private
|
|
144
|
-
def forced_outdated?
|
|
145
|
-
@item.forced_outdated?
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
# @api private
|
|
149
|
-
def __nanoc_checksum
|
|
150
|
-
@item.__nanoc_checksum
|
|
151
|
-
end
|
|
152
139
|
end
|
|
153
140
|
end
|
|
@@ -50,6 +50,16 @@ module Nanoc
|
|
|
50
50
|
item && view_class.new(item)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
# Finds all items whose identifier matches the given argument.
|
|
54
|
+
#
|
|
55
|
+
# @param [String, Regex] arg
|
|
56
|
+
#
|
|
57
|
+
# @return [Enumerable<Nanoc::ItemView>]
|
|
58
|
+
def find_all(arg)
|
|
59
|
+
pat = Nanoc::Int::Pattern.from(arg)
|
|
60
|
+
@items.select { |i| pat.match?(i.identifier) }
|
|
61
|
+
end
|
|
62
|
+
|
|
53
63
|
# @overload [](string)
|
|
54
64
|
#
|
|
55
65
|
# Finds the item whose identifier matches the given string.
|
|
@@ -60,89 +60,14 @@ module Nanoc
|
|
|
60
60
|
Nanoc::ItemView.new(@item_rep.item)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
# @api private
|
|
64
|
-
def to_recording_proxy
|
|
65
|
-
@item_rep.to_recording_proxy
|
|
66
|
-
end
|
|
67
|
-
|
|
68
63
|
# @api private
|
|
69
64
|
def raw_path(params = {})
|
|
70
65
|
@item_rep.raw_path(params)
|
|
71
66
|
end
|
|
72
67
|
|
|
73
|
-
# @api private
|
|
74
|
-
def compiled?
|
|
75
|
-
@item_rep.compiled?
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# @api private
|
|
79
|
-
def compiled=(new_compiled)
|
|
80
|
-
@item_rep.compiled = new_compiled
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# @api private
|
|
84
|
-
def forget_progress
|
|
85
|
-
@item_rep.forget_progress
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# @api private
|
|
89
|
-
def assigns
|
|
90
|
-
@item_rep.assigns
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# @api private
|
|
94
|
-
def assigns=(new_assigns)
|
|
95
|
-
@item_rep.assigns = new_assigns
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# @api private
|
|
99
|
-
def type
|
|
100
|
-
@item_rep.type
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# @api private
|
|
104
|
-
def reference
|
|
105
|
-
@item_rep.reference
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# @api private
|
|
109
|
-
def snapshot(snapshot_name, params = {})
|
|
110
|
-
@item_rep.snapshot(snapshot_name, params)
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# @api private
|
|
114
|
-
def filter(filter_name, filter_args = {})
|
|
115
|
-
@item_rep.filter(filter_name, filter_args)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# @api private
|
|
119
|
-
def layout(layout, filter_name, filter_args)
|
|
120
|
-
@item_rep.layout(layout, filter_name, filter_args)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# @api private
|
|
124
|
-
def proxy?
|
|
125
|
-
@item_rep.proxy?
|
|
126
|
-
end
|
|
127
|
-
|
|
128
68
|
# @api private
|
|
129
69
|
def binary?
|
|
130
70
|
@item_rep.binary?
|
|
131
71
|
end
|
|
132
|
-
|
|
133
|
-
# @api private
|
|
134
|
-
def has_snapshot?(snapshot_name)
|
|
135
|
-
@item_rep.has_snapshot?(snapshot_name)
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
# @api private
|
|
139
|
-
def content
|
|
140
|
-
@item_rep.content
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
# @api private
|
|
144
|
-
def temporary_filenames
|
|
145
|
-
@item_rep.temporary_filenames
|
|
146
|
-
end
|
|
147
72
|
end
|
|
148
73
|
end
|
|
@@ -28,5 +28,39 @@ module Nanoc
|
|
|
28
28
|
@layouts.each { |l| yield view_class.new(l) }
|
|
29
29
|
self
|
|
30
30
|
end
|
|
31
|
+
|
|
32
|
+
# @overload [](string)
|
|
33
|
+
#
|
|
34
|
+
# Finds the item whose identifier matches the given string.
|
|
35
|
+
#
|
|
36
|
+
# If the glob syntax is enabled, the string can be a glob, in which case
|
|
37
|
+
# this method finds the first item that matches the given glob.
|
|
38
|
+
#
|
|
39
|
+
# @param [String] string
|
|
40
|
+
#
|
|
41
|
+
# @return [nil] if no item matches the string
|
|
42
|
+
#
|
|
43
|
+
# @return [Nanoc::ItemView] if an item was found
|
|
44
|
+
#
|
|
45
|
+
# @overload [](regex)
|
|
46
|
+
#
|
|
47
|
+
# Finds the item whose identifier matches the given regular expression.
|
|
48
|
+
#
|
|
49
|
+
# @param [Regex] regex
|
|
50
|
+
#
|
|
51
|
+
# @return [nil] if no item matches the regex
|
|
52
|
+
#
|
|
53
|
+
# @return [Nanoc::ItemView] if an item was found
|
|
54
|
+
def [](arg)
|
|
55
|
+
layout = @layouts.find { |l| l.identifier == arg }
|
|
56
|
+
return view_class.new(layout) if layout
|
|
57
|
+
|
|
58
|
+
# FIXME: this should only work if globs are enabled
|
|
59
|
+
pat = Nanoc::Int::Pattern.from(arg)
|
|
60
|
+
layout = @layouts.find { |l| pat.match?(l.identifier) }
|
|
61
|
+
return view_class.new(layout) if layout
|
|
62
|
+
|
|
63
|
+
nil
|
|
64
|
+
end
|
|
31
65
|
end
|
|
32
66
|
end
|
|
@@ -11,25 +11,5 @@ module Nanoc
|
|
|
11
11
|
def unwrap
|
|
12
12
|
@site
|
|
13
13
|
end
|
|
14
|
-
|
|
15
|
-
# @api private
|
|
16
|
-
def layouts
|
|
17
|
-
@site.layouts.map { |l| Nanoc::LayoutView.new(l) }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# @api private
|
|
21
|
-
def captures_store
|
|
22
|
-
@site.captures_store
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# @api private
|
|
26
|
-
def captures_store_compiled_items
|
|
27
|
-
@site.captures_store_compiled_items
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# @api private
|
|
31
|
-
def compiler
|
|
32
|
-
@site.compiler
|
|
33
|
-
end
|
|
34
14
|
end
|
|
35
15
|
end
|
|
@@ -17,9 +17,6 @@ SKIP - The item was deemed not outdated and was therefore not recompiled
|
|
|
17
17
|
|
|
18
18
|
EOS
|
|
19
19
|
|
|
20
|
-
option :a, :all, '(ignored)'
|
|
21
|
-
option :f, :force, '(ignored)'
|
|
22
|
-
|
|
23
20
|
module Nanoc::CLI::Commands
|
|
24
21
|
class Compile < ::Nanoc::CLI::CommandRunner
|
|
25
22
|
extend Nanoc::Int::Memoization
|
|
@@ -280,7 +280,7 @@ EOS
|
|
|
280
280
|
data_source = options[:datasource] || 'filesystem_unified'
|
|
281
281
|
|
|
282
282
|
# Check whether site exists
|
|
283
|
-
if File.exist?(path)
|
|
283
|
+
if File.exist?(path) && (!File.directory?(path) || !(Dir.entries(path) - %w{ . .. }).empty?)
|
|
284
284
|
raise Nanoc::Int::Errors::GenericTrivial, "A site at '#{path}' already exists."
|
|
285
285
|
end
|
|
286
286
|
|
|
@@ -4,7 +4,7 @@ usage 'shell'
|
|
|
4
4
|
summary 'open a shell on the nanoc environment'
|
|
5
5
|
aliases 'console'
|
|
6
6
|
description "
|
|
7
|
-
Open an IRB shell on a context that contains @items, @layouts,
|
|
7
|
+
Open an IRB shell on a context that contains @items, @layouts, and @config.
|
|
8
8
|
"
|
|
9
9
|
|
|
10
10
|
module Nanoc::CLI::Commands
|
|
@@ -90,7 +90,7 @@ module Nanoc::Helpers
|
|
|
90
90
|
|
|
91
91
|
# Capture and store
|
|
92
92
|
content = capture(&block)
|
|
93
|
-
@site.captures_store[@item, name.to_sym] = content
|
|
93
|
+
@site.unwrap.captures_store[@item, name.to_sym] = content
|
|
94
94
|
else # Get content
|
|
95
95
|
# Get args
|
|
96
96
|
if args.size != 2
|
|
@@ -102,7 +102,7 @@ module Nanoc::Helpers
|
|
|
102
102
|
name = args[1]
|
|
103
103
|
|
|
104
104
|
# Create dependency
|
|
105
|
-
current_item = @site.compiler.dependency_tracker.top
|
|
105
|
+
current_item = @site.unwrap.compiler.dependency_tracker.top
|
|
106
106
|
if item != current_item
|
|
107
107
|
Nanoc::Int::NotificationCenter.post(:visit_started, item)
|
|
108
108
|
Nanoc::Int::NotificationCenter.post(:visit_ended, item)
|
|
@@ -111,8 +111,8 @@ module Nanoc::Helpers
|
|
|
111
111
|
# item from which we use content. For this, we need to manually edit
|
|
112
112
|
# the content attribute to reset it. :(
|
|
113
113
|
# FIXME: clean this up
|
|
114
|
-
unless @site.captures_store_compiled_items.include? item
|
|
115
|
-
@site.captures_store_compiled_items << item
|
|
114
|
+
unless @site.unwrap.captures_store_compiled_items.include? item
|
|
115
|
+
@site.unwrap.captures_store_compiled_items << item
|
|
116
116
|
item.forced_outdated = true
|
|
117
117
|
item.reps.each do |r|
|
|
118
118
|
raw_content = item.raw_content
|
|
@@ -123,7 +123,7 @@ module Nanoc::Helpers
|
|
|
123
123
|
end
|
|
124
124
|
|
|
125
125
|
# Get content
|
|
126
|
-
@site.captures_store[item, name.to_sym]
|
|
126
|
+
@site.unwrap.captures_store[item, name.to_sym]
|
|
127
127
|
end
|
|
128
128
|
end
|
|
129
129
|
|
|
@@ -33,12 +33,12 @@ module Nanoc::Helpers
|
|
|
33
33
|
# Find filter
|
|
34
34
|
klass = Nanoc::Filter.named(filter_name)
|
|
35
35
|
raise Nanoc::Int::Errors::UnknownFilter.new(filter_name) if klass.nil?
|
|
36
|
-
filter = klass.new(@item_rep.assigns)
|
|
36
|
+
filter = klass.new(@item_rep.unwrap.assigns)
|
|
37
37
|
|
|
38
38
|
# Filter captured data
|
|
39
|
-
Nanoc::Int::NotificationCenter.post(:filtering_started, @item_rep, filter_name)
|
|
39
|
+
Nanoc::Int::NotificationCenter.post(:filtering_started, @item_rep.unwrap, filter_name)
|
|
40
40
|
filtered_data = filter.setup_and_run(data, arguments)
|
|
41
|
-
Nanoc::Int::NotificationCenter.post(:filtering_ended, @item_rep, filter_name)
|
|
41
|
+
Nanoc::Int::NotificationCenter.post(:filtering_ended, @item_rep.unwrap, filter_name)
|
|
42
42
|
|
|
43
43
|
# Append filtered data to buffer
|
|
44
44
|
buffer = eval('_erbout', block.binding)
|
|
@@ -77,8 +77,9 @@ module Nanoc::Helpers
|
|
|
77
77
|
# invoked with a block
|
|
78
78
|
def render(identifier, other_assigns = {}, &block)
|
|
79
79
|
# Find layout
|
|
80
|
-
layout = @
|
|
81
|
-
|
|
80
|
+
layout = @layouts[identifier]
|
|
81
|
+
layout ||= @layouts[identifier.__nanoc_cleaned_identifier]
|
|
82
|
+
raise Nanoc::Int::Errors::UnknownLayout.new(identifier) if layout.nil?
|
|
82
83
|
|
|
83
84
|
# Visit
|
|
84
85
|
Nanoc::Int::NotificationCenter.post(:visit_started, layout)
|
|
@@ -93,14 +94,14 @@ module Nanoc::Helpers
|
|
|
93
94
|
item: @item,
|
|
94
95
|
item_rep: @item_rep,
|
|
95
96
|
items: @items,
|
|
96
|
-
layout: layout,
|
|
97
|
+
layout: Nanoc::LayoutView.new(layout),
|
|
97
98
|
layouts: @layouts,
|
|
98
99
|
config: @config,
|
|
99
100
|
site: @site
|
|
100
101
|
}.merge(other_assigns)
|
|
101
102
|
|
|
102
103
|
# Get filter name
|
|
103
|
-
filter_name, filter_args = @site.compiler.rules_collection.filter_for_layout(layout)
|
|
104
|
+
filter_name, filter_args = @site.unwrap.compiler.rules_collection.filter_for_layout(layout)
|
|
104
105
|
raise Nanoc::Int::Errors::CannotDetermineFilter.new(layout.identifier) if filter_name.nil?
|
|
105
106
|
|
|
106
107
|
# Get filter class
|
|
@@ -17,9 +17,8 @@ module Nanoc::Helpers
|
|
|
17
17
|
# tags will be linked using the {#link_for_tag} function; the
|
|
18
18
|
# HTML-escaping rules for {#link_for_tag} apply here as well.
|
|
19
19
|
#
|
|
20
|
-
# @option params [String] base_url
|
|
21
|
-
# to
|
|
22
|
-
# must have a trailing slash.
|
|
20
|
+
# @option params [String] base_url The URL to which the tag will be appended
|
|
21
|
+
# to construct the link URL. This URL must have a trailing slash.
|
|
23
22
|
#
|
|
24
23
|
# @option params [String] none_text ("(none)") The text to display when
|
|
25
24
|
# the item has no tags
|
|
@@ -29,7 +28,7 @@ module Nanoc::Helpers
|
|
|
29
28
|
#
|
|
30
29
|
# @return [String] A hyperlinked list of tags for the given item
|
|
31
30
|
def tags_for(item, params = {})
|
|
32
|
-
base_url = params
|
|
31
|
+
base_url = params.fetch(:base_url)
|
|
33
32
|
none_text = params[:none_text] || '(none)'
|
|
34
33
|
separator = params[:separator] || ', '
|
|
35
34
|
|
data/lib/nanoc/version.rb
CHANGED
data/tasks/test.rake
CHANGED
|
@@ -26,7 +26,7 @@ namespace :test do
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
# test:...
|
|
29
|
-
%w( base cli data_sources extra filters helpers
|
|
29
|
+
%w( base cli data_sources extra filters helpers ).each do |dir|
|
|
30
30
|
desc "Run all #{dir} tests"
|
|
31
31
|
task dir.to_sym do |_task|
|
|
32
32
|
run_tests "test/#{dir}/**/"
|
|
@@ -174,6 +174,35 @@ EOS
|
|
|
174
174
|
end
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
+
def test_passthrough_with_full_identifiers
|
|
178
|
+
with_site do
|
|
179
|
+
File.open('nanoc.yaml', 'w') do |io|
|
|
180
|
+
io << 'data_sources:' << "\n"
|
|
181
|
+
io << ' -' << "\n"
|
|
182
|
+
io << ' type: filesystem_unified' << "\n"
|
|
183
|
+
io << ' identifier_style: full' << "\n"
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Create rules
|
|
187
|
+
File.open('Rules', 'w') do |io|
|
|
188
|
+
io << 'passthrough \'*\''
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Create items
|
|
192
|
+
assert Dir['content/*'].empty?
|
|
193
|
+
File.open('content/robots.txt', 'w') do |io|
|
|
194
|
+
io.write 'Hello I am robots'
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Compile
|
|
198
|
+
site = Nanoc::Int::Site.new('.')
|
|
199
|
+
site.compile
|
|
200
|
+
|
|
201
|
+
# Check paths
|
|
202
|
+
assert_equal ['output/robots.txt'], Dir['output/*']
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
177
206
|
def test_ignore
|
|
178
207
|
with_site do
|
|
179
208
|
# Create rules
|
|
@@ -17,6 +17,16 @@ class Nanoc::CLI::Commands::CreateSiteTest < Nanoc::TestCase
|
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def test_can_compile_new_site_in_current_directory
|
|
21
|
+
FileUtils.mkdir('foo')
|
|
22
|
+
|
|
23
|
+
FileUtils.cd('foo') do
|
|
24
|
+
Nanoc::CLI.run %w( create_site ./ )
|
|
25
|
+
site = Nanoc::Int::Site.new('.')
|
|
26
|
+
site.compile
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
20
30
|
def test_can_compile_new_site_with_binary_items
|
|
21
31
|
Nanoc::CLI.run %w( create_site foo )
|
|
22
32
|
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
class Nanoc::Filters::MarkabyTest < Nanoc::TestCase
|
|
4
4
|
def test_filter
|
|
5
|
-
# Don’t run this test on 1.9.x, because it breaks and it annoys me
|
|
6
|
-
if RUBY_VERSION >= '1.9'
|
|
7
|
-
skip 'Markaby is not compatible with 1.9.x'
|
|
8
|
-
return
|
|
9
|
-
end
|
|
10
|
-
|
|
11
5
|
if_have 'markaby' do
|
|
12
6
|
# Create filter
|
|
13
7
|
filter = ::Nanoc::Filters::Markaby.new
|
data/test/helper.rb
CHANGED
|
@@ -17,9 +17,11 @@ class Nanoc::Helpers::CapturingTest < Nanoc::TestCase
|
|
|
17
17
|
'<% end %> foot'
|
|
18
18
|
|
|
19
19
|
# Build site
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
site = Nanoc::Int::Site.new({})
|
|
21
|
+
item = Nanoc::Int::Item.new('moo', {}, '/blah/')
|
|
22
|
+
item.site = site
|
|
23
|
+
@site = Nanoc::SiteView.new(Nanoc::Int::Site.new({}))
|
|
24
|
+
@item = Nanoc::ItemView.new(item)
|
|
23
25
|
|
|
24
26
|
# Evaluate content
|
|
25
27
|
result = ::ERB.new(content).result(binding)
|
|
@@ -33,8 +35,8 @@ class Nanoc::Helpers::CapturingTest < Nanoc::TestCase
|
|
|
33
35
|
require 'erb'
|
|
34
36
|
|
|
35
37
|
# Build site
|
|
36
|
-
@site = Nanoc::Int::Site.new({})
|
|
37
|
-
@item = Nanoc::Int::Item.new('moo', {}, '/blah/')
|
|
38
|
+
@site = Nanoc::SiteView.new(Nanoc::Int::Site.new({}))
|
|
39
|
+
@item = Nanoc::ItemView.new(Nanoc::Int::Item.new('moo', {}, '/blah/'))
|
|
38
40
|
|
|
39
41
|
# Capture
|
|
40
42
|
_erbout = 'foo'
|
|
@@ -67,8 +69,8 @@ head
|
|
|
67
69
|
foot
|
|
68
70
|
EOS
|
|
69
71
|
|
|
70
|
-
@site = Nanoc::Int::Site.new({})
|
|
71
|
-
@item = Nanoc::Int::Item.new('content', {}, '/')
|
|
72
|
+
@site = Nanoc::SiteView.new(Nanoc::Int::Site.new({}))
|
|
73
|
+
@item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', {}, '/'))
|
|
72
74
|
|
|
73
75
|
result = ::ERB.new(content).result(binding)
|
|
74
76
|
|
|
@@ -85,16 +87,16 @@ EOS
|
|
|
85
87
|
io.write "route '*' do ; item.identifier + 'index.html' ; end\n"
|
|
86
88
|
end
|
|
87
89
|
|
|
88
|
-
@site = Nanoc::Int::Site.new({})
|
|
89
|
-
@item = Nanoc::Int::Item.new('content', {}, '/')
|
|
90
|
+
@site = Nanoc::SiteView.new(Nanoc::Int::Site.new({}))
|
|
91
|
+
@item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', {}, '/'))
|
|
90
92
|
content = '<% content_for :a do %>Content One<% end %>'
|
|
91
93
|
::ERB.new(content).result(binding)
|
|
92
94
|
|
|
93
95
|
assert_equal 'Content One', content_for(@item, :a)
|
|
94
96
|
assert_equal nil, content_for(@item, :b)
|
|
95
97
|
|
|
96
|
-
@site = Nanoc::Int::Site.new({})
|
|
97
|
-
@item = Nanoc::Int::Item.new('content', {}, '/')
|
|
98
|
+
@site = Nanoc::SiteView.new(Nanoc::Int::Site.new({}))
|
|
99
|
+
@item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', {}, '/'))
|
|
98
100
|
content = '<% content_for :b do %>Content Two<% end %>'
|
|
99
101
|
::ERB.new(content).result(binding)
|
|
100
102
|
|
|
@@ -14,6 +14,7 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
|
14
14
|
# Mock item and rep
|
|
15
15
|
@item_rep = mock
|
|
16
16
|
@item_rep.expects(:assigns).returns({})
|
|
17
|
+
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
|
17
18
|
|
|
18
19
|
# Evaluate content
|
|
19
20
|
result = ::ERB.new(content).result(binding)
|
|
@@ -36,12 +37,14 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
|
36
37
|
@item = mock
|
|
37
38
|
@item.expects(:[]).with(:title).returns('Bar...')
|
|
38
39
|
@item.expects(:identifier).returns('/blah/')
|
|
40
|
+
@item = Nanoc::ItemView.new(@item)
|
|
39
41
|
@item_rep = mock
|
|
40
42
|
@item_rep.expects(:name).returns('default')
|
|
41
43
|
@item_rep.expects(:assigns).returns({
|
|
42
44
|
item: @item,
|
|
43
45
|
item_rep: @item_rep
|
|
44
46
|
})
|
|
47
|
+
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
|
45
48
|
|
|
46
49
|
# Evaluate content
|
|
47
50
|
result = ::ERB.new(content).result(binding)
|
|
@@ -75,6 +78,7 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
|
75
78
|
# Mock item and rep
|
|
76
79
|
@item_rep = mock
|
|
77
80
|
@item_rep.expects(:assigns).returns({})
|
|
81
|
+
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
|
78
82
|
|
|
79
83
|
# Evaluate content
|
|
80
84
|
result = ::ERB.new(content).result(binding)
|
|
@@ -93,6 +97,7 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
|
93
97
|
# Mock item and rep
|
|
94
98
|
@item_rep = mock
|
|
95
99
|
@item_rep.expects(:assigns).returns({})
|
|
100
|
+
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
|
96
101
|
|
|
97
102
|
# Evaluate content
|
|
98
103
|
result = ::Haml::Engine.new(content).render(binding)
|
|
@@ -113,6 +118,7 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
|
113
118
|
# Mock item and rep
|
|
114
119
|
@item_rep = mock
|
|
115
120
|
@item_rep.expects(:assigns).returns({})
|
|
121
|
+
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
|
116
122
|
|
|
117
123
|
::ERB.new(content).result(binding)
|
|
118
124
|
|
|
@@ -5,8 +5,6 @@ class Nanoc::Helpers::RenderingTest < Nanoc::TestCase
|
|
|
5
5
|
|
|
6
6
|
def test_render
|
|
7
7
|
with_site do |site|
|
|
8
|
-
@site = site
|
|
9
|
-
|
|
10
8
|
File.open('Rules', 'w') do |io|
|
|
11
9
|
io.write("layout '/foo/', :erb\n")
|
|
12
10
|
end
|
|
@@ -15,13 +13,51 @@ class Nanoc::Helpers::RenderingTest < Nanoc::TestCase
|
|
|
15
13
|
io.write 'This is the <%= @layout.identifier %> layout.'
|
|
16
14
|
end
|
|
17
15
|
|
|
16
|
+
@site = Nanoc::SiteView.new(site)
|
|
17
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
18
|
+
|
|
18
19
|
assert_equal('This is the /foo/ layout.', render('/foo/'))
|
|
19
20
|
end
|
|
20
21
|
end
|
|
21
22
|
|
|
23
|
+
def test_render_with_non_cleaned_identifier
|
|
24
|
+
with_site do |site|
|
|
25
|
+
File.open('Rules', 'w') do |io|
|
|
26
|
+
io.write("layout '/foo/', :erb\n")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
File.open('layouts/foo.erb', 'w') do |io|
|
|
30
|
+
io.write 'This is the <%= @layout.identifier %> layout.'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
@site = Nanoc::SiteView.new(site)
|
|
34
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
35
|
+
|
|
36
|
+
assert_equal('This is the /foo/ layout.', render('/foo'))
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_render_class
|
|
41
|
+
with_site do |site|
|
|
42
|
+
File.open('Rules', 'w') do |io|
|
|
43
|
+
io.write("layout '/foo/', :erb\n")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
File.open('layouts/foo.erb', 'w') do |io|
|
|
47
|
+
io.write 'I am the <%= @layout.class %> class.'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
@site = Nanoc::SiteView.new(site)
|
|
51
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
52
|
+
|
|
53
|
+
assert_equal('I am the Nanoc::LayoutView class.', render('/foo/'))
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
22
57
|
def test_render_with_unknown_layout
|
|
23
58
|
with_site do |site|
|
|
24
|
-
@site = site
|
|
59
|
+
@site = Nanoc::SiteView.new(site)
|
|
60
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
25
61
|
|
|
26
62
|
assert_raises(Nanoc::Int::Errors::UnknownLayout) do
|
|
27
63
|
render '/dsfghjkl/'
|
|
@@ -31,14 +67,15 @@ class Nanoc::Helpers::RenderingTest < Nanoc::TestCase
|
|
|
31
67
|
|
|
32
68
|
def test_render_without_filter
|
|
33
69
|
with_site do |site|
|
|
34
|
-
@site = site
|
|
35
|
-
|
|
36
70
|
File.open('Rules', 'w') do |io|
|
|
37
71
|
io.write("layout '/foo/', nil\n")
|
|
38
72
|
end
|
|
39
73
|
|
|
40
74
|
File.open('layouts/foo.erb', 'w').close
|
|
41
75
|
|
|
76
|
+
@site = Nanoc::SiteView.new(site)
|
|
77
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
78
|
+
|
|
42
79
|
assert_raises(Nanoc::Int::Errors::CannotDetermineFilter) do
|
|
43
80
|
render '/foo/'
|
|
44
81
|
end
|
|
@@ -47,14 +84,15 @@ class Nanoc::Helpers::RenderingTest < Nanoc::TestCase
|
|
|
47
84
|
|
|
48
85
|
def test_render_with_unknown_filter
|
|
49
86
|
with_site do |site|
|
|
50
|
-
@site = site
|
|
51
|
-
|
|
52
87
|
File.open('Rules', 'w') do |io|
|
|
53
88
|
io.write("layout '/foo/', :asdf\n")
|
|
54
89
|
end
|
|
55
90
|
|
|
56
91
|
File.open('layouts/foo.erb', 'w').close
|
|
57
92
|
|
|
93
|
+
@site = Nanoc::SiteView.new(site)
|
|
94
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
95
|
+
|
|
58
96
|
assert_raises(Nanoc::Int::Errors::UnknownFilter) do
|
|
59
97
|
render '/foo/'
|
|
60
98
|
end
|
|
@@ -63,8 +101,6 @@ class Nanoc::Helpers::RenderingTest < Nanoc::TestCase
|
|
|
63
101
|
|
|
64
102
|
def test_render_with_block
|
|
65
103
|
with_site do |site|
|
|
66
|
-
@site = site
|
|
67
|
-
|
|
68
104
|
File.open('Rules', 'w') do |io|
|
|
69
105
|
io.write("layout '/foo/', :erb\n")
|
|
70
106
|
end
|
|
@@ -73,6 +109,9 @@ class Nanoc::Helpers::RenderingTest < Nanoc::TestCase
|
|
|
73
109
|
io.write '[partial-before]<%= yield %>[partial-after]'
|
|
74
110
|
end
|
|
75
111
|
|
|
112
|
+
@site = Nanoc::SiteView.new(site)
|
|
113
|
+
@layouts = Nanoc::LayoutCollectionView.new(site.layouts)
|
|
114
|
+
|
|
76
115
|
_erbout = '[erbout-before]'
|
|
77
116
|
result = render '/foo/' do
|
|
78
117
|
_erbout << 'This is some extra content'
|
|
@@ -10,7 +10,7 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
|
10
10
|
# Check
|
|
11
11
|
assert_equal(
|
|
12
12
|
'(none)',
|
|
13
|
-
tags_for(item)
|
|
13
|
+
tags_for(item, base_url: 'http://example.com/tag/')
|
|
14
14
|
)
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -33,7 +33,7 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
|
33
33
|
# Check
|
|
34
34
|
assert_equal(
|
|
35
35
|
'no tags for you, fool',
|
|
36
|
-
tags_for(item, none_text: 'no tags for you, fool')
|
|
36
|
+
tags_for(item, none_text: 'no tags for you, fool', base_url: 'http://example.com/tag/')
|
|
37
37
|
)
|
|
38
38
|
end
|
|
39
39
|
|
|
@@ -43,9 +43,9 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
|
43
43
|
|
|
44
44
|
# Check
|
|
45
45
|
assert_equal(
|
|
46
|
-
"#{link_for_tag('foo', 'http://
|
|
47
|
-
"#{link_for_tag('bar', 'http://
|
|
48
|
-
tags_for(item, separator: ' ++ ')
|
|
46
|
+
"#{link_for_tag('foo', 'http://example.com/tag/')} ++ " \
|
|
47
|
+
"#{link_for_tag('bar', 'http://example.com/tag/')}",
|
|
48
|
+
tags_for(item, separator: ' ++ ', base_url: 'http://example.com/tag/')
|
|
49
49
|
)
|
|
50
50
|
end
|
|
51
51
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nanoc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.0.
|
|
4
|
+
version: 4.0.0b1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Denis Defreyne
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-05-
|
|
11
|
+
date: 2015-05-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: cri
|
|
@@ -213,11 +213,6 @@ files:
|
|
|
213
213
|
- lib/nanoc/helpers/tagging.rb
|
|
214
214
|
- lib/nanoc/helpers/text.rb
|
|
215
215
|
- lib/nanoc/helpers/xml_sitemap.rb
|
|
216
|
-
- lib/nanoc/tasks.rb
|
|
217
|
-
- lib/nanoc/tasks/clean.rake
|
|
218
|
-
- lib/nanoc/tasks/clean.rb
|
|
219
|
-
- lib/nanoc/tasks/deploy/rsync.rake
|
|
220
|
-
- lib/nanoc/tasks/validate.rake
|
|
221
216
|
- lib/nanoc/version.rb
|
|
222
217
|
- nanoc.gemspec
|
|
223
218
|
- tasks/doc.rake
|
|
@@ -278,7 +273,6 @@ files:
|
|
|
278
273
|
- test/extra/core_ext/test_time.rb
|
|
279
274
|
- test/extra/deployers/test_fog.rb
|
|
280
275
|
- test/extra/deployers/test_rsync.rb
|
|
281
|
-
- test/extra/test_file_proxy.rb
|
|
282
276
|
- test/extra/test_filesystem_tools.rb
|
|
283
277
|
- test/extra/test_link_collector.rb
|
|
284
278
|
- test/extra/test_piper.rb
|
|
@@ -326,7 +320,6 @@ files:
|
|
|
326
320
|
- test/helpers/test_tagging.rb
|
|
327
321
|
- test/helpers/test_text.rb
|
|
328
322
|
- test/helpers/test_xml_sitemap.rb
|
|
329
|
-
- test/tasks/test_clean.rb
|
|
330
323
|
- test/test_gem.rb
|
|
331
324
|
homepage: http://nanoc.ws/
|
|
332
325
|
licenses:
|
data/lib/nanoc/tasks.rb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'nanoc'
|
|
4
|
-
require 'rake'
|
|
5
|
-
|
|
6
|
-
# @api private
|
|
7
|
-
module Nanoc::Tasks
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
Dir[File.dirname(__FILE__) + '/tasks/**/*.rb'].each { |f| load f }
|
|
11
|
-
Dir[File.dirname(__FILE__) + '/tasks/**/*.rake'].each { |f| Rake.application.add_import(f) }
|
data/lib/nanoc/tasks/clean.rake
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
desc 'Remove output files generated by nanoc'
|
|
4
|
-
task :clean do
|
|
5
|
-
# Load site
|
|
6
|
-
site = Nanoc::Int::Site.new('.')
|
|
7
|
-
if site.nil?
|
|
8
|
-
$stderr.puts 'The current working directory does not seem to be a ' \
|
|
9
|
-
'valid/complete nanoc site directory; aborting.'
|
|
10
|
-
exit 1
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# Clean
|
|
14
|
-
clean = ::Nanoc::Tasks::Clean.new(site)
|
|
15
|
-
clean.run
|
|
16
|
-
end
|
data/lib/nanoc/tasks/clean.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Nanoc::Tasks
|
|
4
|
-
class Clean
|
|
5
|
-
def initialize(site)
|
|
6
|
-
@site = site
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def run
|
|
10
|
-
filenames.each do |filename|
|
|
11
|
-
FileUtils.rm_f filename unless filename.nil?
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def filenames
|
|
18
|
-
@site.items.map do |item|
|
|
19
|
-
item.reps.map(&:raw_path)
|
|
20
|
-
end.flatten
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'nanoc/cli'
|
|
4
|
-
|
|
5
|
-
namespace :deploy do
|
|
6
|
-
desc 'Upload the compiled site using rsync'
|
|
7
|
-
task :rsync do
|
|
8
|
-
dry_run = ENV['dry_run']
|
|
9
|
-
config_name = ENV['config'] || :default
|
|
10
|
-
|
|
11
|
-
cmd = ['deploy', '-t', config_name]
|
|
12
|
-
cmd << '-n' if dry_run
|
|
13
|
-
|
|
14
|
-
Nanoc::CLI.run cmd
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
namespace :validate do
|
|
4
|
-
desc 'Validate the site’s HTML files'
|
|
5
|
-
task :html do
|
|
6
|
-
Nanoc::CLI.run %w( validate_html )
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
desc 'Validate the site’s CSS files'
|
|
10
|
-
task :css do
|
|
11
|
-
Nanoc::CLI.run %w( validate_css )
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
namespace :links do
|
|
15
|
-
desc 'Validate the site’s internal links'
|
|
16
|
-
task :internal do
|
|
17
|
-
Nanoc::CLI.run %w( validate_links --internal )
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
desc 'Validate the site’s external links'
|
|
21
|
-
task :external do
|
|
22
|
-
Nanoc::CLI.run %w( validate_links --external )
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
desc 'Validate the site’s internal and external links'
|
|
27
|
-
task :links do
|
|
28
|
-
Nanoc::CLI.run %w( validate_links )
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
class Nanoc::Extra::FileProxyTest < Nanoc::TestCase
|
|
4
|
-
def test_create_many
|
|
5
|
-
if_implemented do
|
|
6
|
-
# Create test file
|
|
7
|
-
File.open('test.txt', 'w') { |_io| }
|
|
8
|
-
|
|
9
|
-
# Create lots of file proxies
|
|
10
|
-
count = Process.getrlimit(Process::RLIMIT_NOFILE)[0] + 5
|
|
11
|
-
file_proxies = []
|
|
12
|
-
count.times { file_proxies << Nanoc::Extra::FileProxy.new('test.txt') }
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
data/test/tasks/test_clean.rb
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
class Nanoc::Tasks::CleanTest < Nanoc::TestCase
|
|
4
|
-
def test_simple
|
|
5
|
-
if_have 'w3c_validators' do
|
|
6
|
-
# Stub items
|
|
7
|
-
items = [mock, mock]
|
|
8
|
-
reps = [[mock, mock], [mock, mock]]
|
|
9
|
-
items[0].expects(:reps).returns(reps[0])
|
|
10
|
-
items[1].expects(:reps).returns(reps[1])
|
|
11
|
-
|
|
12
|
-
# Create sample files
|
|
13
|
-
[0, 1].each do |item_id|
|
|
14
|
-
[0, 1].each do |rep_id|
|
|
15
|
-
filename = "item-#{item_id}-rep-#{rep_id}.txt"
|
|
16
|
-
reps[item_id][rep_id].expects(:raw_path).returns(filename)
|
|
17
|
-
File.open(filename, 'w') { |io| io.write('hello') }
|
|
18
|
-
assert File.file?(filename)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Stub site
|
|
23
|
-
site = mock
|
|
24
|
-
site.expects(:items).returns(items)
|
|
25
|
-
|
|
26
|
-
# Create clean task
|
|
27
|
-
clean = ::Nanoc::Tasks::Clean.new(site)
|
|
28
|
-
|
|
29
|
-
# Run
|
|
30
|
-
clean.run
|
|
31
|
-
|
|
32
|
-
# Check
|
|
33
|
-
[0, 1].each do |item_id|
|
|
34
|
-
[0, 1].each do |rep_id|
|
|
35
|
-
filename = "item-#{item_id}-rep-#{rep_id}.txt"
|
|
36
|
-
assert !File.file?(filename)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_with_nil_raw_path
|
|
43
|
-
if_have 'w3c_validators' do
|
|
44
|
-
# Stub items
|
|
45
|
-
item = mock
|
|
46
|
-
rep = mock
|
|
47
|
-
item.expects(:reps).returns([rep])
|
|
48
|
-
|
|
49
|
-
# Create sample file
|
|
50
|
-
rep.expects(:raw_path).returns(nil)
|
|
51
|
-
|
|
52
|
-
# Stub site
|
|
53
|
-
site = mock
|
|
54
|
-
site.expects(:items).returns([item])
|
|
55
|
-
|
|
56
|
-
# Create clean task
|
|
57
|
-
clean = ::Nanoc::Tasks::Clean.new(site)
|
|
58
|
-
|
|
59
|
-
# Run
|
|
60
|
-
clean.run
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|