bonsai 1.2.0 → 1.3.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/.bundle/config ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_WITHOUT: ""
@@ -0,0 +1,230 @@
1
+ # DO NOT MODIFY THIS FILE
2
+
3
+ require 'digest/sha1'
4
+ require 'rubygems'
5
+
6
+ module Gem
7
+ class Dependency
8
+ if !instance_methods.map { |m| m.to_s }.include?("requirement")
9
+ def requirement
10
+ version_requirements
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ module Bundler
17
+ module SharedHelpers
18
+
19
+ def default_gemfile
20
+ gemfile = find_gemfile
21
+ gemfile or raise GemfileNotFound, "The default Gemfile was not found"
22
+ Pathname.new(gemfile)
23
+ end
24
+
25
+ def in_bundle?
26
+ find_gemfile
27
+ end
28
+
29
+ private
30
+
31
+ def find_gemfile
32
+ return ENV['BUNDLE_GEMFILE'] if ENV['BUNDLE_GEMFILE']
33
+
34
+ previous = nil
35
+ current = File.expand_path(Dir.pwd)
36
+
37
+ until !File.directory?(current) || current == previous
38
+ filename = File.join(current, 'Gemfile')
39
+ return filename if File.file?(filename)
40
+ current, previous = File.expand_path("..", current), current
41
+ end
42
+ end
43
+
44
+ def clean_load_path
45
+ # handle 1.9 where system gems are always on the load path
46
+ if defined?(::Gem)
47
+ me = File.expand_path("../../", __FILE__)
48
+ $LOAD_PATH.reject! do |p|
49
+ next if File.expand_path(p).include?(me)
50
+ p != File.dirname(__FILE__) &&
51
+ Gem.path.any? { |gp| p.include?(gp) }
52
+ end
53
+ $LOAD_PATH.uniq!
54
+ end
55
+ end
56
+
57
+ def reverse_rubygems_kernel_mixin
58
+ # Disable rubygems' gem activation system
59
+ ::Kernel.class_eval do
60
+ if private_method_defined?(:gem_original_require)
61
+ alias rubygems_require require
62
+ alias require gem_original_require
63
+ end
64
+
65
+ undef gem
66
+ end
67
+ end
68
+
69
+ def cripple_rubygems(specs)
70
+ reverse_rubygems_kernel_mixin
71
+
72
+ executables = specs.map { |s| s.executables }.flatten
73
+
74
+ :: Kernel.class_eval do
75
+ private
76
+ def gem(*) ; end
77
+ end
78
+ Gem.source_index # ensure RubyGems is fully loaded
79
+
80
+ ::Kernel.send(:define_method, :gem) do |dep, *reqs|
81
+ if executables.include? File.basename(caller.first.split(':').first)
82
+ return
83
+ end
84
+ opts = reqs.last.is_a?(Hash) ? reqs.pop : {}
85
+
86
+ unless dep.respond_to?(:name) && dep.respond_to?(:requirement)
87
+ dep = Gem::Dependency.new(dep, reqs)
88
+ end
89
+
90
+ spec = specs.find { |s| s.name == dep.name }
91
+
92
+ if spec.nil?
93
+ e = Gem::LoadError.new "#{dep.name} is not part of the bundle. Add it to Gemfile."
94
+ e.name = dep.name
95
+ e.version_requirement = dep.requirement
96
+ raise e
97
+ elsif dep !~ spec
98
+ e = Gem::LoadError.new "can't activate #{dep}, already activated #{spec.full_name}. " \
99
+ "Make sure all dependencies are added to Gemfile."
100
+ e.name = dep.name
101
+ e.version_requirement = dep.requirement
102
+ raise e
103
+ end
104
+
105
+ true
106
+ end
107
+
108
+ # === Following hacks are to improve on the generated bin wrappers ===
109
+
110
+ # Yeah, talk about a hack
111
+ source_index_class = (class << Gem::SourceIndex ; self ; end)
112
+ source_index_class.send(:define_method, :from_gems_in) do |*args|
113
+ source_index = Gem::SourceIndex.new
114
+ source_index.spec_dirs = *args
115
+ source_index.add_specs(*specs)
116
+ source_index
117
+ end
118
+
119
+ # OMG more hacks
120
+ gem_class = (class << Gem ; self ; end)
121
+ gem_class.send(:define_method, :bin_path) do |name, *args|
122
+ exec_name, *reqs = args
123
+
124
+ spec = nil
125
+
126
+ if exec_name
127
+ spec = specs.find { |s| s.executables.include?(exec_name) }
128
+ spec or raise Gem::Exception, "can't find executable #{exec_name}"
129
+ else
130
+ spec = specs.find { |s| s.name == name }
131
+ exec_name = spec.default_executable or raise Gem::Exception, "no default executable for #{spec.full_name}"
132
+ end
133
+
134
+ gem_bin = File.join(spec.full_gem_path, spec.bindir, exec_name)
135
+ gem_from_path_bin = File.join(File.dirname(spec.loaded_from), spec.bindir, exec_name)
136
+ File.exist?(gem_bin) ? gem_bin : gem_from_path_bin
137
+ end
138
+ end
139
+
140
+ extend self
141
+ end
142
+ end
143
+
144
+ module Bundler
145
+ LOCKED_BY = '0.9.13'
146
+ FINGERPRINT = "b3b574f01bf6f8e6fe47ea377ef334b53b8a4396"
147
+ AUTOREQUIRES = {:default=>[["builder", false], ["jeweler", false], ["launchy", false], ["less", false], ["maruku", false], ["mustache", false], ["rspec", false], ["sinatra", false], ["tilt", false], ["watch", false], ["yard", false]]}
148
+ SPECS = [
149
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/rake-0.8.7/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/rake-0.8.7.gemspec", :name=>"rake"},
150
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/builder-2.1.2/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/builder-2.1.2.gemspec", :name=>"builder"},
151
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/configuration-1.1.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/configuration-1.1.0.gemspec", :name=>"configuration"},
152
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/json_pure-1.2.3/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/json_pure-1.2.3.gemspec", :name=>"json_pure"},
153
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/gemcutter-0.5.0/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/gemcutter-0.5.0.gemspec", :name=>"gemcutter"},
154
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/git-1.2.5/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/git-1.2.5.gemspec", :name=>"git"},
155
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/rubyforge-2.0.4/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/rubyforge-2.0.4.gemspec", :name=>"rubyforge"},
156
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/jeweler-1.4.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/jeweler-1.4.0.gemspec", :name=>"jeweler"},
157
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/launchy-0.3.5/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/launchy-0.3.5.gemspec", :name=>"launchy"},
158
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/mutter-0.5.3/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/mutter-0.5.3.gemspec", :name=>"mutter"},
159
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/polyglot-0.3.1/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/polyglot-0.3.1.gemspec", :name=>"polyglot"},
160
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/treetop-1.4.5/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/treetop-1.4.5.gemspec", :name=>"treetop"},
161
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/less-1.2.21/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/less-1.2.21.gemspec", :name=>"less"},
162
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/syntax-1.0.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/syntax-1.0.0.gemspec", :name=>"syntax"},
163
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/maruku-0.6.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/maruku-0.6.0.gemspec", :name=>"maruku"},
164
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/mustache-0.6.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/mustache-0.6.0.gemspec", :name=>"mustache"},
165
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/rack-1.1.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/rack-1.1.0.gemspec", :name=>"rack"},
166
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/rspec-1.3.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/rspec-1.3.0.gemspec", :name=>"rspec"},
167
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/sinatra-1.0/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/sinatra-1.0.gemspec", :name=>"sinatra"},
168
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/tilt-0.8/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/tilt-0.8.gemspec", :name=>"tilt"},
169
+ {:load_paths=>["/Users/ben/.gem/ruby/1.8/gems/watch-0.1.0/lib"], :loaded_from=>"/Users/ben/.gem/ruby/1.8/specifications/watch-0.1.0.gemspec", :name=>"watch"},
170
+ {:load_paths=>["/Users/ben/.bundle/ruby/1.8/gems/yard-0.5.4/lib"], :loaded_from=>"/Users/ben/.bundle/ruby/1.8/specifications/yard-0.5.4.gemspec", :name=>"yard"},
171
+ ].map do |hash|
172
+ if hash[:virtual_spec]
173
+ spec = eval(hash[:virtual_spec], binding, "<virtual spec for '#{hash[:name]}'>")
174
+ else
175
+ dir = File.dirname(hash[:loaded_from])
176
+ spec = Dir.chdir(dir){ eval(File.read(hash[:loaded_from]), binding, hash[:loaded_from]) }
177
+ end
178
+ spec.loaded_from = hash[:loaded_from]
179
+ spec.require_paths = hash[:load_paths]
180
+ spec
181
+ end
182
+
183
+ extend SharedHelpers
184
+
185
+ def self.configure_gem_path_and_home(specs)
186
+ # Fix paths, so that Gem.source_index and such will work
187
+ paths = specs.map{|s| s.installation_path }
188
+ paths.flatten!; paths.compact!; paths.uniq!; paths.reject!{|p| p.empty? }
189
+ ENV['GEM_PATH'] = paths.join(File::PATH_SEPARATOR)
190
+ ENV['GEM_HOME'] = paths.first
191
+ Gem.clear_paths
192
+ end
193
+
194
+ def self.match_fingerprint
195
+ print = Digest::SHA1.hexdigest(File.read(File.expand_path('../../Gemfile', __FILE__)))
196
+ unless print == FINGERPRINT
197
+ abort 'Gemfile changed since you last locked. Please `bundle lock` to relock.'
198
+ end
199
+ end
200
+
201
+ def self.setup(*groups)
202
+ match_fingerprint
203
+ clean_load_path
204
+ cripple_rubygems(SPECS)
205
+ configure_gem_path_and_home(SPECS)
206
+ SPECS.each do |spec|
207
+ Gem.loaded_specs[spec.name] = spec
208
+ $LOAD_PATH.unshift(*spec.require_paths)
209
+ end
210
+ end
211
+
212
+ def self.require(*groups)
213
+ groups = [:default] if groups.empty?
214
+ groups.each do |group|
215
+ (AUTOREQUIRES[group.to_sym] || []).each do |file, explicit|
216
+ if explicit
217
+ Kernel.require file
218
+ else
219
+ begin
220
+ Kernel.require file
221
+ rescue LoadError
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
227
+
228
+ # Setup bundle when it's required.
229
+ setup
230
+ end
data/CHANGES CHANGED
@@ -1,3 +1,10 @@
1
+ = 1.3.0 (29/03/2010)
2
+
3
+ * File assets are no longer stripped of digits from the file name (Closes Issue #7)
4
+ * File asset "name" property is titlecased. (Closes Issue #11)
5
+ * Added a .gitignore so that the output directory is ignored from the get-go.
6
+ * Lock to mustache 0.6 to avoid 0.9.X bugs
7
+
1
8
  = 1.2.0 (13/03/2010)
2
9
 
3
10
  * Updates to default templates
data/Gemfile CHANGED
@@ -1,8 +1,10 @@
1
+ source :gemcutter
2
+
1
3
  gem 'jeweler'
2
4
  gem 'rspec'
3
5
  gem 'yard'
4
6
  gem 'tilt'
5
- gem 'mustache'
7
+ gem 'mustache', '0.6.0'
6
8
  gem 'builder'
7
9
  gem 'watch'
8
10
  gem 'sinatra'
data/Gemfile.lock ADDED
@@ -0,0 +1,95 @@
1
+ ---
2
+ dependencies:
3
+ maruku:
4
+ group:
5
+ - :default
6
+ version: ">= 0"
7
+ mustache:
8
+ group:
9
+ - :default
10
+ version: = 0.6.0
11
+ yard:
12
+ group:
13
+ - :default
14
+ version: ">= 0"
15
+ rspec:
16
+ group:
17
+ - :default
18
+ version: ">= 0"
19
+ watch:
20
+ group:
21
+ - :default
22
+ version: ">= 0"
23
+ sinatra:
24
+ group:
25
+ - :default
26
+ version: ">= 0"
27
+ jeweler:
28
+ group:
29
+ - :default
30
+ version: ">= 0"
31
+ less:
32
+ group:
33
+ - :default
34
+ version: ">= 0"
35
+ tilt:
36
+ group:
37
+ - :default
38
+ version: ">= 0"
39
+ builder:
40
+ group:
41
+ - :default
42
+ version: ">= 0"
43
+ launchy:
44
+ group:
45
+ - :default
46
+ version: ">= 0"
47
+ specs:
48
+ - rake:
49
+ version: 0.8.7
50
+ - builder:
51
+ version: 2.1.2
52
+ - configuration:
53
+ version: 1.1.0
54
+ - json_pure:
55
+ version: 1.2.3
56
+ - gemcutter:
57
+ version: 0.5.0
58
+ - git:
59
+ version: 1.2.5
60
+ - rubyforge:
61
+ version: 2.0.4
62
+ - jeweler:
63
+ version: 1.4.0
64
+ - launchy:
65
+ version: 0.3.5
66
+ - mutter:
67
+ version: 0.5.3
68
+ - polyglot:
69
+ version: 0.3.1
70
+ - treetop:
71
+ version: 1.4.5
72
+ - less:
73
+ version: 1.2.21
74
+ - syntax:
75
+ version: 1.0.0
76
+ - maruku:
77
+ version: 0.6.0
78
+ - mustache:
79
+ version: 0.6.0
80
+ - rack:
81
+ version: 1.1.0
82
+ - rspec:
83
+ version: 1.3.0
84
+ - sinatra:
85
+ version: "1.0"
86
+ - tilt:
87
+ version: "0.8"
88
+ - watch:
89
+ version: 0.1.0
90
+ - yard:
91
+ version: 0.5.4
92
+ hash: b3b574f01bf6f8e6fe47ea377ef334b53b8a4396
93
+ sources:
94
+ - Rubygems:
95
+ uri: http://gemcutter.org
data/Rakefile CHANGED
@@ -1,13 +1,13 @@
1
1
  # coding: utf-8
2
2
  begin
3
- require File.dirname(__FILE__) + '/vendor/gems/environment'
3
+ require File.dirname(__FILE__) + '/.bundle/environment'
4
4
  rescue LoadError
5
5
  raise <<-HELP
6
6
  Bonsai uses the gem bundler to handle its development dependencies under
7
7
  multiple environments. So if you're testing under 1.8, 1.9, jruby or otherwise
8
8
  you should ensure that you have the `bundler` gem installed.
9
9
 
10
- Then run `gem bundle`. Following going through these steps you should
10
+ Then run `bundle install --relock`. Following going through these steps you should
11
11
  not see this error message. If you do, please contact me or raise an issue.
12
12
  (http://github.com/benschwarz/bonsai/issues)
13
13
  HELP
@@ -27,11 +27,12 @@ begin
27
27
  gem.executables = ['bonsai']
28
28
  gem.has_rdoc = false
29
29
  gem.files.exclude 'vendor/gems'
30
+ gem.files.exclude 'vendor/cache'
30
31
 
31
32
  gem.add_development_dependency "rspec", ">= 1.3.0"
32
33
  gem.add_development_dependency "yard", ">= 0"
33
- gem.add_dependency "tilt", ">= 0.5"
34
- gem.add_dependency "mustache", ">= 0.5.0"
34
+ gem.add_dependency "tilt", ">= 0.8"
35
+ gem.add_dependency "mustache", "= 0.6"
35
36
  gem.add_dependency "builder", ">= 2.1.2"
36
37
  gem.add_dependency "watch", ">= 0.1.0"
37
38
  gem.add_dependency "sinatra", ">= 0.9.4"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.3.0
data/bonsai.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bonsai}
8
- s.version = "1.2.0"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ben Schwarz"]
12
- s.date = %q{2010-03-13}
12
+ s.date = %q{2010-03-29}
13
13
  s.default_executable = %q{bonsai}
14
14
  s.description = %q{A static site generator that uses the best toolset available}
15
15
  s.email = %q{ben.schwarz@gmail.com}
@@ -19,11 +19,14 @@ Gem::Specification.new do |s|
19
19
  "README.md"
20
20
  ]
21
21
  s.files = [
22
- ".document",
22
+ ".bundle/config",
23
+ ".bundle/environment.rb",
24
+ ".document",
23
25
  ".gitignore",
24
26
  ".kick",
25
27
  "CHANGES",
26
28
  "Gemfile",
29
+ "Gemfile.lock",
27
30
  "LICENSE",
28
31
  "README.md",
29
32
  "Rakefile",
@@ -87,11 +90,11 @@ Gem::Specification.new do |s|
87
90
  "spec/support/content/1.about-us/1.contact/magic/image001.jpg",
88
91
  "spec/support/content/1.about-us/1.contact/magic/image002.jpg",
89
92
  "spec/support/content/1.about-us/demo-template.yml",
90
- "spec/support/content/1.about-us/history/a_file_asset.txt",
93
+ "spec/support/content/1.about-us/history/001.jpg",
94
+ "spec/support/content/1.about-us/history/1_a_file_asset.txt",
91
95
  "spec/support/content/1.about-us/history/child/a_file_asset.txt",
92
96
  "spec/support/content/1.about-us/history/child/demo-template.yml",
93
97
  "spec/support/content/1.about-us/history/demo-template.yml",
94
- "spec/support/content/1.about-us/history/image001.jpg",
95
98
  "spec/support/content/1.about-us/history/images/image001.jpg",
96
99
  "spec/support/content/1.about-us/history/magic/image001.jpg",
97
100
  "spec/support/content/1.about-us/history/magic/image002.jpg",
@@ -148,8 +151,8 @@ Gem::Specification.new do |s|
148
151
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
149
152
  s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
150
153
  s.add_development_dependency(%q<yard>, [">= 0"])
151
- s.add_runtime_dependency(%q<tilt>, [">= 0.5"])
152
- s.add_runtime_dependency(%q<mustache>, [">= 0.5.0"])
154
+ s.add_runtime_dependency(%q<tilt>, [">= 0.8"])
155
+ s.add_runtime_dependency(%q<mustache>, ["= 0.6"])
153
156
  s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
154
157
  s.add_runtime_dependency(%q<watch>, [">= 0.1.0"])
155
158
  s.add_runtime_dependency(%q<sinatra>, [">= 0.9.4"])
@@ -160,8 +163,8 @@ Gem::Specification.new do |s|
160
163
  else
161
164
  s.add_dependency(%q<rspec>, [">= 1.3.0"])
162
165
  s.add_dependency(%q<yard>, [">= 0"])
163
- s.add_dependency(%q<tilt>, [">= 0.5"])
164
- s.add_dependency(%q<mustache>, [">= 0.5.0"])
166
+ s.add_dependency(%q<tilt>, [">= 0.8"])
167
+ s.add_dependency(%q<mustache>, ["= 0.6"])
165
168
  s.add_dependency(%q<builder>, [">= 2.1.2"])
166
169
  s.add_dependency(%q<watch>, [">= 0.1.0"])
167
170
  s.add_dependency(%q<sinatra>, [">= 0.9.4"])
@@ -173,8 +176,8 @@ Gem::Specification.new do |s|
173
176
  else
174
177
  s.add_dependency(%q<rspec>, [">= 1.3.0"])
175
178
  s.add_dependency(%q<yard>, [">= 0"])
176
- s.add_dependency(%q<tilt>, [">= 0.5"])
177
- s.add_dependency(%q<mustache>, [">= 0.5.0"])
179
+ s.add_dependency(%q<tilt>, [">= 0.8"])
180
+ s.add_dependency(%q<mustache>, ["= 0.6"])
178
181
  s.add_dependency(%q<builder>, [">= 2.1.2"])
179
182
  s.add_dependency(%q<watch>, [">= 0.1.0"])
180
183
  s.add_dependency(%q<sinatra>, [">= 0.9.4"])
data/lib/bonsai/page.rb CHANGED
@@ -68,15 +68,13 @@ module Bonsai
68
68
 
69
69
  # This method is used for the exporter to copy assets
70
70
  def assets
71
- Dir["#{directory}/**/*"].select{|p| !File.directory?(p) && !File.basename(p).include?("yml") }.map do |a|
72
- {
73
- :name => File.basename(a),
74
- :path => web_path(a),
75
- :disk_path => a
76
- }
71
+ Dir["#{directory}/**/*"].select{|path| !File.directory?(path) && !File.basename(path).include?("yml") }.map do |file|
72
+ file_to_hash(file)
77
73
  end
78
74
  end
79
75
 
76
+ # "Floating pages" are pages that are not prefixed with a numeric eg: 1.about-us
77
+ # These pages are not present in the `children` or other meta-content arrays
80
78
  def floating?
81
79
  !!(File.dirname(disk_path) =~ /\/[a-zA-z][\w-]+$/)
82
80
  end
@@ -167,8 +165,8 @@ module Bonsai
167
165
  end
168
166
  end
169
167
 
170
- # Creates methods for each sub-folder within the page's folder
171
- # that isn't a sub-page (a page object)
168
+ # Creates "methods" for each sub-folder within the page's folder
169
+ # that isn't itself, a child-page (a page object)
172
170
  def disk_assets
173
171
  assets = {}
174
172
  Dir["#{File.dirname(disk_path)}/**"].select{|p| File.directory?(p)}.reject {|p|
@@ -183,11 +181,7 @@ module Bonsai
183
181
 
184
182
  {
185
183
  name.to_sym => Dir["#{path}/*"].map do |file|
186
- {
187
- :name => File.basename(file),
188
- :path => web_path(file),
189
- :disk_path => file
190
- }
184
+ file_to_hash(file)
191
185
  end
192
186
  }
193
187
  end
@@ -203,5 +197,13 @@ module Bonsai
203
197
  def web_path(path)
204
198
  path.gsub(self.class.path, '').gsub(/\/\d+\./, '/')
205
199
  end
200
+
201
+ def file_to_hash(file)
202
+ {
203
+ :name => File.basename(file),
204
+ :path => "#{web_path(File.dirname(file))}/#{File.basename(file)}",
205
+ :disk_path => File.expand_path(file)
206
+ }
207
+ end
206
208
  end
207
209
  end
@@ -104,7 +104,7 @@ describe Bonsai::Exporter do
104
104
  end
105
105
 
106
106
  it 'should copy the assets of each page to its directory' do
107
- File.exists?("#{Bonsai::Exporter.path}/about-us/history/a_file_asset.txt").should be_true
107
+ File.exists?("#{Bonsai::Exporter.path}/about-us/history/1_a_file_asset.txt").should be_true
108
108
  end
109
109
 
110
110
  it "should copy the contents of the public directory to the root export path" do
@@ -48,10 +48,24 @@ describe Bonsai::Page do
48
48
  it "should respond to disk path" do
49
49
  @page.disk_path.should == "#{Bonsai.root_dir}/content/1.about-us/history/demo-template.yml"
50
50
  end
51
-
52
- it "should have assets" do
53
- @page.assets.should be_an_instance_of(Array)
54
- @page.assets.length.should == 6
51
+
52
+ describe "assets" do
53
+ it "should have assets" do
54
+ @page.assets.should be_an_instance_of(Array)
55
+ @page.assets.length.should == 6
56
+ end
57
+
58
+ it "should have the correct name" do
59
+ @page.assets.first[:name].should == "001.jpg"
60
+ end
61
+
62
+ it "should have the correct path" do
63
+ @page.assets.first[:path].should == "/about-us/history/001.jpg"
64
+ end
65
+
66
+ it "should have the correct disk_path" do
67
+ @page.assets.first[:disk_path].should == "/Users/ben/Documents/Projects/bonsai/spec/support/content/1.about-us/history/001.jpg"
68
+ end
55
69
  end
56
70
 
57
71
  it "should be equal" do
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 1.2.0
9
+ version: 1.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ben Schwarz
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-13 00:00:00 +11:00
17
+ date: 2010-03-29 00:00:00 +11:00
18
18
  default_executable: bonsai
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -52,8 +52,8 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  segments:
54
54
  - 0
55
- - 5
56
- version: "0.5"
55
+ - 8
56
+ version: "0.8"
57
57
  type: :runtime
58
58
  version_requirements: *id003
59
59
  - !ruby/object:Gem::Dependency
@@ -61,13 +61,12 @@ dependencies:
61
61
  prerelease: false
62
62
  requirement: &id004 !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - "="
65
65
  - !ruby/object:Gem::Version
66
66
  segments:
67
67
  - 0
68
- - 5
69
- - 0
70
- version: 0.5.0
68
+ - 6
69
+ version: "0.6"
71
70
  type: :runtime
72
71
  version_requirements: *id004
73
72
  - !ruby/object:Gem::Dependency
@@ -178,11 +177,14 @@ extra_rdoc_files:
178
177
  - LICENSE
179
178
  - README.md
180
179
  files:
180
+ - .bundle/config
181
+ - .bundle/environment.rb
181
182
  - .document
182
183
  - .gitignore
183
184
  - .kick
184
185
  - CHANGES
185
186
  - Gemfile
187
+ - Gemfile.lock
186
188
  - LICENSE
187
189
  - README.md
188
190
  - Rakefile
@@ -246,11 +248,11 @@ files:
246
248
  - spec/support/content/1.about-us/1.contact/magic/image001.jpg
247
249
  - spec/support/content/1.about-us/1.contact/magic/image002.jpg
248
250
  - spec/support/content/1.about-us/demo-template.yml
249
- - spec/support/content/1.about-us/history/a_file_asset.txt
251
+ - spec/support/content/1.about-us/history/001.jpg
252
+ - spec/support/content/1.about-us/history/1_a_file_asset.txt
250
253
  - spec/support/content/1.about-us/history/child/a_file_asset.txt
251
254
  - spec/support/content/1.about-us/history/child/demo-template.yml
252
255
  - spec/support/content/1.about-us/history/demo-template.yml
253
- - spec/support/content/1.about-us/history/image001.jpg
254
256
  - spec/support/content/1.about-us/history/images/image001.jpg
255
257
  - spec/support/content/1.about-us/history/magic/image001.jpg
256
258
  - spec/support/content/1.about-us/history/magic/image002.jpg