Capcode 0.4.0 → 0.5.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.
@@ -14,15 +14,29 @@ module Capcode
14
14
  class RouteError < ArgumentError #:nodoc:
15
15
  end
16
16
 
17
+ class RenderError < ArgumentError
18
+ end
19
+
17
20
  module Views; end
18
21
 
19
22
  # Helpers contains methods available in your controllers
20
23
  module Helpers
21
24
  # Render a view
22
- def render( v )
23
- self.send v.to_s
25
+ def render( h )
26
+ if h.class == Hash
27
+ t = (h.keys)[0]
28
+ v = h[t]
29
+ begin
30
+ self.send( "render_#{t.to_s}", v )
31
+ rescue => e
32
+ raise Capcode::RenderError, "Error rendering `#{t.to_s}' : #{e.message}", caller
33
+ end
34
+ else
35
+ return self.send(h.to_s)
36
+ end
24
37
  end
25
38
 
39
+
26
40
  # Help you to return a JSON response
27
41
  #
28
42
  # module Capcode
@@ -33,6 +47,7 @@ module Capcode
33
47
  # end
34
48
  # end
35
49
  def json( d )
50
+ warn( "json is deprecated, please use `render( :json => ... )'" )
36
51
  @response['Content-Type'] = 'application/json'
37
52
  d.to_json
38
53
  end
@@ -0,0 +1,21 @@
1
+ require 'erb'
2
+
3
+ module Capcode
4
+ module Helpers
5
+ @@__ERB_PATH__ = File.expand_path( "." )
6
+ def self.erb_path=( p )
7
+ @@__ERB_PATH__ = File.expand_path( p )
8
+ end
9
+
10
+ def render_erb( f )
11
+ f = f.to_s
12
+ if f.include? '..'
13
+ return [403, {}, '403 - Invalid path']
14
+ end
15
+
16
+ f = f + ".rhtml" if File.extname( f ) != ".rhtml"
17
+ file = File.join( @@__ERB_PATH__, f )
18
+ ERB.new(open(file).read).result(binding)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require "haml"
2
+
3
+ module Capcode
4
+ module Helpers
5
+ @@__HAML_PATH__ = File.expand_path( "." )
6
+ def self.haml_path=( p )
7
+ @@__HAML_PATH__ = File.expand_path( p )
8
+ end
9
+
10
+ def render_haml( f ) #:nodoc:
11
+ f = f.to_s
12
+ if f.include? '..'
13
+ return [403, {}, '403 - Invalid path']
14
+ end
15
+
16
+ f = f + ".haml" if File.extname( f ) != ".haml"
17
+ file = File.join( @@__HAML_PATH__, f )
18
+ Haml::Engine.new( open( file ).read ).to_html( self )
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ require 'json'
2
+
3
+ module Capcode
4
+ module Helpers
5
+ def render_json( f )
6
+ @response['Content-Type'] = 'application/json'
7
+ f.to_json
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ require "markaby"
2
+
3
+ module Capcode
4
+ class Markaby::Builder
5
+ include Views
6
+ end
7
+
8
+ module Helpers
9
+ def render_markaby( f ) #:nodoc:
10
+ f = f.to_s
11
+ mab = Markaby::Builder.new({}, self) { self.send(f) }
12
+ mab.to_s
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Capcode
2
- CAPCOD_VERION="0.4.0"
2
+ CAPCOD_VERION="0.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Capcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Gr\xC3\xA9goire Lejeune"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-30 00:00:00 +02:00
12
+ date: 2009-05-07 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -54,12 +54,18 @@ files:
54
54
  - lib/capcode/base/couchdb.rb
55
55
  - lib/capcode/base/dm.rb
56
56
  - lib/capcode/core_ext.rb
57
+ - lib/capcode/render/erb.rb
58
+ - lib/capcode/render/haml.rb
59
+ - lib/capcode/render/json.rb
60
+ - lib/capcode/render/markaby.rb
57
61
  - lib/capcode/version.rb
58
62
  - lib/capcode.rb
59
63
  - examples/blog-couchdb.rb
60
64
  - examples/blog-couchdb.yml
61
65
  - examples/blog-dm.rb
62
66
  - examples/blog-dm.yml
67
+ - examples/erb/m_hello.rhtml
68
+ - examples/haml/m_hello.haml
63
69
  - examples/index.html
64
70
  - examples/my_blog.db
65
71
  - examples/sample.rb
@@ -100,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
106
  requirements: []
101
107
 
102
108
  rubyforge_project: capcode
103
- rubygems_version: 1.3.2
109
+ rubygems_version: 1.3.3
104
110
  signing_key:
105
111
  specification_version: 3
106
112
  summary: Capcode is a web microframework