nanoc 2.2.2 → 3.0.0a1

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.
Files changed (116) hide show
  1. data/bin/nanoc +29 -11
  2. data/bin/nanoc-select +85 -0
  3. metadata +27 -161
  4. data/ChangeLog +0 -3
  5. data/LICENSE +0 -19
  6. data/README +0 -75
  7. data/Rakefile +0 -76
  8. data/lib/nanoc.rb +0 -73
  9. data/lib/nanoc/base.rb +0 -26
  10. data/lib/nanoc/base/asset.rb +0 -117
  11. data/lib/nanoc/base/asset_defaults.rb +0 -21
  12. data/lib/nanoc/base/asset_rep.rb +0 -282
  13. data/lib/nanoc/base/binary_filter.rb +0 -44
  14. data/lib/nanoc/base/code.rb +0 -41
  15. data/lib/nanoc/base/compiler.rb +0 -67
  16. data/lib/nanoc/base/core_ext.rb +0 -2
  17. data/lib/nanoc/base/core_ext/hash.rb +0 -78
  18. data/lib/nanoc/base/core_ext/string.rb +0 -8
  19. data/lib/nanoc/base/data_source.rb +0 -286
  20. data/lib/nanoc/base/defaults.rb +0 -30
  21. data/lib/nanoc/base/filter.rb +0 -93
  22. data/lib/nanoc/base/layout.rb +0 -91
  23. data/lib/nanoc/base/notification_center.rb +0 -66
  24. data/lib/nanoc/base/page.rb +0 -132
  25. data/lib/nanoc/base/page_defaults.rb +0 -20
  26. data/lib/nanoc/base/page_rep.rb +0 -324
  27. data/lib/nanoc/base/plugin.rb +0 -71
  28. data/lib/nanoc/base/proxies.rb +0 -5
  29. data/lib/nanoc/base/proxies/asset_proxy.rb +0 -29
  30. data/lib/nanoc/base/proxies/asset_rep_proxy.rb +0 -26
  31. data/lib/nanoc/base/proxies/layout_proxy.rb +0 -25
  32. data/lib/nanoc/base/proxies/page_proxy.rb +0 -35
  33. data/lib/nanoc/base/proxies/page_rep_proxy.rb +0 -28
  34. data/lib/nanoc/base/proxy.rb +0 -37
  35. data/lib/nanoc/base/router.rb +0 -72
  36. data/lib/nanoc/base/site.rb +0 -274
  37. data/lib/nanoc/base/template.rb +0 -64
  38. data/lib/nanoc/binary_filters.rb +0 -1
  39. data/lib/nanoc/binary_filters/image_science_thumbnail.rb +0 -28
  40. data/lib/nanoc/cli.rb +0 -9
  41. data/lib/nanoc/cli/base.rb +0 -132
  42. data/lib/nanoc/cli/commands.rb +0 -10
  43. data/lib/nanoc/cli/commands/autocompile.rb +0 -80
  44. data/lib/nanoc/cli/commands/compile.rb +0 -311
  45. data/lib/nanoc/cli/commands/create_layout.rb +0 -85
  46. data/lib/nanoc/cli/commands/create_page.rb +0 -85
  47. data/lib/nanoc/cli/commands/create_site.rb +0 -323
  48. data/lib/nanoc/cli/commands/create_template.rb +0 -76
  49. data/lib/nanoc/cli/commands/help.rb +0 -69
  50. data/lib/nanoc/cli/commands/info.rb +0 -125
  51. data/lib/nanoc/cli/commands/switch.rb +0 -141
  52. data/lib/nanoc/cli/commands/update.rb +0 -91
  53. data/lib/nanoc/cli/logger.rb +0 -72
  54. data/lib/nanoc/data_sources.rb +0 -2
  55. data/lib/nanoc/data_sources/filesystem.rb +0 -707
  56. data/lib/nanoc/data_sources/filesystem_combined.rb +0 -495
  57. data/lib/nanoc/extra.rb +0 -6
  58. data/lib/nanoc/extra/auto_compiler.rb +0 -285
  59. data/lib/nanoc/extra/context.rb +0 -22
  60. data/lib/nanoc/extra/core_ext.rb +0 -2
  61. data/lib/nanoc/extra/core_ext/hash.rb +0 -54
  62. data/lib/nanoc/extra/core_ext/time.rb +0 -13
  63. data/lib/nanoc/extra/file_proxy.rb +0 -29
  64. data/lib/nanoc/extra/vcs.rb +0 -48
  65. data/lib/nanoc/extra/vcses.rb +0 -5
  66. data/lib/nanoc/extra/vcses/bazaar.rb +0 -21
  67. data/lib/nanoc/extra/vcses/dummy.rb +0 -20
  68. data/lib/nanoc/extra/vcses/git.rb +0 -21
  69. data/lib/nanoc/extra/vcses/mercurial.rb +0 -21
  70. data/lib/nanoc/extra/vcses/subversion.rb +0 -21
  71. data/lib/nanoc/filters.rb +0 -16
  72. data/lib/nanoc/filters/bluecloth.rb +0 -13
  73. data/lib/nanoc/filters/erb.rb +0 -19
  74. data/lib/nanoc/filters/erubis.rb +0 -14
  75. data/lib/nanoc/filters/haml.rb +0 -21
  76. data/lib/nanoc/filters/markaby.rb +0 -14
  77. data/lib/nanoc/filters/maruku.rb +0 -14
  78. data/lib/nanoc/filters/old.rb +0 -19
  79. data/lib/nanoc/filters/rainpress.rb +0 -13
  80. data/lib/nanoc/filters/rdiscount.rb +0 -13
  81. data/lib/nanoc/filters/rdoc.rb +0 -23
  82. data/lib/nanoc/filters/redcloth.rb +0 -14
  83. data/lib/nanoc/filters/relativize_paths.rb +0 -16
  84. data/lib/nanoc/filters/relativize_paths_in_css.rb +0 -16
  85. data/lib/nanoc/filters/relativize_paths_in_html.rb +0 -16
  86. data/lib/nanoc/filters/rubypants.rb +0 -14
  87. data/lib/nanoc/filters/sass.rb +0 -18
  88. data/lib/nanoc/helpers.rb +0 -9
  89. data/lib/nanoc/helpers/blogging.rb +0 -217
  90. data/lib/nanoc/helpers/capturing.rb +0 -63
  91. data/lib/nanoc/helpers/filtering.rb +0 -54
  92. data/lib/nanoc/helpers/html_escape.rb +0 -25
  93. data/lib/nanoc/helpers/link_to.rb +0 -113
  94. data/lib/nanoc/helpers/render.rb +0 -49
  95. data/lib/nanoc/helpers/tagging.rb +0 -56
  96. data/lib/nanoc/helpers/text.rb +0 -38
  97. data/lib/nanoc/helpers/xml_sitemap.rb +0 -63
  98. data/lib/nanoc/routers.rb +0 -3
  99. data/lib/nanoc/routers/default.rb +0 -54
  100. data/lib/nanoc/routers/no_dirs.rb +0 -66
  101. data/lib/nanoc/routers/versioned.rb +0 -79
  102. data/vendor/cri/ChangeLog +0 -0
  103. data/vendor/cri/LICENSE +0 -19
  104. data/vendor/cri/NEWS +0 -0
  105. data/vendor/cri/README +0 -4
  106. data/vendor/cri/Rakefile +0 -25
  107. data/vendor/cri/lib/cri.rb +0 -12
  108. data/vendor/cri/lib/cri/base.rb +0 -153
  109. data/vendor/cri/lib/cri/command.rb +0 -104
  110. data/vendor/cri/lib/cri/core_ext.rb +0 -8
  111. data/vendor/cri/lib/cri/core_ext/string.rb +0 -41
  112. data/vendor/cri/lib/cri/option_parser.rb +0 -186
  113. data/vendor/cri/test/test_base.rb +0 -6
  114. data/vendor/cri/test/test_command.rb +0 -6
  115. data/vendor/cri/test/test_core_ext.rb +0 -21
  116. data/vendor/cri/test/test_option_parser.rb +0 -279
