ramaze 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +26 -6
- data/bin/ramaze +8 -1
- data/doc/AUTHORS +13 -11
- data/doc/CHANGELOG +472 -13
- data/doc/LEGAL +22 -0
- data/doc/README +1 -4
- data/doc/TODO +7 -2
- data/doc/changes.txt +472 -13
- data/doc/changes.xml +472 -13
- data/doc/meta/announcement.txt +21 -23
- data/doc/readme_chunks/appendix.txt +0 -3
- data/doc/readme_chunks/features.txt +1 -1
- data/examples/auth/auth.rb +49 -0
- data/examples/auth/template/layout.haml +20 -0
- data/examples/auth/template/login.haml +16 -0
- data/examples/blog/spec/blog.rb +1 -0
- data/examples/caching.rb +5 -6
- data/examples/css.rb +37 -0
- data/examples/layout.rb +3 -17
- data/examples/simple_auth.rb +23 -0
- data/examples/sourceview/public/images/file.gif +0 -0
- data/examples/sourceview/public/images/folder.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/sourceview/public/images/tv-item.gif +0 -0
- data/examples/sourceview/public/jquery.js +11 -0
- data/examples/sourceview/public/jquery.treeview.css +47 -0
- data/examples/sourceview/public/jquery.treeview.js +223 -0
- data/examples/sourceview/public/sourceview.js +16 -0
- data/examples/sourceview/sourceview.rb +74 -0
- data/examples/sourceview/template/index.haml +43 -0
- data/examples/templates/template/external.nag +28 -0
- data/examples/templates/template/external.xsl +57 -0
- data/examples/templates/template_amrita2.rb +2 -4
- data/examples/templates/template_erubis.rb +1 -1
- data/examples/templates/template_haml.rb +1 -1
- data/examples/templates/template_liquid.rb +2 -4
- data/examples/templates/template_markaby.rb +2 -4
- data/examples/templates/template_nagoro.rb +53 -0
- data/examples/templates/template_remarkably.rb +2 -4
- data/examples/templates/template_xslt.rb +52 -0
- data/examples/whywiki/spec/whywiki.rb +63 -0
- data/examples/whywiki/start.rb +11 -13
- data/examples/whywiki/template/edit.xhtml +3 -3
- data/examples/whywiki/template/show.xhtml +5 -8
- data/examples/wikore/spec/wikore.rb +115 -0
- data/examples/wikore/src/controller.rb +81 -0
- data/examples/wikore/src/model.rb +51 -0
- data/examples/wikore/start.rb +6 -0
- data/examples/wikore/template/index.xhtml +8 -0
- data/examples/wiktacular/spec/wiktacular.rb +1 -0
- data/examples/wiktacular/src/controller.rb +1 -1
- data/lib/ramaze.rb +6 -3
- data/lib/ramaze/action.rb +2 -13
- data/lib/ramaze/action/render.rb +36 -18
- data/lib/ramaze/adapter.rb +1 -1
- data/lib/ramaze/adapter/cgi.rb +0 -3
- data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
- data/lib/ramaze/adapter/mongrel.rb +4 -13
- data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
- data/lib/ramaze/cache.rb +12 -7
- data/lib/ramaze/contrib.rb +22 -0
- data/lib/ramaze/contrib/auto_params.rb +128 -0
- data/lib/ramaze/contrib/auto_params/get_args.rb +56 -0
- data/lib/ramaze/contrib/gzip_filter.rb +57 -0
- data/lib/ramaze/contrib/route.rb +40 -0
- data/lib/ramaze/contrib/sequel/fill.rb +12 -0
- data/lib/ramaze/controller.rb +17 -6
- data/lib/ramaze/controller/resolve.rb +51 -14
- data/lib/ramaze/dispatcher.rb +15 -13
- data/lib/ramaze/dispatcher/action.rb +4 -3
- data/lib/ramaze/dispatcher/directory.rb +3 -3
- data/lib/ramaze/dispatcher/error.rb +1 -1
- data/lib/ramaze/dispatcher/file.rb +17 -6
- data/lib/ramaze/error.rb +3 -0
- data/lib/ramaze/gestalt.rb +28 -8
- data/lib/ramaze/global.rb +26 -6
- data/lib/ramaze/global/globalstruct.rb +31 -6
- data/lib/ramaze/helper.rb +2 -1
- data/lib/ramaze/helper/aspect.rb +2 -2
- data/lib/ramaze/helper/auth.rb +6 -9
- data/lib/ramaze/helper/cache.rb +89 -9
- data/lib/ramaze/helper/cgi.rb +2 -2
- data/lib/ramaze/helper/formatting.rb +44 -0
- data/lib/ramaze/helper/link.rb +7 -5
- data/lib/ramaze/helper/partial.rb +6 -4
- data/lib/ramaze/helper/redirect.rb +24 -9
- data/lib/ramaze/helper/stack.rb +6 -1
- data/lib/ramaze/inform/growl.rb +1 -1
- data/lib/ramaze/inform/informer.rb +2 -1
- data/lib/ramaze/inform/informing.rb +6 -0
- data/lib/ramaze/inform/syslog.rb +1 -0
- data/lib/ramaze/snippets/array/put_within.rb +24 -0
- data/lib/ramaze/snippets/dictionary.rb +499 -0
- data/lib/ramaze/snippets/numeric/filesize_format.rb +19 -0
- data/lib/ramaze/snippets/ordered_set.rb +31 -0
- data/lib/ramaze/snippets/string/DIVIDE.rb +1 -1
- data/lib/ramaze/snippets/string/snake_case.rb +1 -1
- data/lib/ramaze/snippets/struct/values_at.rb +5 -1
- data/lib/ramaze/snippets/thread/into.rb +25 -0
- data/lib/ramaze/sourcereload.rb +39 -19
- data/lib/ramaze/spec/helper.rb +4 -1
- data/lib/ramaze/spec/helper/{context.rb → browser.rb} +3 -0
- data/lib/ramaze/spec/helper/layout.rb +3 -0
- data/lib/ramaze/spec/helper/minimal.rb +3 -0
- data/lib/ramaze/spec/helper/mock_http.rb +8 -5
- data/lib/ramaze/spec/helper/requester.rb +4 -1
- data/lib/ramaze/spec/helper/wrap.rb +15 -7
- data/lib/ramaze/template.rb +5 -1
- data/lib/ramaze/template/ezamar/engine.rb +2 -3
- data/lib/ramaze/template/ezamar/morpher.rb +26 -45
- data/lib/ramaze/template/nagoro.rb +53 -0
- data/lib/ramaze/template/none.rb +14 -0
- data/lib/ramaze/template/xslt.rb +96 -0
- data/lib/ramaze/tool.rb +0 -1
- data/lib/ramaze/tool/localize.rb +7 -2
- data/lib/ramaze/trinity/request.rb +1 -0
- data/lib/ramaze/trinity/session.rb +3 -3
- data/lib/ramaze/version.rb +2 -2
- data/rake_tasks/conf.rake +1 -2
- data/rake_tasks/{maintaince.rake → maintenance.rake} +25 -17
- data/spec/contrib/auto_params.rb +97 -0
- data/spec/contrib/route.rb +60 -0
- data/spec/contrib/sequel/fill.rb +46 -0
- data/spec/examples/caching.rb +1 -2
- data/spec/examples/css.rb +12 -0
- data/spec/examples/element.rb +0 -1
- data/spec/examples/hello.rb +0 -1
- data/spec/examples/simple.rb +0 -1
- data/spec/helper.rb +3 -2
- data/spec/ramaze/action/cache.rb +24 -7
- data/spec/ramaze/action/layout.rb +19 -11
- data/spec/ramaze/action/template/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/controller.rb +11 -0
- data/spec/ramaze/controller/template_resolving.rb +28 -27
- data/spec/ramaze/dispatcher.rb +32 -0
- data/spec/ramaze/dispatcher/directory.rb +2 -1
- data/spec/ramaze/element.rb +1 -1
- data/spec/ramaze/gestalt.rb +28 -0
- data/spec/ramaze/helper/aspect.rb +14 -3
- data/spec/ramaze/helper/cache.rb +78 -13
- data/spec/ramaze/helper/formatting.rb +20 -0
- data/spec/ramaze/helper/link.rb +2 -0
- data/spec/ramaze/helper/partial.rb +12 -1
- data/spec/ramaze/helper/redirect.rb +44 -8
- data/spec/ramaze/helper/stack.rb +3 -3
- data/spec/ramaze/helper/template/loop.xhtml +3 -0
- data/spec/ramaze/helper/template/num.xhtml +1 -0
- data/spec/ramaze/helper/template/recursive.xhtml +8 -0
- data/spec/ramaze/morpher.rb +25 -6
- data/spec/ramaze/params.rb +6 -2
- data/spec/ramaze/request.rb +5 -2
- data/spec/ramaze/session.rb +19 -0
- data/spec/ramaze/template.rb +2 -2
- data/spec/ramaze/template/amrita2.rb +2 -2
- data/spec/ramaze/template/erubis.rb +2 -2
- data/spec/ramaze/template/ezamar.rb +6 -3
- data/spec/ramaze/template/haml.rb +3 -3
- data/spec/ramaze/template/liquid.rb +1 -1
- data/spec/ramaze/template/markaby.rb +1 -1
- data/spec/ramaze/template/nagoro.rb +65 -0
- data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
- data/spec/ramaze/template/nagoro/combined.nag +1 -0
- data/spec/ramaze/template/nagoro/file_only.nag +1 -0
- data/spec/ramaze/template/nagoro/index.nag +1 -0
- data/spec/ramaze/template/nagoro/nested.nag +1 -0
- data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
- data/spec/ramaze/template/nagoro/sum.nag +1 -0
- data/spec/ramaze/template/remarkably.rb +1 -1
- data/spec/ramaze/template/sass.rb +1 -1
- data/spec/ramaze/template/xslt.rb +93 -0
- data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
- data/spec/ramaze/template/xslt/index.xsl +14 -0
- data/spec/ramaze/template/xslt/products.xsl +32 -0
- data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
- data/spec/snippets/array/put_within.rb +32 -0
- data/spec/snippets/numeric/filesize_format.rb +12 -0
- data/spec/snippets/ordered_set.rb +56 -0
- data/spec/snippets/ramaze/caller_lines.rb +6 -3
- data/spec/snippets/string/snake_case.rb +3 -0
- metadata +118 -22
- data/doc/README.html +0 -737
- data/examples/fcgi.rb +0 -13
- data/lib/ramaze/snippets/numeric/human_readable_filesize_format.rb +0 -33
- data/lib/ramaze/tool/tidy.rb +0 -104
- data/spec/ramaze/controller/template/edit.xhtml +0 -1
- data/spec/ramaze/controller/template/edit/content.xhtml +0 -1
- data/spec/ramaze/tidy.rb +0 -12
- data/spec/snippets/numeric/human_readable_filesize_format.rb +0 -11
@@ -0,0 +1,16 @@
|
|
1
|
+
$(document).ready(function(){
|
2
|
+
$('ul.filetree').treeview({
|
3
|
+
persist: 'location',
|
4
|
+
animated: 'fast',
|
5
|
+
unique: true,
|
6
|
+
collapsed: true
|
7
|
+
});
|
8
|
+
|
9
|
+
$("span.file").click(function(){
|
10
|
+
$('a.selected').removeClass('selected');
|
11
|
+
$('#file_contents').load('/source', { file: $(this).attr('name') });
|
12
|
+
$('a',this).eq(0).addClass('selected');
|
13
|
+
});
|
14
|
+
|
15
|
+
$('a.selected').parent('span.file').click();
|
16
|
+
});
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'remarkably/engines/html'
|
3
|
+
require 'coderay'
|
4
|
+
require 'ramaze'
|
5
|
+
|
6
|
+
# where is the source
|
7
|
+
RAMAZE_SRC = File.expand_path(Ramaze::BASEDIR/'..')
|
8
|
+
|
9
|
+
class MainController < Ramaze::Controller
|
10
|
+
|
11
|
+
include Remarkably::Common
|
12
|
+
helper :partial, :inform, :cache
|
13
|
+
|
14
|
+
cache :filetree
|
15
|
+
engine :None
|
16
|
+
|
17
|
+
def source
|
18
|
+
return if request['file'].nil? or request['file'] =~ /\.{2}/
|
19
|
+
|
20
|
+
file = RAMAZE_SRC + request['file']
|
21
|
+
if FileTest.file? file
|
22
|
+
inform :info, "Showing source for #{file}"
|
23
|
+
CodeRay.scan_file(file).html(:line_numbers => :inline)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def filetree
|
28
|
+
ul :class => 'filetree treeview' do
|
29
|
+
Dir.chdir(RAMAZE_SRC) do
|
30
|
+
Dir['{benchmarks,doc,examples,lib,spec}'].collect do |d|
|
31
|
+
dir_listing d
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
define_method('coderay.css') do
|
38
|
+
response['Content-Type'] = 'text/css'
|
39
|
+
value_cache[:coderay] ||= CodeRay::Encoders[:html]::CSS.new.stylesheet
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def dir_listing dir
|
45
|
+
li do
|
46
|
+
span dir, :class => 'folder'
|
47
|
+
Dir.chdir(dir) do
|
48
|
+
if Dir['*'].any?
|
49
|
+
ul do
|
50
|
+
a '', :href => "##{File.expand_path('.').sub(RAMAZE_SRC,'')}"
|
51
|
+
Dir['*'].each do |d|
|
52
|
+
if FileTest.directory? d
|
53
|
+
dir_listing d
|
54
|
+
else
|
55
|
+
file = File.expand_path(d).sub(RAMAZE_SRC,'')
|
56
|
+
li do
|
57
|
+
span :class => 'file', :name => file do
|
58
|
+
a d, :href => "##{file}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
Ramaze.start :adapter => :mongrel,
|
72
|
+
:load_engines => :Haml,
|
73
|
+
:boring => /(js|gif|css)$/,
|
74
|
+
:port => 3000
|
@@ -0,0 +1,43 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%title Ramaze Source Browser
|
5
|
+
|
6
|
+
%link{ :rel => 'stylesheet', :type => 'text/css', :href => '/jquery.treeview.css' }/
|
7
|
+
%link{ :rel => 'stylesheet', :type => 'text/css', :href => '/coderay.css' }/
|
8
|
+
%style{ :type => 'text/css' }
|
9
|
+
:sass
|
10
|
+
body
|
11
|
+
:font-family sans-serif
|
12
|
+
:margin 1.5em
|
13
|
+
|
14
|
+
a
|
15
|
+
:text-decoration none
|
16
|
+
:color #000
|
17
|
+
&.selected
|
18
|
+
:color #f00
|
19
|
+
|
20
|
+
#dir_listing
|
21
|
+
:float left
|
22
|
+
|
23
|
+
.filetree
|
24
|
+
span.folder, span.file
|
25
|
+
:padding-left 19px
|
26
|
+
:margin-left 2px
|
27
|
+
|
28
|
+
#file_contents
|
29
|
+
:margin-left 290px
|
30
|
+
:white-space pre
|
31
|
+
:font-size 11pt
|
32
|
+
|
33
|
+
%body
|
34
|
+
#dir_listing
|
35
|
+
= render_partial('/filetree')
|
36
|
+
#file_contents.CodeRay
|
37
|
+
%span{ :style => 'text-align: center' }
|
38
|
+
%h1 Welcome to the Ramaze source code browser
|
39
|
+
%h3 pick a file on the left to view its contents
|
40
|
+
|
41
|
+
%script{ :type => 'text/javascript', :src => '/jquery.js' }=""
|
42
|
+
%script{ :type => 'text/javascript', :src => '/jquery.treeview.js' }=""
|
43
|
+
%script{ :type => 'text/javascript', :src => '/sourceview.js' }=""
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Template::Nagoro external</title>
|
4
|
+
</head>
|
5
|
+
<body>
|
6
|
+
<h1>The external Template for Nagoro</h1>
|
7
|
+
#{A 'Home', :href => :/}
|
8
|
+
<p>
|
9
|
+
Here you can pass some stuff if you like, parameters are just passed like this:<br />
|
10
|
+
#{A("external/one")}<br />
|
11
|
+
#{A("external/one/two/three")}<br />
|
12
|
+
#{A("external/one?foo=bar")}<br />
|
13
|
+
</p>
|
14
|
+
<div>
|
15
|
+
The arguments you have passed to this action are:
|
16
|
+
<?r if @args.empty? ?>
|
17
|
+
none
|
18
|
+
<?r else ?>
|
19
|
+
<?r @args.each do |arg| ?>
|
20
|
+
<span>#{arg}</span>
|
21
|
+
<?r end ?>
|
22
|
+
<?r end ?>
|
23
|
+
</div>
|
24
|
+
<div>
|
25
|
+
#{request.params.inspect}
|
26
|
+
</div>
|
27
|
+
</body>
|
28
|
+
</html>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<xsl:stylesheet version="1.0"
|
3
|
+
xmlns="http://www.w3.org/1999/xhtml"
|
4
|
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
5
|
+
exclude-result-prefixes="xsl">
|
6
|
+
|
7
|
+
<xsl:output method="xml"
|
8
|
+
version="1.0"
|
9
|
+
encoding="utf-8"
|
10
|
+
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
|
11
|
+
doctype-system="DTD/xhtml1-strict.dtd"
|
12
|
+
indent="yes"/>
|
13
|
+
|
14
|
+
<xsl:template match="/page">
|
15
|
+
<html>
|
16
|
+
<head>
|
17
|
+
<title>
|
18
|
+
<xsl:value-of select="@title"/>
|
19
|
+
</title>
|
20
|
+
</head>
|
21
|
+
<body>
|
22
|
+
<xsl:apply-templates/>
|
23
|
+
</body>
|
24
|
+
</html>
|
25
|
+
</xsl:template>
|
26
|
+
|
27
|
+
<xsl:template match="heading">
|
28
|
+
<h1>
|
29
|
+
<xsl:apply-templates/>
|
30
|
+
</h1>
|
31
|
+
</xsl:template>
|
32
|
+
|
33
|
+
<xsl:template match="list">
|
34
|
+
<ul>
|
35
|
+
<xsl:apply-templates/>
|
36
|
+
</ul>
|
37
|
+
</xsl:template>
|
38
|
+
|
39
|
+
<xsl:template match="list/item">
|
40
|
+
<li>
|
41
|
+
<xsl:apply-templates/>
|
42
|
+
</li>
|
43
|
+
</xsl:template>
|
44
|
+
|
45
|
+
<xsl:template match="link">
|
46
|
+
<a href="{@href}">
|
47
|
+
<xsl:apply-templates/>
|
48
|
+
</a>
|
49
|
+
</xsl:template>
|
50
|
+
|
51
|
+
<xsl:template match="text">
|
52
|
+
<p>
|
53
|
+
<xsl:apply-templates/>
|
54
|
+
</p>
|
55
|
+
</xsl:template>
|
56
|
+
|
57
|
+
</xsl:stylesheet>
|
@@ -3,14 +3,12 @@
|
|
3
3
|
|
4
4
|
require 'ramaze'
|
5
5
|
|
6
|
-
include Ramaze
|
7
|
-
|
8
6
|
# TODO:
|
9
7
|
# - implement the amrita2 example, man, this engine is awkward :P
|
10
8
|
|
11
|
-
class MainController < Controller
|
9
|
+
class MainController < Ramaze::Controller
|
12
10
|
template_root __DIR__/:template
|
13
|
-
|
11
|
+
engine :Amrita2
|
14
12
|
|
15
13
|
def index
|
16
14
|
%{ #{A(Rs())} | #{Rs(:internal)} | #{Rs(:external)} }
|
@@ -3,11 +3,9 @@
|
|
3
3
|
|
4
4
|
require 'ramaze'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
class MainController < Controller
|
6
|
+
class MainController < Ramaze::Controller
|
9
7
|
template_root __DIR__/:template
|
10
|
-
|
8
|
+
engine :Liquid
|
11
9
|
|
12
10
|
def index
|
13
11
|
%{ #{A 'Home', :href => :/} | #{A(:internal)} | #{A(:external)} }
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
require 'ramaze'
|
5
|
+
|
6
|
+
class MainController < Ramaze::Controller
|
7
|
+
template_root __DIR__/:template
|
8
|
+
engine :Nagoro
|
9
|
+
|
10
|
+
def index
|
11
|
+
%{ #{A 'Home', :href => :/} | #{A(:internal)} | #{A(:external)} }
|
12
|
+
end
|
13
|
+
|
14
|
+
def internal *args
|
15
|
+
@args = args
|
16
|
+
%q{
|
17
|
+
<html>
|
18
|
+
<head>
|
19
|
+
<title>Template::Nagoro internal</title>
|
20
|
+
</head>
|
21
|
+
<body>
|
22
|
+
<h1>The internal Template for Nagoro</h1>
|
23
|
+
#{A 'Home', :href => :/}
|
24
|
+
<p>
|
25
|
+
Here you can pass some stuff if you like, parameters are just passed like this:<br />
|
26
|
+
#{A("internal/one")}<br />
|
27
|
+
#{A("internal/one/two/three")}<br />
|
28
|
+
#{A("internal/one?foo=bar")}<br />
|
29
|
+
</p>
|
30
|
+
<div>
|
31
|
+
The arguments you have passed to this action are:
|
32
|
+
<?r if @args.empty? ?>
|
33
|
+
none
|
34
|
+
<?r else ?>
|
35
|
+
<?r @args.each do |arg| ?>
|
36
|
+
<span>#{arg}</span>
|
37
|
+
<?r end ?>
|
38
|
+
<?r end ?>
|
39
|
+
</div>
|
40
|
+
<div>
|
41
|
+
#{request.params.inspect}
|
42
|
+
</div>
|
43
|
+
</body>
|
44
|
+
</html>
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def external *args
|
49
|
+
@args = args
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
Ramaze.start
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# Copyright (c) 2007 Stephan Maka stephan@spaceboyz.net
|
3
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
4
|
+
|
5
|
+
require 'ramaze'
|
6
|
+
require 'ramaze/gestalt'
|
7
|
+
|
8
|
+
class MainController < Ramaze::Controller
|
9
|
+
template_root __DIR__/:template
|
10
|
+
engine :XSLT
|
11
|
+
|
12
|
+
def index
|
13
|
+
redirect R(:external)
|
14
|
+
end
|
15
|
+
|
16
|
+
def external *args
|
17
|
+
r = lambda { |*a| R(*a) }
|
18
|
+
response['Content-Type'] = 'application/xhtml+xml'
|
19
|
+
|
20
|
+
#options = {:place => :internal, :action => 'internal',
|
21
|
+
# :args => args, :request => request, :this => self}
|
22
|
+
Ramaze::Gestalt.build do
|
23
|
+
page(:title=>"Template::XSLT") do
|
24
|
+
heading "The external Template for XSLT"
|
25
|
+
text "Here you can pass some stuff if you like, parameters are just passed like this:"
|
26
|
+
list do
|
27
|
+
item {
|
28
|
+
link(:href => r.call(@this, :external, :one)) { "external/one" }
|
29
|
+
}
|
30
|
+
item {
|
31
|
+
link(:href => r.call(@this, :external, :one, :two, :three)) { "external/one/two/three" }
|
32
|
+
}
|
33
|
+
item {
|
34
|
+
link(:href => r.call(@this, :external, :one, :foo => :bar)) { "external/one?foo=bar" }
|
35
|
+
}
|
36
|
+
end
|
37
|
+
text "The arguments you have passed to this action are:"
|
38
|
+
if args.empty?
|
39
|
+
text "none"
|
40
|
+
else
|
41
|
+
list {
|
42
|
+
args.each do |arg|
|
43
|
+
item arg
|
44
|
+
end
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
Ramaze.start
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'ramaze'
|
2
|
+
require 'ramaze/spec/helper'
|
3
|
+
|
4
|
+
# if these libraries are missing there is no sense in running the tests,
|
5
|
+
# cause they won't work at all.
|
6
|
+
testcase_requires 'bluecloth', 'hpricot', 'nagoro'
|
7
|
+
|
8
|
+
$:.unshift 'examples/whywiki'
|
9
|
+
|
10
|
+
Db = Ramaze::YAMLStoreCache.new('testwiki.yaml')
|
11
|
+
require 'start'
|
12
|
+
|
13
|
+
class WikiController < Ramaze::Controller
|
14
|
+
template_root __DIR__ / '../template'
|
15
|
+
end
|
16
|
+
|
17
|
+
describe WikiController do
|
18
|
+
after :all do
|
19
|
+
FileUtils.rm('testwiki.yaml')
|
20
|
+
end
|
21
|
+
|
22
|
+
def page(name)
|
23
|
+
page = get('/'+name)
|
24
|
+
page.status.should == 200
|
25
|
+
page.body.should_not be_nil
|
26
|
+
|
27
|
+
doc = Hpricot(page.body)
|
28
|
+
title = doc.at('title').inner_html
|
29
|
+
|
30
|
+
body = doc.at('body')
|
31
|
+
return title, body
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should start' do
|
35
|
+
ramaze :public_root => '.', :port => 7001
|
36
|
+
get('/').status.should == 303
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should have main page' do
|
40
|
+
t,body = page('/show/Home')
|
41
|
+
t.should match(/^MicroWiki Home$/)
|
42
|
+
body.at('h1').inner_html.should == 'Home'
|
43
|
+
body.at('a[@href=/edit/Home]').inner_html.should == 'Create Home'
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should have edit page' do
|
47
|
+
t,body = page('/edit/Home')
|
48
|
+
t.should match(/^MicroWiki Edit Home$/)
|
49
|
+
|
50
|
+
body.at('a[@href=/]').inner_html.should == '< Home'
|
51
|
+
body.at('h1').inner_html.should == 'Edit Home'
|
52
|
+
body.at('form[@action=/save]>textarea[@name=text]').should_not be_nil
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should create pages' do
|
56
|
+
post('/save','text'=>'the text','page'=>'ThePage').status.should == 303
|
57
|
+
page = Hpricot(get('/show/ThePage').body)
|
58
|
+
body = page.at('body>div')
|
59
|
+
body.should_not be_nil
|
60
|
+
body.at('a[@href=/edit/ThePage]').inner_html.should =='Edit ThePage'
|
61
|
+
body.at('p').inner_html.should == 'the text'
|
62
|
+
end
|
63
|
+
end
|