starapor-slippers 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 3
3
2
  :major: 0
4
3
  :minor: 0
4
+ :patch: 5
Binary file
@@ -1,6 +1,7 @@
1
1
  class MainController < Ramaze::Controller
2
2
  layout '/layout'
3
-
3
+ engine :Slippers
4
+
4
5
  def index
5
6
  @entries = Entry.order(:created.desc).all
6
7
  end
@@ -1,4 +1,5 @@
1
1
  require 'sequel'
2
+ Sequel::Model.plugin(:schema)
2
3
 
3
4
  DB = Sequel.connect("sqlite:///#{__DIR__}/../blog.db")
4
5
 
@@ -1,6 +1,7 @@
1
1
  <h2>Editing entry</h2>
2
2
  <div id="entries">
3
3
  <div class="entry">
4
+ $entry:{
4
5
  <form method="post" action="/save">
5
6
  <input name="id" type="hidden" value="$id$"/>
6
7
  <div class="header">
@@ -13,5 +14,6 @@
13
14
  </div>
14
15
  <input type="submit" value="Update Entry"/>
15
16
  </form>
17
+ }$
16
18
  </div>
17
19
  </div>
@@ -3,8 +3,8 @@
3
3
  <div class="title">$title$</div>
4
4
  <div class="created">Created: $created$</div>
5
5
  <ul>
6
- <li><a href='/edit/$id$'>edit</li>
7
- <li><a href='/delete/$id$'>delete</li>
6
+ <li><a href='/edit/$id$'>edit</a></li>
7
+ <li><a href='/delete/$id$'>delete</a></li>
8
8
  </ul>
9
9
  </div>
10
10
  <div class="content">$content$</div>
@@ -19,6 +19,6 @@ class RegistrationController < Controller
19
19
 
20
20
  @registrationRepository.save(form)
21
21
  flash[:message] = "Saved!"
22
- redirect R('/registration', :index, :key=>form[:key])
22
+ redirect route('/registration', :index, :key=>form[:key])
23
23
  end
24
24
  end
Binary file
@@ -20,7 +20,6 @@ class MainController < Ramaze::Controller
20
20
  status = 'not done'
21
21
  toggle = 'close'
22
22
  end
23
- delete = A('Delete', :href => Rs(:delete, title))
24
23
  @tasks << {:title => title, :status => status, :resource => title, :toggle => toggle}
25
24
  end
26
25
  @heading = "TodoList"
@@ -35,6 +34,7 @@ class MainController < Ramaze::Controller
35
34
  redirect '/new'
36
35
  end
37
36
  TodoList[title] = {:done => false}
37
+ redirect route('/', :title => title)
38
38
  end
39
39
  end
40
40
 
@@ -51,7 +51,7 @@ class MainController < Ramaze::Controller
51
51
  end
52
52
 
53
53
  helper :aspect
54
- after(:create, :open, :close, :delete){ redirect(Rs()) unless redirected? }
54
+ after(:create, :open, :close, :delete){ redirect_referrer }
55
55
 
56
56
  private
57
57
 
File without changes
File without changes
@@ -4,8 +4,8 @@
4
4
  require 'rubygems'
5
5
  require 'ramaze'
6
6
 
7
- require 'src/controller/main'
8
- require 'src/element/page'
9
- require 'src/model'
7
+ require 'controller/main'
8
+ #require 'layout/page'
9
+ require 'model/tasks'
10
10
 
11
11
  Ramaze.start :port => 3000
@@ -1,7 +1,11 @@
1
1
  ---
2
- Wash dishes:
3
- :done: false
4
2
  Watch the tv:
5
3
  :done: false
4
+ Wash dishes:
5
+ :done: true
6
+ Clean the shower:
7
+ :done: false
6
8
  Laundry:
7
9
  :done: false
10
+ Vacuum the room:
11
+ :done: false
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,5 +6,9 @@ module Slippers
6
6
  def [](method)
7
7
  eval('@'+ method.to_s, @bindings)
8
8
  end
9
+
10
+ def to_s
11
+ "BindingWrapper with #{@bindings}"
12
+ end
9
13
  end
10
14
  end
@@ -58,7 +58,7 @@ grammar Slippers
58
58
  end
59
59
  }
60
60
  end
61
-
61
+
62
62
  rule anything_except_keywords
