nanoc 3.2.4 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. data/.gemtest +0 -0
  2. data/ChangeLog +3 -0
  3. data/Gemfile +32 -0
  4. data/LICENSE +19 -0
  5. data/NEWS.md +470 -0
  6. data/README.md +114 -0
  7. data/Rakefile +14 -0
  8. data/bin/nanoc +7 -27
  9. data/bin/nanoc3 +3 -0
  10. data/doc/yardoc_templates/default/layout/html/footer.erb +10 -0
  11. data/lib/nanoc.rb +41 -0
  12. data/lib/nanoc/base.rb +49 -0
  13. data/lib/nanoc/base/compilation/checksum_store.rb +57 -0
  14. data/lib/nanoc/base/compilation/compiled_content_cache.rb +62 -0
  15. data/lib/nanoc/base/compilation/compiler.rb +458 -0
  16. data/lib/nanoc/base/compilation/compiler_dsl.rb +214 -0
  17. data/lib/nanoc/base/compilation/dependency_tracker.rb +200 -0
  18. data/lib/nanoc/base/compilation/filter.rb +165 -0
  19. data/lib/nanoc/base/compilation/item_rep_proxy.rb +103 -0
  20. data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +102 -0
  21. data/lib/nanoc/base/compilation/outdatedness_checker.rb +223 -0
  22. data/lib/nanoc/base/compilation/outdatedness_reasons.rb +46 -0
  23. data/lib/nanoc/base/compilation/rule.rb +73 -0
  24. data/lib/nanoc/base/compilation/rule_context.rb +84 -0
  25. data/lib/nanoc/base/compilation/rule_memory_calculator.rb +40 -0
  26. data/lib/nanoc/base/compilation/rule_memory_store.rb +53 -0
  27. data/lib/nanoc/base/compilation/rules_collection.rb +243 -0
  28. data/lib/nanoc/base/context.rb +47 -0
  29. data/lib/nanoc/base/core_ext.rb +6 -0
  30. data/lib/nanoc/base/core_ext/array.rb +62 -0
  31. data/lib/nanoc/base/core_ext/hash.rb +63 -0
  32. data/lib/nanoc/base/core_ext/pathname.rb +26 -0
  33. data/lib/nanoc/base/core_ext/string.rb +46 -0
  34. data/lib/nanoc/base/directed_graph.rb +275 -0
  35. data/lib/nanoc/base/errors.rb +211 -0
  36. data/lib/nanoc/base/memoization.rb +67 -0
  37. data/lib/nanoc/base/notification_center.rb +84 -0
  38. data/lib/nanoc/base/ordered_hash.rb +200 -0
  39. data/lib/nanoc/base/plugin_registry.rb +181 -0
  40. data/lib/nanoc/base/result_data/item_rep.rb +492 -0
  41. data/lib/nanoc/base/source_data/code_snippet.rb +58 -0
  42. data/lib/nanoc/base/source_data/configuration.rb +24 -0
  43. data/lib/nanoc/base/source_data/data_source.rb +234 -0
  44. data/lib/nanoc/base/source_data/item.rb +301 -0
  45. data/lib/nanoc/base/source_data/layout.rb +130 -0
  46. data/lib/nanoc/base/source_data/site.rb +361 -0
  47. data/lib/nanoc/base/store.rb +135 -0
  48. data/lib/nanoc/cli.rb +137 -0
  49. data/lib/nanoc/cli/command_runner.rb +104 -0
  50. data/lib/nanoc/cli/commands/autocompile.rb +58 -0
  51. data/lib/nanoc/cli/commands/compile.rb +297 -0
  52. data/lib/nanoc/cli/commands/create_item.rb +60 -0
  53. data/lib/nanoc/cli/commands/create_layout.rb +73 -0
  54. data/lib/nanoc/cli/commands/create_site.rb +411 -0
  55. data/lib/nanoc/cli/commands/debug.rb +117 -0
  56. data/lib/nanoc/cli/commands/deploy.rb +79 -0
  57. data/lib/nanoc/cli/commands/info.rb +98 -0
  58. data/lib/nanoc/cli/commands/nanoc.rb +38 -0
  59. data/lib/nanoc/cli/commands/prune.rb +50 -0
  60. data/lib/nanoc/cli/commands/update.rb +70 -0
  61. data/lib/nanoc/cli/commands/view.rb +82 -0
  62. data/lib/nanoc/cli/commands/watch.rb +124 -0
  63. data/lib/nanoc/cli/error_handler.rb +199 -0
  64. data/lib/nanoc/cli/logger.rb +92 -0
  65. data/lib/nanoc/data_sources.rb +29 -0
  66. data/lib/nanoc/data_sources/deprecated/delicious.rb +42 -0
  67. data/lib/nanoc/data_sources/deprecated/last_fm.rb +87 -0
  68. data/lib/nanoc/data_sources/deprecated/twitter.rb +38 -0
  69. data/lib/nanoc/data_sources/filesystem.rb +299 -0
  70. data/lib/nanoc/data_sources/filesystem_unified.rb +121 -0
  71. data/lib/nanoc/data_sources/filesystem_verbose.rb +91 -0
  72. data/lib/nanoc/extra.rb +24 -0
  73. data/lib/nanoc/extra/auto_compiler.rb +103 -0
  74. data/lib/nanoc/extra/chick.rb +125 -0
  75. data/lib/nanoc/extra/core_ext.rb +6 -0
  76. data/lib/nanoc/extra/core_ext/enumerable.rb +33 -0
  77. data/lib/nanoc/extra/core_ext/pathname.rb +30 -0
  78. data/lib/nanoc/extra/core_ext/time.rb +19 -0
  79. data/lib/nanoc/extra/deployer.rb +47 -0
  80. data/lib/nanoc/extra/deployers.rb +15 -0
  81. data/lib/nanoc/extra/deployers/fog.rb +98 -0
  82. data/lib/nanoc/extra/deployers/rsync.rb +70 -0
  83. data/lib/nanoc/extra/file_proxy.rb +40 -0
  84. data/lib/nanoc/extra/pruner.rb +86 -0
  85. data/lib/nanoc/extra/validators.rb +12 -0
  86. data/lib/nanoc/extra/validators/links.rb +268 -0
  87. data/lib/nanoc/extra/validators/w3c.rb +95 -0
  88. data/lib/nanoc/extra/vcs.rb +66 -0
  89. data/lib/nanoc/extra/vcses.rb +17 -0
  90. data/lib/nanoc/extra/vcses/bazaar.rb +25 -0
  91. data/lib/nanoc/extra/vcses/dummy.rb +24 -0
  92. data/lib/nanoc/extra/vcses/git.rb +25 -0
  93. data/lib/nanoc/extra/vcses/mercurial.rb +25 -0
  94. data/lib/nanoc/extra/vcses/subversion.rb +25 -0
  95. data/lib/nanoc/filters.rb +59 -0
  96. data/lib/nanoc/filters/asciidoc.rb +38 -0
  97. data/lib/nanoc/filters/bluecloth.rb +19 -0
  98. data/lib/nanoc/filters/coderay.rb +21 -0
  99. data/lib/nanoc/filters/coffeescript.rb +20 -0
  100. data/lib/nanoc/filters/colorize_syntax.rb +298 -0
  101. data/lib/nanoc/filters/erb.rb +38 -0
  102. data/lib/nanoc/filters/erubis.rb +34 -0
  103. data/lib/nanoc/filters/haml.rb +27 -0
  104. data/lib/nanoc/filters/kramdown.rb +20 -0
  105. data/lib/nanoc/filters/less.rb +53 -0
  106. data/lib/nanoc/filters/markaby.rb +20 -0
  107. data/lib/nanoc/filters/maruku.rb +20 -0
  108. data/lib/nanoc/filters/mustache.rb +24 -0
  109. data/lib/nanoc/filters/rainpress.rb +19 -0
  110. data/lib/nanoc/filters/rdiscount.rb +22 -0
  111. data/lib/nanoc/filters/rdoc.rb +33 -0
  112. data/lib/nanoc/filters/redcarpet.rb +62 -0
  113. data/lib/nanoc/filters/redcloth.rb +47 -0
  114. data/lib/nanoc/filters/relativize_paths.rb +94 -0
  115. data/lib/nanoc/filters/rubypants.rb +20 -0
  116. data/lib/nanoc/filters/sass.rb +74 -0
  117. data/lib/nanoc/filters/slim.rb +25 -0
  118. data/lib/nanoc/filters/typogruby.rb +23 -0
  119. data/lib/nanoc/filters/uglify_js.rb +42 -0
  120. data/lib/nanoc/filters/xsl.rb +46 -0
  121. data/lib/nanoc/filters/yui_compressor.rb +23 -0
  122. data/lib/nanoc/helpers.rb +16 -0
  123. data/lib/nanoc/helpers/blogging.rb +319 -0
  124. data/lib/nanoc/helpers/breadcrumbs.rb +40 -0
  125. data/lib/nanoc/helpers/capturing.rb +138 -0
  126. data/lib/nanoc/helpers/filtering.rb +50 -0
  127. data/lib/nanoc/helpers/html_escape.rb +55 -0
  128. data/lib/nanoc/helpers/link_to.rb +151 -0
  129. data/lib/nanoc/helpers/rendering.rb +140 -0
  130. data/lib/nanoc/helpers/tagging.rb +71 -0
  131. data/lib/nanoc/helpers/text.rb +44 -0
  132. data/lib/nanoc/helpers/xml_sitemap.rb +76 -0
  133. data/lib/nanoc/tasks.rb +10 -0
  134. data/lib/nanoc/tasks/clean.rake +16 -0
  135. data/lib/nanoc/tasks/clean.rb +29 -0
  136. data/lib/nanoc/tasks/deploy/rsync.rake +16 -0
  137. data/lib/nanoc/tasks/validate.rake +92 -0
  138. data/nanoc.gemspec +49 -0
  139. data/tasks/doc.rake +16 -0
  140. data/tasks/test.rake +46 -0
  141. data/test/base/core_ext/array_spec.rb +73 -0
  142. data/test/base/core_ext/hash_spec.rb +98 -0
  143. data/test/base/core_ext/pathname_spec.rb +27 -0
  144. data/test/base/core_ext/string_spec.rb +37 -0
  145. data/test/base/test_checksum_store.rb +35 -0
  146. data/test/base/test_code_snippet.rb +31 -0
  147. data/test/base/test_compiler.rb +403 -0
  148. data/test/base/test_compiler_dsl.rb +161 -0
  149. data/test/base/test_context.rb +31 -0
  150. data/test/base/test_data_source.rb +46 -0
  151. data/test/base/test_dependency_tracker.rb +262 -0
  152. data/test/base/test_directed_graph.rb +288 -0
  153. data/test/base/test_filter.rb +83 -0
  154. data/test/base/test_item.rb +179 -0
  155. data/test/base/test_item_rep.rb +579 -0
  156. data/test/base/test_layout.rb +59 -0
  157. data/test/base/test_memoization.rb +90 -0
  158. data/test/base/test_notification_center.rb +34 -0
  159. data/test/base/test_outdatedness_checker.rb +394 -0
  160. data/test/base/test_plugin.rb +30 -0
  161. data/test/base/test_rule.rb +19 -0
  162. data/test/base/test_rule_context.rb +65 -0
  163. data/test/base/test_site.rb +190 -0
  164. data/test/cli/commands/test_compile.rb +33 -0
  165. data/test/cli/commands/test_create_item.rb +14 -0
  166. data/test/cli/commands/test_create_layout.rb +28 -0
  167. data/test/cli/commands/test_create_site.rb +24 -0
  168. data/test/cli/commands/test_deploy.rb +74 -0
  169. data/test/cli/commands/test_help.rb +12 -0
  170. data/test/cli/commands/test_info.rb +11 -0
  171. data/test/cli/commands/test_prune.rb +98 -0
  172. data/test/cli/commands/test_update.rb +10 -0
  173. data/test/cli/test_cli.rb +102 -0
  174. data/test/cli/test_error_handler.rb +29 -0
  175. data/test/cli/test_logger.rb +10 -0
  176. data/test/data_sources/test_filesystem.rb +433 -0
  177. data/test/data_sources/test_filesystem_unified.rb +536 -0
  178. data/test/data_sources/test_filesystem_verbose.rb +357 -0
  179. data/test/extra/core_ext/test_enumerable.rb +30 -0
  180. data/test/extra/core_ext/test_pathname.rb +17 -0
  181. data/test/extra/core_ext/test_time.rb +15 -0
  182. data/test/extra/deployers/test_fog.rb +67 -0
  183. data/test/extra/deployers/test_rsync.rb +100 -0
  184. data/test/extra/test_auto_compiler.rb +417 -0
  185. data/test/extra/test_file_proxy.rb +19 -0
  186. data/test/extra/test_vcs.rb +22 -0
  187. data/test/extra/validators/test_links.rb +62 -0
  188. data/test/extra/validators/test_w3c.rb +47 -0
  189. data/test/filters/test_asciidoc.rb +22 -0
  190. data/test/filters/test_bluecloth.rb +18 -0
  191. data/test/filters/test_coderay.rb +44 -0
  192. data/test/filters/test_coffeescript.rb +18 -0
  193. data/test/filters/test_colorize_syntax.rb +379 -0
  194. data/test/filters/test_erb.rb +105 -0
  195. data/test/filters/test_erubis.rb +78 -0
  196. data/test/filters/test_haml.rb +96 -0
  197. data/test/filters/test_kramdown.rb +18 -0
  198. data/test/filters/test_less.rb +113 -0
  199. data/test/filters/test_markaby.rb +24 -0
  200. data/test/filters/test_maruku.rb +18 -0
  201. data/test/filters/test_mustache.rb +25 -0
  202. data/test/filters/test_rainpress.rb +29 -0
  203. data/test/filters/test_rdiscount.rb +31 -0
  204. data/test/filters/test_rdoc.rb +18 -0
  205. data/test/filters/test_redcarpet.rb +73 -0
  206. data/test/filters/test_redcloth.rb +33 -0
  207. data/test/filters/test_relativize_paths.rb +533 -0
  208. data/test/filters/test_rubypants.rb +18 -0
  209. data/test/filters/test_sass.rb +229 -0
  210. data/test/filters/test_slim.rb +35 -0
  211. data/test/filters/test_typogruby.rb +21 -0
  212. data/test/filters/test_uglify_js.rb +30 -0
  213. data/test/filters/test_xsl.rb +105 -0
  214. data/test/filters/test_yui_compressor.rb +44 -0
  215. data/test/gem_loader.rb +11 -0
  216. data/test/helper.rb +207 -0
  217. data/test/helpers/test_blogging.rb +754 -0
  218. data/test/helpers/test_breadcrumbs.rb +81 -0
  219. data/test/helpers/test_capturing.rb +41 -0
  220. data/test/helpers/test_filtering.rb +106 -0
  221. data/test/helpers/test_html_escape.rb +32 -0
  222. data/test/helpers/test_link_to.rb +249 -0
  223. data/test/helpers/test_rendering.rb +89 -0
  224. data/test/helpers/test_tagging.rb +87 -0
  225. data/test/helpers/test_text.rb +24 -0
  226. data/test/helpers/test_xml_sitemap.rb +103 -0
  227. data/test/tasks/test_clean.rb +67 -0
  228. metadata +327 -15
  229. data/bin/nanoc-select +0 -86
  230. data/lib/nanoc-select.rb +0 -11
