gumdrop 0.2.16 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +11 -1
- data/Rakefile +9 -1
- data/bin/gumdrop +3 -1
- data/lib/gumdrop.rb +45 -73
- data/lib/gumdrop/build.rb +92 -0
- data/lib/gumdrop/content.rb +3 -2
- data/lib/gumdrop/generator.rb +64 -7
- data/lib/gumdrop/logging.rb +35 -0
- data/lib/gumdrop/pager.rb +4 -4
- data/lib/gumdrop/server.rb +26 -10
- data/lib/gumdrop/template/default/Gemfile +4 -2
- data/lib/gumdrop/template/default/Rakefile +4 -1
- data/lib/gumdrop/template/default/config.ru +6 -2
- data/lib/gumdrop/template/default/lib/site.rb +15 -5
- data/lib/gumdrop/template/default/powrc +2 -0
- data/lib/gumdrop/version.rb +2 -2
- data/specs/content_spec.rb +31 -0
- data/specs/deferred_loader_spec.rb +31 -0
- data/specs/hash_object_spec.rb +31 -0
- metadata +19 -83
- data/lib/gumdrop/template/twitter/Gemfile +0 -28
- data/lib/gumdrop/template/twitter/Rakefile +0 -35
- data/lib/gumdrop/template/twitter/config.ru +0 -17
- data/lib/gumdrop/template/twitter/data/config.yml +0 -4
- data/lib/gumdrop/template/twitter/lib/site.rb +0 -43
- data/lib/gumdrop/template/twitter/lib/view_helpers.rb +0 -17
- data/lib/gumdrop/template/twitter/source/_sidebar.html.slim +0 -1
- data/lib/gumdrop/template/twitter/source/container-app.html.slim +0 -89
- data/lib/gumdrop/template/twitter/source/default.htaccess +0 -16
- data/lib/gumdrop/template/twitter/source/favicon.ico +0 -0
- data/lib/gumdrop/template/twitter/source/feed.xml.builder.txt +0 -23
- data/lib/gumdrop/template/twitter/source/fluid.html.slim +0 -134
- data/lib/gumdrop/template/twitter/source/hero.html.slim +0 -49
- data/lib/gumdrop/template/twitter/source/index.html.erb +0 -10
- data/lib/gumdrop/template/twitter/source/theme/screen.css.sass +0 -3
- data/lib/gumdrop/template/twitter/source/theme/scripts/app.js.coffee +0 -4
- data/lib/gumdrop/template/twitter/source/theme/scripts/jquery.js +0 -4
- data/lib/gumdrop/template/twitter/source/theme/styles/_tools.scss +0 -434
- data/lib/gumdrop/template/twitter/source/theme/templates/site.template.slim +0 -19
- data/lib/gumdrop/template/twitter/source/theme/twitter/LICENSE +0 -13
- data/lib/gumdrop/template/twitter/source/theme/twitter/Makefile +0 -30
- data/lib/gumdrop/template/twitter/source/theme/twitter/README.md +0 -115
- data/lib/gumdrop/template/twitter/source/theme/twitter/bootstrap-min.css +0 -330
- data/lib/gumdrop/template/twitter/source/theme/twitter/bootstrap.css +0 -2362
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/css/docs.css +0 -317
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/bootstrap-apple-114x114.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/bootstrap-apple-57x57.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/bootstrap-apple-72x72.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/favicon.ico +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/bird.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/browsers.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/example-diagram-01.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/example-diagram-02.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/example-diagram-03.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/grid-18px.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/twitter-logo-no-bird.png +0 -0
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/js/application.js +0 -52
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/js/google-code-prettify/prettify.css +0 -41
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/js/google-code-prettify/prettify.js +0 -28
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/index.html +0 -1932
- data/lib/gumdrop/template/twitter/source/theme/twitter/docs/javascript.html +0 -676
- data/lib/gumdrop/template/twitter/source/theme/twitter/examples/container-app.html +0 -119
- data/lib/gumdrop/template/twitter/source/theme/twitter/examples/fluid.html +0 -126
- data/lib/gumdrop/template/twitter/source/theme/twitter/examples/hero.html +0 -79
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-alerts.js +0 -104
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-dropdown.js +0 -50
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-modal.js +0 -238
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-popover.js +0 -77
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-scrollspy.js +0 -105
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-tabs.js +0 -62
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-twipsy.js +0 -307
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/index.html +0 -38
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-alerts.js +0 -41
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-dropdown.js +0 -52
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-modal.js +0 -151
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-popover.js +0 -76
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-scrollspy.js +0 -31
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-tabs.js +0 -49
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-twipsy.js +0 -81
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/vendor/qunit.css +0 -232
- data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/vendor/qunit.js +0 -1510
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/bootstrap.less +0 -26
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/forms.less +0 -465
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/mixins.less +0 -217
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/patterns.less +0 -1005
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/reset.less +0 -141
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/scaffolding.less +0 -135
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/tables.less +0 -171
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/type.less +0 -187
- data/lib/gumdrop/template/twitter/source/theme/twitter/lib/variables.less +0 -60
data/ChangeLog.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# v0.3
|
2
|
+
- Better logging support
|
3
|
+
- Removed twitter-bootstrap template
|
4
|
+
- Initial support for stitch-rb via a `stitch` generator command.
|
5
|
+
|
6
|
+
# v0.2.17
|
7
|
+
- Updated syntax to Ruby 1.9
|
8
|
+
- Tweaked template Rakefile(s)
|
9
|
+
- Added some initial specs
|
10
|
+
|
1
11
|
# v0.2.16
|
2
12
|
- Added option to specify output folder, still defaults to "output"
|
3
13
|
- Bugfix: content wasn't looking for layouts right, causing exception
|
@@ -55,4 +65,4 @@
|
|
55
65
|
- Fixed bug where partials weren't rendered via the dev server.
|
56
66
|
|
57
67
|
# v0.2.1
|
58
|
-
- Initial release. Yay!
|
68
|
+
- Initial release. Yay!
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
2
2
|
require "gumdrop/version"
|
3
|
-
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
4
5
|
desc "builds gem"
|
5
6
|
task :build do
|
6
7
|
system "gem build gumdrop.gemspec"
|
@@ -20,3 +21,10 @@ desc "uninstalls gem"
|
|
20
21
|
task :uninstall do
|
21
22
|
system "gem uninstall gumdrop"
|
22
23
|
end
|
24
|
+
|
25
|
+
|
26
|
+
Rake::TestTask.new do |t|
|
27
|
+
t.libs.push "lib"
|
28
|
+
t.test_files = FileList['specs/*_spec.rb']
|
29
|
+
t.verbose = true
|
30
|
+
end
|
data/bin/gumdrop
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
2
4
|
# Copyright (c) 2011 M@ McCray. All rights reserved.
|
3
5
|
|
4
6
|
$: << File.expand_path(File.dirname(__FILE__) + "/../lib")
|
@@ -8,4 +10,4 @@ require 'rubygems'
|
|
8
10
|
# require 'bundler/setup'
|
9
11
|
|
10
12
|
require "gumdrop"
|
11
|
-
require "gumdrop/cli"
|
13
|
+
require "gumdrop/cli"
|
data/lib/gumdrop.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
1
3
|
require 'tilt'
|
2
4
|
require 'fileutils'
|
3
5
|
require 'active_support/all'
|
4
6
|
|
5
7
|
DEFAULT_OPTIONS= {
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
8
|
+
cache_data: false,
|
9
|
+
relative_paths: true,
|
10
|
+
auto_run: false,
|
11
|
+
force_reload: false,
|
12
|
+
root: ".",
|
13
|
+
log_level: :info,
|
14
|
+
output_dir: "./output",
|
15
|
+
log: 'logs/build.log'
|
13
16
|
}
|
14
17
|
|
15
18
|
LOG_LEVELS = {
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
+
info: 0,
|
20
|
+
warning: 1,
|
21
|
+
error: 2
|
19
22
|
}
|
20
23
|
|
21
|
-
# LOG_LEVELS = {
|
22
|
-
# info: 0,
|
23
|
-
# warning: 1,
|
24
|
-
# error: 2
|
25
|
-
# }
|
26
|
-
|
27
24
|
module Gumdrop
|
28
25
|
|
26
|
+
autoload :Build, "gumdrop/build"
|
29
27
|
autoload :Context, "gumdrop/context"
|
30
28
|
autoload :Content, "gumdrop/content"
|
31
29
|
autoload :DeferredLoader, "gumdrop/deferred_loader"
|
@@ -33,6 +31,7 @@ module Gumdrop
|
|
33
31
|
autoload :Generator, "gumdrop/generator"
|
34
32
|
autoload :GeneratedrContent, "gumdrop/generator"
|
35
33
|
autoload :HashObject, "gumdrop/hash_object"
|
34
|
+
autoload :Logging, "gumdrop/logging"
|
36
35
|
autoload :Pager, "gumdrop/pager"
|
37
36
|
autoload :Server, "gumdrop/server"
|
38
37
|
autoload :Utils, "gumdrop/utils"
|
@@ -41,7 +40,18 @@ module Gumdrop
|
|
41
40
|
|
42
41
|
class << self
|
43
42
|
|
44
|
-
attr_accessor :root_path,
|
43
|
+
attr_accessor :root_path,
|
44
|
+
:source_path,
|
45
|
+
:site,
|
46
|
+
:layouts,
|
47
|
+
:generators,
|
48
|
+
:partials,
|
49
|
+
:config,
|
50
|
+
:data,
|
51
|
+
:content_filters,
|
52
|
+
:blacklist,
|
53
|
+
:log,
|
54
|
+
:last_run
|
45
55
|
|
46
56
|
def run(opts={})
|
47
57
|
# Opts
|
@@ -62,6 +72,16 @@ module Gumdrop
|
|
62
72
|
@root_path = root.split '/'
|
63
73
|
@source_path = src.split '/'
|
64
74
|
@data = Gumdrop::DeferredLoader.new()
|
75
|
+
@last_run = Time.now
|
76
|
+
|
77
|
+
begin
|
78
|
+
@log = Logger.new Gumdrop.config.log, 'daily'
|
79
|
+
rescue
|
80
|
+
@log = Logger.new STDOUT
|
81
|
+
end
|
82
|
+
@log.formatter = proc do |severity, datetime, progname, msg|
|
83
|
+
"#{datetime}: #{msg}\n"
|
84
|
+
end
|
65
85
|
|
66
86
|
@content_filters= []
|
67
87
|
@blacklist = []
|
@@ -71,61 +91,10 @@ module Gumdrop
|
|
71
91
|
source= IO.readlines("#{root}/lib/site.rb").join('')
|
72
92
|
DSL.class_eval source
|
73
93
|
end
|
74
|
-
|
75
|
-
# Scan
|
76
|
-
#puts "Running in: #{root}"
|
77
|
-
Dir.glob("#{src}/**/*", File::FNM_DOTMATCH).each do |path|
|
78
|
-
unless File.directory? path or File.basename(path) == '.DS_Store' # should be smarter about this?
|
79
|
-
file_path = (path.split('/') - @root_path).join '/'
|
80
|
-
node= Content.new(file_path)
|
81
|
-
@site[node.to_s]= node
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# Layouts, Generators, and Partials
|
86
|
-
@site.keys.each do |path|
|
87
|
-
if File.extname(path) == ".template"
|
88
|
-
@layouts[File.basename(path)]= @site.delete(path)
|
89
94
|
|
90
|
-
|
91
|
-
@generators[File.basename(path)]= Generator.new( @site.delete(path) )
|
92
|
-
|
93
|
-
elsif File.basename(path).starts_with?("_")
|
94
|
-
partial_name= File.basename(path)[1..-1].gsub(File.extname(File.basename(path)), '')
|
95
|
-
# puts "Creating partial #{partial_name} from #{path}"
|
96
|
-
@partials[partial_name]= @site.delete(path)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
@generators.each_pair do |path, generator|
|
101
|
-
generator.execute()
|
102
|
-
end
|
103
|
-
|
104
|
-
@blacklist.each do |skip_path|
|
105
|
-
@site.keys.each do |source_path|
|
106
|
-
if source_path.starts_with? skip_path
|
107
|
-
Gumdrop.report " -ignoring: #{source_path}", :info
|
108
|
-
@site.delete source_path
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
# Render
|
114
|
-
unless opts[:dry_run]
|
115
|
-
output_base_path= File.expand_path(Gumdrop.config.output_dir)
|
116
|
-
site.keys.sort.each do |path|
|
117
|
-
#unless @blacklist.detect {|p| path.starts_with?(p) }
|
118
|
-
node= site[path]
|
119
|
-
output_path= File.join(output_base_path, node.to_s)
|
120
|
-
FileUtils.mkdir_p File.dirname(output_path)
|
121
|
-
node.renderTo output_path, @content_filters
|
122
|
-
# else
|
123
|
-
# Gumdrop.report " -ignoring: #{path}", :info
|
124
|
-
# end
|
125
|
-
end
|
126
|
-
puts "Done."
|
127
|
-
end
|
95
|
+
Build.run root, src, opts
|
128
96
|
|
97
|
+
puts "Done."
|
129
98
|
end
|
130
99
|
|
131
100
|
# levels: info, warning, error
|
@@ -133,15 +102,18 @@ module Gumdrop
|
|
133
102
|
ll= Gumdrop.config.log_level
|
134
103
|
case level
|
135
104
|
when :info
|
136
|
-
puts msg if ll == :info
|
105
|
+
#puts msg if ll == :info
|
106
|
+
@log.info msg
|
137
107
|
when :warning
|
138
|
-
puts msg if ll == :info or ll == :warning
|
108
|
+
#puts msg if ll == :info or ll == :warning
|
109
|
+
@log.warn msg
|
139
110
|
else
|
140
111
|
puts msg
|
112
|
+
@log.error msg
|
141
113
|
end
|
142
114
|
end
|
143
115
|
end
|
144
116
|
|
145
117
|
Gumdrop.config= Gumdrop::HashObject.new(DEFAULT_OPTIONS)
|
146
118
|
|
147
|
-
end
|
119
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
|
2
|
+
module Gumdrop
|
3
|
+
|
4
|
+
class Build
|
5
|
+
attr_reader :root, :src, :opts
|
6
|
+
|
7
|
+
SKIP= %w(.DS_Store .gitignore .git .svn .sass-cache)
|
8
|
+
|
9
|
+
def initialize(root, src, opts={})
|
10
|
+
@root= root
|
11
|
+
@root_path= root.split('/')
|
12
|
+
@src= src
|
13
|
+
@opts= opts
|
14
|
+
# if opts[:auto_run]
|
15
|
+
# run()
|
16
|
+
# end
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_tree
|
20
|
+
# Scan Filesystem
|
21
|
+
#puts "Running in: #{root}"
|
22
|
+
Dir.glob("#{src}/**/*", File::FNM_DOTMATCH).each do |path|
|
23
|
+
unless File.directory? path or Build::SKIP.include?( File.basename(path) )
|
24
|
+
file_path = (path.split('/') - @root_path).join '/'
|
25
|
+
node= Content.new(file_path)
|
26
|
+
path= node.to_s
|
27
|
+
|
28
|
+
# Sort out Layouts, Generators, and Partials
|
29
|
+
if File.extname(path) == ".template"
|
30
|
+
Gumdrop.layouts[File.basename(path)]= node
|
31
|
+
|
32
|
+
elsif File.extname(path) == ".generator"
|
33
|
+
Gumdrop.generators[File.basename(path)]= Generator.new( node )
|
34
|
+
|
35
|
+
elsif File.basename(path).starts_with?("_")
|
36
|
+
partial_name= File.basename(path)[1..-1].gsub(File.extname(File.basename(path)), '')
|
37
|
+
# puts "Creating partial #{partial_name} from #{path}"
|
38
|
+
Gumdrop.partials[partial_name]= node
|
39
|
+
|
40
|
+
else
|
41
|
+
Gumdrop.site[path]= node
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def run_generators
|
49
|
+
Gumdrop.generators.each_pair do |path, generator|
|
50
|
+
generator.execute()
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def filter_tree
|
55
|
+
Gumdrop.blacklist.each do |skip_path|
|
56
|
+
Gumdrop.site.keys.each do |source_path|
|
57
|
+
if source_path.starts_with? skip_path
|
58
|
+
Gumdrop.report " -ignoring: #{source_path}", :info
|
59
|
+
Gumdrop.site.delete source_path
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def render
|
66
|
+
unless opts[:dry_run]
|
67
|
+
output_base_path= File.expand_path(Gumdrop.config.output_dir)
|
68
|
+
Gumdrop.site.keys.sort.each do |path|
|
69
|
+
node= Gumdrop.site[path]
|
70
|
+
output_path= File.join(output_base_path, node.to_s)
|
71
|
+
FileUtils.mkdir_p File.dirname(output_path)
|
72
|
+
node.renderTo output_path, Gumdrop.content_filters
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def run
|
78
|
+
build_tree()
|
79
|
+
run_generators()
|
80
|
+
filter_tree()
|
81
|
+
render()
|
82
|
+
self
|
83
|
+
end
|
84
|
+
|
85
|
+
class << self
|
86
|
+
def run(root, src, opts={})
|
87
|
+
new(root, src, opts).run()
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
data/lib/gumdrop/content.rb
CHANGED
@@ -37,7 +37,7 @@ module Gumdrop
|
|
37
37
|
return content if ignore_layout
|
38
38
|
layout= Context.get_template()
|
39
39
|
while !layout.nil?
|
40
|
-
content = layout.template.render(Context, :content
|
40
|
+
content = layout.template.render(Context, content:content) { content }
|
41
41
|
layout= Context.get_template()
|
42
42
|
end
|
43
43
|
content
|
@@ -52,6 +52,7 @@ module Gumdrop
|
|
52
52
|
f.write output
|
53
53
|
end
|
54
54
|
end
|
55
|
+
|
55
56
|
|
56
57
|
def copyTo(output, layout=nil, opts={})
|
57
58
|
do_copy= if File.exists? output
|
@@ -85,4 +86,4 @@ module Gumdrop
|
|
85
86
|
|
86
87
|
end
|
87
88
|
|
88
|
-
end
|
89
|
+
end
|
data/lib/gumdrop/generator.rb
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
|
2
|
+
require 'stitch'
|
3
|
+
require 'jsmin'
|
4
|
+
|
5
|
+
class Stitch::Source
|
6
|
+
# Patch for gumdrop style filenames
|
7
|
+
def name
|
8
|
+
name = path.relative_path_from(root)
|
9
|
+
name = name.dirname + name.basename(".*")
|
10
|
+
name.to_s.gsub(".js", '')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
|
1
16
|
module Gumdrop
|
2
17
|
|
3
18
|
class Generator
|
@@ -40,16 +55,40 @@ module Gumdrop
|
|
40
55
|
else
|
41
56
|
"/#{@base_path}/#{name}"
|
42
57
|
end
|
43
|
-
content= GeneratedContent.new(filepath, opts)
|
44
|
-
|
45
|
-
Gumdrop.layouts
|
46
|
-
|
47
|
-
|
48
|
-
|
58
|
+
content= GeneratedContent.new(filepath, block, opts)
|
59
|
+
if opts.has_key? :template and !opts[:template].nil?
|
60
|
+
content.template = if Gumdrop.layouts.has_key?( opts[:template] )
|
61
|
+
Gumdrop.layouts[ opts[:template] ]
|
62
|
+
else
|
63
|
+
Gumdrop.layouts[ "#{opts[:template]}.template" ]
|
64
|
+
end.template
|
65
|
+
end
|
49
66
|
|
50
67
|
Gumdrop.site[content.uri]= content
|
51
68
|
end
|
52
69
|
|
70
|
+
def stitch(name, opts)
|
71
|
+
page name do
|
72
|
+
content= Stitch::Package.new(opts).compile
|
73
|
+
if opts[:compress]
|
74
|
+
JSMin.minify content
|
75
|
+
else
|
76
|
+
content
|
77
|
+
end
|
78
|
+
end
|
79
|
+
if opts[:prune] and opts[:root]
|
80
|
+
sp = File.expand_path('./source')
|
81
|
+
rp = File.expand_path(opts[:root])
|
82
|
+
relative_root = rp.gsub(sp, '')[1..-1]
|
83
|
+
rrlen= relative_root.length - 1
|
84
|
+
Gumdrop.site.keys.each do |path|
|
85
|
+
if path[0..rrlen] == relative_root and name != path
|
86
|
+
Gumdrop.site.delete path
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
53
92
|
def run_dsl_from_source(source)
|
54
93
|
# puts source
|
55
94
|
instance_eval source
|
@@ -64,6 +103,24 @@ module Gumdrop
|
|
64
103
|
|
65
104
|
class GeneratedContent < Content
|
66
105
|
# Nothing special, per se...
|
106
|
+
|
107
|
+
def initialize(path, block, params={})
|
108
|
+
@content_block= block
|
109
|
+
super(path, params)
|
110
|
+
end
|
111
|
+
|
112
|
+
def render(ignore_layout=false, reset_context=true, locals={})
|
113
|
+
if @content_block.nil?
|
114
|
+
super(ignore_layout, reset_context, locals)
|
115
|
+
else
|
116
|
+
@content_block.call
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def useLayout?
|
121
|
+
!@content_block.nil? or !@template.nil?
|
122
|
+
end
|
123
|
+
|
67
124
|
end
|
68
125
|
|
69
|
-
end
|
126
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Logging support
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
module Gumdrop
|
6
|
+
|
7
|
+
module Logging
|
8
|
+
|
9
|
+
class << self
|
10
|
+
|
11
|
+
def log
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def info
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def warn
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def error
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def debug
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|