ramaze 0.1.4 → 0.2.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.
- 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
|