gumdrop 0.6.1 → 0.6.2

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/.gitignore CHANGED
@@ -1,5 +1,4 @@
1
1
  .DS_Store
2
2
  *.gem
3
- examples/**/output
3
+ output
4
4
  .sass-cache
5
- old_examples
data/ChangeLog.md CHANGED
@@ -1,3 +1,9 @@
1
+ # v0.6.2
2
+ - Consolidated stitch support code into single file
3
+ - Bugfix: Generates better relative paths for Content objects
4
+ - Cleaned up paths in Content
5
+ - Updated project templates
6
+
1
7
  # v0.6.1
2
8
  - Content filters are run for dev server requests now too.
3
9
  - Added config.env, defaults to 'production' (override from cli with -e)
data/Readme.md CHANGED
@@ -180,3 +180,10 @@ Here's the `Gumdrop` file created by the default template:
180
180
  - Partials
181
181
  - Config and using in pages
182
182
  - Project Templates
183
+
184
+ # Todo / Ideas / Changes
185
+ - New/Update Doc site.
186
+ - Need test coverage.
187
+ - Some kind of admin? What would that even do?
188
+ - If you could specify a 'prototype' for data collections, could be cool.
189
+ - Add YamlDoc support for nodes? (Tilt compiler? or in Content)
data/gumdrop.gemspec CHANGED
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
13
13
 
14
14
  s.authors = ["Matt McCray"]
15
15
  s.email = %q{matt@elucidata.net}
