nutils 0.7.0 → 0.8.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/README.md +1 -0
- data/lib/nutils/filters/sass.rb +46 -51
- data/lib/nutils/filters.rb +12 -10
- data/lib/nutils.rb +6 -6
- metadata +5 -5
data/README.md
CHANGED
@@ -9,6 +9,7 @@ A set of utilities for Nanoc3.
|
|
9
9
|
* **sprockets** Runs the content through [Sprockets](http://getsprockets.org)
|
10
10
|
* **svg_to_png** Converts an SVG to PNG. Tested in Mac OS X 10.6, Ruby 1.8.7, Nanoc 3.1.6 and Batik 1.7.
|
11
11
|
* **yuicompressor** Compress the content with [YUI Compressor](http://developer.yahoo.com/yui/compressor/). Tested in Mac OS X 10.6, Ruby 1.8.7, Nanoc 3.1.6 and yui-compressor 0.9.1.
|
12
|
+
* **zass** Compiles the content using [Sass](http://sass-lang.com/) 3.1. Tested in Mac OS X 10.6.7, Ruby 1.8.7, Nanoc 3.1.6 and sass 3.1.
|
12
13
|
|
13
14
|
## Data Sources
|
14
15
|
* **filesystem_customizable** Allows an array for source directories and for layout directories.
|
data/lib/nutils/filters/sass.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'sass'
|
4
|
+
|
3
5
|
module Nutils
|
4
6
|
module Filters
|
5
7
|
class Sass < Nanoc3::Filters::Sass
|
8
|
+
FILES = []
|
6
9
|
identifier :zass
|
7
10
|
type :text
|
8
11
|
|
@@ -13,70 +16,62 @@ module Nutils
|
|
13
16
|
#
|
14
17
|
# @return [String] The filtered content
|
15
18
|
def run(content, params={})
|
16
|
-
require 'sass'
|
17
|
-
|
18
|
-
# Add imported_filename read accessor to ImportNode
|
19
|
-
# … but… but… nex3 said I could monkey patch it! :(
|
20
|
-
methods = ::Sass::Tree::ImportNode.instance_methods
|
21
|
-
if !methods.include?(:import_filename) && !methods.include?('import_filename')
|
22
|
-
::Sass::Tree::ImportNode.send(:attr_reader, :imported_filename)
|
23
|
-
end
|
24
|
-
|
25
19
|
# Get options
|
26
20
|
options = params.dup
|
27
21
|
sass_filename = options[:filename] || (@item && @item[:content_filename])
|
28
22
|
options[:filename] ||= sass_filename
|
29
|
-
|
23
|
+
options[:filesystem_importer] ||= Nutils::Importers::Nanoc
|
24
|
+
|
30
25
|
# Build engine
|
31
26
|
engine = ::Sass::Engine.new(content, options)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
until unprocessed_nodes.empty?
|
38
|
-
# Get an unprocessed node
|
39
|
-
node = unprocessed_nodes.each { |n| break n }
|
40
|
-
unprocessed_nodes.delete(node)
|
41
|
-
|
42
|
-
# Add to list of import nodes if necessary
|
43
|
-
imported_nodes << node if node.is_a?(::Sass::Tree::ImportNode)
|
44
|
-
|
45
|
-
# Mark children of this node for processing
|
46
|
-
node.children.each { |c| unprocessed_nodes << c }
|
27
|
+
output = engine.render
|
28
|
+
|
29
|
+
until Nutils::Filters::Sass::FILES.empty?
|
30
|
+
filename = Nutils::Filters::Sass::FILES.pop
|
31
|
+
notify(filename)
|
47
32
|
end
|
33
|
+
|
34
|
+
return output
|
35
|
+
end
|
48
36
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
37
|
+
def notify(filename)
|
38
|
+
pathname = Pathname.new(filename)
|
39
|
+
item = @items.find { |i| i[:content_filename] && Pathname.new(i[:content_filename]).realpath == pathname.realpath }
|
40
|
+
|
41
|
+
# Notify
|
42
|
+
::Nanoc3::NotificationCenter.post(:visit_started, item)
|
43
|
+
::Nanoc3::NotificationCenter.post(:visit_ended, item)
|
44
|
+
|
45
|
+
# Raise unmet dependency error if item is not yet compiled
|
46
|
+
any_uncompiled_rep = item.reps.find { |r| !r.compiled? }
|
47
|
+
raise ::Nanoc3::Errors::UnmetDependency.new(any_uncompiled_rep) if any_uncompiled_rep
|
48
|
+
end
|
56
49
|
|
57
|
-
|
58
|
-
|
59
|
-
pathname = Pathname.new(filename)
|
60
|
-
next unless pathname.file?
|
61
|
-
normalized_filename = pathname.realpath
|
62
|
-
@items.find { |i| i[:content_filename] && Pathname.new(i[:content_filename]).realpath == normalized_filename }
|
63
|
-
end.compact
|
50
|
+
end
|
51
|
+
end
|
64
52
|
|
65
|
-
# Require compilation of each item
|
66
|
-
imported_items.each do |item|
|
67
|
-
# Notify
|
68
|
-
Nanoc3::NotificationCenter.post(:visit_started, item)
|
69
|
-
Nanoc3::NotificationCenter.post(:visit_ended, item)
|
70
53
|
|
71
|
-
|
72
|
-
any_uncompiled_rep = item.reps.find { |r| !r.compiled? }
|
73
|
-
raise Nanoc3::Errors::UnmetDependency.new(any_uncompiled_rep) if any_uncompiled_rep
|
74
|
-
end
|
54
|
+
module Importers
|
75
55
|
|
76
|
-
|
77
|
-
|
56
|
+
##
|
57
|
+
# Essentially the {Sass::Importers::Filesystem} but registering each import
|
58
|
+
# file path.
|
59
|
+
class Nanoc < ::Sass::Importers::Filesystem
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def _find(dir, name, options)
|
64
|
+
full_filename, syntax = find_real_file(dir, name)
|
65
|
+
return unless full_filename && File.readable?(full_filename)
|
66
|
+
|
67
|
+
Nutils::Filters::Sass::FILES << full_filename
|
68
|
+
|
69
|
+
options[:syntax] = syntax
|
70
|
+
options[:filename] = full_filename
|
71
|
+
options[:importer] = self
|
72
|
+
::Sass::Engine.new(File.read(full_filename), options)
|
78
73
|
end
|
79
|
-
|
80
74
|
end
|
81
75
|
end
|
76
|
+
|
82
77
|
end
|
data/lib/nutils/filters.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
module Nutils
|
2
2
|
module Filters
|
3
|
-
autoload
|
4
|
-
autoload
|
5
|
-
autoload
|
6
|
-
autoload
|
7
|
-
autoload
|
3
|
+
autoload 'Beautify', 'nutils/filters/beautify'
|
4
|
+
autoload 'Crop', 'nutils/filters/crop'
|
5
|
+
autoload 'SprocketWheel', 'nutils/filters/sprockets'
|
6
|
+
autoload 'SvgToPng', 'nutils/filters/svg2png'
|
7
|
+
autoload 'YuiCompressor', 'nutils/filters/yuicompressor'
|
8
|
+
autoload 'Sass', 'nutils/filters/sass'
|
8
9
|
|
9
|
-
::Nanoc3::Filter.register
|
10
|
-
::Nanoc3::Filter.register
|
11
|
-
::Nanoc3::Filter.register
|
12
|
-
::Nanoc3::Filter.register
|
13
|
-
::Nanoc3::Filter.register
|
10
|
+
::Nanoc3::Filter.register '::Nutils::Filters::Beautify', :beautify
|
11
|
+
::Nanoc3::Filter.register '::Nutils::Filters::Crop', :crop
|
12
|
+
::Nanoc3::Filter.register '::Nutils::Filters::SprocketWheel', :sprockets
|
13
|
+
::Nanoc3::Filter.register '::Nutils::Filters::SvgToPng', :svg_to_png
|
14
|
+
::Nanoc3::Filter.register '::Nutils::Filters::YuiCompressor', :yuicompressor
|
15
|
+
::Nanoc3::Filter.register '::Nutils::Filters::Sass', :zass
|
14
16
|
end
|
15
17
|
end
|
data/lib/nutils.rb
CHANGED
@@ -3,15 +3,15 @@
|
|
3
3
|
module Nutils
|
4
4
|
|
5
5
|
# The current nutils version.
|
6
|
-
VERSION =
|
6
|
+
VERSION = '0.8.1'
|
7
7
|
|
8
8
|
end
|
9
9
|
|
10
10
|
# Load requirements
|
11
|
-
require
|
11
|
+
require 'nanoc3'
|
12
12
|
|
13
13
|
# Load nutils
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
14
|
+
require 'nutils/base'
|
15
|
+
require 'nutils/data_sources'
|
16
|
+
require 'nutils/filters'
|
17
|
+
require 'nutils/helpers'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 8
|
9
|
+
- 1
|
10
|
+
version: 0.8.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Arnau Siches
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-26 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|