zorglub 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d8537037388d2d3b6171fbd10733d615852ddb74
4
- data.tar.gz: d76cbd05b5945098b9e35f337b807719bba33caf
2
+ SHA256:
3
+ metadata.gz: '0219f50bb07d3009172295d5a5dab9c055cd379475d9a4d292f4938459c4fb8f'
4
+ data.tar.gz: 224611e8b174fcf26fbd27e2e72beb80adb8562ce9d945a699bbc76fbd976e73
5
5
  SHA512:
6
- metadata.gz: 67eb88a6feb28a36ed3fbf1cc611e4297d775c46785581af46722e518a02a0baf3795c859ea603ee831093e6ac623d9528f31cbd2005476ff830bbfa9ac42c46
7
- data.tar.gz: 47a0fc3960fe8805c3f182a5d198c73c64a50a431d4cb77cc070685bd16e367a1ad56c0972528c54df473c1eec96989527fbd5aaa4ae4c109813262dc899307b
6
+ metadata.gz: f532761158fdb87b7dbd38eb12882158bbab72a4551861c02a7c88a2776f25ecc455c026ec675198853aee6423bcdfcaeca7f3e17a323fc82deff4a629362251
7
+ data.tar.gz: 660122838f1de84f1ab75ae0788ea8160ba47be3fa3d3f8d3bf9d7fce3ae12270cc704a6b2eae3669a154aac9d33809d1e7a466669eac7d6e6256c22b70e3e9b
@@ -1,46 +1,58 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zorglub (0.0.8)
4
+ zorglub (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- coveralls (0.7.0)
10
- multi_json (~> 1.3)
11
- rest-client
12
- simplecov (>= 0.7)
13
- term-ansicolor
14
- thor
15
- diff-lcs (1.2.5)
16
- docile (1.1.3)
17
- haml (4.0.5)
9
+ coveralls (0.8.22)
10
+ json (>= 1.8, < 3)
11
+ simplecov (~> 0.16.1)
12
+ term-ansicolor (~> 1.3)
13
+ thor (~> 0.19.4)
14
+ tins (~> 1.6)
15
+ diff-lcs (1.3)
16
+ docile (1.3.1)
17
+ ffi (1.9.25)
18
+ haml (5.0.4)
19
+ temple (>= 0.8.0)
18
20
  tilt
19
- mime-types (2.1)
20
- multi_json (1.8.4)
21
- rack (1.5.2)
22
- rake (10.1.1)
23
- rest-client (1.6.7)
24
- mime-types (>= 1.16)
25
- rspec (2.14.1)
26
- rspec-core (~> 2.14.0)
27
- rspec-expectations (~> 2.14.0)
28
- rspec-mocks (~> 2.14.0)
29
- rspec-core (2.14.7)
30
- rspec-expectations (2.14.5)
31
- diff-lcs (>= 1.1.3, < 2.0)
32
- rspec-mocks (2.14.5)
33
- sass (3.2.14)
34
- simplecov (0.8.2)
35
- docile (~> 1.1.0)
36
- multi_json
37
- simplecov-html (~> 0.8.0)
38
- simplecov-html (0.8.0)
39
- term-ansicolor (1.3.0)
21
+ json (2.1.0)
22
+ rack (2.0.6)
23
+ rake (12.3.2)
24
+ rb-fsevent (0.10.3)
25
+ rb-inotify (0.10.0)
26
+ ffi (~> 1.0)
27
+ rspec (3.8.0)
28
+ rspec-core (~> 3.8.0)
29
+ rspec-expectations (~> 3.8.0)
30
+ rspec-mocks (~> 3.8.0)
31
+ rspec-core (3.8.0)
32
+ rspec-support (~> 3.8.0)
33
+ rspec-expectations (3.8.2)
34
+ diff-lcs (>= 1.2.0, < 2.0)
35
+ rspec-support (~> 3.8.0)
36
+ rspec-mocks (3.8.0)
37
+ diff-lcs (>= 1.2.0, < 2.0)
38
+ rspec-support (~> 3.8.0)
39
+ rspec-support (3.8.0)
40
+ sass (3.7.2)
41
+ sass-listen (~> 4.0.0)
42
+ sass-listen (4.0.0)
43
+ rb-fsevent (~> 0.9, >= 0.9.4)
44
+ rb-inotify (~> 0.9, >= 0.9.7)
45
+ simplecov (0.16.1)
46
+ docile (~> 1.1)
47
+ json (>= 1.8, < 3)
48
+ simplecov-html (~> 0.10.0)
49
+ simplecov-html (0.10.2)
50
+ temple (0.8.0)
51
+ term-ansicolor (1.7.0)
40
52
  tins (~> 1.0)
41
- thor (0.18.1)
42
- tilt (2.0.0)
43
- tins (1.0.0)
53
+ thor (0.19.4)
54
+ tilt (2.0.9)
55
+ tins (1.20.2)
44
56
 
45
57
  PLATFORMS
46
58
  ruby
@@ -53,3 +65,6 @@ DEPENDENCIES
53
65
  rspec
54
66
  sass
55
67
  zorglub!
68
+
69
+ BUNDLED WITH
70
+ 1.17.3
@@ -1,11 +1,11 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
- #
3
+
4
4
  module Zorglub
5
- VERSION = '0.0.9'
5
+ VERSION = '0.1.0'
6
6
  end
7
- #
7
+
8
8
  require 'zorglub/node'
9
9
  require 'zorglub/app'
10
- #
10
+
11
11
  # EOF
@@ -1,11 +1,11 @@
1
1
  # -*- coding: UTF-8 -*-
2
- #
2
+
3
3
  require 'rack'
4
- #
4
+
5
5
  module Zorglub
6
- #
6
+
7
7
  class App < Rack::URLMap
8
- #
8
+
9
9
  def initialize map={}, &block
10
10
  super
11
11
  @map = map
@@ -22,7 +22,6 @@ module Zorglub
22
22
  :engines => { },
23
23
  :haml_options => {
24
24
  :format => :html5,
25
- :ugly => false,
26
25
  :encoding => 'utf-8'
27
26
  },
28
27
  :sass_options => {
@@ -40,9 +39,9 @@ module Zorglub
40
39
  instance_eval &block if block_given?
41
40
  remap @map
42
41
  end
43
- #
42
+
44
43
  attr_reader :engines_cache
45
- #
44
+
46
45
  def map location, object
47
46
  return unless location and object
48
47
  raise Exception.new "#{@map[location]} already mapped to #{location}" if @map.has_key? location
@@ -50,67 +49,64 @@ module Zorglub
50
49
  @map.merge! location.to_s=>object
51
50
  remap @map
52
51
  end
53
- #
52
+
54
53
  def delete location
55
54
  @map.delete location
56
55
  remap @map
57
56
  end
58
- #
57
+
59
58
  def at location
60
59
  @map[location]
61
60
  end
62
- #
61
+
63
62
  def to object
64
63
  @map.invert[object]
65
64
  end
66
- #
65
+
67
66
  def to_hash
68
67
  @map.dup
69
68
  end
70
- #
69
+
71
70
  # OPTIONS @options
72
- #
71
+
73
72
  def opt sym
74
73
  @options[sym]
75
74
  end
76
- #
75
+
77
76
  def opt! sym, val
78
77
  @options[sym] = val
79
78
  end
80
- #
79
+
81
80
  def register_engine! name, ext, proc
82
- return unless name
83
81
  if ext.nil? or ext.empty?
84
82
  x = nil
85
83
  else
86
- x = (ext[0]=='.' ? (ext.length==1 ? nil : ext) : '.'+ext)
84
+ x = (ext[0]=='.' ? (ext.length==1 ? nil : ext) : '.' + ext)
87
85
  end
88
86
  @options[:engines][name]=[ proc, x ]
89
87
  end
90
- #
88
+
91
89
  def engine_proc_ext engine, ext
92
90
  p,x = @options[:engines][engine]
93
91
  return [nil, ''] if p.nil?
94
92
  [ p, ((ext.nil? or ext.empty?) ? x : ext ) ]
95
93
  end
96
- #
94
+
97
95
  def view_base_path
98
- p = @options[:view_path]
99
- ( p.nil? ? File.join(@options[:root], @options[:view_dir]) : p )
96
+ _base_path @options[:view_path], :view_dir
100
97
  end
101
- #
98
+
102
99
  def layout_base_path
103
- p = @options[:layout_path]
104
- ( p.nil? ? File.join(@options[:root], @options[:layout_dir]) : p )
100
+ _base_path @options[:layout_path], :layout_dir
105
101
  end
106
- #
102
+
107
103
  def static_base_path
108
- p = @options[:static_path]
109
- ( p.nil? ? File.join(@options[:root], @options[:static_dir]) : p )
104
+ _base_path @options[:static_path], :static_dir
105
+ end
106
+
107
+ private
108
+ def _base_path p, sym
109
+ ( p.nil? ? File.join(@options[:root], @options[sym]) : p )
110
110
  end
111
- #
112
111
  end
113
- #
114
112
  end
115
- #
116
- # EOF
@@ -1,8 +1,8 @@
1
1
  # -*- coding: UTF-8 -*-
2
- #
2
+
3
3
  require 'haml/util'
4
4
  require 'haml/engine'
5
- #
5
+
6
6
  module Zorglub
7
7
  module Engines
8
8
  module File
@@ -14,5 +14,5 @@ module Zorglub
14
14
  end
15
15
  end
16
16
  end
17
- #
17
+
18
18
  # EOF
@@ -1,8 +1,8 @@
1
1
  # -*- coding: UTF-8 -*-
2
- #
2
+
3
3
  require 'haml/util'
4
4
  require 'haml/engine'
5
- #
5
+
6
6
  module Zorglub
7
7
  module Engines
8
8
  module Haml
@@ -19,5 +19,5 @@ module Zorglub
19
19
  end
20
20
  end
21
21
  end
22
- #
22
+
23
23
  # EOF
@@ -1,7 +1,7 @@
1
1
  # -*- coding: UTF-8 -*-
2
- #
2
+
3
3
  require 'sass'
4
- #
4
+
5
5
  module Zorglub
6
6
  module Engines
7
7
  module Sass
@@ -18,5 +18,5 @@ module Zorglub
18
18
  end
19
19
  end
20
20
  end
21
- #
21
+
22
22
  # EOF
@@ -1,175 +1,175 @@
1
1
  # -*- coding: UTF-8 -*-
2
- #
2
+
3
3
  require 'fileutils'
4
- #
4
+
5
5
  module Zorglub
6
- #
6
+
7
7
  class Node
8
- #
8
+
9
9
  UNDEFINED=-1
10
- #
10
+
11
11
  # class level engine, layout, static, layout_base_path, view_base_path configuration
12
- #
12
+
13
13
  class << self
14
- #
14
+
15
15
  attr_reader :static, :cache_lifetime
16
- #
16
+
17
17
  def engine! engine
18
18
  @engine = engine
19
19
  end
20
- #
20
+
21
21
  def engine
22
22
  @engine = @app.opt(:engine) if @engine==UNDEFINED and @app
23
23
  @engine
24
24
  end
25
- #
25
+
26
26
  def no_layout!
27
27
  layout! nil
28
28
  end
29
- #
29
+
30
30
  def layout! layout
31
31
  @layout = layout
32
32
  end
33
- #
33
+
34
34
  def layout
35
35
  @layout = @app.opt(:layout) if @layout==UNDEFINED and @app
36
36
  @layout
37
37
  end
38
- #
38
+
39
39
  def static! val, lifetime=0
40
40
  @static = ( (val==true or val==false) ? val : false )
41
41
  @cache_lifetime = lifetime
42
42
  end
43
- #
43
+
44
44
  def layout_base_path! path
45
45
  @layout_base_path = path
46
46
  end
47
- #
47
+
48
48
  def layout_base_path
49
49
  @layout_base_path ||= @app.layout_base_path
50
50
  end
51
- #
51
+
52
52
  def view_base_path! path
53
53
  @view_base_path = path
54
54
  end
55
- #
55
+
56
56
  def view_base_path
57
57
  @view_base_path ||= @app.view_base_path
58
58
  end
59
59
  end
60
- #
60
+
61
61
  # instance level engine, layout, view, static configuration
62
- #
62
+
63
63
  def engine! engine
64
64
  @engine = engine
65
65
  end
66
- #
66
+
67
67
  def no_layout!
68
68
  layout! nil
69
69
  end
70
- #
70
+
71
71
  def layout! layout
72
72
  @layout = layout
73
73
  end
74
- #
74
+
75
75
  def layout
76
76
  return nil if @layout.nil?
77
- File.join(self.class.layout_base_path, @layout)+ext
77
+ File.join(self.class.layout_base_path, @layout) + ext
78
78
  end
79
- #
79
+
80
80
  def no_view!
81
81
  view! nil
82
82
  end
83
- #
83
+
84
84
  def view! view
85
85
  @view = view
86
86
  end
87
- #
87
+
88
88
  def view
89
89
  return nil if @view.nil?
90
- File.join(self.class.view_base_path, @view)+ext
90
+ File.join(self.class.view_base_path, @view) + ext
91
91
  end
92
- #
92
+
93
93
  def static! val, lifetime=0
94
94
  @static = ( (val==true or val==false) ? val : false )
95
95
  @cache_lifetime = lifetime
96
96
  end
97
- #
97
+
98
98
  def static
99
99
  return nil if not @static or @view.nil?
100
- File.join(app.static_base_path, @view)+ext
100
+ File.join(app.static_base_path, @view) + ext
101
101
  end
102
- #
102
+
103
103
  def ext! ext
104
- @ext = ( (ext.nil? or ext.empty?) ? nil : (ext[0]=='.' ? (ext.length==1 ? nil : ext) : '.'+ext) )
104
+ @ext = ( (ext.nil? or ext.empty?) ? nil : (ext[0]=='.' ? (ext.length==1 ? nil : ext) : '.' + ext) )
105
105
  end
106
- #
106
+
107
107
  def ext
108
108
  @ext || ''
109
109
  end
110
- #
110
+
111
111
  def mime! mime
112
112
  @mime = mime
113
113
  end
114
- #
114
+
115
115
  # class level basic node functions
116
- #
116
+
117
117
  class << self
118
- #
118
+
119
119
  attr_accessor :app
120
120
  def map app, location
121
121
  @app = app
122
122
  @app.map location, self
123
123
  end
124
- #
124
+
125
125
  def r *args
126
126
  @r ||= @app.to self
127
127
  (args.empty? ? @r : File.join( @r, args.map { |x| x.to_s } ) )
128
128
  end
129
- #
129
+
130
130
  end
131
- #
131
+
132
132
  # instance level basic node functions
133
- #
133
+
134
134
  def app
135
135
  self.class.app
136
136
  end
137
- #
137
+
138
138
  def map
139
139
  self.class.r
140
140
  end
141
- #
141
+
142
142
  def r *args
143
143
  File.join map, (args.empty? ? meth : args.map { |x| x.to_s } )
144
144
  end
145
- #
145
+
146
146
  def html
147
147
  [ :map, :r, :args, :engine, :layout, :view ].inject('') { |s,sym| s+="<p>#{sym} => #{self.send sym}</p>"; s }
148
148
  end
149
- #
149
+
150
150
  def redirect target, options={}, &block
151
151
  status = options[:status] || 302
152
152
  body = options[:body] || redirect_body(target)
153
153
  header = response.header.merge('Location' => target.to_s)
154
154
  throw :stop_realize, Rack::Response.new(body, status, header, &block)
155
155
  end
156
- #
156
+
157
157
  def redirect_body target
158
158
  "You are being redirected, please follow this link to: <a href='#{target}'>#{target}</a>!"
159
159
  end
160
- #
160
+
161
161
  # class level inherited values are key=>array, copied at inheritance
162
162
  # so they can be extanded at class level
163
163
  # values are copied from class into instance at object creation
164
164
  # so that can be extanded without modifying class level values
165
165
  # typical usage are css or js inclusions
166
- #
166
+
167
167
  @cli_vals = { }
168
- #
168
+
169
169
  class << self
170
- #
170
+
171
171
  attr_reader :cli_vals
172
- #
172
+
173
173
  def cli_val sym, *args
174
174
  vals = @cli_vals[sym] ||= []
175
175
  unless args.empty?
@@ -178,9 +178,9 @@ module Zorglub
178
178
  end
179
179
  vals
180
180
  end
181
- #
181
+
182
182
  end
183
- #
183
+
184
184
  def cli_val sym, *args
185
185
  vals = @cli_vals[sym] ||= []
186
186
  unless args.empty?
@@ -189,44 +189,44 @@ module Zorglub
189
189
  end
190
190
  vals
191
191
  end
192
- #
192
+
193
193
  # before_all and after_all hooks
194
- #
194
+
195
195
  @cli_vals[:before_all] = []
196
196
  @cli_vals[:after_all] = []
197
197
  class << self
198
- #
198
+
199
199
  def call_before_hooks obj
200
200
  @cli_vals[:before_all].each do |blk| blk.call obj end
201
201
  end
202
- #
202
+
203
203
  def before_all meth=nil, &blk
204
204
  @cli_vals[:before_all]<< ( meth.nil? ? blk : meth )
205
205
  @cli_vals[:before_all].uniq!
206
206
  end
207
- #
207
+
208
208
  def call_after_hooks obj
209
209
  @cli_vals[:after_all].each do |blk| blk.call obj end
210
210
  end
211
- #
211
+
212
212
  def after_all meth=nil, &blk
213
213
  @cli_vals[:after_all]<< ( meth.nil? ? blk : meth )
214
214
  @cli_vals[:after_all].uniq!
215
215
  end
216
- #
216
+
217
217
  end
218
- #
218
+
219
219
  # rack entry point, page computation methods
220
- #
220
+
221
221
  class << self
222
- #
222
+
223
223
  def inherited sub
224
224
  sub.engine! ( engine || (self==Zorglub::Node ? UNDEFINED : nil ) )
225
225
  sub.layout! ( layout || (self==Zorglub::Node ? UNDEFINED : nil ) )
226
226
  sub.instance_variable_set :@cli_vals, {}
227
227
  @cli_vals.each do |s,v| sub.cli_val s, *v end
228
228
  end
229
- #
229
+
230
230
  def call env
231
231
  meth, *args = env['PATH_INFO'].sub(/^\/+/,'').split(/\//)
232
232
  meth ||= 'index'
@@ -235,14 +235,14 @@ module Zorglub
235
235
  return error_404 node, meth if not node.respond_to? meth
236
236
  node.realize!
237
237
  end
238
- #
238
+
239
239
  def partial env, meth, *args
240
240
  node = self.new env, meth.to_s, args, true
241
241
  return error_404 node, meth if not node.respond_to? meth
242
242
  node.feed! env[:no_hooks]
243
243
  node.content
244
244
  end
245
- #
245
+
246
246
  def error_404 node, meth
247
247
  $stderr << " !! #{node.class.name}::#{meth} not found\n" if app.opt :debug
248
248
  resp = node.response
@@ -251,11 +251,11 @@ module Zorglub
251
251
  resp.write "%s mapped at %p can't respond to : %p" % [ node.class.name, node.map, node.meth ]
252
252
  resp
253
253
  end
254
- #
254
+
255
255
  end
256
- #
256
+
257
257
  attr_reader :request, :response, :content, :mime, :state, :engine, :meth, :args
258
- #
258
+
259
259
  def initialize env, meth, args, partial=false
260
260
  @meth = meth
261
261
  @args = args
@@ -271,7 +271,7 @@ module Zorglub
271
271
  @cache_lifetime = self.class.cache_lifetime
272
272
  self.class.cli_vals.each do |s,v| cli_val s, *v end
273
273
  end
274
- #
274
+
275
275
  def realize!
276
276
  catch(:stop_realize) {
277
277
  feed!
@@ -281,7 +281,7 @@ module Zorglub
281
281
  response
282
282
  }
283
283
  end
284
- #
284
+
285
285
  def feed! no_hooks=false
286
286
  @state = :pre_cb
287
287
  self.class.call_before_hooks self unless no_hooks
@@ -298,7 +298,7 @@ module Zorglub
298
298
  @state = :finished
299
299
  return @content, @mime
300
300
  end
301
- #
301
+
302
302
  def static_page! path
303
303
  if File.exists?(path) and ( @cache_lifetime.nil? or @cache_lifetime==0 or ( (Time.now-File.stat(path).mtime) < @cache_lifetime ) )
304
304
  $stderr << " * use cache file : #{path}\n" if @debug
@@ -312,7 +312,7 @@ module Zorglub
312
312
  $stderr << " * cache file created : #{path}\n" if @debug
313
313
  end
314
314
  end
315
- #
315
+
316
316
  def compile_page!
317
317
  e, @ext = app.engine_proc_ext @engine, @ext
318
318
  v, l = view, layout
@@ -328,9 +328,7 @@ module Zorglub
328
328
  @content, mime = e.call l, self if e and l and File.exists? l
329
329
  @mime = mime if @mime.nil? and not mime.nil?
330
330
  end
331
- #
331
+
332
332
  end
333
- #
333
+
334
334
  end
335
- #
336
- # EOF