gumdrop 0.5.2 → 0.6.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/lib/gumdrop.rb CHANGED
@@ -4,119 +4,31 @@ require 'tilt'
4
4
  require 'fileutils'
5
5
  require 'active_support/all'
6
6
 
7
- DEFAULT_OPTIONS= {
8
- cache_data: false,
9
- relative_paths: true,
10
- auto_run: false,
11
- force_reload: false,
12
- proxy_enabled: true,
13
- output_dir: "./output",
14
- lib_dir: "./lib",
15
- source_dir: "./source",
16
- data_dir: './data',
17
- log_level: :info,
18
- log: 'logs/build.log'
19
- }
20
-
21
- LOG_LEVELS = {
22
- info: 0,
23
- warning: 1,
24
- error: 2
25
- }
26
-
27
7
  module Gumdrop
28
-
29
- autoload :Build, "gumdrop/build"
8
+
30
9
  autoload :Context, "gumdrop/context"
31
10
  autoload :Content, "gumdrop/content"
32
11
  autoload :DataManager, "gumdrop/data_manager"
33
- autoload :DSL, "gumdrop/dsl"
34
12
  autoload :Generator, "gumdrop/generator"
35
- autoload :GeneratedrContent, "gumdrop/generator"
36
13
  autoload :HashObject, "gumdrop/hash_object"
37
- autoload :Logging, "gumdrop/logging"
38
- autoload :Pager, "gumdrop/pager"
14
+ autoload :Pager, "gumdrop/data_manager"
39
15
  autoload :Server, "gumdrop/server"
40
- autoload :Utils, "gumdrop/utils"
16
+ autoload :Site, "gumdrop/site"
41
17
  autoload :VERSION, "gumdrop/version"
42
18
  autoload :ViewHelpers, "gumdrop/view_helpers"
43
19
 
44
20
  class << self
45
-
46
- attr_accessor :root_path,
47
- :source_path,
48
- :site,
49
- :layouts,
50
- :generators,
51
- :partials,
52
- :redirects,
53
- :config,
54
- :data,
55
- :content_filters,
56
- :blacklist,
57
- :greylist,
58
- :log,
59
- :last_run
60
-
21
+
61
22
  def run(opts={})
62
23
  site_file= Gumdrop.fetch_site_file
63
-
64
24
  unless site_file.nil?
65
- @generators = Hash.new {|h,k| h[k]= nil }
66
- @content_filters = []
67
- @blacklist = []
68
- @greylist = []
69
- @redirects = []
70
-
71
- # In server mode, we want to reload it every time... right?
72
- load_site_file site_file
25
+ site= Site.new site_file, opts
73
26
 
74
- Gumdrop.config.merge! opts # These beat those in the Gumdrop file?
75
-
76
- root= File.expand_path File.dirname(site_file)
77
- Dir.chdir root
78
-
79
- src= File.expand_path Gumdrop.config.source_dir #File.join root, 'source'
80
- lib_path= File.expand_path Gumdrop.config.lib_dir
81
-
82
- @root_path = root.split '/'
83
- @source_path = src.split '/'
84
- @site = Hash.new {|h,k| h[k]= nil }
85
- @layouts = Hash.new {|h,k| h[k]= nil }
86
- @partials = Hash.new {|h,k| h[k]= nil }
87
- @data = Gumdrop::DataManager.new( Gumdrop.config.data_dir )
88
- @last_run = Time.now
89
-
90
- begin
91
- @log = Logger.new Gumdrop.config.log, 'daily'
92
- rescue
93
- @log = Logger.new STDOUT
94
- end
95
- @log.formatter = proc do |severity, datetime, progname, msg|
96
- "#{datetime}: #{msg}\n"
97
- end
98
-
99
- Build.run root, src, opts
27
+ site.build
100
28
 
101
29
  puts "Done."
102
-
103
30
  else
104
31
  puts "Not in a valid Gumdrop site directory."
