nanoc3 3.0.0
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/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
|