zorglub 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog CHANGED
@@ -11,7 +11,8 @@
11
11
  * update test application and write specs
12
12
 
13
13
  2012-01-05 Jérémy Zurcher <jeremy@asynk.ch>
14
- * haml engine
14
+ * haml, file engines
15
+ * view/layout extention overriding at methode level
15
16
  * optional engine cache
16
17
  * optional engine proc mime-type definition
17
18
  * optional static page generation/cache
@@ -50,19 +50,18 @@ module Zorglub
50
50
  #
51
51
  def register_engine name, ext, proc
52
52
  return unless name
53
- @engines[name]=[ ext, proc ]
53
+ if ext.nil? or ext.empty?
54
+ x = nil
55
+ else
56
+ x = (ext[0]=='.' ? (ext.length==1 ? nil : ext) : '.'+ext)
57
+ end
58
+ @engines[name]=[ proc, x ]
54
59
  end
55
60
  #
56
- def engine_ext engine
57
- e = @engines[engine]
58
- return '' if e.nil?
59
- x=e[0]
60
- ( x.nil? ? '' : '.'+x )
61
- end
62
- #
63
- def engine_proc engine
64
- e = @engines[engine]
65
- ( e.nil? ? nil : e[1] )
61
+ def engine_proc_ext engine, ext
62
+ p,x = @engines[engine]
63
+ return [nil, ''] if p.nil?
64
+ [ p, (x.nil? ? ext : x ) ]
66
65
  end
67
66
  #
68
67
  end
@@ -0,0 +1,20 @@
1
+ # -*- coding: UTF-8 -*-
2
+ #
3
+ require 'haml/util'
4
+ require 'haml/engine'
5
+ #
6
+ module Zorglub
7
+ module Engines
8
+ module File
9
+ def self.proc path,obj
10
+ content = ::File.open(path,'r'){|f| f.read }
11
+ ext = path.sub /.*\.(.+)$/,'\1'
12
+ return content, "text/#{ext}"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ #
18
+ Zorglub::Config.register_engine :file, nil, Zorglub::Engines::File.method(:proc)
19
+ #
20
+ # EOF
data/lib/zorglub/node.rb CHANGED
@@ -150,7 +150,8 @@ module Zorglub
150
150
  end
151
151
  #
152
152
  def compile!
153
- v, l, e = view, layout, Config.engine_proc(@options[:engine])
153
+ e, @options[:ext] = Config.engine_proc_ext @options[:engine], @options[:ext]
154
+ v, l = view, layout
154
155
  state (@options[:layout].nil? ? :partial : :view)
155
156
  @content, mime = e.call v, self if e and File.exists? v
156
157
  @mime = mime unless mime.nil?
@@ -183,7 +184,7 @@ module Zorglub
183
184
  def layout layout=nil
184
185
  @options[:layout] = layout unless layout.nil? or layout.empty?
185
186
  return '' if @options[:layout].nil?
186
- File.join(Config.layout_base_path, @options[:layout])+ Config.engine_ext(@options[:engine])
187
+ File.join(Config.layout_base_path, @options[:layout])+ext
187
188
  end
188
189
  #
189
190
  def no_layout
@@ -193,13 +194,21 @@ module Zorglub
193
194
  def static val=nil
194
195
  @options[:static] = val if (val==true or val==false)
195
196
  return nil if not @options[:static] or @options[:view].nil?
196
- File.join(Config.static_base_path, @options[:view])+Config.engine_ext(@options[:engine])
197
+ File.join(Config.static_base_path, @options[:view])+ext
197
198
  end
198
199
  #
199
200
  def view view=nil
200
201
  @options[:view] = view unless view.nil? or view.empty?
201
202
  return '' if @options[:view].nil?
202
- File.join(Config.view_base_path, @options[:view])+Config.engine_ext(@options[:engine])
203
+ File.join(Config.view_base_path, @options[:view])+ext
204
+ end
205
+ #
206
+ def ext ext=nil
207
+ if ext.nil? or ext.empty?
208
+ @options[:ext]||''
209
+ else
210
+ @options[:ext] = (ext[0]=='.' ? (ext.length==1 ? nil : ext) : '.'+ext)
211
+ end
203
212
  end
204
213
  #
205
214
  def inherited_var sym, *args
data/lib/zorglub.rb CHANGED
@@ -7,7 +7,7 @@ require './lib/zorglub/app'
7
7
  #
8
8
  module Zorglub
9
9
  #
10
- VERSION = '0.0.3'
10
+ VERSION = '0.0.4'
11
11
  #
12
12
  end
13
13
  #
@@ -0,0 +1 @@
1
+ plain file
@@ -0,0 +1 @@
1
+ <xml>file</xml>
data/spec/node_spec.rb CHANGED
@@ -152,16 +152,16 @@ describe Zorglub do
152
152
  end
153
153
  #
154
154
  it "static pages should be generated" do
155
- r = Node0.my_call '/do_static'
155
+ r = Node6.my_call '/do_static'
156
156
  r.body[0].should == 'VAL 1'
157
157
  r.header['Content-type'].should == 'text/static'
158
- r = Node0.my_call '/do_static'
158
+ r = Node6.my_call '/do_static'
159
159
  r.body[0].should == 'VAL 1'
160
160
  r.header['Content-type'].should == 'text/static'
161
- r = Node0.my_call '/do_static'
161
+ r = Node6.my_call '/do_static'
162
162
  r.body[0].should == 'VAL 1'