105
-
106
- end
107
- end
108
-
109
- # levels: info, warning, error
110
- def report(msg, level=:info)
111
- ll= Gumdrop.config.log_level
112
- case level
113
- when :info
114
- @log.info msg
115
- when :warning
116
- @log.warn msg
117
- else
118
- puts msg
119
- @log.error msg
120
32
  end
121
33
  end
122
34
 
@@ -124,12 +36,6 @@ module Gumdrop
124
36
  !fetch_site_file(filename).nil?
125
37
  end
126
38
 
127
- def load_site_file(site_file=nil)
128
- site_file= fetch_site_file if site_file.nil?
129
- source= IO.readlines( site_file ).join('')
130
- DSL.class_eval source
131
- end
132
-
133
39
  def fetch_site_file(filename="Gumdrop")
134
40
  here= Dir.pwd
135
41
  found= File.file? File.join( here, filename )
@@ -144,23 +50,10 @@ module Gumdrop
144
50
  end
145
51
  end
146
52
 
147
- def site_folder(filename="Gumdrop")
53
+ def site_dirname(filename="Gumdrop")
148
54
  File.dirname( fetch_site_file( filename ) )
149
55
  end
150
56
 
151
57
  end
152
-
153
-
154
- Gumdrop.config= Gumdrop::HashObject.new(DEFAULT_OPTIONS)
155
-
156
-
157
- module Configurator
158
- class << self
159
- def set(key,value)
160
- # puts "Setting Gumdrop.config.#{key} = #{value}"
161
- Gumdrop.config[key.to_sym]= value
162
- end
163
- end
164
- end
165
58
 
166
59
  end
@@ -8,24 +8,24 @@ configure do
8
8
  set :site_url, "http://www.mysite.com"
9
9
 
10
10
  # All the supported build configuration settings and their defaults:
11
-
11
+ # set :relative_paths, true
12
+ # set :proxy_enabled, true
12
13
  # set :output_dir, "./output"
13
- # set :lib_dir, "./lib"
14
14
  # set :source_dir, "./source"
15
15
  # set :data_dir, './data'
16
- # set :relative_paths, true
17
- # set :proxy_enabled, true
18
- # set :log_level, :info
19
- # set :log, 'logs/build.log'
16
+ # set :log, './logs/build.log'
17
+ # set :ignore, %w(.DS_Store .gitignore .git .svn .sass-cache)
18
+ # set :server_timeout, 15
19
+ # set :server_port, 4567
20
20
 
21
21
  end
22
22
 
23
23
  # Skipping files entirely from build process... Like they don't exist.
24
24
  # skip 'file-to-ignore.html'
25
- # skip 'dont-show/'
25
+ # skip 'dont-show/**/*'
26
26
 
27
27
  # Ignores source file(s) from compilation, but does load the content into memory
28
- # ignore 'pages/'
28
+ # ignore 'pages/**/*'
29
29
 
30
30
  # NOTE: Skipping and ignoring matches like a file glob (it use File.fnmatch in fact)
31
31
  # (this doesn't work for files detected by stitch)
@@ -10,12 +10,8 @@ end
10
10
 
11
11
  require 'gumdrop'
12
12
 
13
- Gumdrop.config.auto_run= false
14
- Gumdrop.config.force_reload= true
15
-
16
13
  #require 'rack/static'
17
14
  #use Rack::Static, :urls => ["/media"], :root => "source"
18
15
  #use Rack::Static, :urls => ["/theme/images"], :root => "source"
19
16
 
20
-
21
17
  run Gumdrop::Server
@@ -1,3 +1,4 @@
1
+ <% use_layout nil %>
1
2
  # For clean urls
2
3
  DirectoryIndex index.html
3
4
 
@@ -21,6 +22,6 @@ DirectoryIndex index.html
21
22
  </IfModule>
22
23
  # END Gzip
23
24
 
24
- <% Gumdrop.redirects.each do |opts| %>
25
+ <% site.redirects.each do |opts| %>
25
26
  # Redirect <%= opts[:from] %> <%= opts[:to] %>
26
27
  <% end %>
