massimo 0.4.6 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/massimo +5 -3
- data/lib/massimo/cli.rb +101 -0
- data/lib/massimo/config.rb +56 -0
- data/lib/massimo/helpers.rb +12 -19
- data/lib/massimo/javascript.rb +18 -19
- data/lib/massimo/page.rb +63 -70
- data/lib/massimo/resource.rb +92 -0
- data/lib/massimo/server.rb +27 -0
- data/lib/massimo/site.rb +64 -101
- data/lib/massimo/stylesheet.rb +13 -35
- data/lib/massimo/view.rb +5 -32
- data/lib/massimo/watcher.rb +52 -0
- data/lib/massimo.rb +22 -31
- metadata +172 -117
- data/.document +0 -5
- data/.gitignore +0 -25
- data/Gemfile +0 -13
- data/Rakefile +0 -62
- data/lib/massimo/command.rb +0 -243
- data/lib/massimo/resource/base.rb +0 -74
- data/lib/massimo/resource/collection.rb +0 -56
- data/lib/massimo/resource/processing.rb +0 -67
- data/lib/massimo/templates.rb +0 -22
- data/massimo.gemspec +0 -135
- data/test/assertions.rb +0 -8
- data/test/helper.rb +0 -64
- data/test/source/config.yml +0 -4
- data/test/source/helpers/test_helper.rb +0 -5
- data/test/source/javascripts/_plugin.js +0 -1
- data/test/source/javascripts/application.js +0 -3
- data/test/source/javascripts/lib.js +0 -1
- data/test/source/lib/site.rb +0 -5
- data/test/source/pages/_skipped_page.haml +0 -0
- data/test/source/pages/about_us.erb +0 -5
- data/test/source/pages/erb.erb +0 -5
- data/test/source/pages/erb_with_layout.erb +0 -4
- data/test/source/pages/feed.haml +0 -6
- data/test/source/pages/haml.haml +0 -5
- data/test/source/pages/html.html +0 -4
- data/test/source/pages/index.erb +0 -4
- data/test/source/pages/markdown.markdown +0 -5
- data/test/source/pages/posts/first-post.haml +0 -1
- data/test/source/pages/with_extension.haml +0 -4
- data/test/source/pages/with_meta_data.haml +0 -7
- data/test/source/pages/with_title.haml +0 -4
- data/test/source/pages/with_url.haml +0 -4
- data/test/source/pages/without_extension.haml +0 -0
- data/test/source/pages/without_meta_data.haml +0 -1
- data/test/source/pages/without_title.haml +0 -1
- data/test/source/pages/without_url.haml +0 -1
- data/test/source/stylesheets/_base.sass +0 -2
- data/test/source/stylesheets/application.sass +0 -4
- data/test/source/stylesheets/basic.css +0 -3
- data/test/source/stylesheets/less_file.less +0 -5
- data/test/source/views/layouts/application.haml +0 -2
- data/test/source/views/with_helper.haml +0 -1
- data/test/source/views/with_locals.haml +0 -1
- data/test/source/views/without_locals.haml +0 -1
- data/test/test_helpers.rb +0 -25
- data/test/test_javascript.rb +0 -30
- data/test/test_page.rb +0 -142
- data/test/test_resource.rb +0 -70
- data/test/test_site.rb +0 -125
- data/test/test_stylesheet.rb +0 -40
- data/test/test_view.rb +0 -50
data/lib/massimo/command.rb
DELETED
@@ -1,243 +0,0 @@
|
|
1
|
-
require "active_support/backtrace_cleaner"
|
2
|
-
require "active_support/core_ext/hash/keys"
|
3
|
-
begin require "growl"; rescue LoadError; end
|
4
|
-
require "optparse"
|
5
|
-
require "yaml"
|
6
|
-
|
7
|
-
module Massimo
|
8
|
-
class Command
|
9
|
-
attr_accessor :args, :options, :site, :source, :output
|
10
|
-
|
11
|
-
# Default options. Overriden by values in config.yml or command-line opts.
|
12
|
-
DEFAULT_OPTIONS = {
|
13
|
-
:config_path => File.join(".", "config.yml")
|
14
|
-
}.freeze
|
15
|
-
|
16
|
-
#
|
17
|
-
def initialize(args)
|
18
|
-
# Parse the command line arguments
|
19
|
-
self.args = args
|
20
|
-
self.options = DEFAULT_OPTIONS.dup
|
21
|
-
self.parse!
|
22
|
-
|
23
|
-
# Load the options from the config file
|
24
|
-
config = YAML.load_file(self.options[:config_path]) if File.exist?(self.options[:config_path])
|
25
|
-
self.options.merge!(config.symbolize_keys) if config.is_a?(Hash)
|
26
|
-
|
27
|
-
# Initialize the Site
|
28
|
-
self.site = Massimo::Site(self.options)
|
29
|
-
self.options = self.site.options
|
30
|
-
self.source = self.options[:source]
|
31
|
-
self.output = self.options[:output]
|
32
|
-
|
33
|
-
# Setup Backtrace Cleaner
|
34
|
-
@cleaner = ActiveSupport::BacktraceCleaner.new
|
35
|
-
@cleaner.add_silencer { |line| line =~ /^(\/|\\)/ } # Remove full File path traces
|
36
|
-
end
|
37
|
-
|
38
|
-
# Run the script, based on the command line options.
|
39
|
-
def run!
|
40
|
-
if generate?
|
41
|
-
generate_layout!
|
42
|
-
elsif watch?
|
43
|
-
watch_source!
|
44
|
-
else
|
45
|
-
process_site!
|
46
|
-
end
|
47
|
-
run_server! if server?
|
48
|
-
return 0
|
49
|
-
rescue Interrupt
|
50
|
-
message "Massimo is done watching you.", :newline => true
|
51
|
-
return 0
|
52
|
-
rescue Exception => e
|
53
|
-
report_error(e)
|
54
|
-
return 1
|
55
|
-
end
|
56
|
-
|
57
|
-
protected
|
58
|
-
|
59
|
-
# Generate the default layout of the site.
|
60
|
-
def generate_layout!
|
61
|
-
require "fileutils"
|
62
|
-
message "Massimo is generating the default site layout"
|
63
|
-
[ site.source_dir, site.all_source_dirs, site.output_dir ].flatten.each do |dir|
|
64
|
-
full_dir = File.expand_path(dir)
|
65
|
-
if File.exists?(full_dir)
|
66
|
-
puts indent_body("exists: #{full_dir}")
|
67
|
-
else
|
68
|
-
FileUtils.mkdir_p(full_dir)
|
69
|
-
puts indent_body("created: #{full_dir}")
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# Watch the source for changes.
|
75
|
-
def watch_source!
|
76
|
-
require "directory_watcher"
|
77
|
-
|
78
|
-
message %{Massimo is watching "#{source}" for changes. Press Ctrl-C to Stop.}
|
79
|
-
|
80
|
-
watcher = DirectoryWatcher.new(
|
81
|
-
".",
|
82
|
-
:interval => 1,
|
83
|
-
:glob => site.all_source_dirs.collect { |dir| File.join(dir, "**/*") }
|
84
|
-
)
|
85
|
-
|
86
|
-
watcher.add_observer do |*args|
|
87
|
-
begin
|
88
|
-
site.process!
|
89
|
-
time = Time.now.strftime("%l:%M:%S").strip
|
90
|
-
change = args.size == 1 ? "1 file" : "#{args.size} files"
|
91
|
-
message "Massimo has rebuilt your site. #{change} changed. (#{time})"
|
92
|
-
rescue Exception => e
|
93
|
-
report_error(e)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
watcher.start
|
98
|
-
|
99
|
-
unless server?
|
100
|
-
loop { sleep 1000 }
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
# Process the site.
|
105
|
-
def process_site!
|
106
|
-
site.process!
|
107
|
-
message %{Massimo has built your site in "#{site.options[:output]}"}
|
108
|
-
end
|
109
|
-
|
110
|
-
#
|
111
|
-
def run_server!
|
112
|
-
require "webrick"
|
113
|
-
|
114
|
-
# Make sure the output dir exists
|
115
|
-
FileUtils.mkdir_p(output)
|
116
|
-
|
117
|
-
server = WEBrick::HTTPServer.new(
|
118
|
-
:Port => options[:server_port],
|
119
|
-
:DocumentRoot => output
|
120
|
-
)
|
121
|
-
|
122
|
-
trap(:INT) do
|
123
|
-
server.shutdown
|
124
|
-
message "Massimo is shutting down the server.", :newline => true
|
125
|
-
return 0
|
126
|
-
end
|
127
|
-
|
128
|
-
server.start
|
129
|
-
message "Massimo is serving up your site at http://localhost:#{options[:server_port]}/"
|
130
|
-
end
|
131
|
-
|
132
|
-
# Determine if we should watch the source directory for changes.
|
133
|
-
def watch?
|
134
|
-
options[:watch] == true
|
135
|
-
end
|
136
|
-
|
137
|
-
# Determine if we should generate the default layout of the site.
|
138
|
-
def generate?
|
139
|
-
options[:generate] == true
|
140
|
-
end
|
141
|
-
|
142
|
-
# Determine if the server should be started.
|
143
|
-
def server?
|
144
|
-
options[:server] == true
|
145
|
-
end
|
146
|
-
|
147
|
-
#
|
148
|
-
def message(string, options = {})
|
149
|
-
options.reverse_merge!(:growl => true)
|
150
|
-
puts "\n" if options[:newline]
|
151
|
-
puts "== #{string}"
|
152
|
-
Growl.notify(string, :title => "Massimo") if options[:growl] && defined?(Growl)
|
153
|
-
end
|
154
|
-
|
155
|
-
# Report the given error. This could eventually log the backtrace.
|
156
|
-
def report_error(error = nil)
|
157
|
-
error ||= $!
|
158
|
-
|
159
|
-
# Show full backtrace if verbose
|
160
|
-
backtrace = if options[:verbose]
|
161
|
-
error.backtrace
|
162
|
-
else
|
163
|
-
@cleaner.clean(error.backtrace)
|
164
|
-
end
|
165
|
-
|
166
|
-
# show the message
|
167
|
-
message "Massimo Error:", :newline => true, :growl => false
|
168
|
-
puts indent_body(error.message)
|
169
|
-
puts indent_body(backtrace)
|
170
|
-
puts "\n"
|
171
|
-
|
172
|
-
# Format the message differently for growl
|
173
|
-
Growl.notify(error.message, :title => "Massimo Error") if defined?(Growl)
|
174
|
-
end
|
175
|
-
|
176
|
-
# Returns the string with each line indented.
|
177
|
-
def indent_body(string)
|
178
|
-
string.collect { |line| " #{line}" }
|
179
|
-
end
|
180
|
-
|
181
|
-
# Parse the options
|
182
|
-
def parse!
|
183
|
-
opts = OptionParser.new do |opts|
|
184
|
-
opts.banner = <<-HELP
|
185
|
-
Massimo is a static website builder.
|
186
|
-
|
187
|
-
Basic Command Line Usage:
|
188
|
-
massimo # . -> ./public
|
189
|
-
massimo <path to output> # . -> <path>
|
190
|
-
massimo <path to source> <path to output> # <path> -> <path>
|
191
|
-
|
192
|
-
Configuration is read from "./config.yml" but can be overriden
|
193
|
-
using the following options:
|
194
|
-
|
195
|
-
HELP
|
196
|
-
|
197
|
-
opts.on("--config [PATH]", "The path to the config file.") do |path|
|
198
|
-
options[:config_path] = path
|
199
|
-
end
|
200
|
-
|
201
|
-
opts.on("--generate", "Generate the default layout of the site. This will create all the necessary directories needed to generate websites using Massimo.") do
|
202
|
-
options[:generate] = true
|
203
|
-
end
|
204
|
-
|
205
|
-
opts.on("--watch", "Auto-regenerate the site as files are changed.") do
|
206
|
-
options[:watch] = true
|
207
|
-
end
|
208
|
-
|
209
|
-
opts.on("--server", "Start web server with default port.") do |port|
|
210
|
-
options[:server] = true
|
211
|
-
end
|
212
|
-
|
213
|
-
opts.on("--port [PORT]", "Select the port to start the web server on. Defaults to 1984") do |port|
|
214
|
-
options[:server_port] = port
|
215
|
-
end
|
216
|
-
|
217
|
-
opts.on("--verbose", "-v", "Show full backtrace on errors. Defaults to false.") do
|
218
|
-
options[:verbose] = true
|
219
|
-
end
|
220
|
-
|
221
|
-
opts.on("--version", "-V", "Display current version") do
|
222
|
-
puts "Massimo #{Massimo::VERSION}"
|
223
|
-
exit 0
|
224
|
-
end
|
225
|
-
end
|
226
|
-
opts.parse!
|
227
|
-
|
228
|
-
# Get source and destintation from command line
|
229
|
-
case args.size
|
230
|
-
when 0
|
231
|
-
when 1
|
232
|
-
options[:source] = args[0]
|
233
|
-
when 2
|
234
|
-
options[:source] = args[0]
|
235
|
-
options[:output] = args[1]
|
236
|
-
else
|
237
|
-
puts %{Invalid options. Run "massimo --help" for assistance.}
|
238
|
-
exit 1
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
end
|
243
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require "active_support/inflector"
|
2
|
-
require "pathname"
|
3
|
-
require "massimo/resource/processing"
|
4
|
-
require "massimo/resource/collection"
|
5
|
-
|
6
|
-
module Massimo
|
7
|
-
module Resource
|
8
|
-
class Base
|
9
|
-
include Processing
|
10
|
-
extend Collection
|
11
|
-
|
12
|
-
attr_reader :source_path, :body
|
13
|
-
|
14
|
-
# The name of this Resource type.
|
15
|
-
def self.name
|
16
|
-
self.to_s.underscore.gsub(/.*\//, "")
|
17
|
-
end
|
18
|
-
|
19
|
-
# The plural name of this Resource type.
|
20
|
-
def self.collection_name
|
21
|
-
name.pluralize
|
22
|
-
end
|
23
|
-
|
24
|
-
# Gets the site instance
|
25
|
-
def self.site
|
26
|
-
Massimo::Site()
|
27
|
-
end
|
28
|
-
|
29
|
-
# Get the directory to this Resource type.
|
30
|
-
def self.dir(*path)
|
31
|
-
site.dir_for(self.collection_name, *path)
|
32
|
-
end
|
33
|
-
|
34
|
-
# Hook for adding Resource types.
|
35
|
-
def self.inherited(subclass)
|
36
|
-
Massimo.resources << subclass
|
37
|
-
Massimo.resources.uniq!
|
38
|
-
end
|
39
|
-
|
40
|
-
# Creates a new page associated with the given file path.
|
41
|
-
def initialize(source_path)
|
42
|
-
@source_path = Pathname.new(source_path)
|
43
|
-
read_source!
|
44
|
-
end
|
45
|
-
|
46
|
-
# Gets the resource's file name.
|
47
|
-
def file_name
|
48
|
-
@source_path.basename.to_s
|
49
|
-
end
|
50
|
-
|
51
|
-
# Gets the resource type, based on the file's extension
|
52
|
-
def resource_type
|
53
|
-
@source_path.extname.to_s[1..-1]
|
54
|
-
end
|
55
|
-
|
56
|
-
# Gets the site instance
|
57
|
-
def site
|
58
|
-
self.class.site
|
59
|
-
end
|
60
|
-
|
61
|
-
# Renders the page using the registered filters.
|
62
|
-
def render(locals = {})
|
63
|
-
@body
|
64
|
-
end
|
65
|
-
|
66
|
-
protected
|
67
|
-
|
68
|
-
# Get the options from the Site's config for the current resource type.
|
69
|
-
def options_for_resource_type
|
70
|
-
site.options[resource_type.to_sym]
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
module Massimo
|
2
|
-
module Resource
|
3
|
-
module Collection
|
4
|
-
# Find all the the Resources in this Resource type's directory.
|
5
|
-
def all(reload = false)
|
6
|
-
return @resources if defined?(@resources) && !reload
|
7
|
-
@resources = find_resource_files.collect { |file| self.new(file) }
|
8
|
-
end
|
9
|
-
|
10
|
-
protected
|
11
|
-
|
12
|
-
# Returns only the files listed in the options or all the files in this
|
13
|
-
# Resource type's directory, with certain files filtered out.
|
14
|
-
def find_resource_files
|
15
|
-
files = site.options[collection_name.to_sym]
|
16
|
-
if files && files.is_a?(Array)
|
17
|
-
files = files.dup
|
18
|
-
add_full_path!(files)
|
19
|
-
else
|
20
|
-
files = Dir.glob(File.join(dir, "**/*"))
|
21
|
-
reject_partials_and_directories!(files)
|
22
|
-
reject_skipped_files!(files)
|
23
|
-
end
|
24
|
-
files
|
25
|
-
end
|
26
|
-
|
27
|
-
# Reject all files that begin with "_" (like partials) and directories
|
28
|
-
def reject_partials_and_directories!(files)
|
29
|
-
files.reject! { |file| File.basename(file) =~ /^_/ || File.directory?(file) }
|
30
|
-
end
|
31
|
-
|
32
|
-
# Reject the files in the skip_files option, which can either be an Array of files to skip
|
33
|
-
# or a Proc that returns true if the file should be skipped.
|
34
|
-
def reject_skipped_files!(files)
|
35
|
-
if skip_files = site.options["skip_#{collection_name}".to_sym]
|
36
|
-
files.reject! do |file|
|
37
|
-
test_file = file.sub("#{dir}/", "")
|
38
|
-
case skip_files
|
39
|
-
when Array
|
40
|
-
skip_files.include?(test_file)
|
41
|
-
when Proc
|
42
|
-
skip_files.call(test_file)
|
43
|
-
else
|
44
|
-
false
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# Add the full path to each file.
|
51
|
-
def add_full_path!(files)
|
52
|
-
files.collect! { |file| dir(file) }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require "fileutils"
|
2
|
-
require "pathname"
|
3
|
-
|
4
|
-
module Massimo
|
5
|
-
module Resource
|
6
|
-
module Processing
|
7
|
-
def self.included(base) # :nodoc:
|
8
|
-
base.extend ClassMethods
|
9
|
-
end
|
10
|
-
|
11
|
-
module ClassMethods
|
12
|
-
# Determine if this Resource type is processable. By default this is `false`.
|
13
|
-
def processable?
|
14
|
-
false
|
15
|
-
end
|
16
|
-
|
17
|
-
# This will override `processable?` to return `true`.
|
18
|
-
def processable!
|
19
|
-
def self.processable?
|
20
|
-
true
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# Process all the Resources in this Resource type's directory.
|
25
|
-
def process!
|
26
|
-
all(true).each(&:process!)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# Writes the rendered body to the output file.
|
31
|
-
def process!
|
32
|
-
if self.class.processable?
|
33
|
-
# Make the full path to the directory of the output file
|
34
|
-
FileUtils.mkdir_p(output_path.dirname)
|
35
|
-
# write the filtered data to the output file
|
36
|
-
output_path.open("w") do |file|
|
37
|
-
file.write render
|
38
|
-
end
|
39
|
-
else
|
40
|
-
false
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
protected
|
45
|
-
|
46
|
-
# Reads the source page file, and populates the `@meta_data` and
|
47
|
-
# `@body` attributes.
|
48
|
-
def read_source!
|
49
|
-
raise Massimo::MissingResource unless @source_path.exist?
|
50
|
-
# try to read it now
|
51
|
-
begin
|
52
|
-
@line = 1
|
53
|
-
@body = @source_path.read
|
54
|
-
rescue
|
55
|
-
raise Massimo::InvalidResource
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# Determine the output file path
|
60
|
-
def output_path
|
61
|
-
@output_path ||= Pathname.new(
|
62
|
-
@source_path.to_s.sub(site.source_dir, site.output_dir)
|
63
|
-
)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
data/lib/massimo/templates.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require "tilt"
|
2
|
-
|
3
|
-
module Tilt
|
4
|
-
register :html, Tilt::ERBTemplate
|
5
|
-
register :php, Tilt::ERBTemplate
|
6
|
-
|
7
|
-
# My Markdown implementation.
|
8
|
-
class MarkdownTemplate < Template
|
9
|
-
def prepare
|
10
|
-
@erb_engine = Tilt::ERBTemplate.new { data }
|
11
|
-
end
|
12
|
-
|
13
|
-
def evaluate(scope, locals, &block)
|
14
|
-
# First evaluate the code using ERB
|
15
|
-
erb_output = @erb_engine.render(scope, locals, &block)
|
16
|
-
# Then evaluate the code using the RDiscountTemplate
|
17
|
-
Tilt::RDiscountTemplate.new { erb_output }.render
|
18
|
-
end
|
19
|
-
end
|
20
|
-
register :markdown, MarkdownTemplate
|
21
|
-
register :md, MarkdownTemplate
|
22
|
-
end
|
data/massimo.gemspec
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{massimo}
|
8
|
-
s.version = "0.4.6"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Peter Browne"]
|
12
|
-
s.date = %q{2010-03-31}
|
13
|
-
s.default_executable = %q{massimo}
|
14
|
-
s.description = %q{Massimo builds HTML, Javascript, and CSS Files from your source.}
|
15
|
-
s.email = %q{me@petebrowne.com}
|
16
|
-
s.executables = ["massimo"]
|
17
|
-
s.extra_rdoc_files = [
|
18
|
-
"LICENSE",
|
19
|
-
"README.md"
|
20
|
-
]
|
21
|
-
s.files = [
|
22
|
-
".document",
|
23
|
-
".gitignore",
|
24
|
-
"Gemfile",
|
25
|
-
"LICENSE",
|
26
|
-
"README.md",
|
27
|
-
"Rakefile",
|
28
|
-
"VERSION",
|
29
|
-
"bin/massimo",
|
30
|
-
"lib/massimo.rb",
|
31
|
-
"lib/massimo/command.rb",
|
32
|
-
"lib/massimo/helpers.rb",
|
33
|
-
"lib/massimo/javascript.rb",
|
34
|
-
"lib/massimo/page.rb",
|
35
|
-
"lib/massimo/resource/base.rb",
|
36
|
-
"lib/massimo/resource/collection.rb",
|
37
|
-
"lib/massimo/resource/processing.rb",
|
38
|
-
"lib/massimo/site.rb",
|
39
|
-
"lib/massimo/stylesheet.rb",
|
40
|
-
"lib/massimo/templates.rb",
|
41
|
-
"lib/massimo/view.rb",
|
42
|
-
"massimo.gemspec",
|
43
|
-
"test/assertions.rb",
|
44
|
-
"test/helper.rb",
|
45
|
-
"test/source/config.yml",
|
46
|
-
"test/source/helpers/test_helper.rb",
|
47
|
-
"test/source/javascripts/_plugin.js",
|
48
|
-
"test/source/javascripts/application.js",
|
49
|
-
"test/source/javascripts/lib.js",
|
50
|
-
"test/source/lib/site.rb",
|
51
|
-
"test/source/pages/_skipped_page.haml",
|
52
|
-
"test/source/pages/about_us.erb",
|
53
|
-
"test/source/pages/erb.erb",
|
54
|
-
"test/source/pages/erb_with_layout.erb",
|
55
|
-
"test/source/pages/feed.haml",
|
56
|
-
"test/source/pages/haml.haml",
|
57
|
-
"test/source/pages/html.html",
|
58
|
-
"test/source/pages/index.erb",
|
59
|
-
"test/source/pages/markdown.markdown",
|
60
|
-
"test/source/pages/posts/first-post.haml",
|
61
|
-
"test/source/pages/with_extension.haml",
|
62
|
-
"test/source/pages/with_meta_data.haml",
|
63
|
-
"test/source/pages/with_title.haml",
|
64
|
-
"test/source/pages/with_url.haml",
|
65
|
-
"test/source/pages/without_extension.haml",
|
66
|
-
"test/source/pages/without_meta_data.haml",
|
67
|
-
"test/source/pages/without_title.haml",
|
68
|
-
"test/source/pages/without_url.haml",
|
69
|
-
"test/source/stylesheets/_base.sass",
|
70
|
-
"test/source/stylesheets/application.sass",
|
71
|
-
"test/source/stylesheets/basic.css",
|
72
|
-
"test/source/stylesheets/less_file.less",
|
73
|
-
"test/source/views/layouts/application.haml",
|
74
|
-
"test/source/views/with_helper.haml",
|
75
|
-
"test/source/views/with_locals.haml",
|
76
|
-
"test/source/views/without_locals.haml",
|
77
|
-
"test/test_helpers.rb",
|
78
|
-
"test/test_javascript.rb",
|
79
|
-
"test/test_page.rb",
|
80
|
-
"test/test_resource.rb",
|
81
|
-
"test/test_site.rb",
|
82
|
-
"test/test_stylesheet.rb",
|
83
|
-
"test/test_view.rb"
|
84
|
-
]
|
85
|
-
s.homepage = %q{http://github.com/peterbrowne/massimo}
|
86
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
87
|
-
s.require_paths = ["lib"]
|
88
|
-
s.rubygems_version = %q{1.3.6}
|
89
|
-
s.summary = %q{Massimo is a static website builder.}
|
90
|
-
s.test_files = [
|
91
|
-
"test/assertions.rb",
|
92
|
-
"test/helper.rb",
|
93
|
-
"test/source/helpers/test_helper.rb",
|
94
|
-
"test/source/lib/site.rb",
|
95
|
-
"test/test_helpers.rb",
|
96
|
-
"test/test_javascript.rb",
|
97
|
-
"test/test_page.rb",
|
98
|
-
"test/test_resource.rb",
|
99
|
-
"test/test_site.rb",
|
100
|
-
"test/test_stylesheet.rb",
|
101
|
-
"test/test_view.rb"
|
102
|
-
]
|
103
|
-
|
104
|
-
if s.respond_to? :specification_version then
|
105
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
106
|
-
s.specification_version = 3
|
107
|
-
|
108
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
109
|
-
s.add_development_dependency(%q<shoulda>, [">= 2.10.3"])
|
110
|
-
s.add_development_dependency(%q<rr>, [">= 0.10.9"])
|
111
|
-
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0.beta"])
|
112
|
-
s.add_runtime_dependency(%q<sinatra_more>, [">= 0.3.39"])
|
113
|
-
s.add_runtime_dependency(%q<directory_watcher>, [">= 1.3.1"])
|
114
|
-
s.add_runtime_dependency(%q<sprockets>, [">= 1.0.2"])
|
115
|
-
s.add_runtime_dependency(%q<jsmin>, [">= 1.0.1"])
|
116
|
-
else
|
117
|
-
s.add_dependency(%q<shoulda>, [">= 2.10.3"])
|
118
|
-
s.add_dependency(%q<rr>, [">= 0.10.9"])
|
119
|
-
s.add_dependency(%q<activesupport>, [">= 3.0.0.beta"])
|
120
|
-
s.add_dependency(%q<sinatra_more>, [">= 0.3.39"])
|
121
|
-
s.add_dependency(%q<directory_watcher>, [">= 1.3.1"])
|
122
|
-
s.add_dependency(%q<sprockets>, [">= 1.0.2"])
|
123
|
-
s.add_dependency(%q<jsmin>, [">= 1.0.1"])
|
124
|
-
end
|
125
|
-
else
|
126
|
-
s.add_dependency(%q<shoulda>, [">= 2.10.3"])
|
127
|
-
s.add_dependency(%q<rr>, [">= 0.10.9"])
|
128
|
-
s.add_dependency(%q<activesupport>, [">= 3.0.0.beta"])
|
129
|
-
s.add_dependency(%q<sinatra_more>, [">= 0.3.39"])
|
130
|
-
s.add_dependency(%q<directory_watcher>, [">= 1.3.1"])
|
131
|
-
s.add_dependency(%q<sprockets>, [">= 1.0.2"])
|
132
|
-
s.add_dependency(%q<jsmin>, [">= 1.0.1"])
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
data/test/assertions.rb
DELETED
data/test/helper.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
testdir = File.dirname(__FILE__)
|
2
|
-
$LOAD_PATH.unshift(testdir) unless $LOAD_PATH.include?(testdir)
|
3
|
-
|
4
|
-
libdir = File.expand_path("../../lib", __FILE__)
|
5
|
-
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
6
|
-
|
7
|
-
require "rubygems"
|
8
|
-
require "massimo"
|
9
|
-
require "test/unit"
|
10
|
-
require "assertions"
|
11
|
-
require "shoulda"
|
12
|
-
require "rr"
|
13
|
-
|
14
|
-
begin
|
15
|
-
require "turn"
|
16
|
-
rescue LoadError
|
17
|
-
begin require "redgreen"; rescue LoadError; end
|
18
|
-
end
|
19
|
-
|
20
|
-
class Test::Unit::TestCase
|
21
|
-
include Assertions
|
22
|
-
include RR::Adapters::TestUnit
|
23
|
-
|
24
|
-
def source_dir(*subdirs)
|
25
|
-
File.join("./test/source", *subdirs)
|
26
|
-
end
|
27
|
-
|
28
|
-
def output_dir(*subdirs)
|
29
|
-
File.join("./test/output", *subdirs)
|
30
|
-
end
|
31
|
-
|
32
|
-
# Clears all the output files created during tests.
|
33
|
-
def clear_output
|
34
|
-
FileUtils.rm_rf(output_dir)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Create a new Site instance
|
38
|
-
def site(options = {})
|
39
|
-
@site = ::Massimo::Site({
|
40
|
-
:source => source_dir,
|
41
|
-
:output => output_dir,
|
42
|
-
:sass => { :cache => false }
|
43
|
-
}.merge(options))
|
44
|
-
end
|
45
|
-
|
46
|
-
# Creates a Page instance for the given path
|
47
|
-
def page(*path)
|
48
|
-
@page ||= ::Massimo::Page.new(source_dir("pages", *path))
|
49
|
-
end
|
50
|
-
|
51
|
-
# Creates a View Instance for the given path
|
52
|
-
def view(*path)
|
53
|
-
return @view if defined?(@view)
|
54
|
-
meta_data = path.extract_options!
|
55
|
-
@view = ::Massimo::View.new(source_dir("views", *path), meta_data)
|
56
|
-
end
|
57
|
-
|
58
|
-
# All the Page paths in the source dir
|
59
|
-
def source_page_paths
|
60
|
-
@source_page_paths ||= Pathname.glob(source_dir("pages/**/*")).
|
61
|
-
reject { |p| p.basename.to_s =~ /^_/ || File.directory?(p) }.
|
62
|
-
collect { |p| p.basename }
|
63
|
-
end
|
64
|
-
end
|
data/test/source/config.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
var plugin = "plugin";
|
@@ -1 +0,0 @@
|
|
1
|
-
var lib = "lib";
|