163
163
  r.header['Content-type'].should == 'text/static'
164
- r = Node0.my_call '/no_static'
164
+ r = Node6.my_call '/no_static'
165
165
  r.body[0].should == 'VAL 4'
166
166
  r.header['Content-type'].should == 'text/static'
167
167
  end
@@ -192,6 +192,13 @@ describe Zorglub do
192
192
  vars.should == ['js0','js1']
193
193
  vars[2].should be_nil
194
194
  end
195
+ #
196
+ it "ext definition and file engine should work" do
197
+ r = Node0.my_call '/xml_file'
198
+ r.body[0]='<xml>file</xml>'
199
+ r = Node0.my_call '/plain_file'
200
+ r.body[0]='plain text'
201
+ end
195
202
  end
196
203
  #
197
204
  end
data/spec/spec_helper.rb CHANGED
@@ -11,6 +11,7 @@ end
11
11
  require 'yaml'
12
12
  #
13
13
  require 'zorglub'
14
+ require 'zorglub/engines/file'
14
15
  #
15
16
  HASH_PROC = Proc.new { |path,obj| {:path=>path,:layout=>obj.layout,:view=>obj.view,:args=>obj.args,:map=>obj.map}.to_yaml }
16
17
  STATIC_PROC = Proc.new { |path,obj| ["VAL #{obj.value}",'text/static'] }
@@ -45,10 +46,6 @@ class Temp < Zorglub::Node
45
46
  end
46
47
  #
47
48
  class Node0 < Zorglub::Node
48
- @static_cpt=0
49
- class << self
50
- attr_accessor :static_cpt
51
- end
52
49
  # default
53
50
  def index
54
51
  html
@@ -72,20 +69,15 @@ class Node0 < Zorglub::Node
72
69
  def do_redirect
73
70
  redirect r(:do_partial,1,2,3)
74
71
  end
75
- attr_reader :value
76
- def no_static
77
- static false
78
- engine 'static'
79
- view r('do_render')
80
- Node0.static_cpt+=1
81
- @value = Node0.static_cpt
72
+ def xml_file
73
+ no_layout
74
+ engine :file
75
+ ext 'xml'
82
76
  end
83
- def do_static
84
- static true
85
- engine 'static'
86
- view r('do_render')
87
- Node0.static_cpt+=1
88
- @value = Node0.static_cpt
77
+ def plain_file
78
+ no_layout
79
+ engine :file
80
+ ext 'txt'
89
81
  end
90
82
  end
91
83
  #
@@ -144,12 +136,35 @@ class Node5 < Node4
144
136
  end
145
137
  end
146
138
  #
139
+ class Node6 < Zorglub::Node
140
+ @static_cpt=0
141
+ class << self
142
+ attr_accessor :static_cpt
143
+ end
144
+ attr_reader :value
145
+ static true
146
+ def no_static
147
+ static false
148
+ engine 'static'
149
+ view Node0.r('do_render')
150
+ Node6.static_cpt+=1
151
+ @value = Node6.static_cpt
152
+ end
153
+ def do_static
154
+ engine 'static'
155
+ view Node0.r('do_render')
156
+ Node6.static_cpt+=1
157
+ @value = Node6.static_cpt
158
+ end
159
+ end
160
+ #
147
161
  APP = Zorglub::App.new do
148
162
  map '/node0', Node0
149
163
  map '/node1', Node1
150
164
  map '/node3', Node3
151
165
  map '/node4', Node4
152
166
  map '/node5', Node5
167
+ map '/node6', Node6
153
168
  end
154
169
  class Node2
155
170
  map APP, '/node2'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zorglub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &23307900 !ruby/object:Gem::Requirement
16
+ requirement: &20000040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.4.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *23307900
24
+ version_requirements: *20000040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &23323560 !ruby/object:Gem::Requirement
27
+ requirement: &19999520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.8.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *23323560
35
+ version_requirements: *19999520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &23322980 !ruby/object:Gem::Requirement
38
+ requirement: &19998860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.8.7
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *23322980
46
+ version_requirements: *19998860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bones
49
- requirement: &23322340 !ruby/object:Gem::Requirement
49
+ requirement: &19998120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,13 +54,14 @@ dependencies:
54
54
  version: 3.7.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *23322340
57
+ version_requirements: *19998120
58
58
  description: a nano web application framework based on rack[http://rack.rubyforge.org/]
59
59
  email: jeremy@asynk.ch
60
60
  executables: []
61
61
  extensions: []
62
62
  extra_rdoc_files:
63
63
  - README.rdoc
64
+ - spec/data/view/node0/plain_file.txt
64
65
  files:
65
66
  - Changelog
66
67
  - MIT-LICENSE
@@ -69,6 +70,7 @@ files:
69
70
  - lib/zorglub.rb
70
71
  - lib/zorglub/app.rb
71
72
  - lib/zorglub/config.rb
73
+ - lib/zorglub/engines/file.rb
72
74
  - lib/zorglub/engines/haml.rb
73
75
  - lib/zorglub/node.rb
74
76
  - lib/zorglub/rack_session.rb
@@ -78,6 +80,8 @@ files:
78
80
  - spec/data/layout/main.spec
79
81
  - spec/data/view/node0/do_partial
80
82
  - spec/data/view/node0/do_render
83
+ - spec/data/view/node0/plain_file.txt
84
+ - spec/data/view/node0/xml_file.xml
81
85
  - spec/node_spec.rb
82
86
  - spec/spec_helper.rb
83
87
  - tasks/ann.rake