nanoc3 3.2.3 → 3.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/NEWS.md +44 -78
- data/README.md +1 -0
- data/lib/nanoc3/base/compilation/compiler.rb +1 -2
- data/lib/nanoc3/base/compilation/rules_collection.rb +2 -0
- data/lib/nanoc3/base/directed_graph.rb +1 -1
- data/lib/nanoc3/base/source_data/site.rb +1 -1
- data/lib/nanoc3/cli/commands/create_site.rb +1 -1
- data/lib/nanoc3/cli/commands/nanoc.rb +1 -1
- data/lib/nanoc3/cli/commands/watch.rb +4 -1
- data/lib/nanoc3/data_sources/filesystem.rb +3 -0
- data/lib/nanoc3/filters/colorize_syntax.rb +5 -6
- data/lib/nanoc3/filters/sass.rb +1 -1
- data/lib/nanoc3/helpers/link_to.rb +3 -3
- data/lib/nanoc3/helpers/rendering.rb +34 -13
- data/lib/nanoc3.rb +1 -1
- data/tasks/doc.rake +7 -5
- data/test/base/test_compiler.rb +15 -0
- data/test/base/test_directed_graph.rb +10 -10
- data/test/base/test_site.rb +19 -0
- data/test/data_sources/test_filesystem.rb +16 -0
- data/test/extra/test_auto_compiler.rb +13 -13
- data/test/filters/test_rdoc.rb +1 -1
- metadata +14 -14
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2007-
|
1
|
+
Copyright (c) 2007-2012 Denis Defreyne and contributors
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
of this software and associated documentation files (the "Software"), to deal
|
data/NEWS.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# nanoc news
|
2
2
|
|
3
|
+
## 3.2.4 (2012-01-09)
|
4
|
+
|
5
|
+
* Fixed bug which would cause some reps not to be compiled when invoking nanoc programmatically
|
6
|
+
* Made data source configuration location a bit more obvious
|
7
|
+
* Fixed watch command under Windows
|
8
|
+
* Made filesystem data source ignore UTF-8 BOM
|
9
|
+
* Improved compatibility of colorize_syntax filter with older libxml versions
|
10
|
+
|
3
11
|
## 3.2.3 (2011-10-31)
|
4
12
|
|
5
13
|
* Made syntax colorizer only strip trailing blank lines instead of all blanks
|
@@ -31,8 +39,7 @@ Base:
|
|
31
39
|
* Added progress indicator for long-running filters
|
32
40
|
* Made all source data, such as item attributes, frozen during compilation
|
33
41
|
* Added --color option to force color on
|
34
|
-
* Cleaned up internals, deprecating several parts and/or marking them as
|
35
|
-
private in the progress
|
42
|
+
* Cleaned up internals, deprecating several parts and/or marking them as private in the progress
|
36
43
|
* Allowed custom commands in commands/
|
37
44
|
|
38
45
|
Extensions:
|
@@ -77,8 +84,7 @@ Extensions:
|
|
77
84
|
* Improved metadata section check so that e.g. raw diffs are handled properly
|
78
85
|
* Deprecated using `Nanoc3::Site#initialize` with a non-`"."` argument
|
79
86
|
* Added Ruby engine to version string
|
80
|
-
* Allowed the `created_at` and `updated_at` attributes used in the `Blogging`
|
81
|
-
helper to be `Date` instances
|
87
|
+
* Allowed the `created_at` and `updated_at` attributes used in the `Blogging` helper to be `Date` instances
|
82
88
|
|
83
89
|
## 3.1.4 (2010-07-25)
|
84
90
|
|
@@ -93,15 +99,13 @@ Extensions:
|
|
93
99
|
## 3.1.3 (2010-04-25)
|
94
100
|
|
95
101
|
* Removed annoying win32console warning [Eric Sunshine]
|
96
|
-
* Removed color codes when not writing to a terminal, or when writing to
|
97
|
-
Windows’ console when win32console is not installed [Eric Sunshine]
|
102
|
+
* Removed color codes when not writing to a terminal, or when writing to Windows’ console when win32console is not installed [Eric Sunshine]
|
98
103
|
* Added .xhtml and .xml to list of text extensions
|
99
104
|
* Improved support for relative Sass @imports [Chris Eppstein]
|
100
105
|
|
101
106
|
## 3.1.2 (2010-04-07)
|
102
107
|
|
103
|
-
* Fixed bug which could cause incorrect output when compilation of an item is
|
104
|
-
delayed due to an unmet dependency
|
108
|
+
* Fixed bug which could cause incorrect output when compilation of an item is delayed due to an unmet dependency
|
105
109
|
|
106
110
|
## 3.1.1 (2010-04-05)
|
107
111
|
|
@@ -119,16 +123,13 @@ New:
|
|
119
123
|
* A `view` command that starts a web server in the output directory
|
120
124
|
* A `debug` command that shows information about the items, reps and layouts
|
121
125
|
* A `kramdown` filter ([kramdown site](http://kramdown.rubyforge.org/))
|
122
|
-
* A diff between the previously compiled content and the last compiled content
|
123
|
-
is now written to `output.diff` if the `enable_output_diff` site
|
124
|
-
configuration attribute is true
|
126
|
+
* A diff between the previously compiled content and the last compiled content is now written to `output.diff` if the `enable_output_diff` site configuration attribute is true
|
125
127
|
* Assigns, such as `@items`, `@layouts`, `@item`, … are accessible without `@`
|
126
128
|
* Support for binary items
|
127
129
|
|
128
130
|
Changed:
|
129
131
|
|
130
|
-
* New sites now come with a stylesheet item instead of a `style.css` file in
|
131
|
-
the output directory
|
132
|
+
* New sites now come with a stylesheet item instead of a `style.css` file in the output directory
|
132
133
|
* The `deploy:rsync` task now use sensible default options
|
133
134
|
* The `deploy:rsync` task now accepts a config environment variable
|
134
135
|
* The `deploy:rsync` task now uses a lowercase `dry_run` environment variable
|
@@ -136,10 +137,8 @@ Changed:
|
|
136
137
|
* The `rainpress` filter now accepts parameters
|
137
138
|
* The `filesystem` data source is now known as `filesystem_verbose`
|
138
139
|
* Meta files and content files are now optional
|
139
|
-
* The `filesystem_compact` and `filesystem_combined` data sources have been
|
140
|
-
|
141
|
-
* The metadata section in `filesystem_unified` is now optional [Christopher
|
142
|
-
Eppstein]
|
140
|
+
* The `filesystem_compact` and `filesystem_combined` data sources have been merged into a new `filesystem_unified` data source
|
141
|
+
* The metadata section in `filesystem_unified` is now optional [Christopher Eppstein]
|
143
142
|
* The `--server` autocompile option is now known as `--handler`
|
144
143
|
* Assigns in filters are now available as instance variables and methods
|
145
144
|
* The `#breadcrumbs_trail` function now allows missing parents
|
@@ -149,13 +148,11 @@ Deprecated:
|
|
149
148
|
|
150
149
|
* `Nanoc3::FileProxy`; use one of the filename attributes instead
|
151
150
|
* `ItemRep#content_at_snapshot`; use `#compiled_content` instead
|
152
|
-
* The `last_fm`, `delicious` and `twitter` data sources; fetch online content
|
153
|
-
into a cache by a rake task and load data from this cache instead
|
151
|
+
* The `last_fm`, `delicious` and `twitter` data sources; fetch online content into a cache by a rake task and load data from this cache instead
|
154
152
|
|
155
153
|
## 3.0.9 (2010-02-24)
|
156
154
|
|
157
|
-
* Fixed 1.8.x parsing bug due to lack of parens which could cause “undefined
|
158
|
-
method `to_iso8601_time` for #<String:0x…>” errors
|
155
|
+
* Fixed 1.8.x parsing bug due to lack of parens which could cause “undefined method `to_iso8601_time` for #<String:0x…>” errors
|
159
156
|
|
160
157
|
## 3.0.8 (2010-02-24)
|
161
158
|
|
@@ -177,18 +174,11 @@ Deprecated:
|
|
177
174
|
|
178
175
|
## 3.0.5 (2010-01-12)
|
179
176
|
|
180
|
-
* Restored pre-3.0.3 behaviour of periods in identifiers. By default, a file
|
181
|
-
can have multiple extensions (e.g. `content/foo.html.erb` will have the
|
182
|
-
identifier `/foo/`), but if `allow_periods_in_identifiers` in the site
|
183
|
-
configuration is true, a file can have only one extension (e.g.
|
184
|
-
`content/blog/stuff.entry.html` will have the identifier
|
185
|
-
`/blog/stuff.entry/`).
|
177
|
+
* Restored pre-3.0.3 behaviour of periods in identifiers. By default, a file can have multiple extensions (e.g. `content/foo.html.erb` will have the identifier `/foo/`), but if `allow_periods_in_identifiers` in the site configuration is true, a file can have only one extension (e.g. `content/blog/stuff.entry.html` will have the identifier `/blog/stuff.entry/`).
|
186
178
|
|
187
179
|
## 3.0.4 (2010-01-07)
|
188
180
|
|
189
|
-
* Fixed a bug which would cause the `filesystem_compact` data source to
|
190
|
-
incorrectly determine the content filename, leading to weird “Expected 1
|
191
|
-
content file but found 3” errors [Eric Sunshine]
|
181
|
+
* Fixed a bug which would cause the `filesystem_compact` data source to incorrectly determine the content filename, leading to weird “Expected 1 content file but found 3” errors [Eric Sunshine]
|
192
182
|
|
193
183
|
## 3.0.3 (2010-01-06)
|
194
184
|
|
@@ -196,26 +186,22 @@ Deprecated:
|
|
196
186
|
* The `relativize_paths` filter now only operates inside tags
|
197
187
|
* The autocompiler now handles escaped paths
|
198
188
|
* The `LinkTo` and `Tagging` helpers now output escaped HTML
|
199
|
-
* Fixed `played_at` attribute assignment in the `LastFM` data source for
|
200
|
-
tracks playing now, and added a `now_playing` attribute [Nicky Peeters]
|
189
|
+
* Fixed `played_at` attribute assignment in the `LastFM` data source for tracks playing now, and added a `now_playing` attribute [Nicky Peeters]
|
201
190
|
* The `filesystem_*` data sources can now handle dots in identifiers
|
202
191
|
* Required enumerator to make sure `#enum_with_index` always works
|
203
192
|
* `Array#stringify_keys` now properly recurses
|
204
193
|
|
205
194
|
## 3.0.2 (2009-11-07)
|
206
195
|
|
207
|
-
* Children-only identifier patterns no longer erroneously also match parent
|
208
|
-
(e.g.` /foo/*/` no longer matches `/foo/`)
|
196
|
+
* Children-only identifier patterns no longer erroneously also match parent (e.g.` /foo/*/` no longer matches `/foo/`)
|
209
197
|
* The `create_site` command no longer uses those ugly HTML entities
|
210
198
|
* Install message now mentions the IRC channel
|
211
199
|
|
212
200
|
## 3.0.1 (2009-10-05)
|
213
201
|
|
214
|
-
* The proper exception is now raised when no matching compilation rules can
|
215
|
-
be found
|
202
|
+
* The proper exception is now raised when no matching compilation rules can be found
|
216
203
|
* The autocompile command no longer has a duplicate `--port` option
|
217
|
-
* The `#url_for` and `#feed_url` methods now check the presence of the
|
218
|
-
`base_url` site configuration attribute
|
204
|
+
* The `#url_for` and `#feed_url` methods now check the presence of the `base_url` site configuration attribute
|
219
205
|
* Several outdated URLs are now up-to-date
|
220
206
|
* Error handling has been improved in general
|
221
207
|
|
@@ -246,18 +232,14 @@ Removed:
|
|
246
232
|
|
247
233
|
## 2.2.2 (2009-05-18)
|
248
234
|
|
249
|
-
* Removed `relativize_paths` filter; use `relativize_paths_in_html` or
|
250
|
-
|
251
|
-
* Fixed bug which
|
252
|
-
exception occurs
|
253
|
-
* Fixed bug which would cause nanoc to complain about the open file limit
|
254
|
-
being reached when using a large amount of assets
|
235
|
+
* Removed `relativize_paths` filter; use `relativize_paths_in_html` or `relativize_paths_in_css` instead
|
236
|
+
* Fixed bug which could cause nanoc to eat massive amounts of memory when an exception occurs
|
237
|
+
* Fixed bug which would cause nanoc to complain about the open file limit being reached when using a large amount of assets
|
255
238
|
|
256
239
|
## 2.2.1 (2009-04-08)
|
257
240
|
|
258
241
|
* Fixed bug which prevented `relative_path_to` from working
|
259
|
-
* Split `relativize_paths` filter into two filter: `relativize_paths_in_html`
|
260
|
-
and `relativize_paths_in_css`
|
242
|
+
* Split `relativize_paths` filter into two filter: `relativize_paths_in_html` and `relativize_paths_in_css`
|
261
243
|
* Removed bundled mime-types library
|
262
244
|
|
263
245
|
## 2.2 (2009-04-06)
|
@@ -276,8 +258,7 @@ New:
|
|
276
258
|
Changed:
|
277
259
|
|
278
260
|
* The commandline option parser is now a lot more reliable
|
279
|
-
* `#atom_feed` now takes optional `:content_proc`, `:excerpt_proc` and
|
280
|
-
`:articles` parameters
|
261
|
+
* `#atom_feed` now takes optional `:content_proc`, `:excerpt_proc` and `:articles` parameters
|
281
262
|
* The compile command show non-written items (those with `skip_output: true`)
|
282
263
|
* The compile command compiles everything by default
|
283
264
|
* Added `--only-outdated` option to compile only outdated pages
|
@@ -290,17 +271,14 @@ Removed:
|
|
290
271
|
|
291
272
|
* The `filesystem_combined` data source now supports empty metadata sections
|
292
273
|
* The `rdoc` filter now works for both RDoc 1.x and 2.x
|
293
|
-
* The autocompiler now serves a 500 when an exception occurs outside
|
294
|
-
|
295
|
-
* The autocompiler no longer serves index files when the request path does not
|
296
|
-
end with a slash
|
274
|
+
* The autocompiler now serves a 500 when an exception occurs outside compilation
|
275
|
+
* The autocompiler no longer serves index files when the request path does not end with a slash
|
297
276
|
* The autocompiler now always serves asset content correctly
|
298
277
|
|
299
278
|
## 2.1.5 (2009-02-01)
|
300
279
|
|
301
280
|
* Added Ruby 1.9 compatibility
|
302
|
-
* The `filesystem` and `filesystem_combined` data sources now preserve custom
|
303
|
-
extensions
|
281
|
+
* The `filesystem` and `filesystem_combined` data sources now preserve custom extensions
|
304
282
|
|
305
283
|
## 2.1.4 (2008-11-15)
|
306
284
|
|
@@ -357,14 +335,12 @@ Removed:
|
|
357
335
|
## 2.0.4 (2008-05-04)
|
358
336
|
|
359
337
|
* Fixed `default.rb`’s `#html_escape`
|
360
|
-
* Updated Haml filter and layout processor so that @page, @pages and @config
|
361
|
-
are now available as instance variables instead of local variables
|
338
|
+
* Updated Haml filter and layout processor so that @page, @pages and @config are now available as instance variables instead of local variables
|
362
339
|
|
363
340
|
## 2.0.3 (2008-03-25)
|
364
341
|
|
365
342
|
* The autocompiler now honors custom paths
|
366
|
-
* The autocompiler now attempts to serve pages with the most appropriate MIME
|
367
|
-
type, instead of always serving everything as `text/html`
|
343
|
+
* The autocompiler now attempts to serve pages with the most appropriate MIME type, instead of always serving everything as `text/html`
|
368
344
|
|
369
345
|
## 2.0.2 (2008-01-26)
|
370
346
|
|
@@ -406,8 +382,7 @@ Removed:
|
|
406
382
|
## 1.6 (2007-10-13)
|
407
383
|
|
408
384
|
* Added support for post-layout filters
|
409
|
-
* Added support for getting a File object for the page, so you can now e.g.
|
410
|
-
easily get the modification time for a given page (`@page.file.mtime`)
|
385
|
+
* Added support for getting a File object for the page, so you can now e.g. easily get the modification time for a given page (`@page.file.mtime`)
|
411
386
|
* Cleaned up the source code a lot
|
412
387
|
* Removed deprecated asset-copying functionality
|
413
388
|
|
@@ -422,15 +397,12 @@ Removed:
|
|
422
397
|
|
423
398
|
* nanoc now supports ERB (as well as Erubis); Erubis no longer is a dependency
|
424
399
|
* `meta.yaml` can now have `haml_options` property, which is passed to Haml
|
425
|
-
* Pages can now have a `filename` property, which defaults to `index` [Dennis
|
426
|
-
|
427
|
-
* Pages now know in what order they should be compiled, eliminating the need
|
428
|
-
for custom page ordering [Dennis Sutch]
|
400
|
+
* Pages can now have a `filename` property, which defaults to `index` [Dennis Sutch]
|
401
|
+
* Pages now know in what order they should be compiled, eliminating the need for custom page ordering [Dennis Sutch]
|
429
402
|
|
430
403
|
## 1.3.1 (2007-06-30)
|
431
404
|
|
432
|
-
* The contents of the `assets` directory are now copied into the output
|
433
|
-
directory specified in `config.yaml`
|
405
|
+
* The contents of the `assets` directory are now copied into the output directory specified in `config.yaml`
|
434
406
|
|
435
407
|
## 1.3 (2007-06-24)
|
436
408
|
|
@@ -439,20 +411,16 @@ Removed:
|
|
439
411
|
* Added new filters
|
440
412
|
* Textile/RedCloth
|
441
413
|
* Sass
|
442
|
-
* nanoc now warns before overwriting in `create_site`, `create_page` and
|
443
|
-
`create_template` (but not in compile)
|
414
|
+
* nanoc now warns before overwriting in `create_site`, `create_page` and `create_template` (but not in compile)
|
444
415
|
|
445
416
|
## 1.2 (2007-06-05)
|
446
417
|
|
447
|
-
* Sites now have an `assets` directory, whose contents are copied to the
|
448
|
-
`output` directory when compiling [Soryu]
|
418
|
+
* Sites now have an `assets` directory, whose contents are copied to the `output` directory when compiling [Soryu]
|
449
419
|
* Added support for non-eRuby layouts (Markaby, Haml, Liquid, …)
|
450
420
|
* Added more filters (Markaby, Haml, Liquid, RDoc [Dmitry Bilunov])
|
451
421
|
* Improved error reporting
|
452
|
-
* Accessing page attributes using instance variables, and not through `@page`,
|
453
|
-
|
454
|
-
* Page attributes can now be accessed using dot notation, i.e. `@page.title`
|
455
|
-
as well as `@page[:title]`
|
422
|
+
* Accessing page attributes using instance variables, and not through `@page`, is no longer possible
|
423
|
+
* Page attributes can now be accessed using dot notation, i.e. `@page.title` as well as `@page[:title]`
|
456
424
|
|
457
425
|
## 1.1.3 (2007-05-18)
|
458
426
|
|
@@ -468,14 +436,12 @@ Removed:
|
|
468
436
|
* Added support for nested layouts
|
469
437
|
* Added coloured logging
|
470
438
|
* `@page` now hold the page that is currently being processed
|
471
|
-
* Index files are now called “content” files and are now named after the
|
472
|
-
directory they are in [Colin Barrett]
|
439
|
+
* Index files are now called “content” files and are now named after the directory they are in [Colin Barrett]
|
473
440
|
* It is now possible to access `@page` in the page’s content file
|
474
441
|
|
475
442
|
## 1.0.1 (2007-05-05)
|
476
443
|
|
477
|
-
* Fixed a bug which would cause a “no such template” error to be displayed
|
478
|
-
when the template existed but compiling it would raise an exception
|
444
|
+
* Fixed a bug which would cause a “no such template” error to be displayed when the template existed but compiling it would raise an exception
|
479
445
|
* Fixed bug which would cause pages not to be sorted by order before compiling
|
480
446
|
|
481
447
|
## 1.0 (2007-05-03)
|
data/README.md
CHANGED
@@ -315,8 +315,7 @@ module Nanoc3
|
|
315
315
|
#
|
316
316
|
# @return [void]
|
317
317
|
def compile_reps(reps)
|
318
|
-
|
319
|
-
content_dependency_graph = Nanoc3::DirectedGraph.new(outdated_reps)
|
318
|
+
content_dependency_graph = Nanoc3::DirectedGraph.new(reps)
|
320
319
|
|
321
320
|
# Listen to processing start/stop
|
322
321
|
Nanoc3::NotificationCenter.on(:processing_started, self) { |obj| @stack.push(obj) }
|
@@ -41,7 +41,7 @@ output_dir: #{Nanoc3::Site::DEFAULT_CONFIG[:output_dir]}
|
|
41
41
|
|
42
42
|
# A list of index filenames, i.e. names of files that will be served by a web
|
43
43
|
# server when a directory is requested. Usually, index files are named
|
44
|
-
# “index.
|
44
|
+
# “index.html”, but depending on the web server, this may be something else,
|
45
45
|
# such as “default.htm”. This list is used by nanoc to generate pretty URLs.
|
46
46
|
index_filenames: #{array_to_yaml(Nanoc3::Site::DEFAULT_CONFIG[:index_filenames])}
|
47
47
|
|
@@ -27,7 +27,7 @@ end
|
|
27
27
|
opt :v, :version, 'show version information and quit' do
|
28
28
|
gem_info = defined?(Gem) ? "with RubyGems #{Gem::VERSION}" : "without RubyGems"
|
29
29
|
engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
|
30
|
-
puts "nanoc #{Nanoc3::VERSION} (c) 2007-
|
30
|
+
puts "nanoc #{Nanoc3::VERSION} (c) 2007-2012 Denis Defreyne."
|
31
31
|
puts "Running #{engine} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) on #{RUBY_PLATFORM} #{gem_info}"
|
32
32
|
exit 0
|
33
33
|
end
|
@@ -92,6 +92,9 @@ module Nanoc3::CLI::Commands
|
|
92
92
|
# A list of commandline tool names that can be used to send notifications
|
93
93
|
TOOLS = %w( growlnotify notify-send )
|
94
94
|
|
95
|
+
# The tool to use for discovering binaries' locations
|
96
|
+
FIND_BINARY_COMMAND = RUBY_PLATFORM =~ /mingw|mswin/ ? "where" : "which"
|
97
|
+
|
95
98
|
# Send a notification. If no notifier is found, no notification will be
|
96
99
|
# created.
|
97
100
|
#
|
@@ -104,7 +107,7 @@ module Nanoc3::CLI::Commands
|
|
104
107
|
private
|
105
108
|
|
106
109
|
def tool
|
107
|
-
@tool ||= TOOLS.find { |t|
|
110
|
+
@tool ||= TOOLS.find { |t| !`#{FIND_BINARY_COMMAND} #{t}`.empty? }
|
108
111
|
end
|
109
112
|
|
110
113
|
def growlnotify(message)
|
@@ -113,7 +113,7 @@ module Nanoc3::Filters
|
|
113
113
|
# Highlight
|
114
114
|
raw = strip(element.inner_text)
|
115
115
|
highlighted_code = highlight(raw, language, params)
|
116
|
-
element.inner_html = strip(highlighted_code)
|
116
|
+
element.inner_html = Nokogiri::HTML.fragment(strip(highlighted_code), 'utf-8')
|
117
117
|
|
118
118
|
# Add class
|
119
119
|
unless has_class
|
@@ -191,6 +191,9 @@ module Nanoc3::Filters
|
|
191
191
|
require 'systemu'
|
192
192
|
check_availability('pygmentize', '-V')
|
193
193
|
|
194
|
+
params[:encoding] ||= 'utf-8'
|
195
|
+
params[:nowrap] ||= 'True'
|
196
|
+
|
194
197
|
# Build command
|
195
198
|
cmd = [ 'pygmentize', '-l', language, '-f', 'html' ]
|
196
199
|
cmd << '-O' << params.map { |k,v| "#{k}=#{v}" }.join(',') unless params.empty?
|
@@ -201,11 +204,7 @@ module Nanoc3::Filters
|
|
201
204
|
|
202
205
|
# Get result
|
203
206
|
stdout.rewind
|
204
|
-
|
205
|
-
|
206
|
-
# Clean result
|
207
|
-
doc = Nokogiri::HTML.fragment(highlighted_code)
|
208
|
-
doc.xpath('./div[@class="highlight"]/pre').inner_html
|
207
|
+
stdout.read
|
209
208
|
end
|
210
209
|
|
211
210
|
SIMON_HIGHLIGHT_OPT_MAP = {
|
data/lib/nanoc3/filters/sass.rb
CHANGED
@@ -12,7 +12,7 @@ module Nanoc3::Filters
|
|
12
12
|
attr_accessor :current
|
13
13
|
end
|
14
14
|
|
15
|
-
# Essentially the
|
15
|
+
# Essentially the `Sass::Importers::Filesystem` but registering each
|
16
16
|
# import file path.
|
17
17
|
class SassFilesystemImporter < ::Sass::Importers::Filesystem
|
18
18
|
|
@@ -63,9 +63,9 @@ module Nanoc3::Helpers
|
|
63
63
|
"<a #{attributes}href=\"#{h path}\">#{text}</a>"
|
64
64
|
end
|
65
65
|
|
66
|
-
# Creates a HTML link using link_to, except when the linked item is
|
67
|
-
# current one. In this case, a span element with class “active” and
|
68
|
-
# the given text will be returned. The HTML-escaping rules for
|
66
|
+
# Creates a HTML link using {#link_to}, except when the linked item is
|
67
|
+
# the current one. In this case, a span element with class “active” and
|
68
|
+
# with the given text will be returned. The HTML-escaping rules for
|
69
69
|
# {#link_to} apply here as well.
|
70
70
|
#
|
71
71
|
# @param [String] text The visible link text
|
@@ -7,24 +7,33 @@ module Nanoc3::Helpers
|
|
7
7
|
|
8
8
|
include Nanoc3::Helpers::Capturing
|
9
9
|
|
10
|
-
#
|
11
|
-
#
|
10
|
+
# Renders the given layout. The given layout will be run through the first
|
11
|
+
# matching layout rule.
|
12
12
|
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# assigns will be made available as instance variables inside the partial.
|
13
|
+
# When this method is invoked _without_ a block, the return value will be
|
14
|
+
# the rendered layout (a string) and `_erbout` will not be modified.
|
16
15
|
#
|
17
|
-
#
|
18
|
-
# will be
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
16
|
+
# When this method is invoked _with_ a block, an empty string will be
|
17
|
+
# returned and the rendered content will be appended to `_erbout`. In this
|
18
|
+
# case, the content of the block will be captured (using the
|
19
|
+
# {Nanoc3::Helpers::Capturing} helper) and this content will be made
|
20
|
+
# available with `yield`. In other words, a `yield` inside the partial
|
21
|
+
# will output the content of the block passed to the method.
|
22
|
+
#
|
23
|
+
# (For the curious: the reason why {#render} with a block has this
|
24
|
+
# behaviour of returning an empty string and modifying `_erbout` is
|
25
|
+
# because ERB does not support combining the `<%= ... %>` form with a
|
26
|
+
# method call that takes a block.)
|
27
|
+
#
|
28
|
+
# The assigns (`@item`, `@config`, …) will be available in the partial. It
|
29
|
+
# is also possible to pass custom assigns to the method; these assigns
|
30
|
+
# will be made available as instance variables inside the partial.
|
22
31
|
#
|
23
32
|
# @param [String] identifier The identifier of the layout that should be
|
24
33
|
# rendered
|
25
34
|
#
|
26
|
-
# @param [Hash] other_assigns A hash containing assigns that will be
|
27
|
-
# available as instance variables in the partial
|
35
|
+
# @param [Hash] other_assigns A hash containing extra assigns that will be
|
36
|
+
# made available as instance variables in the partial
|
28
37
|
#
|
29
38
|
# @example Rendering a head and a foot partial around some text
|
30
39
|
#
|
@@ -52,10 +61,22 @@ module Nanoc3::Helpers
|
|
52
61
|
# I'm boxy! Luvz!
|
53
62
|
# <% end %>
|
54
63
|
#
|
64
|
+
# # Result
|
65
|
+
# <div class="box">
|
66
|
+
# I'm boxy! Luvz!
|
67
|
+
# </div>
|
68
|
+
#
|
55
69
|
# @raise [Nanoc3::Errors::UnknownLayout] if the given layout does not
|
56
70
|
# exist
|
57
71
|
#
|
58
|
-
# @
|
72
|
+
# @raise [Nanoc3::Errors::CannotDetermineFilter] if there is no layout
|
73
|
+
# rule for the given layout
|
74
|
+
#
|
75
|
+
# @raise [Nanoc3::Errors::UnknownFilter] if the layout rule for the given
|
76
|
+
# layout specifies an unknown filter
|
77
|
+
#
|
78
|
+
# @return [String, nil] The rendered partial, or nil if this method was
|
79
|
+
# invoked with a block
|
59
80
|
def render(identifier, other_assigns={}, &block)
|
60
81
|
# Find layout
|
61
82
|
layout = @site.layouts.find { |l| l.identifier == identifier.cleaned_identifier }
|
data/lib/nanoc3.rb
CHANGED
data/tasks/doc.rake
CHANGED
@@ -5,10 +5,12 @@ require 'yard'
|
|
5
5
|
YARD::Rake::YardocTask.new(:doc) do |yard|
|
6
6
|
yard.files = Dir['lib/**/*.rb']
|
7
7
|
yard.options = [
|
8
|
-
'--markup',
|
9
|
-
'--
|
10
|
-
'--
|
11
|
-
'--
|
12
|
-
'--
|
8
|
+
'--markup', 'markdown',
|
9
|
+
'--markup-provider', 'kramdown',
|
10
|
+
'--charset', 'utf-8',
|
11
|
+
'--readme', 'README.md',
|
12
|
+
'--files', 'NEWS.md,LICENSE',
|
13
|
+
'--output-dir', 'doc/yardoc',
|
14
|
+
'--template-path', 'doc/yardoc_templates'
|
13
15
|
]
|
14
16
|
end
|
data/test/base/test_compiler.rb
CHANGED
@@ -298,4 +298,19 @@ class Nanoc3::CompilerTest < MiniTest::Unit::TestCase
|
|
298
298
|
end
|
299
299
|
end
|
300
300
|
|
301
|
+
def test_compile_should_recompile_all_reps
|
302
|
+
Nanoc3::CLI.run %w( create_site bar )
|
303
|
+
|
304
|
+
FileUtils.cd('bar') do
|
305
|
+
Nanoc3::CLI.run %w( compile )
|
306
|
+
|
307
|
+
site = Nanoc3::Site.new('.')
|
308
|
+
site.compile
|
309
|
+
|
310
|
+
# At this point, even the already compiled items in the previous pass
|
311
|
+
# should have their compiled content assigned, so this should work:
|
312
|
+
site.items[0].reps[0].compiled_content
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
301
316
|
end
|
@@ -81,14 +81,14 @@ class Nanoc3::DirectedGraphTest < MiniTest::Unit::TestCase
|
|
81
81
|
assert graph.vertices.include?(3)
|
82
82
|
end
|
83
83
|
|
84
|
-
def
|
84
|
+
def test_delete_edge
|
85
85
|
graph = Nanoc3::DirectedGraph.new([ 1, 2, 3 ])
|
86
86
|
graph.add_edge(1,2)
|
87
87
|
|
88
88
|
assert_equal [ 2 ], graph.successors_of(1)
|
89
89
|
assert_equal [ 1 ], graph.predecessors_of(2)
|
90
90
|
|
91
|
-
graph.
|
91
|
+
graph.delete_edge(1, 2)
|
92
92
|
|
93
93
|
assert_equal [], graph.successors_of(1)
|
94
94
|
assert_equal [], graph.predecessors_of(2)
|
@@ -246,37 +246,37 @@ class Nanoc3::DirectedGraphTest < MiniTest::Unit::TestCase
|
|
246
246
|
def test_roots_after_removing_edge
|
247
247
|
graph = Nanoc3::DirectedGraph.new([ 1, 2, 3 ])
|
248
248
|
graph.add_edge(1, 2)
|
249
|
-
graph.
|
249
|
+
graph.delete_edge(1, 2)
|
250
250
|
assert_equal Set.new([ 1, 2, 3 ]), graph.roots
|
251
251
|
|
252
252
|
graph = Nanoc3::DirectedGraph.new([ 1, 2, 3 ])
|
253
253
|
graph.add_edge(1, 3)
|
254
254
|
assert_equal Set.new([ 1, 2 ]), graph.roots
|
255
|
-
graph.
|
255
|
+
graph.delete_edge(1, 2) # no such edge
|
256
256
|
assert_equal Set.new([ 1, 2 ]), graph.roots
|
257
257
|
|
258
258
|
graph = Nanoc3::DirectedGraph.new([ 1, 2, 3 ])
|
259
259
|
graph.add_edge(2, 1)
|
260
|
-
graph.
|
260
|
+
graph.delete_edge(2, 1)
|
261
261
|
assert_equal Set.new([ 1, 2, 3 ]), graph.roots
|
262
262
|
|
263
263
|
graph = Nanoc3::DirectedGraph.new([ 1, 2, 3 ])
|
264
264
|
graph.add_edge(1, 2)
|
265
265
|
graph.add_edge(2, 3)
|
266
|
-
graph.
|
266
|
+
graph.delete_edge(1, 2)
|
267
267
|
assert_equal Set.new([ 1, 2 ]), graph.roots
|
268
|
-
graph.
|
268
|
+
graph.delete_edge(2, 3)
|
269
269
|
assert_equal Set.new([ 1, 2, 3 ]), graph.roots
|
270
270
|
|
271
271
|
graph = Nanoc3::DirectedGraph.new([ 1, 2, 3 ])
|
272
272
|
graph.add_edge(1, 2)
|
273
273
|
graph.add_edge(2, 3)
|
274
274
|
graph.add_edge(3, 1)
|
275
|
-
graph.
|
275
|
+
graph.delete_edge(1, 2)
|
276
276
|
assert_equal Set.new([ 2 ]), graph.roots
|
277
|
-
graph.
|
277
|
+
graph.delete_edge(2, 3)
|
278
278
|
assert_equal Set.new([ 2, 3 ]), graph.roots
|
279
|
-
graph.
|
279
|
+
graph.delete_edge(3, 1)
|
280
280
|
assert_equal Set.new([ 1, 2, 3 ]), graph.roots
|
281
281
|
end
|
282
282
|
|
data/test/base/test_site.rb
CHANGED
@@ -168,4 +168,23 @@ describe 'Nanoc3::Site#data_sources' do
|
|
168
168
|
end.must_raise Nanoc3::Errors::UnknownDataSource
|
169
169
|
end
|
170
170
|
|
171
|
+
it 'should also use the toplevel config for data sources' do
|
172
|
+
with_site do
|
173
|
+
File.open('config.yaml', 'w') do |io|
|
174
|
+
io.write "data_sources:\n"
|
175
|
+
io.write " -\n"
|
176
|
+
io.write " type: filesystem_unified\n"
|
177
|
+
io.write " aaa: one\n"
|
178
|
+
io.write " config:\n"
|
179
|
+
io.write " bbb: two\n"
|
180
|
+
end
|
181
|
+
|
182
|
+
site = Nanoc3::Site.new('.')
|
183
|
+
data_sources = site.data_sources
|
184
|
+
|
185
|
+
assert data_sources.first.config[:aaa] = 'one'
|
186
|
+
assert data_sources.first.config[:bbb] = 'two'
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
171
190
|
end
|
@@ -365,6 +365,22 @@ class Nanoc3::DataSources::FilesystemTest < MiniTest::Unit::TestCase
|
|
365
365
|
assert_equal('blah blah', result[1])
|
366
366
|
end
|
367
367
|
|
368
|
+
def test_parse_utf8_bom
|
369
|
+
File.open('test.html', 'w') do |io|
|
370
|
+
io.write [ 0xEF, 0xBB, 0xBF ].map { |i| i.chr }.join
|
371
|
+
io.write "-----\n"
|
372
|
+
io.write "utf8bomawareness: high\n"
|
373
|
+
io.write "-----\n"
|
374
|
+
io.write "content goes here\n"
|
375
|
+
end
|
376
|
+
|
377
|
+
data_source = Nanoc3::DataSources::FilesystemCombined.new(nil, nil, nil, nil)
|
378
|
+
|
379
|
+
result = data_source.instance_eval { parse('test.html', nil, 'foobar') }
|
380
|
+
assert_equal({ 'utf8bomawareness' => 'high' }, result[0])
|
381
|
+
assert_equal('content goes here', result[1])
|
382
|
+
end
|
383
|
+
|
368
384
|
def test_parse_embedded_no_meta
|
369
385
|
content = "blah\n" \
|
370
386
|
"blah blah blah\n" \
|
@@ -32,7 +32,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
32
32
|
autocompiler.stubs(:site).returns(site)
|
33
33
|
|
34
34
|
# Serve
|
35
|
-
status, headers, body = autocompiler.instance_eval { call('PATH_INFO' => '/foo/index.html') }
|
35
|
+
status, headers, body = autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/foo/index.html') }
|
36
36
|
|
37
37
|
# Check response
|
38
38
|
assert_equal(200, status)
|
@@ -59,7 +59,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
59
59
|
autocompiler.stubs(:site).returns(site)
|
60
60
|
|
61
61
|
# Serve
|
62
|
-
status, headers, body = autocompiler.instance_eval { call('PATH_INFO' => '/afjwiagoawf.html') }
|
62
|
+
status, headers, body = autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/afjwiagoawf.html') }
|
63
63
|
|
64
64
|
# Check response
|
65
65
|
assert_equal(404, status)
|
@@ -94,7 +94,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
94
94
|
autocompiler.expects(:file_server).returns(file_server)
|
95
95
|
|
96
96
|
# Run
|
97
|
-
autocompiler.instance_eval { call('PATH_INFO' => 'somefile.txt') }
|
97
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => 'somefile.txt') }
|
98
98
|
|
99
99
|
# Check
|
100
100
|
assert_equal(file_server.expected_path_info, file_server.actual_path_info)
|
@@ -128,7 +128,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
128
128
|
autocompiler.expects(:file_server).returns(file_server)
|
129
129
|
|
130
130
|
# Run
|
131
|
-
autocompiler.instance_eval { call('PATH_INFO' => '/foo/bar/') }
|
131
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/foo/bar/') }
|
132
132
|
|
133
133
|
# Check
|
134
134
|
assert_equal(file_server.expected_path_info, file_server.actual_path_info)
|
@@ -162,7 +162,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
162
162
|
autocompiler.expects(:file_server).returns(file_server)
|
163
163
|
|
164
164
|
# Run
|
165
|
-
autocompiler.instance_eval { call('PATH_INFO' => 'foo/bar/') }
|
165
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => 'foo/bar/') }
|
166
166
|
|
167
167
|
# Check
|
168
168
|
assert_equal(file_server.expected_path_info, file_server.actual_path_info)
|
@@ -196,7 +196,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
196
196
|
autocompiler.expects(:file_server).returns(file_server)
|
197
197
|
|
198
198
|
# Run
|
199
|
-
autocompiler.instance_eval { call('PATH_INFO' => 'foo/bar') }
|
199
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => 'foo/bar') }
|
200
200
|
|
201
201
|
# Check
|
202
202
|
assert_equal(file_server.expected_path_info, file_server.actual_path_info)
|
@@ -230,7 +230,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
230
230
|
autocompiler.expects(:file_server).returns(file_server)
|
231
231
|
|
232
232
|
# Run
|
233
|
-
autocompiler.instance_eval { call('PATH_INFO' => 'foo/bar') }
|
233
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => 'foo/bar') }
|
234
234
|
|
235
235
|
# Check
|
236
236
|
assert_equal(file_server.expected_path_info, file_server.actual_path_info)
|
@@ -260,7 +260,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
260
260
|
autocompiler.expects(:file_server).returns(file_server)
|
261
261
|
|
262
262
|
# Run
|
263
|
-
autocompiler.instance_eval { call('PATH_INFO' => 'four-oh-four.txt') }
|
263
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => 'four-oh-four.txt') }
|
264
264
|
|
265
265
|
# Check
|
266
266
|
assert_equal(file_server.expected_path_info, file_server.actual_path_info)
|
@@ -314,7 +314,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
314
314
|
autocompiler.stubs(:site).returns(site)
|
315
315
|
|
316
316
|
# Serve
|
317
|
-
status, headers, body = autocompiler.instance_eval { call('PATH_INFO' => '/') }
|
317
|
+
status, headers, body = autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/') }
|
318
318
|
|
319
319
|
# Check response
|
320
320
|
assert_equal(200, status)
|
@@ -348,7 +348,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
348
348
|
|
349
349
|
# Serve
|
350
350
|
assert_raises(RuntimeError) do
|
351
|
-
autocompiler.instance_eval { call('PATH_INFO' => '/whatever/') }
|
351
|
+
autocompiler.instance_eval { call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/whatever/') }
|
352
352
|
end
|
353
353
|
end
|
354
354
|
end
|
@@ -375,7 +375,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
375
375
|
File.utime(Time.now+5, Time.now+5, 'config.yaml')
|
376
376
|
|
377
377
|
# Check
|
378
|
-
status, headers, body = autocompiler.call('PATH_INFO' => '/')
|
378
|
+
status, headers, body = autocompiler.call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/')
|
379
379
|
body.each do |b|
|
380
380
|
assert_match /The Grand Value of Configuration is Foo!/, b
|
381
381
|
end
|
@@ -387,7 +387,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
387
387
|
File.utime(Time.now+5, Time.now+5, 'config.yaml')
|
388
388
|
|
389
389
|
# Check
|
390
|
-
status, headers, body = autocompiler.call('PATH_INFO' => '/')
|
390
|
+
status, headers, body = autocompiler.call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/')
|
391
391
|
body.each do |b|
|
392
392
|
assert_match /The Grand Value of Configuration is Bar!/, b
|
393
393
|
end
|
@@ -408,7 +408,7 @@ class Nanoc3::Extra::AutoCompilerTest < MiniTest::Unit::TestCase
|
|
408
408
|
autocompiler.stubs(:site).returns(site)
|
409
409
|
|
410
410
|
# Test
|
411
|
-
result = autocompiler.call('PATH_INFO' => '/%73oftware')
|
411
|
+
result = autocompiler.call('REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/%73oftware')
|
412
412
|
assert_equal 404, result[0]
|
413
413
|
assert_match "File not found: /software\n", result[2][0]
|
414
414
|
end
|
data/test/filters/test_rdoc.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanoc3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cri
|
16
|
-
requirement: &
|
16
|
+
requirement: &70158392072000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70158392072000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: minitest
|
27
|
-
requirement: &
|
27
|
+
requirement: &70158392070860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70158392070860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mocha
|
38
|
-
requirement: &
|
38
|
+
requirement: &70158392069520 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70158392069520
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70158392065560 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70158392065560
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdiscount
|
60
|
-
requirement: &
|
60
|
+
requirement: &70158392058260 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70158392058260
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
|
-
requirement: &
|
71
|
+
requirement: &70158392056380 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70158392056380
|
80
80
|
description: nanoc is a simple but very flexible static site generator written in
|
81
81
|
Ruby. It operates on local files, and therefore does not run on the server. nanoc
|
82
82
|
“compiles” the local source files into HTML (usually), by evaluating eRuby, Markdown,
|