@@ -1,3 +0,0 @@
1
- require 'nanoc/routers/default'
2
- require 'nanoc/routers/no_dirs'
3
- require 'nanoc/routers/versioned'
@@ -1,54 +0,0 @@
1
- module Nanoc::Routers
2
-
3
- # The default router organises pages in the most obvious, but sometimes
4
- # slightly restrictive, way: the hierarchy of compiled pages and assets is
5
- # the same as the hierarchy of uncompiled pages and assets.
6
- class Default < Nanoc::Router
7
-
8
- identifier :default
9
-
10
- def path_for_page_rep(page_rep)
11
- # Get data we need
12
- filename = page_rep.attribute_named(:filename)
13
- extension = page_rep.attribute_named(:extension)
14
-
15
- # Initialize path
16
- path = page_rep.page.path + filename
17
-
18
- # Add rep name if necessary
19
- unless page_rep.name == :default
20
- path += '-' + page_rep.name.to_s
21
- end
22
-
23
- # Add extension
24
- path += '.' + extension
25
-
26
- # Done
27
- path
28
- end
29
-
30
- def path_for_asset_rep(asset_rep)
31
- # Get data we need
32
- extension = asset_rep.attribute_named(:extension)
33
- modified_path = asset_rep.asset.path[0..-2]
34
- version = asset_rep.attribute_named(:version)
35
-
36
- # Initialize path
37
- assets_prefix = @site.config[:assets_prefix] || '/assets'
38
- path = assets_prefix + modified_path
39
-
40
- # Add rep name if necessary
41
- unless asset_rep.name == :default
42
- path += '-' + asset_rep.name.to_s
43
- end
44
-
45
- # Add extension
46
- path += '.' + extension
47
-
48
- # Done
49
- path
50
- end
51
-
52
- end
53
-
54
- end
@@ -1,66 +0,0 @@
1
- module Nanoc::Routers
2
-
3
- # The no-directories router organises pages very similarly to the default
4
- # router, but does not create directories unless necessary. This router will
5
- # therefore generate pages with less pretty URLs.
6
- #
7
- # For example, a page with path /about/ will be written to /about.html
8
- # instead of /about/index.html.
9
- class NoDirs < Nanoc::Router
10
-
11
- identifier :no_dirs
12
-
13
- def path_for_page_rep(page_rep)
14
- # Get data we need
15
- filename = page_rep.attribute_named(:filename)
16
- extension = page_rep.attribute_named(:extension)
17
-
18
- # Initialize path
19
- if page_rep.page.path == '/'
20
- path = '/' + filename
21
- else
22
- path = page_rep.page.path[0..-2]
23
- end
24
-
25
- # Add rep name if necessary
26
- unless page_rep.name == :default
27
- path += '-' + page_rep.name.to_s
28
- end
29
-
30
- # Add extension
31
- path += '.' + extension
32
-
33
- # Done
34
- path
35
- end
36
-
37
- def path_for_asset_rep(asset_rep)
38
- # Get data we need
39
- extension = asset_rep.attribute_named(:extension)
40
- modified_path = asset_rep.asset.path[0..-2]
41
- version = asset_rep.attribute_named(:version)
42
-
43
- # Initialize path
44
- assets_prefix = @site.config[:assets_prefix] || '/assets'
45
- path = assets_prefix + modified_path
46
-
47
- # Add version if necessary
48
- unless version.nil?
49
- path += '-v' + version.to_s
50
- end
51
-
52
- # Add rep name
53
- unless asset_rep.name == :default
54
- path += '-' + asset_rep.name.to_s
55
- end
56
-
57
- # Add extension
58
- path += '.' + extension
59
-
60
- # Done
61
- path
62
- end
63
-
64
- end
65
-
66
- end
@@ -1,79 +0,0 @@
1
- module Nanoc::Routers
2
-
3
- # The versioned router behaves pretty much like the default router, with the
4
- # exception that asset representations (but not page representations) can
5
- # have versions which will be added to generated URLs.
6
- #
7
- # This is very useful if you want to cache assets aggressively by sending an
8
- # +Expires+ header to clients. An +Expires+ header usually has the issue
9
- # that clients will not request the asset even if it has changed; giving the
10
- # asset a different version will cause the URL to be changed, which in turn
11
- # will cause the client to request the new asset.
12
- #
13
- # = Example
14
- #
15
- # For example, the URL of a textual asset containing the CSS stylesheet with
16
- # its 'version' attribute set to 28 will become /assets/style-v28.css.
17
- #
18
- # To link to the stylesheet in a DRY way,
19
- # give the asset a unique name (such as 'style') and then do something along
20
- # this way:
21
- #
22
- # <link rel="stylesheet"
23
- # type="text/css"
24
- # media="screen"
25
- # href="<%= @assets.find { |a| a.asset_id == 'style' }.path %>">
26
- class Versioned < Nanoc::Router
27
-
28
- identifier :versioned
29
-
30
- def path_for_page_rep(page_rep)
31
- # Get data we need
32
- filename = page_rep.attribute_named(:filename)
33
- extension = page_rep.attribute_named(:extension)
34
-
35
- # Initialize path
36
- path = page_rep.page.path + filename
37
-
38
- # Add rep name if necessary
39
- unless page_rep.name == :default
40
- path += '-' + page_rep.name.to_s
41
- end
42
-
43
- # Add extension
44
- path += '.' + extension
45
-
46
- # Done
47
- path
48
- end
49
-
50
- def path_for_asset_rep(asset_rep)
51
- # Get data we need
52
- extension = asset_rep.attribute_named(:extension)
53
- modified_path = asset_rep.asset.path[0..-2]
54
- version = asset_rep.attribute_named(:version)
55
-
56
- # Initialize path
57
- assets_prefix = @site.config[:assets_prefix] || '/assets'
58
- path = assets_prefix + modified_path
59
-
60
- # Add version if necessary
61
- unless version.nil?
62
- path += '-v' + version.to_s
63
- end
64
-
65
- # Add rep name
66
- unless asset_rep.name == :default
67
- path += '-' + asset_rep.name.to_s
68
- end
69
-
70
- # Add extension
71
- path += '.' + extension
72
-
73
- # Done
74
- path
75
- end
76
-
77
- end
78
-
79
- end
File without changes
@@ -1,19 +0,0 @@
1
- Copyright (c) 2009 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.
File without changes
@@ -1,4 +0,0 @@
1
- Cri
2
- ===
3
-
4
- Cri is a library for building easy-to-use commandline tools.
@@ -1,25 +0,0 @@
1
- ##### Requirements
2
-
3
- # Rake etc
4
- require 'rake'
5
- require 'minitest/unit'
6
-
7
- # Cri itself
8
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/lib'))
9
- require 'cri'
10
-
11
- ##### Testing
12
-
13
- desc 'Runs all tests'
14
- task :test do
15
- ENV['QUIET'] ||= 'true'
16
-
17
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/..'))
18
-
19
- MiniTest::Unit.autorun
20
-
21
- test_files = Dir['test/test_*.rb']
22
- test_files.each { |f| require f }
23
- end
24
-
25
- task :default => :test
@@ -1,12 +0,0 @@
1
- module Cri
2
-
3
- # The current Cri version.
4
- VERSION = '1.0'
5
-
6
- end
7
-
8
- # Load Cri
9
- require 'cri/base'
10
- require 'cri/command'
11
- require 'cri/core_ext'
12
- require 'cri/option_parser'
@@ -1,153 +0,0 @@
1
- module Cri
2
-
3
- # Cri::Base is the central class representing a commandline tool. It has a
4
- # list of commands.
5
- class Base
6
-
7
- # The CLI's list of commands (should also contain the help command)
8
- attr_reader :commands
9
-
10
- # The CLI's help command (required)
11
- attr_accessor :help_command
12
-
13
- # Creates a new instance of the commandline tool.
14
- def initialize(tool_name)
15
- @tool_name = tool_name
16
-
17
- @commands = []
18
- end
19
-
20
- # Parses the given commandline arguments and executes the requested
21
- # command.
22
- def run(args)
23
- # Check arguments
24
- if args.length == 0
25
- @help_command.run([], [])
26
- exit 1
27
- end
28
-
29
- # Partition options
30
- opts_before_command = []
31
- command_name = nil
32
- opts_and_args_after_command = []
33
- stage = 0
34
- args.each do |arg|
35
- # Update stage if necessary
36
- stage = 1 if stage == 0 && !is_option?(arg)
37
-
38
- # Add
39
- opts_before_command << arg if stage == 0
40
- command_name = arg if stage == 1
41
- opts_and_args_after_command << arg if stage == 2
42
-
43
- # Update stage if necessary
44
- stage = 2 if stage == 1
45
- end
46
-
47
- # Handle options before command
48
- begin
49
- parsed_arguments = Cri::OptionParser.parse(opts_before_command, global_option_definitions)
50
- rescue Cri::OptionParser::IllegalOptionError => e
51
- $stderr.puts "illegal option -- #{e}"
52
- exit 1
53
- end
54
- parsed_arguments[:options].keys.each do |option|
55
- handle_option(option)
56
- end
57
-
58
- # Get command
59
- if command_name.nil?
60
- $stderr.puts "no command given"
61
- exit 1
62
- end
63
- command = command_named(command_name)
64
- if command.nil?
65
- $stderr.puts "no such command: #{command_name}"
66
- exit 1
67
- end
68
-
69
- # Parse arguments
70
- option_definitions = command.option_definitions + global_option_definitions
71
- begin
72
- parsed_arguments = Cri::OptionParser.parse(opts_and_args_after_command, option_definitions)
73
- rescue Cri::OptionParser::IllegalOptionError => e
74
- $stderr.puts "illegal option -- #{e}"
75
- exit 1
76
- rescue Cri::OptionParser::OptionRequiresAnArgumentError => e
77
- $stderr.puts "option requires an argument -- #{e}"
78
- exit 1
79
- end
80
-
81
- # Handle global options
82
- global_options = global_option_definitions.map { |o| o[:long] }
83
- global_options.delete_if { |o| !parsed_arguments[:options].keys.include?(o.to_sym) }
84
- global_options.each { |o| handle_option(o.to_sym) }
85
-
86
- if parsed_arguments[:options].has_key?(:help)
87
- # Show help for this command
88
- show_help(command)
89
- else
90
- # Run command
91
- command.run(parsed_arguments[:options], parsed_arguments[:arguments])
92
- end
93
- end
94
-
95
- # Returns the command with the given name.
96
- def command_named(name)
97
- # Find by exact name or alias
98
- command = @commands.find { |c| c.name == name or c.aliases.include?(name) }
99
- return command unless command.nil?
100
-
101
- # Find by approximation
102
- commands = @commands.select { |c| c.name[0, name.length] == name }
103
- if commands.length > 1
104
- $stderr.puts "#{@tool_name}: '#{name}' is ambiguous:"
105
- $stderr.puts " #{commands.map { |c| c.name }.join(' ') }"
106
- exit 1
107
- elsif commands.length == 0
108
- $stderr.puts "#{@tool_name}: unknown command '#{name}'\n"
109
- show_help
110
- exit 1
111
- else
112
- return commands[0]
113
- end
114
- end
115
-
116
- # Shows the help text for the given command, or shows the general help
117
- # text if no command is given.
118
- def show_help(command=nil)
119
- if command.nil?
120
- @help_command.run([], [])
121
- else
122
- @help_command.run([], [ command.name ])
123
- end
124
- end
125
-
126
- # Returns the list of global option definitionss.
127
- def global_option_definitions
128
- []
129
- end
130
-
131
- # Adds the given command to the list of commands. Adding a command will
132
- # also cause the command's +base+ to be set to this instance.
133
- def add_command(command)
134
- @commands << command
135
- command.base = self
136
- end
137
-
138
- # Handles the given optio
139
- def handle_option(option)
140
- false
141
- end
142
-
143
- private
144
-
145
- # Returns true if the given string is an option (i.e. -foo or --foo),
146
- # false otherwise.
147
- def is_option?(string)
148
- string =~ /^-/
149
- end
150
-
151
- end
152
-
153
- end
@@ -1,104 +0,0 @@
1
- module Cri
2
-
3
- # Cri::Command represents a command that can be executed on the commandline.
4
- # It is an abstract superclass for all commands.
5
- class Command
6
-
7
- attr_accessor :base
8
-
9
- # Returns a string containing the name of thi command. Subclasses must
10
- # implement this method.
11
- def name
12
- raise NotImplementedError.new("Command subclasses should override #name")
13
- end
14
-
15
- # Returns an array of strings containing the aliases for this command.
16
- # Subclasses must implement this method.
17
- def aliases
18
- raise NotImplementedError.new("Command subclasses should override #aliases")
19
- end
20
-
21
- # Returns a string containing this command's short description, which
22
- # should not be longer than 50 characters. Subclasses must implement this
23
- # method.
24
- def short_desc
25
- raise NotImplementedError.new("Command subclasses should override #short_desc")
26
- end
27
-
28
- # Returns a string containing this command's complete description, which
29
- # should explain what this command does and how it works in detail.
30
- # Subclasses must implement this method.
31
- def long_desc
32
- raise NotImplementedError.new("Command subclasses should override #long_desc")
33
- end
34
-
35
- # Returns a string containing this command's usage. Subclasses must
36
- # implement this method.
37
- def usage
38
- raise NotImplementedError.new("Command subclasses should override #usage")
39
- end
40
-
41
- # Returns an array containing this command's option definitions. See the
42
- # documentation for Cri::OptionParser for details on what option
43
- # definitions look like. Subclasses may implement this method if the
44
- # command has options.
45
- def option_definitions
46
- []
47
- end
48
-
49
- # Executes the command. Subclasses must implement this method
50
- # (obviously... what's the point of a command that can't be run?).
51
- #
52
- # +options+:: A hash containing the parsed commandline options. For
53
- # example, '--foo=bar' will be converted into { :foo => 'bar'
54
- # }. See the Cri::OptionParser documentation for details.
55
- #
56
- # +arguments+:: An array of strings representing the commandline arguments
57
- # given to this command.
58
- def run(options, arguments)
59
- raise NotImplementedError.new("Command subclasses should override #run")
60
- end
61
-
62
- # Returns the help text for this command.
63
- def help
64
- text = ''
65
-
66
- # Append usage
67
- text << usage + "\n"
68
-
69
- # Append aliases
70
- unless aliases.empty?
71
- text << "\n"
72
- text << "aliases: #{aliases.join(' ')}\n"
73
- end
74
-
75
- # Append short description
76
- text << "\n"
77
- text << short_desc + "\n"
78
-
79
- # Append long description
80
- text << "\n"
81
- text << long_desc.wrap_and_indent(78, 4) + "\n"
82
-
83
- # Append options
84
- unless option_definitions.empty?
85
- text << "\n"
86
- text << "options:\n"
87
- text << "\n"
88
- option_definitions.sort { |x,y| x[:long] <=> y[:long] }.each do |opt_def|
89
- text << sprintf(" -%1s --%-10s %s\n", opt_def[:short], opt_def[:long], opt_def[:desc])
90
- end
91
- end
92
-
93
- # Return text
94
- text
95
- end
96
-
97
- # Compares this command's name to the other given command's name.
98
- def <=>(other)
99
- self.name <=> other.name
100
- end
101
-
102
- end
103
-
104
- end