nanoc 3.6.0 → 3.6.1

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nanoc (3.6.0)
4
+ nanoc (3.6.1)
5
5
  cri (~> 2.3)
6
6
 
7
7
  GEM
@@ -11,18 +11,18 @@ GEM
11
11
  adsf (1.1.1)
12
12
  rack (>= 1.0.0)
13
13
  bluecloth (2.2.0)
14
- builder (3.1.4)
15
- coderay (1.0.8)
14
+ builder (3.2.0)
15
+ coderay (1.0.9)
16
16
  coffee-script (2.2.0)
17
17
  coffee-script-source
18
18
  execjs
19
- coffee-script-source (1.4.0)
19
+ coffee-script-source (1.5.0)
20
20
  colored (1.2)
21
21
  commonjs (0.2.6)
22
22
  cri (2.3.0)
23
23
  colored (>= 1.2)
24
24
  erubis (2.7.0)
25
- excon (0.16.10)
25
+ excon (0.18.5)
26
26
  execjs (1.4.0)
27
27
  multi_json (~> 1.0)
28
28
  fog (1.9.0)
@@ -38,7 +38,7 @@ GEM
38
38
  formatador (0.2.4)
39
39
  haml (4.0.0)
40
40
  tilt
41
- handlebars (0.3.2)
41
+ handlebars (0.4.0)
42
42
  commonjs (~> 0.2.3)
43
43
  therubyracer (~> 0.11.1)
44
44
  json (1.7.7)
@@ -46,7 +46,7 @@ GEM
46
46
  less (2.2.2)
47
47
  commonjs (~> 0.2.6)
48
48
  libv8 (3.11.8.13)
49
- listen (0.7.2)
49
+ listen (0.7.3)
50
50
  markaby (0.7.2)
51
51
  builder (>= 2.0.0)
52
52
  maruku (0.6.1)
@@ -69,20 +69,20 @@ GEM
69
69
  coderay (~> 1.0.5)
70
70
  method_source (~> 0.8)
71
71
  slop (~> 3.4)
72
- pygments.rb (0.3.7)
72
+ pygments.rb (0.4.2)
73
73
  posix-spawn (~> 0.3.6)
74
74
  yajl-ruby (~> 1.1.0)
75
75
  rack (1.5.2)
76
76
  rainpress (1.0)
77
77
  rake (10.0.3)
78
78
  rdiscount (2.0.7)
79
- rdoc (3.12.1)
79
+ rdoc (4.0.0)
80
80
  json (~> 1.4)
81
81
  redcarpet (2.2.2)
82
82
  ref (1.0.2)
83
83
  ruby-hmac (0.4.0)
84
84
  rubypants (0.2.0)
85
- sass (3.2.5)
85
+ sass (3.2.6)
86
86
  slim (1.3.6)
87
87
  temple (~> 0.5.5)
88
88
  tilt (~> 1.3.3)
@@ -103,7 +103,7 @@ GEM
103
103
  json
104
104
  nokogiri
105
105
  yajl-ruby (1.1.0)
106
- yard (0.8.4.1)
106
+ yard (0.8.5)
107
107
  yuicompressor (1.2.0)
108
108
 
109
109
  PLATFORMS
data/NEWS.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # nanoc news
2
2
 
3
+ ## 3.6.1 (2013-02-25)
4
+
5
+ Fixes:
6
+
7
+ * Fixed bug which could cause the Sass filter to raise a load error [Damien Pollet]
8
+ * Fixed warnings about `__send__` and `object_id` being redefined [Justin Hileman]
9
+ * Made `files_to_watch` contain `nanoc.yaml`, not `config.yaml` by default
10
+
3
11
  ## 3.6 (2013-02-24)
4
12
 
5
13
  Features:
data/lib/nanoc.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Nanoc
4
4
 
5
5
  # The current nanoc version.
6
- VERSION = '3.6.0'
6
+ VERSION = '3.6.1'
7
7
 
8
8
  # @return [String] A string containing information about this nanoc version
9
9
  # and its environment (Ruby engine and version, Rubygems version if any).
@@ -9,7 +9,16 @@ module Nanoc
9
9
 
10
10
  extend Forwardable
11
11
 
12
- DELEGATED_METHODS = Array.instance_methods + Enumerable.instance_methods - [ :[], :slice, :at, :initialize, :freeze ]
12
+ EXCLUDED_METHODS = [
13
+ :[], :at, :slice, :class, :singleton_class, :clone, :dup, :initialize_dup, :initialize_clone,
14
+ :freeze, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods,
15
+ :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?,
16
+ :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :respond_to_missing?,
17
+ :extend, :display, :method, :public_method, :define_singleton_method, :object_id, :equal?,
18
+ :instance_eval, :instance_exec, :__send__, :__id__
19
+ ]
20
+
21
+ DELEGATED_METHODS = Array.instance_methods + Enumerable.instance_methods - EXCLUDED_METHODS
13
22
  def_delegators :@items, *DELEGATED_METHODS
