nanoc3 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +3 -0
- data/LICENSE +19 -0
- data/NEWS.rdoc +262 -0
- data/README.rdoc +80 -0
- data/Rakefile +11 -0
- data/bin/nanoc3 +16 -0
- data/lib/nanoc3/base/code_snippet.rb +42 -0
- data/lib/nanoc3/base/compiler.rb +225 -0
- data/lib/nanoc3/base/compiler_dsl.rb +110 -0
- data/lib/nanoc3/base/core_ext/array.rb +21 -0
- data/lib/nanoc3/base/core_ext/hash.rb +23 -0
- data/lib/nanoc3/base/core_ext/string.rb +14 -0
- data/lib/nanoc3/base/core_ext.rb +5 -0
- data/lib/nanoc3/base/data_source.rb +197 -0
- data/lib/nanoc3/base/dependency_tracker.rb +291 -0
- data/lib/nanoc3/base/errors.rb +95 -0
- data/lib/nanoc3/base/filter.rb +60 -0
- data/lib/nanoc3/base/item.rb +87 -0
- data/lib/nanoc3/base/item_rep.rb +236 -0
- data/lib/nanoc3/base/layout.rb +53 -0
- data/lib/nanoc3/base/notification_center.rb +68 -0
- data/lib/nanoc3/base/plugin.rb +88 -0
- data/lib/nanoc3/base/preprocessor_context.rb +37 -0
- data/lib/nanoc3/base/rule.rb +37 -0
- data/lib/nanoc3/base/rule_context.rb +68 -0
- data/lib/nanoc3/base/site.rb +334 -0
- data/lib/nanoc3/base.rb +25 -0
- data/lib/nanoc3/cli/base.rb +151 -0
- data/lib/nanoc3/cli/commands/autocompile.rb +89 -0
- data/lib/nanoc3/cli/commands/compile.rb +279 -0
- data/lib/nanoc3/cli/commands/create_item.rb +79 -0
- data/lib/nanoc3/cli/commands/create_layout.rb +94 -0
- data/lib/nanoc3/cli/commands/create_site.rb +320 -0
- data/lib/nanoc3/cli/commands/help.rb +71 -0
- data/lib/nanoc3/cli/commands/info.rb +114 -0
- data/lib/nanoc3/cli/commands/update.rb +96 -0
- data/lib/nanoc3/cli/commands.rb +13 -0
- data/lib/nanoc3/cli/logger.rb +73 -0
- data/lib/nanoc3/cli.rb +16 -0
- data/lib/nanoc3/data_sources/delicious.rb +66 -0
- data/lib/nanoc3/data_sources/filesystem.rb +231 -0
- data/lib/nanoc3/data_sources/filesystem_combined.rb +202 -0
- data/lib/nanoc3/data_sources/filesystem_common.rb +22 -0
- data/lib/nanoc3/data_sources/filesystem_compact.rb +232 -0
- data/lib/nanoc3/data_sources/last_fm.rb +103 -0
- data/lib/nanoc3/data_sources/twitter.rb +53 -0
- data/lib/nanoc3/data_sources.rb +20 -0
- data/lib/nanoc3/extra/auto_compiler.rb +97 -0
- data/lib/nanoc3/extra/chick.rb +119 -0
- data/lib/nanoc3/extra/context.rb +24 -0
- data/lib/nanoc3/extra/core_ext/time.rb +19 -0
- data/lib/nanoc3/extra/core_ext.rb +3 -0
- data/lib/nanoc3/extra/deployers/rsync.rb +64 -0
- data/lib/nanoc3/extra/deployers.rb +12 -0
- data/lib/nanoc3/extra/file_proxy.rb +31 -0
- data/lib/nanoc3/extra/validators/links.rb +0 -0
- data/lib/nanoc3/extra/validators/w3c.rb +71 -0
- data/lib/nanoc3/extra/validators.rb +12 -0
- data/lib/nanoc3/extra/vcs.rb +65 -0
- data/lib/nanoc3/extra/vcses/bazaar.rb +21 -0
- data/lib/nanoc3/extra/vcses/dummy.rb +20 -0
- data/lib/nanoc3/extra/vcses/git.rb +21 -0
- data/lib/nanoc3/extra/vcses/mercurial.rb +21 -0
- data/lib/nanoc3/extra/vcses/subversion.rb +21 -0
- data/lib/nanoc3/extra/vcses.rb +17 -0
- data/lib/nanoc3/extra.rb +16 -0
- data/lib/nanoc3/filters/bluecloth.rb +13 -0
- data/lib/nanoc3/filters/coderay.rb +17 -0
- data/lib/nanoc3/filters/erb.rb +19 -0
- data/lib/nanoc3/filters/erubis.rb +17 -0
- data/lib/nanoc3/filters/haml.rb +20 -0
- data/lib/nanoc3/filters/less.rb +13 -0
- data/lib/nanoc3/filters/markaby.rb +14 -0
- data/lib/nanoc3/filters/maruku.rb +14 -0
- data/lib/nanoc3/filters/rainpress.rb +13 -0
- data/lib/nanoc3/filters/rdiscount.rb +13 -0
- data/lib/nanoc3/filters/rdoc.rb +23 -0
- data/lib/nanoc3/filters/redcloth.rb +14 -0
- data/lib/nanoc3/filters/relativize_paths.rb +32 -0
- data/lib/nanoc3/filters/rubypants.rb +14 -0
- data/lib/nanoc3/filters/sass.rb +17 -0
- data/lib/nanoc3/filters.rb +37 -0
- data/lib/nanoc3/helpers/blogging.rb +226 -0
- data/lib/nanoc3/helpers/breadcrumbs.rb +25 -0
- data/lib/nanoc3/helpers/capturing.rb +71 -0
- data/lib/nanoc3/helpers/filtering.rb +46 -0
- data/lib/nanoc3/helpers/html_escape.rb +22 -0
- data/lib/nanoc3/helpers/link_to.rb +120 -0
- data/lib/nanoc3/helpers/rendering.rb +76 -0
- data/lib/nanoc3/helpers/tagging.rb +58 -0
- data/lib/nanoc3/helpers/text.rb +40 -0
- data/lib/nanoc3/helpers/xml_sitemap.rb +69 -0
- data/lib/nanoc3/helpers.rb +16 -0
- data/lib/nanoc3/package.rb +106 -0
- data/lib/nanoc3/tasks/clean.rake +16 -0
- data/lib/nanoc3/tasks/clean.rb +33 -0
- data/lib/nanoc3/tasks/deploy/rsync.rake +11 -0
- data/lib/nanoc3/tasks/validate.rake +35 -0
- data/lib/nanoc3/tasks.rb +9 -0
- data/lib/nanoc3.rb +19 -0
- data/vendor/cri/ChangeLog +0 -0
- data/vendor/cri/LICENSE +19 -0
- data/vendor/cri/NEWS +0 -0
- data/vendor/cri/README +4 -0
- data/vendor/cri/Rakefile +25 -0
- data/vendor/cri/lib/cri/base.rb +153 -0
- data/vendor/cri/lib/cri/command.rb +105 -0
- data/vendor/cri/lib/cri/core_ext/string.rb +41 -0
- data/vendor/cri/lib/cri/core_ext.rb +8 -0
- data/vendor/cri/lib/cri/option_parser.rb +186 -0
- data/vendor/cri/lib/cri.rb +12 -0
- data/vendor/cri/test/test_base.rb +6 -0
- data/vendor/cri/test/test_command.rb +6 -0
- data/vendor/cri/test/test_core_ext.rb +21 -0
- data/vendor/cri/test/test_option_parser.rb +279 -0
- metadata +225 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::Deployers
|
4
|
+
|
5
|
+
# Nanoc3::Extra::Deployers::Rsync is a deployer that deploys a site using rsync.
|
6
|
+
class Rsync
|
7
|
+
|
8
|
+
# Creates a new deployment task that uses rsync. The deployment
|
9
|
+
# configuration will be taken from the site's configuration file.
|
10
|
+
def initialize
|
11
|
+
# Get site
|
12
|
+
error 'No site configuration found' unless File.file?('config.yaml')
|
13
|
+
@site = Nanoc3::Site.new('.')
|
14
|
+
end
|
15
|
+
|
16
|
+
# Runs the task. Possible params:
|
17
|
+
#
|
18
|
+
# +:dry_run+:: Set to true when the action itself should not be executed,
|
19
|
+
# but still printed. Useful for debugging.
|
20
|
+
#
|
21
|
+
# +:config_name+:: The name of the deployment configuration to use.
|
22
|
+
# Defaults to +:default+ (surprise!).
|
23
|
+
def run(params={})
|
24
|
+
# Extract params
|
25
|
+
config_name = params.has_key?(:config_name) ? params[:config_name].to_sym : :default
|
26
|
+
dry_run = params.has_key?(:dry_run) ? params[:dry_run] : false
|
27
|
+
|
28
|
+
# Validate config
|
29
|
+
error 'No deploy configuration found' if @site.config[:deploy].nil?
|
30
|
+
error "No deploy configuration found for #{config_name}" if @site.config[:deploy][config_name].nil?
|
31
|
+
|
32
|
+
# Set arguments
|
33
|
+
src = File.expand_path(@site.config[:output_dir]) + '/'
|
34
|
+
dst = @site.config[:deploy][config_name][:dst]
|
35
|
+
options = @site.config[:deploy][config_name][:options] || []
|
36
|
+
|
37
|
+
# Validate arguments
|
38
|
+
error 'No dst found in deployment configuration' if dst.nil?
|
39
|
+
error 'dst requires no trailing slash' if dst[-1,1] == '/'
|
40
|
+
|
41
|
+
# Run
|
42
|
+
if dry_run
|
43
|
+
warn 'Performing a dry-run; no actions will actually be performed'
|
44
|
+
run_shell_cmd([ 'echo', 'rsync', options, src, dst ].flatten)
|
45
|
+
else
|
46
|
+
run_shell_cmd([ 'rsync', options, src, dst ].flatten)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
# Prints the given message on stderr and exits.
|
53
|
+
def error(msg)
|
54
|
+
raise RuntimeError.new(msg)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Runs the given shell command. This is a simple wrapper around Kernel#system.
|
58
|
+
def run_shell_cmd(args)
|
59
|
+
system(*args)
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra
|
4
|
+
|
5
|
+
# A FileProxy is a proxy for a File object. It is used to prevent a File
|
6
|
+
# object from being created until it is actually necessary.
|
7
|
+
#
|
8
|
+
# For example, a site with a few thousand items would fail to compile
|
9
|
+
# because the massive amount of file descriptors necessary, but the file
|
10
|
+
# proxy will make sure the File object is not created until it is used.
|
11
|
+
class FileProxy
|
12
|
+
|
13
|
+
instance_methods.each { |m| undef_method m unless m =~ /^__/ || m.to_s == 'object_id' }
|
14
|
+
|
15
|
+
# Creates a new file proxy for the given path. This is similar to
|
16
|
+
# creating a File object with the same path, except that the File object
|
17
|
+
# will not be created until it is accessed.
|
18
|
+
def initialize(path)
|
19
|
+
@path = path
|
20
|
+
end
|
21
|
+
|
22
|
+
# Makes sure all method calls are relayed to a File object, which will
|
23
|
+
# be created right before the method call takes place and destroyed
|
24
|
+
# right after.
|
25
|
+
def method_missing(sym, *args, &block)
|
26
|
+
File.new(@path).__send__(sym, *args, &block)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
File without changes
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::Validators
|
4
|
+
|
5
|
+
# Nanoc3::Extra::Validators::W3C is a validator that uses the W3C web
|
6
|
+
# service to validate HTML and CSS files.
|
7
|
+
class W3C
|
8
|
+
|
9
|
+
def initialize(site, type)
|
10
|
+
@site = site
|
11
|
+
@type = type
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
# Load validator
|
16
|
+
require 'w3c_validators'
|
17
|
+
|
18
|
+
# Make sure config is loaded
|
19
|
+
@site.load_data
|
20
|
+
|
21
|
+
# Find all files
|
22
|
+
files = extensions.map { |extension| Dir["#{@site.config[:output_dir]}/**/*.#{extension}"] }.flatten
|
23
|
+
|
24
|
+
# Validate each file
|
25
|
+
files.each do |file|
|
26
|
+
validation_started(file)
|
27
|
+
results = validator.validate_file(file)
|
28
|
+
validation_ended(file, results.errors)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def extensions
|
35
|
+
case @type
|
36
|
+
when :html
|
37
|
+
[ 'html', 'htm' ]
|
38
|
+
when :css
|
39
|
+
[ 'css' ]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def validator_class
|
44
|
+
case @type
|
45
|
+
when :html
|
46
|
+
::W3CValidators::MarkupValidator
|
47
|
+
when :css
|
48
|
+
::W3CValidators::CSSValidator
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def validator
|
53
|
+
@validator ||= validator_class.new
|
54
|
+
end
|
55
|
+
|
56
|
+
def validation_started(file)
|
57
|
+
$stdout.print "Validating #{file}... "
|
58
|
+
$stdout.flush
|
59
|
+
end
|
60
|
+
|
61
|
+
def validation_ended(file, errors)
|
62
|
+
$stdout.puts(errors.empty? ? "valid" : "INVALID")
|
63
|
+
|
64
|
+
errors.each do |err|
|
65
|
+
puts " #{err}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra
|
4
|
+
|
5
|
+
# Nanoc3::Extra::VCS is a very simple representation of a version control
|
6
|
+
# system that abstracts the add, remove and move operations. It does not
|
7
|
+
# commit. This class is primarily used by data sources that store data as
|
8
|
+
# flat files on the disk.
|
9
|
+
#
|
10
|
+
# This is the abstract superclass for all VCSes. Subclasses should implement
|
11
|
+
# the indicated methods.
|
12
|
+
class VCS < Nanoc3::Plugin
|
13
|
+
|
14
|
+
# Sets the identifiers for this VCS.
|
15
|
+
def self.identifiers(*identifiers)
|
16
|
+
Nanoc3::Extra::VCS.register(self, *identifiers)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Sets the identifier for this VCS.
|
20
|
+
def self.identifier(identifier)
|
21
|
+
Nanoc3::Extra::VCS.register(self, identifier)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Registers the given class as a VCS with the given identifier.
|
25
|
+
def self.register(class_or_name, *identifiers)
|
26
|
+
Nanoc3::Plugin.register(Nanoc3::Extra::VCS, class_or_name, *identifiers)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Adds the file with the given filename to the working copy.
|
30
|
+
#
|
31
|
+
# Subclasses must implement this method.
|
32
|
+
def add(filename)
|
33
|
+
not_implemented('add')
|
34
|
+
end
|
35
|
+
|
36
|
+
# Removes the file with the given filename from the working copy. When
|
37
|
+
# this method is executed, the file should no longer be present on the
|
38
|
+
# disk.
|
39
|
+
#
|
40
|
+
# Subclasses must implement this method.
|
41
|
+
def remove(filename)
|
42
|
+
not_implemented('remove')
|
43
|
+
end
|
44
|
+
|
45
|
+
# Moves the file with the given filename to a new location. When this
|
46
|
+
# method is executed, the original file should no longer be present on the
|
47
|
+
# disk.
|
48
|
+
#
|
49
|
+
# Subclasses must implement this method.
|
50
|
+
def move(src, dst)
|
51
|
+
not_implemented('move')
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def not_implemented(name)
|
57
|
+
raise NotImplementedError.new(
|
58
|
+
"#{self.class} does not override ##{name}, which is required for " +
|
59
|
+
"this data source to be used."
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::VCSes
|
4
|
+
|
5
|
+
class Bazaar < Nanoc3::Extra::VCS
|
6
|
+
|
7
|
+
def add(filename)
|
8
|
+
system('bzr', 'add', filename)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove(filename)
|
12
|
+
system('bzr', 'rm', filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
def move(src, dst)
|
16
|
+
system('bzr', 'mv', src, dst)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::VCSes
|
4
|
+
|
5
|
+
class Dummy < Nanoc3::Extra::VCS
|
6
|
+
|
7
|
+
def add(filename)
|
8
|
+
end
|
9
|
+
|
10
|
+
def remove(filename)
|
11
|
+
FileUtils.rm_rf(filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
def move(src, dst)
|
15
|
+
FileUtils.move(src, dst)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::VCSes
|
4
|
+
|
5
|
+
class Git < Nanoc3::Extra::VCS
|
6
|
+
|
7
|
+
def add(filename)
|
8
|
+
system('git', 'add', filename)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove(filename)
|
12
|
+
system('git', 'rm', filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
def move(src, dst)
|
16
|
+
system('git', 'mv', src, dst)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::VCSes
|
4
|
+
|
5
|
+
class Mercurial < Nanoc3::Extra::VCS
|
6
|
+
|
7
|
+
def add(filename)
|
8
|
+
system('hg', 'add', filename)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove(filename)
|
12
|
+
system('hg', 'rm', filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
def move(src, dst)
|
16
|
+
system('hg', 'mv', src, dst)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::VCSes
|
4
|
+
|
5
|
+
class Subversion < Nanoc3::Extra::VCS
|
6
|
+
|
7
|
+
def add(filename)
|
8
|
+
system('svn', 'add', filename)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove(filename)
|
12
|
+
system('svn', 'rm', filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
def move(src, dst)
|
16
|
+
system('svn', 'mv', src, dst)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra::VCSes
|
4
|
+
|
5
|
+
autoload 'Bazaar', 'nanoc3/extra/vcses/bazaar'
|
6
|
+
autoload 'Dummy', 'nanoc3/extra/vcses/dummy'
|
7
|
+
autoload 'Git', 'nanoc3/extra/vcses/git'
|
8
|
+
autoload 'Mercurial', 'nanoc3/extra/vcses/mercurial'
|
9
|
+
autoload 'Subversion', 'nanoc3/extra/vcses/subversion'
|
10
|
+
|
11
|
+
Nanoc3::Extra::VCS.register '::Nanoc3::Extra::VCSes::Bazaar', :bazaar, :bzr
|
12
|
+
Nanoc3::Extra::VCS.register '::Nanoc3::Extra::VCSes::Dummy', :dummy
|
13
|
+
Nanoc3::Extra::VCS.register '::Nanoc3::Extra::VCSes::Git', :git
|
14
|
+
Nanoc3::Extra::VCS.register '::Nanoc3::Extra::VCSes::Mercurial', :mercurial, :hg
|
15
|
+
Nanoc3::Extra::VCS.register '::Nanoc3::Extra::VCSes::Subversion', :subversion, :svn
|
16
|
+
|
17
|
+
end
|
data/lib/nanoc3/extra.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Extra
|
4
|
+
|
5
|
+
autoload 'AutoCompiler', 'nanoc3/extra/auto_compiler'
|
6
|
+
autoload 'CHiCk', 'nanoc3/extra/chick'
|
7
|
+
autoload 'Context', 'nanoc3/extra/context'
|
8
|
+
autoload 'Deployers', 'nanoc3/extra/deployers'
|
9
|
+
autoload 'FileProxy', 'nanoc3/extra/file_proxy'
|
10
|
+
autoload 'Validators', 'nanoc3/extra/validators'
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'nanoc3/extra/core_ext'
|
15
|
+
require 'nanoc3/extra/vcs'
|
16
|
+
require 'nanoc3/extra/vcses'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class CodeRay < Nanoc3::Filter
|
5
|
+
|
6
|
+
def run(content, params={})
|
7
|
+
require 'coderay'
|
8
|
+
|
9
|
+
# Check params
|
10
|
+
raise ArgumentError, "CodeRay filter requires a :language argument which is missing" if params[:language].nil?
|
11
|
+
|
12
|
+
# Get result
|
13
|
+
::CodeRay.scan(content, params[:language]).html
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class ERB < Nanoc3::Filter
|
5
|
+
|
6
|
+
def run(content, params={})
|
7
|
+
require 'erb'
|
8
|
+
|
9
|
+
# Create context
|
10
|
+
context = ::Nanoc3::Extra::Context.new(assigns)
|
11
|
+
|
12
|
+
# Get result
|
13
|
+
erb = ::ERB.new(content)
|
14
|
+
erb.filename = filename
|
15
|
+
erb.result(context.get_binding { assigns[:content] })
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class Erubis < Nanoc3::Filter
|
5
|
+
|
6
|
+
def run(content, params={})
|
7
|
+
require 'erubis'
|
8
|
+
|
9
|
+
# Create context
|
10
|
+
context = ::Nanoc3::Extra::Context.new(assigns)
|
11
|
+
|
12
|
+
# Get result
|
13
|
+
::Erubis::Eruby.new(content, :filename => filename).result(context.get_binding { assigns[:content] })
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class Haml < Nanoc3::Filter
|
5
|
+
|
6
|
+
def run(content, params={})
|
7
|
+
require 'haml'
|
8
|
+
|
9
|
+
# Get options
|
10
|
+
options = params.merge(:filename => filename)
|
11
|
+
|
12
|
+
# Create context
|
13
|
+
context = ::Nanoc3::Extra::Context.new(assigns)
|
14
|
+
|
15
|
+
# Get result
|
16
|
+
::Haml::Engine.new(content, options).render(context, assigns) { assigns[:content] }
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class RDoc < Nanoc3::Filter
|
5
|
+
|
6
|
+
def run(content, params={})
|
7
|
+
begin
|
8
|
+
# new RDoc
|
9
|
+
require 'rdoc/markup'
|
10
|
+
require 'rdoc/markup/to_html'
|
11
|
+
|
12
|
+
::RDoc::Markup.new.convert(content, ::RDoc::Markup::ToHtml.new)
|
13
|
+
rescue LoadError
|
14
|
+
# old RDoc
|
15
|
+
require 'rdoc/markup/simple_markup'
|
16
|
+
require 'rdoc/markup/simple_markup/to_html'
|
17
|
+
|
18
|
+
::SM::SimpleMarkup.new.convert(content, ::SM::ToHtml.new)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class RelativizePaths < Nanoc3::Filter
|
5
|
+
|
6
|
+
require 'nanoc3/helpers/link_to'
|
7
|
+
include Nanoc3::Helpers::LinkTo
|
8
|
+
|
9
|
+
def run(content, params={})
|
10
|
+
# Set assigns so helper function can be used
|
11
|
+
@item_rep = assigns[:item_rep] if @item_rep.nil?
|
12
|
+
|
13
|
+
# Filter
|
14
|
+
case params[:type]
|
15
|
+
when :html
|
16
|
+
content.gsub(/(src|href)=(['"]?)(\/.+?)\2([ >])/) do
|
17
|
+
$1 + '=' + $2 + relative_path_to($3) + $2 + $4
|
18
|
+
end
|
19
|
+
when :css
|
20
|
+
content.gsub(/url\((['"]?)(\/.+?)\1\)/) do
|
21
|
+
'url(' + $1 + relative_path_to($2) + $1 + ')'
|
22
|
+
end
|
23
|
+
else
|
24
|
+
raise RuntimeError.new(
|
25
|
+
"The relativize_paths needs to know the type of content to " +
|
26
|
+
"process. Pass :type => :html for HTML or :type => :css for CSS."
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nanoc3::Filters
|
4
|
+
class Sass < Nanoc3::Filter
|
5
|
+
|
6
|
+
def run(content, params={})
|
7
|
+
require 'sass'
|
8
|
+
|
9
|
+
# Get options
|
10
|
+
options = params.merge(:filename => filename)
|
11
|
+
|
12
|
+
# Get result
|
13
|
+
::Sass::Engine.new(content, options).render
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|