@@ -1,2 +1,2 @@
1
- <% layout 'app' %>
1
+ <% use_layout 'app' %>
2
2
  <article id="main"></article>
@@ -30,4 +30,4 @@ html lang="en"
30
30
  div.row
31
31
  div.col.span-12
32
32
  footer
33
- = copyright_years 2011
33
+ == copyright_years 2011
@@ -8,14 +8,16 @@ configure do
8
8
  set :site_url, "http://www.mysite.com"
9
9
 
10
10
  # All the supported build configuration settings and their defaults:
11
+ # set :relative_paths, true
12
+ # set :proxy_enabled, true
11
13
  # set :output_dir, "./output"
12
- # set :lib_dir, "./lib"
13
14
  # set :source_dir, "./source"
14
15
  # set :data_dir, './data'
15
- # set :relative_paths, true
16
- # set :proxy_enabled, true
17
- # set :log_level, :info
18
- # set :log, 'logs/build.log'
16
+ # set :log, './logs/build.log'
17
+ # set :ignore, %w(.DS_Store .gitignore .git .svn .sass-cache)
18
+ # set :server_timeout, 15
19
+ # set :server_port, 4567
20
+
19
21
  end
20
22
 
21
23
 
@@ -10,9 +10,6 @@ end
10
10
 
11
11
  require 'gumdrop'
12
12
 
13
- Gumdrop.config.auto_run= false
14
- Gumdrop.config.force_reload= true
15
-
16
13
  #require 'rack/static'
17
14
  #use Rack::Static, :urls => ["/media"], :root => "source"
18
15
  #use Rack::Static, :urls => ["/theme/images"], :root => "source"
@@ -1,3 +1,4 @@
1
+ <% use_layout nil %>
1
2
  # For clean urls
2
3
  DirectoryIndex index.html
3
4
 
@@ -21,6 +22,6 @@ DirectoryIndex index.html
21
22
  </IfModule>
22
23
  # END Gzip
23
24
 
24
- <% Gumdrop.redirects.each do |opts| %>
25
+ <% site.redirects.each do |opts| %>
25
26
  # Redirect <%= opts[:from] %> <%= opts[:to] %>
26
27
  <% end %>
@@ -30,4 +30,4 @@ html lang="en"
30
30
  div.row
31
31
  div.col.span-12
32
32
  footer
33
- = copyright_years 2011
33
+ == copyright_years 2011
metadata CHANGED
@@ -1,111 +1,109 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gumdrop
3
- version: !ruby/object:Gem::Version
4
- version: 0.5.2
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 6
8
+ - 0
9
+ version: 0.6.0
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Matt McCray
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
- date: 2011-07-22 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
16
+
17
+ date: 2011-07-22 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: sinatra
16
- requirement: &70136900293340 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
22
  prerelease: false
24
- version_requirements: *70136900293340
25
- - !ruby/object:Gem::Dependency
26
- name: tilt
27
- requirement: &70136900292760 !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
28
24
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
33
31
  type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: tilt
34
35
  prerelease: false
35
- version_requirements: *70136900292760
36
- - !ruby/object:Gem::Dependency
37
- name: active_support
38
- requirement: &70136900292200 !ruby/object:Gem::Requirement
36
+ requirement: &id002 !ruby/object:Gem::Requirement
39
37
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: *70136900292200
47
- - !ruby/object:Gem::Dependency
48
- name: trollop
49
- requirement: &70136900291500 !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
55
44
  type: :runtime
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: active_support
56
48
  prerelease: false
57
- version_requirements: *70136900291500
58
- - !ruby/object:Gem::Dependency
59
- name: haml
60
- requirement: &70136900291040 !ruby/object:Gem::Requirement
49
+ requirement: &id003 !ruby/object:Gem::Requirement
61
50
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
66
57
  type: :runtime
58
+ version_requirements: *id003
59
+ - !ruby/object:Gem::Dependency
60
+ name: trollop
67
61
  prerelease: false