63
63
  not_keyword* {
64
64
  def eval(*args)
@@ -108,7 +108,7 @@ grammar Slippers
108
108
  end
109
109
  }
110
110
  end
111
-
111
+
112
112
  rule brackets
113
113
  '()' {
114
114
  def to_s
@@ -11,6 +11,10 @@ module Slippers
11
11
  find_in_super_group(subtemplate)
12
12
  end
13
13
 
14
+ def to_s
15
+ "TemplateGroup#Templates:[#{@templates}]&SuperGroup:[#{@super_group}] "
16
+ end
17
+
14
18
  private
15
19
  def find_in_super_group(subtemplate)
16
20
  return nil unless @super_group
@@ -1,25 +1,22 @@
1
1
  require 'slippers'
2
2
 
3
3
  module Ramaze
4
- module Template
5
- class Slippers < Template
6
-
7
- ENGINES[self] = %w[ st ]
8
- class << self
9
- def transform(action)
10
- slippers = wrap_compile(action)
11
- object_to_render = ::Slippers::BindingWrapper.new(action.binding)
12
- slippers.render(object_to_render)
13
- end
14
-
15
- def compile(action, template)
16
- subtemplates = action.controller.trait[:slippers_options] || {}
17
-
18
- template_group_directory = ::Slippers::TemplateGroupDirectory.new(Global.view_root)
4
+ module View
5
+ module Slippers
6
+ def self.call(action, string)
7
+ slippers = View.compile(string){|s| ::Slippers::Engine.new(s, :template_group => template_group(action)) }
8
+ object_to_render = ::Slippers::BindingWrapper.new(action.instance.binding)
9
+ html = slippers.render(object_to_render)
10
+ return html, 'text/html'
11
+ end
12
+
13
+ private
14
+ def self.template_group(action)
15
+ subtemplates = action.instance.ancestral_trait[:slippers_options] || {}
16
+ view_root = "#{action.instance.options[:roots]}/#{action.instance.options[:views]}"
17
+ template_group_directory = ::Slippers::TemplateGroupDirectory.new(view_root)
19
18
  template_group = ::Slippers::TemplateGroup.new(:super_group => template_group_directory, :templates => subtemplates)
20
- ::Slippers::Engine.new(template, :template_group => template_group)
21
19
  end
22
- end
23
20
  end
24
21
  end
25
22
  end
data/spec/parser.rb CHANGED
@@ -57,6 +57,12 @@ describe SlippersParser do
57
57
  @parser.parse('${template for this $name$}$').eval(:name => 'fred').should eql('template for this fred')
58
58
  end
59
59
 
60
+ it 'should parse an anonymous subtemplate within an anonymous subtemplate' do
61
+ stuff = @parser.parse('$cars:{I really like $types:{toyota}$ }$')
62
+ stuff.eval(:cars => {:types => 'toyota'}) if stuff
63
+ #.should eql('template for this')
64
+ end
65
+
60
66
  it 'should apply the attribute to a subtemplate when parsing it' do
61
67
  subtemplate = Slippers::Engine.new('Hello $first$ $last$')
62
68
  template_group = Slippers::TemplateGroup.new(:templates => {:person => subtemplate})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starapor-slippers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sarah Taraporewalla
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-30 00:00:00 -07:00
12
+ date: 2009-09-13 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -55,7 +55,6 @@ files:
55
55
  - lib/engine/template_group.rb
56
56
  - lib/engine/template_group_directory.rb
57
57
  - lib/ramazeTemplates
58
- - lib/ramazeTemplates/0001-SarahTaraporewalla-adding-new-template-file-for-sli.patch
59
58
  - lib/ramazeTemplates/slippers.rb
60
59
  - lib/slippers.rb
61
60
  - spec/binding_wrapper.rb
@@ -146,28 +145,26 @@ files:
146
145
  - examples/main_controller.rb
147
146
  - examples/start.rb
148
147
  - examples/todolist
148
+ - examples/todolist/controller
149
+ - examples/todolist/controller/main.rb
150
+ - examples/todolist/layout
151
+ - examples/todolist/layout/page.rb
152
+ - examples/todolist/model
153
+ - examples/todolist/model/tasks.rb
149
154
  - examples/todolist/public
150
155
  - examples/todolist/public/favicon.ico
151
156
  - examples/todolist/public/js
152
157
  - examples/todolist/public/js/jquery.js
153
158
  - examples/todolist/public/ramaze.png
154
159
  - examples/todolist/README
155
- - examples/todolist/spec
156
- - examples/todolist/spec/todolist.rb
157
- - examples/todolist/src
158
- - examples/todolist/src/controller
159
- - examples/todolist/src/controller/main.rb
160
- - examples/todolist/src/element
161
- - examples/todolist/src/element/page.rb
162
- - examples/todolist/src/model.rb
163
160
  - examples/todolist/start.rb
164
- - examples/todolist/template
165
- - examples/todolist/template/index.st
166
- - examples/todolist/template/index.xhtml
167
- - examples/todolist/template/new.st
168
- - examples/todolist/template/new.xhtml
169
- - examples/todolist/template/tasks.st
170
161
  - examples/todolist/todolist.db
162
+ - examples/todolist/view
163
+ - examples/todolist/view/index.st
164
+ - examples/todolist/view/index.xhtml
165
+ - examples/todolist/view/new.st
166
+ - examples/todolist/view/new.xhtml
167
+ - examples/todolist/view/tasks.st
171
168
  - examples/todolist.db
172
169
  - examples/view
173
170
  - examples/view/index.st
@@ -175,8 +172,9 @@ files:
175
172
  - examples/view/person/age.st
176
173
  - examples/view/person/index.st
177
174
  - examples/view/person/name.st
178
- has_rdoc: true
175
+ has_rdoc: false
179
176
  homepage: http://github.com/starapor/slippers
177
+ licenses:
180
178
  post_install_message:
181
179
  rdoc_options:
182
180
  - --inline-source
@@ -198,9 +196,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
196
  requirements: []
199
197
 
200
198
  rubyforge_project:
201
- rubygems_version: 1.2.0
199
+ rubygems_version: 1.3.5
202
200
  signing_key:
203
- specification_version: 2
201
+ specification_version: 3
204
202
  summary: A strict templating library for Ruby
205
203
  test_files: []
206
204
 
@@ -1,133 +0,0 @@
1
- require 'rubygems'
2
- require 'ramaze'
3
- require 'ramaze/spec/helper'
4
-
5
- spec_require 'hpricot'
6
-
7
- $LOAD_PATH.unshift base = __DIR__('..')
8
- require 'start'
9
-
10
- describe 'todolist' do
11
- behaves_like 'http'
12
-
13
- def h_get(*args)
14
- Hpricot(get(*args).body)
15
- end
16
-
17
- def task_titles
18
- doc = h_get('/')
19
- doc.search("td[@class='title']").
20
- map{|t| t.inner_html.strip}.sort
21
- end
22
-
23
- def tasks
24
- (h_get('/')/:tr)
25
- end
26
-
27
- def task(name)
28
- tasks.find do |task|
29
- (task/:td).find do |td|
30
- td['class'] == 'title' and
31
- td.inner_html.strip == name
32
- end
33
- end
34
- end
35
-
36
- def spectask
37
- task('spectask')
38
- end
39
-
40
- def spectask_status
41
- spectask.search("td[@class='status']").inner_html.strip
42
- end
43
-
44
- def error_on_page(url, response)
45
- doc = h_get(url, :cookie => response.headers['Set-Cookie'])
46
-
47
- error = doc.search("div[@class='error']")
48
- error.inner_html.strip
49
- end
50
-
51
- it 'should start' do
52
- ramaze :public_root => base/:public,
53
- :view_root => base/:template
54
- get('/').status.should == 200
55
- end
56
-
57
- it 'should have no empty mainpage' do
58
- get('/').body.should.not == nil
59
- end
60
-
61
- it 'should have two preset tasks' do
62
- task_titles.should == %w[Laundry Wash\ dishes]
63
- end
64
-
65
- it 'should have a link to new tasks' do
66
- doc = h_get('/')
67
- link = (doc/:a).find{|a| a.inner_html == 'New Task'}
68
- link['href'].should == '/new'
69
- end
70
-
71
- it 'should have a page to create new tasks' do
72
- get('/new').body.should.not == nil
73
- end
74
-
75
- it 'should have a form to create a tasks on the /new page' do
76
- doc = h_get('/new')
77
- form = doc.at :form
78
- form.should.not == nil
79
- input = form.at(:input)
80
- input['type'].should == 'text'
81
- input['name'].should == 'title'
82
- end
83
-
84
- it 'should POST new task and redirect to /' do
85
- result = post('/create', 'title' => 'spectask')
86
- result.status.should == 302
87
- end
88
-
89
- it 'should show have the new task' do
90
- task_titles.should.include('spectask')
91
- end
92
-
93
- it 'should toggle the spectask' do
94
- get('/close/spectask').status.should == 302
95
- spectask.should.not == nil
96
- spectask_status.should == 'done'
97
- get('/open/spectask').status.should == 302
98
- spectask.should.not == nil
99
- spectask_status.should == 'not done'
100
- end
101
-
102
- it 'should raise on modifying a not existing task' do
103
- %w[open close].each do |action|
104
- response = get("/#{action}/nothere", :referrer => "/")
105
- response.status.should == 302
106
- response.original_headers['Location'].should == '/'
107
- error_on_page('/', response).should == "No such Task: `nothere'"
108
- end
109
- end
110
-
111
- it 'should delete the new task' do
112
- get('/delete/spectask').status.should == 302
113
- task_titles.should.not.include('spectask')
114
- end
115
-
116
- it 'should not create empty tasks but show a subtle error message' do
117
- response = post('/create', 'title' => '', :referrer => "/new")
118
-
119
- response.status.should == 302
120
- response.original_headers['Location'].should == '/new'
121
-
122
- error_on_page('/new', response).should == 'Please enter a title'
123
- end
124
-
125
- it 'should escape harmful titles' do
126
- response = post('/create', 'title' => '#{puts "gotcha"}')
127
-
128
- task('#{puts "gotcha"}').should.be.nil
129
- task('&#35;{puts &quot;gotcha&quot;}').should.not.be.nil
130
- end
131
-
132
- FileUtils.rm('todolist.db') rescue nil
133
- end
@@ -1,58 +0,0 @@
1
- From 5a6c869d4709ce84d7c07b5dd33cf06e39c0111e Mon Sep 17 00:00:00 2001
2
- From: Sarah Taraporewalla <sarah.tarap@gmail.com>
3
- Date: Mon, 16 Feb 2009 20:44:08 +0000
4
- Subject: [PATCH 1] SarahTaraporewalla: adding new template file for slippers template engine
5
-
6
- ---
7
- lib/ramaze/template.rb | 2 +-
8
- 2 files changed, 26 insertions(+), 1 deletions(-)
9
-
10
- diff --git a/lib/ramaze/template.rb b/lib/ramaze/template.rb
11
- index 096816b..99f1f94 100644
12
- --- a/lib/ramaze/template.rb
13
- +++ b/lib/ramaze/template.rb
14
- @@ -18,7 +18,7 @@ module Ramaze
15
-
16
- AVAILABLE_ENGINES = %w[
17
- Amrita2 Builder Erubis Haml Liquid Markaby Maruku Nagoro None RedCloth
18
- - Remarkably Sass Tagz Tenjin XSLT
19
- + Remarkably Sass Slippers Tagz Tenjin XSLT
20
- ]
21
-
22
- AVAILABLE_ENGINES.each do |const|
23
- --
24
-
25
- diff --git a/lib/ramaze/template/slippers.rb b/lib/ramaze/template/slippers.rb
26
- new file mode 100755
27
- index 0000000..e9981b4
28
- --- /dev/null
29
- +++ b/lib/ramaze/template/slippers.rb
30
- @@ -0,0 +1,25 @@
31
- +require 'slippers'
32
- +
33
- +module Ramaze
34
- + module Template
35
- + class Slippers < Template
36
- +
37
- + ENGINES[self] = %w[ st ]
38
- + class << self
39
- + def transform(action)
40
- + slippers = wrap_compile(action)
41
- + object_to_render = ::Slippers::BindingWrapper.new(action.binding)
42
- + slippers.render(object_to_render)
43
- + end
44
- +
45
- + def compile(action, template)
46
- + subtemplates = action.controller.trait[:slippers_options] || {}
47
- +
48
- + template_group_directory = ::Slippers::TemplateGroupDirectory.new(Global.view_root)
49
- + template_group = ::Slippers::TemplateGroup.new(:super_group => template_group_directory, :templates => subtemplates)
50
- + ::Slippers::Engine.new(template, :template_group => template_group)
51
- + end
52
- + end
53
- + end
54
- + end
55
- +end
56
- --
57
- 1.6.1
58
-