File without changes
@@ -0,0 +1,3 @@
1
+ For a list of all changes, please see the changelog on the project repository
2
+ instead (http://projects.stoneship.org/hg/nanoc). For release notes, please
3
+ see the NEWS file.
data/Gemfile ADDED
@@ -0,0 +1,32 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'albino'
6
+ gem 'bluecloth'
7
+ gem 'builder'
8
+ gem 'coderay'
9
+ gem 'coffee-script'
10
+ gem 'erubis'
11
+ gem 'haml'
12
+ gem 'kramdown'
13
+ gem 'less', '~> 2.0'
14
+ gem 'markaby'
15
+ gem 'maruku'
16
+ gem 'mime-types'
17
+ gem 'mustache'
18
+ gem 'nokogiri'
19
+ gem 'rack'
20
+ gem 'rainpress'
21
+ gem 'rdiscount'
22
+ gem 'rdoc'
23
+ gem 'redcarpet'
24
+ gem 'RedCloth'
25
+ gem 'rubypants'
26
+ gem 'sass', '~> 3.1'
27
+ gem 'slim'
28
+ gem 'systemu'
29
+ gem 'typogruby'
30
+ gem 'uglifier'
31
+ gem 'w3c_validators'
32
+ gem 'yuicompressor'
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2007-2012 Denis Defreyne and contributors
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
data/NEWS.md ADDED
@@ -0,0 +1,470 @@
1
+ # nanoc news
2
+
3
+ ## 3.3 (2012-02-12)
4
+
5
+ Base:
6
+
7
+ * Dropped the “3” suffix on nanoc3/Nanoc3
8
+ * Turned Rake tasks into proper nanoc commands
9
+ * Improved dependency tracking
10
+ * Added support for locals in filters and layouts
11
+
12
+ Extensions:
13
+
14
+ * Added support for deployment using Fog [Jack Chu]
15
+ * Added CoffeeScript filter [Riley Goodside]
16
+ * Added XSL filter [Arnau Siches]
17
+ * Added YUICompress filter [Matt Keveney]
18
+ * Added pygments.rb to supported syntax colorizers
19
+ * Allowed syntax colorizer to colorize outside `pre` elements [Kevin Lynagh]
20
+ * Added support for HTTPS link validation [Fabian Buch]
21
+ * Added support for (automatically) pruning stray output files [Justin Hileman]
22
+ * Added deploy command
23
+
24
+ ## 3.2.4 (2012-01-09)
25
+
26
+ * Fixed bug which would cause some reps not to be compiled when invoking nanoc programmatically
27
+ * Made data source configuration location a bit more obvious
28
+ * Fixed watch command under Windows
29
+ * Made filesystem data source ignore UTF-8 BOM
30
+ * Improved compatibility of colorize_syntax filter with older libxml versions
31
+
32
+ ## 3.2.3 (2011-10-31)
33
+
34
+ * Made syntax colorizer only strip trailing blank lines instead of all blanks
35
+ * Improved Ruby 1.9.x compatibility
36
+ * Made default rakefile require rubygems if necessary
37
+ * Made filename/content argument of `Nanoc3::Item#initialize` mandatory
38
+
39
+ ## 3.2.2 (2011-09-04)
40
+
41
+ * Fixed command usage printing
42
+ * Made relativize_paths filter handle Windows network paths [Ruben Verborgh]
43
+ * Made watcher use correct configuration
44
+ * Allowed code blocks to start with a non-language shebang line
45
+
46
+ ## 3.2.1 (2011-07-27)
47
+
48
+ * Made `@config` available in rules file
49
+ * Fixed `#readpartial` issue on JRuby [Matt Keveney]
50
+ * Fixed possible `@cache` name clash in memoization module
51
+ * Fixed options with required arguments (such as `--port` and `--host`)
52
+ * Fixed broken `#check_availability`
53
+ * Fixed error handling in watch command
54
+
55
+ ## 3.2 (2011-07-24)
56
+
57
+ Base:
58
+
59
+ * Sped up nanoc quite a bit
60
+ * Added progress indicator for long-running filters
61
+ * Made all source data, such as item attributes, frozen during compilation
62
+ * Added --color option to force color on
63
+ * Cleaned up internals, deprecating several parts and/or marking them as private in the progress
64
+ * Allowed custom commands in commands/
65
+
66
+ Extensions:
67
+
68
+ * Added AsciiDoc filter
69
+ * Added Redcarpet filter [Peter Aronoff]
70
+ * Added Slim filter [Zaiste de Grengolada]
71
+ * Added Typogruby filter
72
+ * Added UglifyJS filter [Justin Hileman]
73
+ * Added `:items` parameter for the XML site map [Justin Hileman]
74
+ * Added support for params to ERB
75
+ * Added `:default_colorizer` parameter to the `:colorize_syntax` filter
76
+ * Allowed for passing arbitrary options to pygmentize [Matthias Vallentin]
77
+ * Exposed RedCloth parameters in the filter [Vincent Driessen]
78
+
79
+ ## 3.1.9 (2011-06-30)
80
+
81
+ * Really fixed dependency generation between Sass partials this time
82
+ * Updated Less filter to 2.0
83
+ * Made colorize_syntax filter throw an error if pygmentize is not available
84
+
85
+ ## 3.1.8 (2011-06-25)
86
+
87
+ * Made link validator accept https: URLs
88
+ * Fixed erroneous handling of layouts with names ending in index
89
+ * Fixed dependency generation between Sass partials
90
+ * Fixed errors related to thread requires
91
+ * Fixed crash while handling load errors
92
+ * Improved encoding handling while reading files
93
+
94
+ ## 3.1.7 (2011-05-03)
95
+
96
+ * Restored compatibility with Sass 3.1
97
+
98
+ ## 3.1.6 (2010-11-21)
99
+
100
+ * Fixed issues with incompatible encodings
101
+
102
+ ## 3.1.5 (2010-08-24)
103
+
104
+ * Improved `#render` documentation
105
+ * Improved metadata section check so that e.g. raw diffs are handled properly
106
+ * Deprecated using `Nanoc3::Site#initialize` with a non-`"."` argument
107
+ * Added Ruby engine to version string
108
+ * Allowed the `created_at` and `updated_at` attributes used in the `Blogging` helper to be `Date` instances
109
+
110
+ ## 3.1.4 (2010-07-25)
111
+
112
+ * Made INT and TERM signals always quit the CLI
113
+ * Allowed relative imports in LESS
114
+ * Made sure modification times are unchanged for identical recompiled items
115
+ * Improved link validator error handling
116
+ * Made pygmentize not output extra divs and pres
117
+ * Allowed colorizers to be specified using symbols instead of strings
118
+ * Added scss to the default list of text extensions
119
+
120
+ ## 3.1.3 (2010-04-25)
121
+
122
+ * Removed annoying win32console warning [Eric Sunshine]
123
+ * Removed color codes when not writing to a terminal, or when writing to Windows’ console when win32console is not installed [Eric Sunshine]
124
+ * Added .xhtml and .xml to list of text extensions
125
+ * Improved support for relative Sass @imports [Chris Eppstein]
126
+
127
+ ## 3.1.2 (2010-04-07)
128
+
129
+ * Fixed bug which could cause incorrect output when compilation of an item is delayed due to an unmet dependency
130
+
131
+ ## 3.1.1 (2010-04-05)
132
+
133
+ * Sass `@import`s now work for files not managed by nanoc
134
+ * Rake tasks now have their Unicode description decomposed if necessary
135
+
136
+ ## 3.1 (2010-04-03)
137
+
138
+ New:
139
+
140
+ * An `Item#rep_named(name)` function for quickly getting a certain rep
141
+ * An `Item#compiled_content` function for quickly getting compiled content
142
+ * An `Item#path` function for quickly getting the path of an item rep
143
+ * A new “+” wildcard in rule patterns that matches one or more characters
144
+ * A `view` command that starts a web server in the output directory
145
+ * A `debug` command that shows information about the items, reps and layouts
146
+ * A `kramdown` filter ([kramdown site](http://kramdown.rubyforge.org/))
147
+ * 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
148
+ * Assigns, such as `@items`, `@layouts`, `@item`, … are accessible without `@`
149
+ * Support for binary items
150
+
151
+ Changed:
152
+
153
+ * New sites now come with a stylesheet item instead of a `style.css` file in the output directory
154
+ * The `deploy:rsync` task now use sensible default options
155
+ * The `deploy:rsync` task now accepts a config environment variable
156
+ * The `deploy:rsync` task now uses a lowercase `dry_run` environment variable
157
+ * The `maruku` filter now accepts parameters
158
+ * The `rainpress` filter now accepts parameters
159
+ * The `filesystem` data source is now known as `filesystem_verbose`
160
+ * Meta files and content files are now optional
161
+ * The `filesystem_compact` and `filesystem_combined` data sources have been merged into a new `filesystem_unified` data source
162
+ * The metadata section in `filesystem_unified` is now optional [Christopher Eppstein]
163
+ * The `--server` autocompile option is now known as `--handler`
164
+ * Assigns in filters are now available as instance variables and methods
165
+ * The `#breadcrumbs_trail` function now allows missing parents
166
+ * The `sass` filter now properly handles `@import` dependencies
167
+
168
+ Deprecated:
169
+
170
+ * `Nanoc3::FileProxy`; use one of the filename attributes instead
171
+ * `ItemRep#content_at_snapshot`; use `#compiled_content` instead
172
+ * 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
173
+
174
+ ## 3.0.9 (2010-02-24)
175
+
176
+ * Fixed 1.8.x parsing bug due to lack of parens which could cause “undefined method `to_iso8601_time` for #<String:0x…>” errors
177
+
178
+ ## 3.0.8 (2010-02-24)
179
+
180
+ * `#atom_tag_for` now works with base_urls that contain a path [Eric Sunshine]
181
+ * Generated root URLs in `#atom_feed` now end with a slash [Eric Sunshine]
182
+ * Autocompiler now recognises requests to index files
183
+ * `Blogging` helper now allows created_at to be a Time instance
184
+
185
+ ## 3.0.7 (2010-01-29)
186
+
187
+ * Fixed bug which could cause layout rules not be matched in order
188
+
189
+ ## 3.0.6 (2010-01-17)
190
+
191
+ * Error checking in `filesystem_combined` has been improved [Brian Candler]
192
+ * Generated HTML files now have a default encoding of UTF-8
193
+ * Periods in identifiers for layouts now behave correctly
194
+ * The `relativize_paths` filter now correctly handles “/” [Eric Sunshine]
195
+
196
+ ## 3.0.5 (2010-01-12)
197
+
198
+ * 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/`).
199
+
200
+ ## 3.0.4 (2010-01-07)
201
+
202
+ * 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]
203
+
204
+ ## 3.0.3 (2010-01-06)
205
+
206
+ * The `Blogging` helper now properly handles item reps without paths
207
+ * The `relativize_paths` filter now only operates inside tags
208
+ * The autocompiler now handles escaped paths
209
+ * The `LinkTo` and `Tagging` helpers now output escaped HTML
210
+ * Fixed `played_at` attribute assignment in the `LastFM` data source for tracks playing now, and added a `now_playing` attribute [Nicky Peeters]
211
+ * The `filesystem_*` data sources can now handle dots in identifiers
212
+ * Required enumerator to make sure `#enum_with_index` always works
213
+ * `Array#stringify_keys` now properly recurses
214
+
215
+ ## 3.0.2 (2009-11-07)
216
+
217
+ * Children-only identifier patterns no longer erroneously also match parent (e.g.` /foo/*/` no longer matches `/foo/`)
218
+ * The `create_site` command no longer uses those ugly HTML entities
219
+ * Install message now mentions the IRC channel
220
+
221
+ ## 3.0.1 (2009-10-05)
222
+
223
+ * The proper exception is now raised when no matching compilation rules can be found
224
+ * The autocompile command no longer has a duplicate `--port` option
225
+ * The `#url_for` and `#feed_url` methods now check the presence of the `base_url` site configuration attribute
226
+ * Several outdated URLs are now up-to-date
227
+ * Error handling has been improved in general
228
+
229
+ ## 3.0 (2009-08-14)
230
+
231
+ New:
232
+
233
+ * Multiple data sources
234
+ * Dependency tracking between items
235
+ * Filters can now optionally take arguments
236
+ * `#create_page` and `#create_layout` methods in data sources
237
+ * A new way to specify compilation/routing rules using a Rules file
238
+ * A `coderay` filter ([CodeRay site](http://coderay.rubychan.de/))
239
+ * A `filesystem_compact` data source which uses less directories
240
+
241
+ Changed:
242
+
243
+ * Pages and textual assets are now known as “items”
244
+
245
+ Removed:
246
+
247
+ * Support for drafts
248
+ * Support for binary assets
249
+ * Support for templates
250
+ * Everything that was deprecated in nanoc 2.x
251
+ * `save_*`, `move_*` and `delete_*` methods in data sources
252
+ * Processing instructions in metadata
253
+
254
+ ## 2.2.2 (2009-05-18)
255
+
256
+ * Removed `relativize_paths` filter; use `relativize_paths_in_html` or `relativize_paths_in_css` instead
257
+ * Fixed bug which could cause nanoc to eat massive amounts of memory when an exception occurs
258
+ * Fixed bug which would cause nanoc to complain about the open file limit being reached when using a large amount of assets
259
+
260
+ ## 2.2.1 (2009-04-08)
261
+
262
+ * Fixed bug which prevented `relative_path_to` from working
263
+ * Split `relativize_paths` filter into two filter: `relativize_paths_in_html` and `relativize_paths_in_css`
264
+ * Removed bundled mime-types library
265
+
266
+ ## 2.2 (2009-04-06)
267
+
268
+ New:
269
+
270
+ * `--pages` and `--assets` compiler options
271
+ * `--no-color` commandline option
272
+ * `Filtering` helper
273
+ * `#relative_path_to` function in `LinkTo` helper
274
+ * `rainpress` filter ([Rainpress site](http://code.google.com/p/rainpress/))
275
+ * `relativize_paths` filter
276
+ * The current layout is now accessible through the `@layout` variable
277
+ * Much more informative stack traces when something goes wrong
278
+
279
+ Changed:
280
+
281
+ * The commandline option parser is now a lot more reliable
282
+ * `#atom_feed` now takes optional `:content_proc`, `:excerpt_proc` and `:articles` parameters
283
+ * The compile command show non-written items (those with `skip_output: true`)
284
+ * The compile command compiles everything by default
285
+ * Added `--only-outdated` option to compile only outdated pages
286
+
287
+ Removed:
288
+
289
+ * deprecated extension-based code
290
+
291
+ ## 2.1.6 (2009-02-28)
292
+
293
+ * The `filesystem_combined` data source now supports empty metadata sections
294
+ * The `rdoc` filter now works for both RDoc 1.x and 2.x
295
+ * The autocompiler now serves a 500 when an exception occurs outside compilation
296
+ * The autocompiler no longer serves index files when the request path does not end with a slash
297
+ * The autocompiler now always serves asset content correctly
298
+
299
+ ## 2.1.5 (2009-02-01)
300
+
301
+ * Added Ruby 1.9 compatibility
302
+ * The `filesystem` and `filesystem_combined` data sources now preserve custom extensions
303
+
304
+ ## 2.1.4 (2008-11-15)
305
+
306
+ * Fixed an issue where the autocompiler in Windows would serve broken assets
307
+
308
+ ## 2.1.3 (2008-09-27)
309
+
310
+ * The `haml` and `sass` filters now correctly take their options from assets
311
+ * The autocompiler now serves index files instead of 404s
312
+ * Layouts named “index” are now handled correctly
313
+ * The `filesystem_combined` data source now properly handles assets
314
+
315
+ ## 2.1.2 (2008-09-08)
316
+
317
+ * The utocompiler now compiles assets as well
318
+ * The `sass` filter now takes options (just like the `haml` filter)
319
+ * Haml/Sass options are now taken from the page *rep* instead of the page
320
+
321
+ ## 2.1.1 (2008-08-18)
322
+
323
+ * Fixed issue which would cause files not to be required in the right order
324
+
325
+ ## 2.1 (2008-08-17)
326
+
327
+ This is only a short summary of all changes in 2.1. For details, see the
328
+ [nanoc web site](http://nanoc.stoneship.org/). Especially the blog and the
329
+ updated manual will be useful.
330
+
331
+ New:
332
+
333
+ * New `rdiscount` filter ([RDiscount site](http://github.com/rtomayko/rdiscount))
334
+ * New `maruku` filter ([Maruku site](http://maruku.rubyforge.org/))
335
+ * New `erubis` filter ([Erubis site](http://www.kuwata-lab.com/erubis/))
336
+ * A better commandline frontend
337
+ * A new filesystem data source named `filesystem_combined`
338
+ * Routers, which decide where compiled pages should be written to
339
+ * Page/layout mtimes can now be retrieved through `page.mtime`/`layout.mtime`
340
+
341
+ Changed:
342
+
343
+ * Already compiled pages will no longer be re-compiled unless outdated
344
+ * Layout processors and filters have been merged
345
+ * Layouts no longer rely on file extensions to determine the layout processor
346
+ * Greatly improved source code documentation
347
+ * Greatly improved unit test suite
348
+
349
+ Removed:
350
+
351
+ * Several filters have been removed and replaced by newer filters:
352
+ * `eruby`: use `erb` or `erubis` instead
353
+ * `markdown`: use `bluecloth`, `rdiscount` or `maruku` instead
354
+ * `textile`: use `redcloth` instead
355
+
356
+ ## 2.0.4 (2008-05-04)
357
+
358
+ * Fixed `default.rb`’s `#html_escape`
359
+ * Updated Haml filter and layout processor so that @page, @pages and @config are now available as instance variables instead of local variables
360
+
361
+ ## 2.0.3 (2008-03-25)
362
+
363
+ * The autocompiler now honors custom paths
364
+ * The autocompiler now attempts to serve pages with the most appropriate MIME type, instead of always serving everything as `text/html`
365
+
366
+ ## 2.0.2 (2008-01-26)
367
+
368
+ * nanoc now requires Ruby 1.8.5 instead of 1.8.6
369
+
370
+ ## 2.0.1 (2008-01-21)
371
+
372
+ * Fixed a “too many open files” error that could appear during (auto)compiling
373
+
374
+ ## 2.0 (2007-12-25)
375
+
376
+ New:
377
+
378
+ * Support for custom layout processors
379
+ * Support for custom data sources
380
+ * Database data source
381
+ * An auto-compiler
382
+ * Pages have `parent` and `children`
383
+
384
+ Changed:
385
+
386
+ * The source has been restructured and cleaned up a great deal
387
+ * Filters are defined in a different way now
388
+ * The `eruby` filter now uses ERB instead of Erubis
389
+
390
+ Removed:
391
+
392
+ * The `filters` property; use `filters_pre` instead
393
+ * Support for Liquid
394
+
395
+ ## 1.6.2 (2007-10-23)
396
+
397
+ * Fixed an issue which prevented the content capturing plugin from working
398
+
399
+ ## 1.6.1 (2007-10-14)
400
+
401
+ * Removed a stray debug message
402
+
403
+ ## 1.6 (2007-10-13)
404
+
405
+ * Added support for post-layout filters
406
+ * 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`)
407
+ * Cleaned up the source code a lot
408
+ * Removed deprecated asset-copying functionality
409
+
410
+ ## 1.5 (2007-09-10)
411
+
412
+ * Added support for custom filters
413
+ * Improved Liquid support -- Liquid is now a first-class nanoc citizen
414
+ * Deprecated assets -- use something like rsync instead
415
+ * Added `eruby_engine` option, which can be `erb` or `erubis`
416
+
417
+ ## 1.4 (2007-07-06)
418
+
419
+ * nanoc now supports ERB (as well as Erubis); Erubis no longer is a dependency
420
+ * `meta.yaml` can now have `haml_options` property, which is passed to Haml
421
+ * Pages can now have a `filename` property, which defaults to `index` [Dennis Sutch]
422
+ * Pages now know in what order they should be compiled, eliminating the need for custom page ordering [Dennis Sutch]
423
+
424
+ ## 1.3.1 (2007-06-30)
425
+
426
+ * The contents of the `assets` directory are now copied into the output directory specified in `config.yaml`
427
+
428
+ ## 1.3 (2007-06-24)
429
+
430
+ * The `@pages` array now also contains uncompiled pages
431
+ * Pages with `skip_output` set to true will not be outputted
432
+ * Added new filters
433
+ * Textile/RedCloth
434
+ * Sass
435
+ * nanoc now warns before overwriting in `create_site`, `create_page` and `create_template` (but not in compile)
436
+
437
+ ## 1.2 (2007-06-05)
438
+
439
+ * Sites now have an `assets` directory, whose contents are copied to the `output` directory when compiling [Soryu]
440
+ * Added support for non-eRuby layouts (Markaby, Haml, Liquid, …)
441
+ * Added more filters (Markaby, Haml, Liquid, RDoc [Dmitry Bilunov])
442
+ * Improved error reporting
443
+ * Accessing page attributes using instance variables, and not through `@page`, is no longer possible
444
+ * Page attributes can now be accessed using dot notation, i.e. `@page.title` as well as `@page[:title]`
445
+
446
+ ## 1.1.3 (2007-05-18)
447
+
448
+ * Fixed bug which would cause layoutless pages to be outputted incorrectly
449
+
450
+ ## 1.1.2 (2007-05-17)
451
+
452
+ * Backup files (files ending with a “~”) are now ignored
453
+ * Fixed bug which would cause subpages not to be generated correctly
454
+
455
+ ## 1.1 (2007-05-08)
456
+
457
+ * Added support for nested layouts
458
+ * Added coloured logging
459
+ * `@page` now hold the page that is currently being processed
460
+ * Index files are now called “content” files and are now named after the directory they are in [Colin Barrett]
461
+ * It is now possible to access `@page` in the page’s content file
462
+
463
+ ## 1.0.1 (2007-05-05)
464
+
465
+ * 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
466
+ * Fixed bug which would cause pages not to be sorted by order before compiling
467
+
468
+ ## 1.0 (2007-05-03)
469
+
470
+ * Initial release