68
- version_requirements: *70136900291040
69
- - !ruby/object:Gem::Dependency
70
- name: sass
71
- requirement: &70136900290620 !ruby/object:Gem::Requirement
62
+ requirement: &id004 !ruby/object:Gem::Requirement
72
63
  none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
69
+ version: "0"
77
70
  type: :runtime
78
- prerelease: false
79
- version_requirements: *70136900290620
80
- - !ruby/object:Gem::Dependency
71
+ version_requirements: *id004
72
+ - !ruby/object:Gem::Dependency
81
73
  name: i18n
82
- requirement: &70136900290080 !ruby/object:Gem::Requirement
74
+ prerelease: false
75
+ requirement: &id005 !ruby/object:Gem::Requirement
83
76
  none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ segments:
81
+ - 0
82
+ version: "0"
88
83
  type: :runtime
89
- prerelease: false
90
- version_requirements: *70136900290080
91
- - !ruby/object:Gem::Dependency
84
+ version_requirements: *id005
85
+ - !ruby/object:Gem::Dependency
92
86
  name: bundle
93
- requirement: &70136900289660 !ruby/object:Gem::Requirement
87
+ prerelease: false
88
+ requirement: &id006 !ruby/object:Gem::Requirement
94
89
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
95
+ version: "0"
99
96
  type: :runtime
100
- prerelease: false
101
- version_requirements: *70136900289660
102
- description: A simple cms/prototyping tool.
97
+ version_requirements: *id006
98
+ description: A sweet 'n simple cms/prototyping tool for creating static html websites and webapps.
103
99
  email: matt@elucidata.net
104
- executables:
100
+ executables:
105
101
  - gumdrop
106
102
  extensions: []
103
+
107
104
  extra_rdoc_files: []
108
- files:
105
+
106
+ files:
109
107
  - .gitignore
110
108
  - ChangeLog.md
111
109
  - Gemfile
@@ -116,21 +114,17 @@ files:
116
114
  - bin/gumdrop
117
115
  - gumdrop.gemspec
118
116
  - lib/gumdrop.rb
119
- - lib/gumdrop/build.rb
120
117
  - lib/gumdrop/cli.rb
121
118
  - lib/gumdrop/content.rb
122
119
  - lib/gumdrop/context.rb
123
120
  - lib/gumdrop/data_manager.rb
124
- - lib/gumdrop/dsl.rb
125
121
  - lib/gumdrop/generator.rb
126
122
  - lib/gumdrop/hash_object.rb
127
- - lib/gumdrop/logging.rb
128
- - lib/gumdrop/pager.rb
129
123
  - lib/gumdrop/proxy_handler.rb
130
124
  - lib/gumdrop/server.rb
125
+ - lib/gumdrop/site.rb
131
126
  - lib/gumdrop/stitch_compilers.rb
132
127
  - lib/gumdrop/stitch_ex.rb
133
- - lib/gumdrop/utils.rb
134
128
  - lib/gumdrop/version.rb
135
129
  - lib/gumdrop/view_helpers.rb
136
130
  - specs/content_spec.rb
@@ -175,28 +169,37 @@ files:
175
169
  - templates/default/source/theme/scripts/app.js.coffee
176
170
  - templates/default/source/theme/styles/_tools.scss
177
171
  - templates/default/source/theme/templates/site.template.slim
172
+ has_rdoc: true
178
173
  homepage: https://github.com/darthapo/gumdrop
179
174
  licenses: []
175
+
180
176
  post_install_message:
181
177
  rdoc_options: []
182
- require_paths:
178
+
179
+ require_paths:
183
180
  - lib
184
- required_ruby_version: !ruby/object:Gem::Requirement
181
+ required_ruby_version: !ruby/object:Gem::Requirement
185
182
  none: false
186
- requirements:
187
- - - ! '>='
188
- - !ruby/object:Gem::Version
189
- version: '0'
190
- required_rubygems_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ segments:
187
+ - 0
188
+ version: "0"
189
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
190
  none: false
192
- requirements:
193
- - - ! '>='
194
- - !ruby/object:Gem::Version
195
- version: '0'
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ segments:
195
+ - 0
196
+ version: "0"
196
197
  requirements: []
