Capcode 0.8.1 → 0.8.2
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/README +8 -1
- data/doc/rdoc/classes/Capcode.html +317 -317
- data/doc/rdoc/classes/Capcode/Helpers.html +22 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +21 -2
- data/doc/rdoc/files/lib/capcode_rb.html +1 -1
- data/examples/rss.rb +48 -0
- data/examples/upload.rb +39 -0
- data/lib/capcode.rb +10 -2
- data/lib/capcode/render/erb.rb +4 -0
- data/lib/capcode/render/haml.rb +5 -1
- data/lib/capcode/render/sass.rb +4 -0
- data/lib/capcode/render/static.rb +2 -2
- data/lib/capcode/render/xml.rb +121 -0
- data/lib/capcode/version.rb +1 -1
- metadata +11 -3
@@ -310,6 +310,28 @@ If you want to use a specific layout, you can specify it with option
|
|
310
310
|
</pre>
|
311
311
|
</div>
|
312
312
|
</div>
|
313
|
+
<h4 class="ruled">Public Instance method:
|
314
|
+
<strong><a name="M000014">static()</a></strong> <a href="#M000014"><img src="../../permalink.gif" border="0" title="Permalink to Public Instance method: static" /></a></h4>
|
315
|
+
|
316
|
+
<p>
|
317
|
+
Return information about the <a href="Helpers.html#M000014">static</a>
|
318
|
+
directory
|
319
|
+
</p>
|
320
|
+
|
321
|
+
<div class="sourcecode">
|
322
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000014_source')" id="l_M000014_source">show source</a> ]</p>
|
323
|
+
<div id="M000014_source" class="dyn-source">
|
324
|
+
<pre>
|
325
|
+
<span class="ruby-comment cmt"># File lib/capcode.rb, line 149</span>
|
326
|
+
149: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">static</span>
|
327
|
+
150: {
|
328
|
+
151: <span class="ruby-identifier">:uri</span> =<span class="ruby-operator">></span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span>,
|
329
|
+
152: <span class="ruby-identifier">:path</span> =<span class="ruby-operator">></span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>( <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">"."</span>, <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span> ) )
|
330
|
+
153: }
|
331
|
+
154: <span class="ruby-keyword kw">end</span>
|
332
|
+
</pre>
|
333
|
+
</div>
|
334
|
+
</div>
|
313
335
|
|
314
336
|
</div>
|
315
337
|
</div>
|
data/doc/rdoc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Fri, 17 Jul 2009 18:23:07 +0200
|
data/doc/rdoc/files/README.html
CHANGED
@@ -81,7 +81,7 @@ end</strong>
|
|
81
81
|
<div id="README" class="page_shade">
|
82
82
|
<div class="page">
|
83
83
|
<div class="header">
|
84
|
-
<div class="path">README /
|
84
|
+
<div class="path">README / Fri Jul 17 18:22:38 +0200 2009</div>
|
85
85
|
</div>
|
86
86
|
|
87
87
|
<h1><a href="../classes/Capcode.html">Capcode</a></h1>
|
@@ -98,6 +98,25 @@ Copyright (C) 2009 Gregoire Lejeune
|
|
98
98
|
<a href="../classes/Capcode.html">Capcode</a> is a web microframework
|
99
99
|
</p>
|
100
100
|
<h2>FEATURES/PROBLEMS:</h2>
|
101
|
+
<h3>0.8.2</h3>
|
102
|
+
<ul>
|
103
|
+
<li>Add XML renderer (see rss example)
|
104
|
+
|
105
|
+
</li>
|
106
|
+
<li>Major bug corrections
|
107
|
+
|
108
|
+
</li>
|
109
|
+
<li>Add Helpers.static
|
110
|
+
|
111
|
+
</li>
|
112
|
+
<li>New example : upload.rb
|
113
|
+
|
114
|
+
</li>
|
115
|
+
<li>The database’ configuration file is no more relative to the root
|
116
|
+
directory but to the main file
|
117
|
+
|
118
|
+
</li>
|
119
|
+
</ul>
|
101
120
|
<h3>0.8.1</h3>
|
102
121
|
<ul>
|
103
122
|
<li>Sorry for 0.8.0 !!
|
@@ -196,7 +215,7 @@ href="../classes/Capcode.html#M000008">Capcode.run</a>. This option allow
|
|
196
215
|
you to specify the working directory
|
197
216
|
|
198
217
|
</li>
|
199
|
-
<li>
|
218
|
+
<li>If ’/’ route is not defined but /index.html exist, display
|
200
219
|
index
|
201
220
|
|
202
221
|
</li>
|
@@ -81,7 +81,7 @@ end</strong>
|
|
81
81
|
<div id="lib/capcode.rb" class="page_shade">
|
82
82
|
<div class="page">
|
83
83
|
<div class="header">
|
84
|
-
<div class="path">lib/capcode.rb /
|
84
|
+
<div class="path">lib/capcode.rb / Fri Jul 17 12:19:44 +0200 2009</div>
|
85
85
|
</div>
|
86
86
|
|
87
87
|
<pre>
|
data/examples/rss.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
$:.unshift( "../lib" )
|
2
|
+
require 'rubygems'
|
3
|
+
require 'capcode'
|
4
|
+
require 'capcode/render/xml'
|
5
|
+
|
6
|
+
## !! THIS IS JUSTE FOR THIS EXAMPLE !!
|
7
|
+
class Hash
|
8
|
+
def method_missing( id, *a )
|
9
|
+
self[id.id2name.to_sym]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Capcode
|
14
|
+
class RSS < Route "/rss"
|
15
|
+
def get
|
16
|
+
@posts = [
|
17
|
+
{ :title => "Welcome", :body => "This is a RSS example for Capcode!", :iid => 1, :created_at => Time.now() },
|
18
|
+
{ :title => "Just For Fun", :body => "See more examples on the Capcode Website...", :iid => 2, :created_at => Time.now() },
|
19
|
+
]
|
20
|
+
render :xml => :rss_view
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Capcode::Views
|
26
|
+
def rss_view
|
27
|
+
xml? :version => '1.0'
|
28
|
+
rss :version => "2.0" do
|
29
|
+
channel do
|
30
|
+
title "Capcode News"
|
31
|
+
description "Capcode Framework."
|
32
|
+
link "http://example.com/"
|
33
|
+
|
34
|
+
@posts.each do |post|
|
35
|
+
item do
|
36
|
+
title post.title
|
37
|
+
link "http://example.com/posts/#{post.iid}"
|
38
|
+
description post.body
|
39
|
+
pubDate Time.parse(post.created_at.to_s).rfc822()
|
40
|
+
guid "http://example.com/posts/#{post.iid}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Capcode.run()
|
data/examples/upload.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'capcode'
|
3
|
+
require 'capcode/render/markaby'
|
4
|
+
require 'capcode/render/static'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module Capcode
|
8
|
+
class Index < Route '/'
|
9
|
+
def get
|
10
|
+
render :markaby => :index
|
11
|
+
end
|
12
|
+
|
13
|
+
def post
|
14
|
+
FileUtils.cp(
|
15
|
+
params["upfile"][:tempfile].path,
|
16
|
+
File.join( static[:path], params["upfile"][:filename] )
|
17
|
+
)
|
18
|
+
render :static => params["upfile"][:filename]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Capcode::Views
|
24
|
+
def index
|
25
|
+
html do
|
26
|
+
body do
|
27
|
+
h1 "Upload..."
|
28
|
+
form :method => "POST", :enctype => 'multipart/form-data' do
|
29
|
+
input :type => "file", :name => "upfile"; br
|
30
|
+
input :type => "submit", :value => "Upload"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
FileUtils.mkdir_p 'data'
|
38
|
+
|
39
|
+
Capcode.run( :static => "data" )
|
data/lib/capcode.rb
CHANGED
@@ -144,6 +144,14 @@ module Capcode
|
|
144
144
|
yield
|
145
145
|
end
|
146
146
|
end
|
147
|
+
|
148
|
+
# Return information about the static directory
|
149
|
+
def static
|
150
|
+
{
|
151
|
+
:uri => Capcode.static,
|
152
|
+
:path => File.expand_path( File.join(".", Capcode.static ) )
|
153
|
+
}
|
154
|
+
end
|
147
155
|
end
|
148
156
|
|
149
157
|
include Rack
|
@@ -356,7 +364,7 @@ module Capcode
|
|
356
364
|
:session => args[:session]||{},
|
357
365
|
:pid => args[:pid]||"#{$0}.pid",
|
358
366
|
:daemonize => args[:daemonize]||false,
|
359
|
-
:db_config => args[:db_config]||"database.yml",
|
367
|
+
:db_config => File.expand_path(args[:db_config]||"database.yml"),
|
360
368
|
:static => args[:static]||nil,
|
361
369
|
:root => args[:root]||File.expand_path(File.dirname($0)),
|
362
370
|
|
@@ -442,7 +450,7 @@ module Capcode
|
|
442
450
|
end
|
443
451
|
|
444
452
|
# Set Static directory
|
445
|
-
@@__STATIC_DIR =
|
453
|
+
@@__STATIC_DIR = (conf[:static][0].chr == "/")?conf[:static]:"/"+conf[:static] unless conf[:static].nil?
|
446
454
|
|
447
455
|
# Initialize Rack App
|
448
456
|
puts "** Map routes." if __VERBOSE
|
data/lib/capcode/render/erb.rb
CHANGED
data/lib/capcode/render/haml.rb
CHANGED
@@ -2,12 +2,16 @@ require "haml"
|
|
2
2
|
|
3
3
|
module Capcode
|
4
4
|
module Helpers
|
5
|
-
@@__HAML_PATH__ =
|
5
|
+
@@__HAML_PATH__ = nil
|
6
6
|
def self.haml_path=( p )
|
7
7
|
@@__HAML_PATH__ = p
|
8
8
|
end
|
9
9
|
|
10
10
|
def render_haml( f, opts ) #:nodoc:
|
11
|
+
if @@__HAML_PATH__.nil?
|
12
|
+
@@__HAML_PATH__ = "." + (Capcode.static.nil? == false)?Capcode.static:''
|
13
|
+
end
|
14
|
+
|
11
15
|
f = f.to_s
|
12
16
|
if f.include? '..'
|
13
17
|
return [403, {}, '403 - Invalid path']
|
data/lib/capcode/render/sass.rb
CHANGED
@@ -0,0 +1,121 @@
|
|
1
|
+
# To use the XML renderer, you first need to require 'capcode/render/xml'
|
2
|
+
|
3
|
+
class XML #:nodoc:
|
4
|
+
class TagError < ArgumentError #:nodoc:
|
5
|
+
end
|
6
|
+
|
7
|
+
class DSL #:nodoc:
|
8
|
+
def initialize( helper, &block )
|
9
|
+
@__x_d_level = 0
|
10
|
+
@__x_d_helper = helper
|
11
|
+
@__x_d_helper.instance_variables.each do |ivar|
|
12
|
+
self.instance_variable_set(ivar, @__x_d_helper.instance_variable_get(ivar))
|
13
|
+
end
|
14
|
+
@__x_d_builder = ""
|
15
|
+
instance_eval(&block) if block
|
16
|
+
end
|
17
|
+
|
18
|
+
def __
|
19
|
+
" "*@__x_d_level
|
20
|
+
end
|
21
|
+
|
22
|
+
def _(x)
|
23
|
+
@__x_d_builder << __ << x << "\n"
|
24
|
+
end
|
25
|
+
|
26
|
+
def tag!(sym, *args, &block)
|
27
|
+
tag = {
|
28
|
+
:bra => "<",
|
29
|
+
:ket => " />",
|
30
|
+
:name => sym.id2name,
|
31
|
+
:close => block_given?(),
|
32
|
+
:attrs => "",
|
33
|
+
:value => ""
|
34
|
+
}
|
35
|
+
|
36
|
+
args.each do |a|
|
37
|
+
if a.class == Hash
|
38
|
+
a.each do |k, v|
|
39
|
+
tag[:attrs] << " #{k.to_s}='#{v}'"
|
40
|
+
end
|
41
|
+
elsif a.class == String
|
42
|
+
tag[:close] = true
|
43
|
+
tag[:value] << a << "\n"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
if tag[:name].match( /\?$/ )
|
48
|
+
tag[:name].gsub!( /\?$/, "" )
|
49
|
+
tag[:bra] = "<?"
|
50
|
+
tag[:ket] = "?>"
|
51
|
+
|
52
|
+
if tag[:close] == true
|
53
|
+
raise XML::TagError, "Malformated traitment tag!"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
@__x_d_builder << __ << tag[:bra] << "#{tag[:name]}#{tag[:attrs]}"
|
58
|
+
if tag[:close]
|
59
|
+
@__x_d_builder << ">\n"
|
60
|
+
else
|
61
|
+
@__x_d_builder << tag[:ket] << "\n"
|
62
|
+
end
|
63
|
+
|
64
|
+
@__x_d_level += 2
|
65
|
+
|
66
|
+
@__x_d_builder << __ << tag[:value] if tag[:value].size > 0
|
67
|
+
instance_eval(&block) if block
|
68
|
+
|
69
|
+
@__x_d_level -= 2
|
70
|
+
|
71
|
+
if tag[:close]
|
72
|
+
@__x_d_builder << __ << "</#{tag[:name]}>\n"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def cdata( x = "", &block )
|
77
|
+
@__x_d_builder << __ << "<![CDATA["
|
78
|
+
if x.match( /\n/ ) or block
|
79
|
+
@__x_d_level += 2
|
80
|
+
@__x_d_builder << "\n" << __ << x << "\n" if x.size > 0
|
81
|
+
instance_eval(&block) if block
|
82
|
+
@__x_d_level -= 2
|
83
|
+
@__x_d_builder << __
|
84
|
+
else
|
85
|
+
@__x_d_builder << x if x.size > 0
|
86
|
+
end
|
87
|
+
@__x_d_builder << "]]>\n"
|
88
|
+
end
|
89
|
+
|
90
|
+
def to_s
|
91
|
+
@__x_d_builder
|
92
|
+
end
|
93
|
+
|
94
|
+
def method_missing(sym, *args, &block)
|
95
|
+
if @__x_d_helper.respond_to?(sym, true)
|
96
|
+
@__x_d_helper.send(sym, *args, &block)
|
97
|
+
elsif instance_variables.include?(ivar = "@__x_d_#{sym}")
|
98
|
+
instance_variable_get(ivar)
|
99
|
+
elsif !@__x_d_helper.nil? && @__x_d_helper.instance_variables.include?(ivar)
|
100
|
+
@__x_d_helper.instance_variable_get(ivar)
|
101
|
+
else
|
102
|
+
tag!(sym, *args, &block)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
module Capcode
|
109
|
+
class XML::DSL #:nodoc:
|
110
|
+
include Views
|
111
|
+
end
|
112
|
+
|
113
|
+
module Helpers
|
114
|
+
def render_xml( f, _ ) #:nodoc:
|
115
|
+
r = XML::DSL.new( self ) do
|
116
|
+
self.send(f.to_s)
|
117
|
+
end
|
118
|
+
r.to_s
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
data/lib/capcode/version.rb
CHANGED
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.8.
|
4
|
+
version: 0.8.2
|
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-07-
|
12
|
+
date: 2009-07-17 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- lib/capcode/render/sass.rb
|
108
108
|
- lib/capcode/render/static.rb
|
109
109
|
- lib/capcode/render/text.rb
|
110
|
+
- lib/capcode/render/xml.rb
|
110
111
|
- lib/capcode/version.rb
|
111
112
|
- lib/capcode.rb
|
112
113
|
- examples/blog-couchdb.rb
|
@@ -122,10 +123,12 @@ files:
|
|
122
123
|
- examples/haml/layout.haml
|
123
124
|
- examples/haml/m_hello.haml
|
124
125
|
- examples/my_blog.db
|
126
|
+
- examples/rss.rb
|
125
127
|
- examples/sample.rb
|
126
128
|
- examples/session.rb
|
127
129
|
- examples/static/index.html
|
128
130
|
- examples/test/index.html
|
131
|
+
- examples/upload.rb
|
129
132
|
has_rdoc: true
|
130
133
|
homepage: http://algorithmique.net
|
131
134
|
licenses: []
|
@@ -134,9 +137,14 @@ post_install_message: |+
|
|
134
137
|
|
135
138
|
If you want to use Markaby renderer, you must install Markaby.
|
136
139
|
If you want to use HAML renderer, you must install haml.
|
140
|
+
If you want to use SASS renderer, you must install sass.
|
141
|
+
If you want to use JSON renderer, you must install json
|
137
142
|
|
138
143
|
If For more information about Capcode, see
|
139
|
-
http://capcode.rubyforge.org
|
144
|
+
http://capcode.rubyforge.org
|
145
|
+
|
146
|
+
You can also read the Capcode book (fr) at
|
147
|
+
http://algorithmique.net/capcode
|
140
148
|
|
141
149
|
rdoc_options:
|
142
150
|
- --quiet
|