nanoc 4.0.0b3 → 4.0.0b4
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 +1 -0
- data/Gemfile.lock +4 -2
- data/NEWS.md +10 -0
- data/TODO.md +15 -0
- data/lib/nanoc/base.rb +4 -27
- data/lib/nanoc/base/checksummer.rb +69 -19
- data/lib/nanoc/base/compilation/compiler.rb +14 -12
- data/lib/nanoc/base/compilation/compiler_dsl.rb +2 -0
- data/lib/nanoc/base/compilation/filter.rb +4 -2
- data/lib/nanoc/base/compilation/outdatedness_checker.rb +7 -7
- data/lib/nanoc/base/compilation/rule.rb +5 -6
- data/lib/nanoc/base/compilation/rule_context.rb +16 -34
- data/lib/nanoc/base/compilation/rule_memory_calculator.rb +3 -3
- data/lib/nanoc/base/compilation/rules_collection.rb +4 -10
- data/lib/nanoc/base/context.rb +2 -0
- data/lib/nanoc/base/core_ext/array.rb +0 -10
- data/lib/nanoc/base/core_ext/hash.rb +0 -10
- data/lib/nanoc/base/core_ext/pathname.rb +0 -9
- data/lib/nanoc/base/core_ext/string.rb +0 -10
- data/lib/nanoc/base/entities.rb +5 -0
- data/lib/nanoc/base/entities/content.rb +86 -0
- data/lib/nanoc/base/entities/document.rb +56 -0
- data/lib/nanoc/base/{source_data → entities}/identifier.rb +12 -1
- data/lib/nanoc/base/entities/layout.rb +8 -0
- data/lib/nanoc/base/{pattern.rb → entities/pattern.rb} +0 -0
- data/lib/nanoc/base/errors.rb +2 -1
- data/lib/nanoc/base/result_data/item_rep.rb +13 -278
- data/lib/nanoc/base/services.rb +5 -0
- data/lib/nanoc/base/services/executor.rb +141 -0
- data/lib/nanoc/base/services/item_rep_writer.rb +40 -0
- data/lib/nanoc/base/{notification_center.rb → services/notification_center.rb} +0 -0
- data/lib/nanoc/base/services/recording_executor.rb +41 -0
- data/lib/nanoc/base/{temp_filename_factory.rb → services/temp_filename_factory.rb} +0 -0
- data/lib/nanoc/base/source_data/code_snippet.rb +0 -6
- data/lib/nanoc/base/source_data/data_source.rb +4 -3
- data/lib/nanoc/base/source_data/item.rb +23 -213
- data/lib/nanoc/base/source_data/site.rb +0 -1
- data/lib/nanoc/base/views.rb +18 -0
- data/lib/nanoc/base/views/config.rb +1 -1
- data/lib/nanoc/base/views/item.rb +8 -73
- data/lib/nanoc/base/views/item_rep.rb +9 -0
- data/lib/nanoc/base/views/item_rep_collection.rb +17 -0
- data/lib/nanoc/base/views/layout.rb +1 -40
- data/lib/nanoc/base/views/mixins/document.rb +76 -0
- data/lib/nanoc/base/views/mixins/mutable_document.rb +22 -0
- data/lib/nanoc/base/views/mutable_identifiable_collection.rb +1 -1
- data/lib/nanoc/base/views/mutable_item.rb +1 -18
- data/lib/nanoc/base/views/mutable_item_collection.rb +6 -2
- data/lib/nanoc/base/views/mutable_layout.rb +1 -8
- data/lib/nanoc/cli/commands/compile.rb +1 -2
- data/lib/nanoc/cli/commands/create-site.rb +5 -5
- data/lib/nanoc/cli/commands/show-data.rb +11 -1
- data/lib/nanoc/data_sources/filesystem.rb +17 -10
- data/lib/nanoc/helpers/capturing.rb +1 -2
- data/lib/nanoc/helpers/filtering.rb +13 -1
- data/lib/nanoc/helpers/rendering.rb +4 -2
- data/lib/nanoc/version.rb +1 -1
- data/test/base/core_ext/array_spec.rb +0 -7
- data/test/base/core_ext/hash_spec.rb +0 -13
- data/test/base/core_ext/pathname_spec.rb +0 -33
- data/test/base/core_ext/string_spec.rb +0 -10
- data/test/base/test_compiler_dsl.rb +3 -3
- data/test/base/test_data_source.rb +2 -2
- data/test/base/test_item.rb +5 -129
- data/test/base/test_item_rep.rb +26 -558
- data/test/base/test_layout.rb +2 -26
- data/test/base/test_rule.rb +3 -3
- data/test/base/test_rule_context.rb +34 -15
- data/test/data_sources/test_filesystem.rb +2 -2
- data/test/data_sources/test_filesystem_unified.rb +39 -33
- data/test/extra/checking/checks/test_html.rb +0 -1
- data/test/extra/checking/checks/test_mixed_content.rb +3 -3
- data/test/extra/deployers/test_fog.rb +24 -24
- data/test/filters/test_less.rb +4 -4
- data/test/filters/test_sass.rb +10 -5
- data/test/filters/test_xsl.rb +6 -0
- data/test/helpers/test_capturing.rb +0 -1
- data/test/helpers/test_filtering.rb +5 -19
- data/test/helpers/test_tagging.rb +6 -6
- metadata +18 -11
- data/lib/nanoc/base/compilation/item_rep_proxy.rb +0 -109
- data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +0 -97
- data/lib/nanoc/base/source_data/layout.rb +0 -111
- data/test/base/checksummer_spec.rb +0 -256
- data/test/base/test_item_rep_recorder_proxy.rb +0 -17
data/test/filters/test_xsl.rb
CHANGED
@@ -87,9 +87,11 @@ EOS
|
|
87
87
|
item = Nanoc::Int::Item.new(SAMPLE_XML_IN,
|
88
88
|
{},
|
89
89
|
'/content/')
|
90
|
+
item = Nanoc::ItemView.new(item)
|
90
91
|
layout = Nanoc::Int::Layout.new(SAMPLE_XSL,
|
91
92
|
{},
|
92
93
|
'/layout/')
|
94
|
+
layout = Nanoc::LayoutView.new(layout)
|
93
95
|
|
94
96
|
# Create an instance of the filter
|
95
97
|
assigns = {
|
@@ -111,9 +113,11 @@ EOS
|
|
111
113
|
item = Nanoc::Int::Item.new(SAMPLE_XML_IN_WITH_PARAMS,
|
112
114
|
{},
|
113
115
|
'/content/')
|
116
|
+
item = Nanoc::ItemView.new(item)
|
114
117
|
layout = Nanoc::Int::Layout.new(SAMPLE_XSL_WITH_PARAMS,
|
115
118
|
{},
|
116
119
|
'/layout/')
|
120
|
+
layout = Nanoc::LayoutView.new(layout)
|
117
121
|
|
118
122
|
# Create an instance of the filter
|
119
123
|
assigns = {
|
@@ -136,9 +140,11 @@ EOS
|
|
136
140
|
item = Nanoc::Int::Item.new(SAMPLE_XML_IN_WITH_OMIT_XML_DECL,
|
137
141
|
{},
|
138
142
|
'/content/')
|
143
|
+
item = Nanoc::ItemView.new(item)
|
139
144
|
layout = Nanoc::Int::Layout.new(SAMPLE_XSL_WITH_OMIT_XML_DECL,
|
140
145
|
{},
|
141
146
|
'/layout/')
|
147
|
+
layout = Nanoc::LayoutView.new(layout)
|
142
148
|
|
143
149
|
# Create an instance of the filter
|
144
150
|
assigns = {
|
@@ -17,7 +17,6 @@ class Nanoc::Helpers::CapturingTest < Nanoc::TestCase
|
|
17
17
|
# Build site
|
18
18
|
site = Nanoc::Int::Site.new({})
|
19
19
|
item = Nanoc::Int::Item.new('moo', {}, '/blah/')
|
20
|
-
item.site = site
|
21
20
|
@site = Nanoc::SiteView.new(Nanoc::Int::Site.new({}))
|
22
21
|
@item = Nanoc::ItemView.new(item)
|
23
22
|
|
@@ -11,7 +11,6 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
11
11
|
|
12
12
|
# Mock item and rep
|
13
13
|
@item_rep = mock
|
14
|
-
@item_rep.expects(:assigns).returns({})
|
15
14
|
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
16
15
|
|
17
16
|
# Evaluate content
|
@@ -25,29 +24,19 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
25
24
|
|
26
25
|
def test_filter_with_assigns
|
27
26
|
if_have 'rubypants' do
|
28
|
-
# Build content to be evaluated
|
29
27
|
content = "<p>Foo...</p>\n" \
|
30
28
|
"<% filter :erb do %>\n" \
|
31
29
|
" <p><%%= @item[:title] %></p>\n" \
|
32
30
|
"<% end %>\n"
|
33
31
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
@item.
|
38
|
-
@
|
39
|
-
@item_rep = mock
|
40
|
-
@item_rep.expects(:name).returns('default')
|
41
|
-
@item_rep.expects(:assigns).returns({
|
42
|
-
item: @item,
|
43
|
-
item_rep: @item_rep
|
44
|
-
})
|
45
|
-
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
32
|
+
item = Nanoc::Int::Item.new('stuff', { title: 'Bar...' }, '/foo.md')
|
33
|
+
item_rep = Nanoc::Int::ItemRep.new(item, :default)
|
34
|
+
|
35
|
+
@item = Nanoc::ItemView.new(item)
|
36
|
+
@item_rep = Nanoc::ItemRepView.new(item_rep)
|
46
37
|
|
47
|
-
# Evaluate content
|
48
38
|
result = ::ERB.new(content).result(binding)
|
49
39
|
|
50
|
-
# Check
|
51
40
|
assert_match('<p>Foo...</p>', result)
|
52
41
|
assert_match('<p>Bar...</p>', result)
|
53
42
|
end
|
@@ -75,7 +64,6 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
75
64
|
|
76
65
|
# Mock item and rep
|
77
66
|
@item_rep = mock
|
78
|
-
@item_rep.expects(:assigns).returns({})
|
79
67
|
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
80
68
|
|
81
69
|
# Evaluate content
|
@@ -94,7 +82,6 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
94
82
|
|
95
83
|
# Mock item and rep
|
96
84
|
@item_rep = mock
|
97
|
-
@item_rep.expects(:assigns).returns({})
|
98
85
|
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
99
86
|
|
100
87
|
# Evaluate content
|
@@ -115,7 +102,6 @@ class Nanoc::Helpers::FilteringTest < Nanoc::TestCase
|
|
115
102
|
|
116
103
|
# Mock item and rep
|
117
104
|
@item_rep = mock
|
118
|
-
@item_rep.expects(:assigns).returns({})
|
119
105
|
@item_rep = Nanoc::ItemRepView.new(@item_rep)
|
120
106
|
|
121
107
|
::ERB.new(content).result(binding)
|
@@ -3,7 +3,7 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
3
3
|
|
4
4
|
def test_tags_for_without_tags
|
5
5
|
# Create item
|
6
|
-
item = Nanoc::Int::Item.new('content', {}, '/path/')
|
6
|
+
item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', {}, '/path/'))
|
7
7
|
|
8
8
|
# Check
|
9
9
|
assert_equal(
|
@@ -14,7 +14,7 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
14
14
|
|
15
15
|
def test_tags_for_with_custom_base_url
|
16
16
|
# Create item
|
17
|
-
item = Nanoc::Int::Item.new('content', { tags: %w(foo bar) }, '/path/')
|
17
|
+
item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', { tags: %w(foo bar) }, '/path/'))
|
18
18
|
|
19
19
|
# Check
|
20
20
|
assert_equal(
|
@@ -26,7 +26,7 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
26
26
|
|
27
27
|
def test_tags_for_with_custom_none_text
|
28
28
|
# Create item
|
29
|
-
item = Nanoc::Int::Item.new('content', { tags: [] }, '/path/')
|
29
|
+
item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', { tags: [] }, '/path/'))
|
30
30
|
|
31
31
|
# Check
|
32
32
|
assert_equal(
|
@@ -37,7 +37,7 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
37
37
|
|
38
38
|
def test_tags_for_with_custom_separator
|
39
39
|
# Create item
|
40
|
-
item = Nanoc::Int::Item.new('content', { tags: %w(foo bar) }, '/path/')
|
40
|
+
item = Nanoc::ItemView.new(Nanoc::Int::Item.new('content', { tags: %w(foo bar) }, '/path/'))
|
41
41
|
|
42
42
|
# Check
|
43
43
|
assert_equal(
|
@@ -49,11 +49,11 @@ class Nanoc::Helpers::TaggingTest < Nanoc::TestCase
|
|
49
49
|
|
50
50
|
def test_items_with_tag
|
51
51
|
# Create items
|
52
|
-
@items = [
|
52
|
+
@items = Nanoc::ItemCollectionView.new([
|
53
53
|
Nanoc::Int::Item.new('item 1', { tags: [:foo] }, '/item1/'),
|
54
54
|
Nanoc::Int::Item.new('item 2', { tags: [:bar] }, '/item2/'),
|
55
55
|
Nanoc::Int::Item.new('item 3', { tags: [:foo, :bar] }, '/item3/')
|
56
|
-
]
|
56
|
+
])
|
57
57
|
|
58
58
|
# Find items
|
59
59
|
items_with_foo_tag = items_with_tag(:foo)
|
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.0b4
|
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-
|
11
|
+
date: 2015-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cri
|
@@ -66,6 +66,7 @@ files:
|
|
66
66
|
- NEWS.md
|
67
67
|
- README.md
|
68
68
|
- Rakefile
|
69
|
+
- TODO.md
|
69
70
|
- bin/nanoc
|
70
71
|
- doc/yardoc_handlers/identifier.rb
|
71
72
|
- doc/yardoc_templates/default/layout/html/footer.erb
|
@@ -78,8 +79,6 @@ files:
|
|
78
79
|
- lib/nanoc/base/compilation/compiler_dsl.rb
|
79
80
|
- lib/nanoc/base/compilation/dependency_tracker.rb
|
80
81
|
- lib/nanoc/base/compilation/filter.rb
|
81
|
-
- lib/nanoc/base/compilation/item_rep_proxy.rb
|
82
|
-
- lib/nanoc/base/compilation/item_rep_recorder_proxy.rb
|
83
82
|
- lib/nanoc/base/compilation/outdatedness_checker.rb
|
84
83
|
- lib/nanoc/base/compilation/outdatedness_reasons.rb
|
85
84
|
- lib/nanoc/base/compilation/rule.rb
|
@@ -94,23 +93,31 @@ files:
|
|
94
93
|
- lib/nanoc/base/core_ext/pathname.rb
|
95
94
|
- lib/nanoc/base/core_ext/string.rb
|
96
95
|
- lib/nanoc/base/directed_graph.rb
|
96
|
+
- lib/nanoc/base/entities.rb
|
97
|
+
- lib/nanoc/base/entities/content.rb
|
98
|
+
- lib/nanoc/base/entities/document.rb
|
99
|
+
- lib/nanoc/base/entities/identifier.rb
|
100
|
+
- lib/nanoc/base/entities/layout.rb
|
101
|
+
- lib/nanoc/base/entities/pattern.rb
|
97
102
|
- lib/nanoc/base/error.rb
|
98
103
|
- lib/nanoc/base/errors.rb
|
99
104
|
- lib/nanoc/base/identifiable_collection.rb
|
100
105
|
- lib/nanoc/base/memoization.rb
|
101
|
-
- lib/nanoc/base/notification_center.rb
|
102
|
-
- lib/nanoc/base/pattern.rb
|
103
106
|
- lib/nanoc/base/plugin_registry.rb
|
104
107
|
- lib/nanoc/base/result_data/item_rep.rb
|
108
|
+
- lib/nanoc/base/services.rb
|
109
|
+
- lib/nanoc/base/services/executor.rb
|
110
|
+
- lib/nanoc/base/services/item_rep_writer.rb
|
111
|
+
- lib/nanoc/base/services/notification_center.rb
|
112
|
+
- lib/nanoc/base/services/recording_executor.rb
|
113
|
+
- lib/nanoc/base/services/temp_filename_factory.rb
|
105
114
|
- lib/nanoc/base/source_data/code_snippet.rb
|
106
115
|
- lib/nanoc/base/source_data/configuration.rb
|
107
116
|
- lib/nanoc/base/source_data/data_source.rb
|
108
|
-
- lib/nanoc/base/source_data/identifier.rb
|
109
117
|
- lib/nanoc/base/source_data/item.rb
|
110
|
-
- lib/nanoc/base/source_data/layout.rb
|
111
118
|
- lib/nanoc/base/source_data/site.rb
|
112
119
|
- lib/nanoc/base/store.rb
|
113
|
-
- lib/nanoc/base/
|
120
|
+
- lib/nanoc/base/views.rb
|
114
121
|
- lib/nanoc/base/views/config.rb
|
115
122
|
- lib/nanoc/base/views/identifiable_collection.rb
|
116
123
|
- lib/nanoc/base/views/item.rb
|
@@ -119,6 +126,8 @@ files:
|
|
119
126
|
- lib/nanoc/base/views/item_rep_collection.rb
|
120
127
|
- lib/nanoc/base/views/layout.rb
|
121
128
|
- lib/nanoc/base/views/layout_collection.rb
|
129
|
+
- lib/nanoc/base/views/mixins/document.rb
|
130
|
+
- lib/nanoc/base/views/mixins/mutable_document.rb
|
122
131
|
- lib/nanoc/base/views/mutable_config.rb
|
123
132
|
- lib/nanoc/base/views/mutable_identifiable_collection.rb
|
124
133
|
- lib/nanoc/base/views/mutable_item.rb
|
@@ -220,7 +229,6 @@ files:
|
|
220
229
|
- tasks/doc.rake
|
221
230
|
- tasks/rubocop.rake
|
222
231
|
- tasks/test.rake
|
223
|
-
- test/base/checksummer_spec.rb
|
224
232
|
- test/base/core_ext/array_spec.rb
|
225
233
|
- test/base/core_ext/hash_spec.rb
|
226
234
|
- test/base/core_ext/pathname_spec.rb
|
@@ -238,7 +246,6 @@ files:
|
|
238
246
|
- test/base/test_item.rb
|
239
247
|
- test/base/test_item_array.rb
|
240
248
|
- test/base/test_item_rep.rb
|
241
|
-
- test/base/test_item_rep_recorder_proxy.rb
|
242
249
|
- test/base/test_layout.rb
|
243
250
|
- test/base/test_memoization.rb
|
244
251
|
- test/base/test_notification_center.rb
|
@@ -1,109 +0,0 @@
|
|
1
|
-
module Nanoc::Int
|
2
|
-
# Represents an item representation, but provides an interface that is
|
3
|
-
# easier to use when writing compilation and routing rules. It is also
|
4
|
-
# responsible for fetching the necessary information from the compiler, such
|
5
|
-
# as assigns.
|
6
|
-
#
|
7
|
-
# The API provided by item representation proxies allows layout identifiers
|
8
|
-
# to be given as literals instead of as references to {Nanoc::Int::Layout}.
|
9
|
-
#
|
10
|
-
# @api private
|
11
|
-
class ItemRepProxy
|
12
|
-
extend Forwardable
|
13
|
-
|
14
|
-
def_delegators :@item_rep, :item, :name, :binary, :binary?, :compiled_content, :has_snapshot?, :raw_path, :path
|
15
|
-
def_delegator :@item_rep, :snapshot
|
16
|
-
|
17
|
-
# @param [Nanoc::Int::ItemRep] item_rep The item representation that this
|
18
|
-
# proxy should behave like
|
19
|
-
#
|
20
|
-
# @param [Nanoc::Int::Compiler] compiler The compiler that will provide the
|
21
|
-
# necessary compilation-related functionality.
|
22
|
-
def initialize(item_rep, compiler)
|
23
|
-
@item_rep = item_rep
|
24
|
-
@compiler = compiler
|
25
|
-
end
|
26
|
-
|
27
|
-
# Runs the item content through the given filter with the given arguments.
|
28
|
-
# This method will replace the content of the `:last` snapshot with the
|
29
|
-
# filtered content of the last snapshot.
|
30
|
-
#
|
31
|
-
# This method is supposed to be called only in a compilation rule block
|
32
|
-
# (see {Nanoc::Int::CompilerDSL#compile}).
|
33
|
-
#
|
34
|
-
# @see Nanoc::Int::ItemRep#filter
|
35
|
-
#
|
36
|
-
# @param [Symbol] name The name of the filter to run the item
|
37
|
-
# representations' content through
|
38
|
-
#
|
39
|
-
# @param [Hash] args The filter arguments that should be passed to the
|
40
|
-
# filter's #run method
|
41
|
-
#
|
42
|
-
# @return [void]
|
43
|
-
def filter(name, args = {})
|
44
|
-
set_assigns
|
45
|
-
@item_rep.filter(name, args)
|
46
|
-
end
|
47
|
-
|
48
|
-
# Lays out the item using the given layout. This method will replace the
|
49
|
-
# content of the `:last` snapshot with the laid out content of the last
|
50
|
-
# snapshot.
|
51
|
-
#
|
52
|
-
# This method is supposed to be called only in a compilation rule block
|
53
|
-
# (see {Nanoc::Int::CompilerDSL#compile}).
|
54
|
-
#
|
55
|
-
# @see Nanoc::Int::ItemRep#layout
|
56
|
-
#
|
57
|
-
# @param [String] layout_identifier The identifier of the layout to use
|
58
|
-
#
|
59
|
-
# @return [void]
|
60
|
-
def layout(layout_identifier, extra_filter_args = {})
|
61
|
-
set_assigns
|
62
|
-
|
63
|
-
layout = layout_with_identifier(layout_identifier)
|
64
|
-
filter_name, filter_args = @compiler.rules_collection.filter_for_layout(layout)
|
65
|
-
filter_args = filter_args.merge(extra_filter_args)
|
66
|
-
|
67
|
-
@item_rep.layout(layout, filter_name, filter_args)
|
68
|
-
end
|
69
|
-
|
70
|
-
# Returns true because this item is already a proxy, and therefore doesn’t
|
71
|
-
# need to be wrapped anymore.
|
72
|
-
#
|
73
|
-
# @api private
|
74
|
-
#
|
75
|
-
# @return [true]
|
76
|
-
#
|
77
|
-
# @see Nanoc::Int::ItemRep#proxy?
|
78
|
-
# @see Nanoc::Int::ItemRepRecorderProxy#proxy?
|
79
|
-
def proxy?
|
80
|
-
true
|
81
|
-
end
|
82
|
-
alias_method :is_proxy?, :proxy?
|
83
|
-
|
84
|
-
private
|
85
|
-
|
86
|
-
def set_assigns
|
87
|
-
@item_rep.assigns = @compiler.assigns_for(@item_rep)
|
88
|
-
end
|
89
|
-
|
90
|
-
def layouts
|
91
|
-
@compiler.site.layouts
|
92
|
-
end
|
93
|
-
|
94
|
-
def layout_with_identifier(layout_identifier)
|
95
|
-
req_id = layout_identifier.__nanoc_cleaned_identifier
|
96
|
-
layout = layouts.find { |l| l.identifier == req_id }
|
97
|
-
if layout.nil? && use_globs?
|
98
|
-
pat = Nanoc::Int::Pattern.from(layout_identifier)
|
99
|
-
layout = layouts.find { |l| pat.match?(l.identifier) }
|
100
|
-
end
|
101
|
-
raise Nanoc::Int::Errors::UnknownLayout.new(layout_identifier) if layout.nil?
|
102
|
-
layout
|
103
|
-
end
|
104
|
-
|
105
|
-
def use_globs?
|
106
|
-
@compiler.site.config[:string_pattern_type] == 'glob'
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
module Nanoc::Int
|
2
|
-
# Represents a fake iem representation that does not actually perform any
|
3
|
-
# actual filtering, layouting or snapshotting, but instead keeps track of
|
4
|
-
# what would happen if a real item representation would have been used
|
5
|
-
# instead. It therefore “records” the actions that happens upon it.
|
6
|
-
#
|
7
|
-
# The list of recorded actions is used during compilation to determine
|
8
|
-
# whether an item representation needs to be recompiled: if the list of
|
9
|
-
# actions is different from the list of actions from the previous
|
10
|
-
# compilation run, the item needs to be recompiled; if it is the same, it
|
11
|
-
# may not need to be recompiled.
|
12
|
-
#
|
13
|
-
# @api private
|
14
|
-
class ItemRepRecorderProxy
|
15
|
-
extend Forwardable
|
16
|
-
|
17
|
-
def_delegators :@item_rep, :item, :name, :binary, :binary?, :compiled_content, :has_snapshot?, :raw_path, :path, :assigns, :assigns=
|
18
|
-
|
19
|
-
# @example The compilation rule and the corresponding rule memory
|
20
|
-
#
|
21
|
-
# # rule
|
22
|
-
# compile '/foo/' do
|
23
|
-
# filter :erb
|
24
|
-
# filter :myfilter, :arg1 => 'stuff'
|
25
|
-
# layout 'meh'
|
26
|
-
# end
|
27
|
-
#
|
28
|
-
# # memory
|
29
|
-
# [
|
30
|
-
# [ :filter, :erb, {} ],
|
31
|
-
# [ :filter, :myfilter, { :arg1 => 'stuff' } ],
|
32
|
-
# [ :layout, 'meh' ]
|
33
|
-
# ]
|
34
|
-
#
|
35
|
-
# @return [Array] The list of recorded actions (“rule memory”)
|
36
|
-
attr_reader :rule_memory
|
37
|
-
|
38
|
-
# @param [Nanoc::Int::ItemRep] item_rep The item representation that this
|
39
|
-
# proxy should behave like
|
40
|
-
def initialize(item_rep)
|
41
|
-
@item_rep = item_rep
|
42
|
-
@rule_memory = []
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [void]
|
46
|
-
#
|
47
|
-
# @see Nanoc::Int::ItemRepProxy#filter, Nanoc::Int::ItemRep#filter
|
48
|
-
def filter(name, args = {})
|
49
|
-
@rule_memory << [:filter, name, args]
|
50
|
-
end
|
51
|
-
|
52
|
-
# @return [void]
|
53
|
-
#
|
54
|
-
# @see Nanoc::Int::ItemRepProxy#layout, Nanoc::Int::ItemRep#layout
|
55
|
-
def layout(layout_identifier, extra_filter_args = nil)
|
56
|
-
if extra_filter_args
|
57
|
-
@rule_memory << [:layout, layout_identifier, extra_filter_args]
|
58
|
-
else
|
59
|
-
@rule_memory << [:layout, layout_identifier]
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# @return [void]
|
64
|
-
#
|
65
|
-
# @see Nanoc::Int::ItemRep#snapshot
|
66
|
-
def snapshot(snapshot_name, params = {})
|
67
|
-
@rule_memory << [:snapshot, snapshot_name, params]
|
68
|
-
|
69
|
-
# Count
|
70
|
-
existing = Set.new
|
71
|
-
names = @rule_memory.select { |r| r[0] == :snapshot }.map { |r| r[1] }
|
72
|
-
names.each do |n|
|
73
|
-
if existing.include?(n)
|
74
|
-
raise Nanoc::Int::Errors::CannotCreateMultipleSnapshotsWithSameName.new(@item_rep, snapshot_name)
|
75
|
-
end
|
76
|
-
existing << n
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# @return [{}]
|
81
|
-
def content
|
82
|
-
{}
|
83
|
-
end
|
84
|
-
|
85
|
-
# Returns true because this item is already a proxy, and therefore doesn’t
|
86
|
-
# need to be wrapped anymore.
|
87
|
-
#
|
88
|
-
# @return [true]
|
89
|
-
#
|
90
|
-
# @see Nanoc::Int::ItemRep#proxy?
|
91
|
-
# @see Nanoc::Int::ItemRepProxy#proxy?
|
92
|
-
def proxy?
|
93
|
-
true
|
94
|
-
end
|
95
|
-
alias_method :is_proxy?, :proxy?
|
96
|
-
end
|
97
|
-
end
|