198
+
197
199
  rubyforge_project: gumdrop
198
- rubygems_version: 1.8.10
200
+ rubygems_version: 1.3.7
199
201
  signing_key:
200
202
  specification_version: 3
201
- summary: A simple cms/prototyping tool.
203
+ summary: A sweet 'n simple cms/prototyping tool.
202
204
  test_files: []
205
+
data/lib/gumdrop/build.rb DELETED
@@ -1,116 +0,0 @@
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
- Gumdrop.report "[Scanning from #{src}]", :info
21
- # Report blacklists and greylists
22
- Gumdrop.blacklist.each do |path|
23
- Gumdrop.report " blacklist: #{path}", :info
24
- end
25
- Gumdrop.greylist.each do |path|
26
- Gumdrop.report " greylist: #{path}", :info
27
- end
28
-
29
- # Scan Filesystem
30
- #puts "Running in: #{root}"
31
- Dir.glob("#{src}/**/*", File::FNM_DOTMATCH).each do |path|
32
- unless File.directory? path or Build::SKIP.include?( File.basename(path) )
33
- file_path = (path.split('/') - @root_path).join '/'
34
- node= Content.new(file_path)
35
- path= node.to_s
36
-
37
- # Sort out Layouts, Generators, and Partials
38
- if File.extname(path) == ".template"
39
- Gumdrop.layouts[path]= node
40
- Gumdrop.layouts[File.basename(path)]= node
41
-
42
- elsif File.extname(path) == ".generator"
43
- Gumdrop.generators[File.basename(path)]= Generator.new( node )
44
-
45
- elsif File.basename(path).starts_with?("_")
46
- partial_name= File.basename(path)[1..-1].gsub(File.extname(File.basename(path)), '')
47
- partial_node_path= File.join File.dirname(path), partial_name
48
- # puts "Creating partial #{partial_name} from #{path}"
49
- Gumdrop.partials[partial_name]= node
50
- Gumdrop.partials[partial_node_path]= node
51
- else
52
- Gumdrop.site[path]= node
53
- end
54
- end
55
- end
56
-
57
- end
58
-
59
- def run_generators
60
- Gumdrop.report "[Executing Generators]", :info
61
- Gumdrop.generators.each_pair do |path, generator|
62
- generator.execute()
63
- end
64
- end
65
-
66
- # Expunge blacklisted files
67
- def filter_tree
68
- Gumdrop.blacklist.each do |blacklist_pattern|
69
- Gumdrop.site.keys.each do |source_path|
70
- if path_match source_path, blacklist_pattern
71
- Gumdrop.report "-excluding: #{source_path}", :info
72
- Gumdrop.site.delete source_path
73
- end
74
- end
75
- end
76
- end
77
-
78
- def render
79
- unless opts[:dry_run]
80
- output_base_path= File.expand_path(Gumdrop.config.output_dir)
81
- Gumdrop.report "[Compiling to #{output_base_path}]", :info
82
- Gumdrop.site.keys.sort.each do |path|
83
- unless Gumdrop.greylist.any? {|pattern| path_match path, pattern }
84
- node= Gumdrop.site[path]
85
- output_path= File.join(output_base_path, node.to_s)
86
- FileUtils.mkdir_p File.dirname(output_path)
87
- node.renderTo output_path, Gumdrop.content_filters
88
- else
89
- Gumdrop.report " -ignoring: #{path}", :info
90
- end
91
- end
92
- end
93
- end
94
-
95
- def run
96
- build_tree()
97
- run_generators()
98
- filter_tree()
99
- render()
100
- self
101
- end
102
-
103
- # Match a path using a glob-like file pattern
104
- def path_match(path, pattern)
105
- File.fnmatch pattern, path, File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_CASEFOLD
106
- end
107
-
108
-
109
- class << self
110
- def run(root, src, opts={})
111
- new(root, src, opts).run()
112
- end
113
- end
114
- end
115
-
116
- end