16
- s.summary = %q{A sweet 'n simple cms/prototyping tool.}
16
+ s.summary = %q{The sweet 'n simple cms/prototyping tool.}
17
17
  s.homepage = %q{https://github.com/darthapo/gumdrop}
18
- s.description = %q{A sweet 'n simple cms/prototyping tool for creating static html websites and webapps.}
18
+ s.description = %q{The sweet 'n simple cms/prototyping tool for creating static html websites and webapps.}
19
19
 
20
20
  s.files = `git ls-files`.split("\n")
21
21
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
@@ -3,32 +3,32 @@ module Gumdrop
3
3
 
4
4
  class Content
5
5
 
6
- attr_accessor :path, :level, :filename, :source_filename, :type, :ext, :uri, :slug, :template, :params, :site, :ignored
6
+ attr_accessor :path,
7
+ :level,
8
+ :filename,
9
+ :source_filename,
10
+ :type,
11
+ :ext,
12
+ :uri,
13
+ :slug,
14
+ :template,
15
+ :params,
16
+ :site,
17
+ :ignored,
18
+ :full_path
7
19
 
8
20
  def initialize(path, site, params={})
9
21
  @site= site
10
22
  @params= HashObject.new params
11
- @path= path
12
- @level= (@path.split('/').length - 2)
13
- @source_filename= File.basename path
23
+ @full_path= path
14
24
  @ignored= false
15
-
16
- filename_parts= @source_filename.split('.')
17
- ext= filename_parts.pop
18
- while !Tilt[ext].nil?
19
- ext= filename_parts.pop
20
- end
21
- filename_parts << ext # push the last file ext back on there!
22
- @filename= filename_parts.join('.')
23
-
24
- path_parts= @path.split('/')
25
- path_parts.shift
26
- path_parts.pop
27
- path_parts.push @filename
28
-
25
+ @path= get_source_path
26
+ @level= (@path.split('/').length - 1)
27
+ @source_filename= File.basename path
28
+ @filename= get_target_filename
29
29
  @type= File.extname @source_filename
30
30
  @ext= File.extname @filename
31
- @uri= path_parts.join('/')
31
+ @uri= get_uri
32
32
  @slug=@uri.gsub('/', '-').gsub(@ext, '')
33
33
  @template= unless Tilt[path].nil?
34
34
  Tilt.new path
@@ -67,21 +67,21 @@ module Gumdrop
67
67
 
68
68
  def copyTo(output, layout=nil, opts={})
69
69
  do_copy= if File.exists? output
70
- !FileUtils.identical? @path, output
70
+ !FileUtils.identical? @full_path, output
71
71
  else
72
72
  true
73
73
  end
74
74
  if do_copy
75
75
  @site.report " Copying: #{@uri}", :warning
76
- FileUtils.cp_r @path, output, opts
76
+ FileUtils.cp_r @full_path, output, opts
77
77
  else
78
78
  @site.report " (same): #{@uri}", :info
79
79
  end
80
80
  end
81
81
 
82
82
  def mtime
83
- if File.exists? @path
84
- File.new(@path).mtime
83
+ if File.exists? @full_path
84
+ File.new(@full_path).mtime
85
85
  else
86
86
  Time.now
87
87
  end
@@ -94,6 +94,36 @@ module Gumdrop
94
94
  def to_s
95
95
  @uri
96
96
  end
97
+
98
+ private
99
+
100
+ def get_source_path
101
+ path= @full_path.sub @site.src_path, ''
102
+ if path[0] == '/'
103
+ path[1..-1]
104
+ else
105
+ path
106
+ end
107
+ end
108
+
109
+ def get_target_filename
110
+ filename_parts= @source_filename.split('.')
111
+ ext= filename_parts.pop
112
+ while !Tilt[ext].nil?
113
+ ext= filename_parts.pop
114
+ end
115
+ filename_parts << ext # push the last file ext back on there!
116
+ filename_parts.join('.')
117
+ end
118
+
119
+ def get_uri
120
+ uri= File.join File.dirname(@path), @filename # path_parts.join('/')
121
+ if uri.starts_with? './'
122
+ uri[2..-1]
123
+ else
124
+ uri
125
+ end
126
+ end
97
127
 
98
128
  end
99
129
 
@@ -17,6 +17,7 @@ module Gumdrop
17
17
  @pages= []
18
18
  end
19
19
 
20
+ # This should probably not be accessible to the generators
20
21
  def execute
21
22
  if @content.is_a? Proc
22
23
  run_dsl_from_proc @content
@@ -41,9 +42,9 @@ module Gumdrop
41
42
  name= name[1..-1] if name.starts_with?('/')
42
43
  opts= params.reverse_merge(opts)
43
44
  filepath= if @base_path.empty?
44
- "/#{name}"
45
+ File.join @site.src_path, name
45
46
  else
46
- "/#{@base_path}/#{name}"
47
+ File.join @site.src_path, @base_path, @name
47
48
  end
48
49
  content= GeneratedContent.new(filepath, block, @site, opts)
49
50
  if opts.has_key? :template and !opts[:template].nil?
@@ -74,8 +75,7 @@ module Gumdrop
74
75
  end
75
76
 
76
77
  def stitch(name, opts)
77
- require 'gumdrop/stitch_ex'
78
- require 'gumdrop/stitch_compilers'
78
+ require 'gumdrop/stitch_support'
79
79
  content= Stitch::Package.new(opts).compile
80
80
  page name do
81
81
  case opts[:compress]
@@ -120,6 +120,8 @@ module Gumdrop
120
120
  end
121
121
  end
122
122
  end
123
+
124
+ private
123
125
 
124
126
  def run_dsl_from_source(source)
125
127
  # puts source
data/lib/gumdrop/site.rb CHANGED
@@ -21,9 +21,7 @@ module Gumdrop
21
21
 
22
22
  attr_reader :opts,
23
23
  :root_path,
24
- :root_path_parts,
25
24
  :src_path,
26
- :src_path_parts,
27
25
  :blacklist,
28
26
  :greylist,
29
27
  :redirects,
@@ -41,7 +39,6 @@ module Gumdrop
41
39
  def initialize(sitefile, opts={})
42
40
  @sitefile = File.expand_path sitefile
43
41
  @root_path = File.dirname @sitefile
44
- @root_path_parts = @root_path.split('/')
45
42
  @opts = opts
46
43
  reset_all()
47
44
  end
@@ -175,14 +172,12 @@ module Gumdrop
175
172
  #puts "Running in: #{root}"
176
173
  Dir.glob("#{src_path}/**/*", File::FNM_DOTMATCH).each do |path|
177
174
  unless File.directory? path or @config.ignore.include?( File.basename(path) )
178
- file_path = (path.split('/') - @root_path_parts).join '/'
179
- node= Content.new(file_path, self)
175
+ node= Content.new(path, self)
180
176
  path= node.to_s
181
177
  if blacklist.any? {|pattern| path_match path, pattern }
182
178
  report "-excluding: #{path}", :info
183
179
  else
184
180
  node.ignored= greylist.any? {|pattern| path_match path, pattern }
185
-
186
181
  # Sort out Layouts, Generators, and Partials
187
182
  if File.extname(path) == ".template"
188
183
  layouts[path]= node
@@ -203,7 +198,6 @@ module Gumdrop
203
198
  end
204
199
  end
205
200
  end
206
-
207
201
  end
208
202
 
209
203
  def run_generators
@@ -1,4 +1,19 @@
1
+
1
2
  require 'stitch-rb'
3
+ # require 'stitch'
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
+ # Custom Compilers
16
+
2
17
 
3
18
  class SerenadeCompiler < Stitch::Compiler
4
19
 
@@ -14,6 +29,7 @@ class SerenadeCompiler < Stitch::Compiler
14
29
 
15
30
  end
16
31
 
32
+ # Not so sure on this one...
17
33
  class HoganCompiler < Stitch::Compiler
18
34
  # List of supported extensions
19
35
  extensions :mustache
@@ -1,5 +1,5 @@
1
1
  module Gumdrop
2
2
 
3
- VERSION = "0.6.1" unless defined?(::Gumdrop::VERSION)
3
+ VERSION = "0.6.2" unless defined?(::Gumdrop::VERSION)
4
4
 
5
5
  end
data/lib/gumdrop.rb CHANGED
@@ -24,8 +24,13 @@ module Gumdrop
24
24
  unless site_file.nil?
25
25
  site= Site.new site_file, opts
26
26
 
27
+ old= Dir.pwd
28
+ Dir.chdir site.root_path
29
+
27
30
  site.build
28
31
 
32
+ Dir.chdir old
33
+
29
34
  puts "Done."
30
35
  else
31
36
  puts "Not in a valid Gumdrop site directory."
@@ -18,7 +18,7 @@ html lang="en"
18
18
  nav
19
19
  ul
20
20
  li
21
- a href==uri('/') Home
21
+ a href==uri('/index.html') Home
22
22
  article
23
23
  div.row
24
24
  div.col.span-8
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 1
9
- version: 0.6.1
8
+ - 2
9
+ version: 0.6.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Matt McCray
@@ -95,7 +95,7 @@ dependencies:
95
95
  version: "0"
96
96
  type: :runtime
97
97
  version_requirements: *id006
98
- description: A sweet 'n simple cms/prototyping tool for creating static html websites and webapps.
98
+ description: The sweet 'n simple cms/prototyping tool for creating static html websites and webapps.
99
99
  email: matt@elucidata.net
100
100
  executables:
101
101
  - gumdrop
@@ -108,7 +108,6 @@ files:
108
108
  - ChangeLog.md
109
109
  - Gemfile
110
110
  - License
111
- - Notes.md
112
111
  - Rakefile
113
112
  - Readme.md
114
113
  - bin/gumdrop
@@ -123,8 +122,7 @@ files:
123
122
  - lib/gumdrop/proxy_handler.rb
124
123
  - lib/gumdrop/server.rb
125
124
  - lib/gumdrop/site.rb
126
- - lib/gumdrop/stitch_compilers.rb
127
- - lib/gumdrop/stitch_ex.rb
125
+ - lib/gumdrop/stitch_support.rb
128
126
  - lib/gumdrop/version.rb
129
127
  - lib/gumdrop/view_helpers.rb
130
128
  - specs/content_spec.rb
@@ -200,6 +198,6 @@ rubyforge_project: gumdrop
200
198
  rubygems_version: 1.3.7
201
199
  signing_key:
202
200
  specification_version: 3
203
- summary: A sweet 'n simple cms/prototyping tool.
201
+ summary: The sweet 'n simple cms/prototyping tool.
204
202
  test_files: []
205
203
 
data/Notes.md DELETED
@@ -1,38 +0,0 @@
1
- # Future Features/Changes
2
- - Some kind of admin? What would that even do?
3
- - If you could specify a 'prototype' for data collections, could be cool.
4
- - Multiple source_dir?
5
- - `set :source_dir, ['./source/a', './source/b']
6
- - What would happen with conflicts, last one in wins?
7
- - Multiple data_dir too?
8
- - Add YamlDoc support for nodes? (Tilt compiler? or in Content)
9
- - configure block for each env/mode?
10
-
11
- # TODO:
12
- - New/Update Doc Site
13
- - API for retrieving pages and pages under a path (simple query)
14
- - Need test coverage.
15
-
16
- - Extract Build class into a Site class that can be instansiated (so multiple site can be loaded/run in memory)
17
-
18
-
19
- # Possible New Internals
20
- - Gumdrop (module)
21
- - Site (class)
22
- - SiteFileDSL (was DSL)
23
- - Node (was Content)
24
- - NodeGenerator (was Generator)
25
- - Data (module)
26
- - Manager (was DataManager)
27
- - Collection
28
- - Object
29
- - Pager
30
- - Server (module)
31
- - NodeHandler
32
- - ProxyHandler
33
- - Render (module)
34
- - Context
35
- - ViewHelpers
36
- - StitchCompilers
37
- - Utils (module)
38
- - Logging
@@ -1,14 +0,0 @@
1
-
2
- require 'stitch'
3
-
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
-