14
23
 
15
24
  def initialize
@@ -53,7 +53,7 @@ module Nanoc::CLI
53
53
  end
54
54
  end
55
55
 
56
- # Asserts that the current workign directory contains a site (just like
56
+ # Asserts that the current working directory contains a site (just like
57
57
  # {#require_site}) and loads the site into memory.
58
58
  #
59
59
  # @return [void]
@@ -97,7 +97,7 @@ watcher:
97
97
 
98
98
  # A list of single files to watch for changes. As mentioned above, don’t put
99
99
  # any files from the “output/” or “tmp/” directories in here.
100
- files_to_watch: [ 'config.yaml', 'Rules' ]
100
+ files_to_watch: [ 'nanoc.yaml', 'Rules' ]
101
101
 
102
102
  # When to send notifications (using Growl or notify-send).
103
103
  notify_on_compilation_success: true
@@ -238,7 +238,7 @@ module Nanoc::CLI
238
238
  # Build message
239
239
  if gem_name
240
240
  if self.using_bundler?
241
- "Make sure the gem is added to Gemfile and run `bundle up`."
241
+ "Make sure the gem is added to Gemfile and run `bundle install`."
242
242
  else
243
243
  "Install the '#{gem_name}' gem using `gem install #{gem_name}`."
244
244
  end
@@ -3,7 +3,7 @@
3
3
  module Nanoc::Filters
4
4
  class Sass < Nanoc::Filter
5
5
 
6
- requires 'sass'
6
+ requires 'sass', 'nanoc/filters/sass/sass_filesystem_importer'
7
7
 
8
8
  class << self
9
9
  # The current filter. This is definitely going to bite me if I ever get
@@ -11,27 +11,6 @@ module Nanoc::Filters
11
11
  attr_accessor :current
12
12
  end
13
13
 
14
- # Essentially the `Sass::Importers::Filesystem` but registering each
15
- # import file path.
16
- class SassFilesystemImporter < ::Sass::Importers::Filesystem
17
-
18
- private
19
-
20
- def _find(dir, name, options)
21
- full_filename, syntax = ::Sass::Util.destructure(find_real_file(dir, name, options))
22
- return unless full_filename && File.readable?(full_filename)
23
-
24
- filter = Nanoc::Filters::Sass.current # FIXME ew global
25
- item = filter.imported_filename_to_item(full_filename)
26
- filter.depend_on([ item ]) unless item.nil?
27
-
28
- options[:syntax] = syntax
29
- options[:filename] = full_filename
30
- options[:importer] = self
31
- ::Sass::Engine.new(File.read(full_filename), options)
32
- end
33
- end
34
-
35
14
  # Runs the content through [Sass](http://sass-lang.com/).
36
15
  # Parameters passed to this filter will be passed on to Sass.
37
16
  #
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ module Nanoc::Filters
4
+ class Sass
5
+
6
+ # Essentially the `Sass::Importers::Filesystem` but registering each
7
+ # import file path.
8
+ class SassFilesystemImporter < ::Sass::Importers::Filesystem
9
+
10
+ private
11
+
12
+ def _find(dir, name, options)
13
+ full_filename, syntax = ::Sass::Util.destructure(find_real_file(dir, name, options))
14
+ return unless full_filename && File.readable?(full_filename)
15
+
16
+ filter = Nanoc::Filters::Sass.current # FIXME ew global
17
+ item = filter.imported_filename_to_item(full_filename)
18
+ filter.depend_on([ item ]) unless item.nil?
19
+
20
+ options[:syntax] = syntax
21
+ options[:filename] = full_filename
22
+ options[:importer] = self
23
+ ::Sass::Engine.new(File.read(full_filename), options)
24
+ end
25
+ end
26
+
27
+ end
28
+ end
@@ -20,22 +20,42 @@ class Nanoc::CLI::Commands::WatchTest < MiniTest::Unit::TestCase
20
20
  end
21
21
  end
22
22
 
