gumdrop 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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