23
+ def test_change_nanoc_dot_yaml
24
+ Nanoc::CLI.run %w( create-site bleh )
25
+ Dir.chdir('bleh') do
26
+ File.open('Rules', 'w') do |io|
27
+ io.write("compile '*' do ; filter :erb ; end\n")
28
+ io.write("route '*' do ; item.identifier + 'index.html' ; end\n")
29
+ end
30
+
31
+ config_contents = File.read('nanoc.yaml')
32
+
33
+ watch_thread = Thread.new do
34
+ Nanoc::CLI.run %w( watch )
35
+ end
36
+
37
+ File.open('content/index.html', 'w') { |io| io.write('<%= @config[:blah].inspect %>!!!') }
38
+ self.wait_until_content_equals('output/index.html', 'nil!!!')
39
+
40
+ File.open('nanoc.yaml', 'w') { |io| io.write(config_contents + "\nblah: 456\n") }
41
+ self.wait_until_content_equals('output/index.html', '456!!!')
42
+
43
+ watch_thread.kill
44
+ end
45
+ end
46
+
23
47
  def test_notify
24
- old_path = ENV['PATH']
25
48
  with_site do |s|
26
49
  watch_thread = Thread.new do
27
50
  Nanoc::CLI.run %w( watch )
28
51
  end
29
52
 
30
- ENV['PATH'] = '.' # so that neither which nor where can be found
31
53
  File.open('content/index.html', 'w') { |io| io.write('Hello there!') }
32
54
  self.wait_until_exists('output/index.html')
33
55
  assert_equal 'Hello there!', File.read('output/index.html')
34
56
 
35
57
  watch_thread.kill
36
58
  end
37
- ensure
38
- ENV['PATH'] = old_path
39
59
  end
40
60
 
41
61
  def wait_until_exists(filename)
@@ -48,16 +68,23 @@ class Nanoc::CLI::Commands::WatchTest < MiniTest::Unit::TestCase
48
68
  end
49
69
  end
50
70
 
51
- def wait_until_content_equals(filename, content)
71
+ def wait_until_content_equals(filename, expected_content)
52
72
  self.wait_until_exists(filename)
53
73
 
54
74
  20.times do
55
- break if File.read(filename) == content
75
+ break if File.read(filename) == expected_content
56
76
  sleep 0.5
57
77
  end
58
- if File.read(filename) != content
59
- raise RuntimeError, "Expected #{filename} to have content #{content} but it doesn't :("
78
+
79
+ actual_content = File.read(filename)
80
+ if actual_content != expected_content
81
+ raise RuntimeError, "Expected #{filename} to have " \
82
+ "content #{expected_content.inspect} but it had " \
83
+ "content #{actual_content.inspect} instead :("
60
84
  end
85
+
86
+ # Ugly, but seems to be necessary or changes are not picked up. :(
87
+ sleep 0.5
61
88
  end
62
89
 
63
90
  end
@@ -120,7 +120,7 @@ class Nanoc::Filters::LessTest < MiniTest::Unit::TestCase
120
120
 
121
121
  # Run filter with compress option
122
122
  result = filter.setup_and_run('.foo { bar: a; } .bar { foo: b; }', :compress => true)
123
- assert_match(/^\.foo{bar:a;}\n\.bar{foo:b;}/, result)
123
+ assert_match(/^\.foo\{bar:a;\}\n\.bar\{foo:b;\}/, result)
124
124
  end
125
125
  end
126
126
 
@@ -11,7 +11,7 @@ class Nanoc::Filters::UglifyJSTest < MiniTest::Unit::TestCase
11
11
 
12
12
  # Run filter
13
13
  result = filter.setup_and_run("foo = 1; (function(bar) { if (true) alert(bar); })(foo)")
14
- assert_match(/foo=1,function\((.)\){alert\(\1\)}\(foo\);/, result)
14
+ assert_match(/foo=1,function\((.)\)\{alert\(\1\)\}\(foo\);/, result)
15
15
  end
16
16
  end
17
17
 
@@ -23,7 +23,7 @@ class Nanoc::Filters::UglifyJSTest < MiniTest::Unit::TestCase
23
23
 
24
24
  # Run filter
25
25
  result = filter.setup_and_run("foo = 1; (function(bar) { if (true) alert(bar); })(foo)", :toplevel => true)
26
- assert_match(/foo=1,function\((.)\){alert\(\1\)}\(foo\);/, result)
26
+ assert_match(/foo=1,function\((.)\)\{alert\(\1\)\}\(foo\);/, result)
27
27
  end
28
28
  end
29
29
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.0
4
+ version: 3.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-24 00:00:00.000000000 Z
12
+ date: 2013-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cri
@@ -264,6 +264,7 @@ files:
264
264
  - lib/nanoc/filters/redcloth.rb
265
265
  - lib/nanoc/filters/relativize_paths.rb
266
266
  - lib/nanoc/filters/rubypants.rb
267
+ - lib/nanoc/filters/sass/sass_filesystem_importer.rb
267
268
  - lib/nanoc/filters/sass.rb
268
269
  - lib/nanoc/filters/slim.rb
269
270
  - lib/nanoc/filters/typogruby.rb