amrita2 2.0.0 → 2.0.1

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.
Files changed (53) hide show
  1. data/README +1 -1
  2. data/init.rb +1 -0
  3. data/lib/amrita2/rails_bridge.rb +92 -7
  4. data/lib/amrita2/template.rb +12 -127
  5. data/lib/amrita2/testsupport.rb +0 -25
  6. data/lib/amrita2/version.rb +1 -1
  7. data/sample/depot/app/controllers/admin_controller.rb +3 -1
  8. data/sample/depot/app/helpers/cart_helper.rb +8 -0
  9. data/sample/depot/app/helpers/price_helper.rb +7 -0
  10. data/sample/depot/config/environment.rb +0 -14
  11. data/sample/depot/config/environments/development.rb +2 -2
  12. data/sample/depot/db/schema.rb +27 -20
  13. data/sample/depot/test/functional/admin_controller_test.rb +63 -22
  14. data/sample/depot/test/functional/store_controller_test.rb +30 -18
  15. data/sample/depot/vendor/plugins/will_paginate/init.rb +4 -0
  16. data/sample/depot/vendor/plugins/will_paginate/lib/will_paginate.rb +61 -0
  17. data/sample/depot/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +132 -0
  18. data/sample/depot/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +80 -0
  19. data/sample/depot/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +181 -0
  20. data/sample/depot/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +206 -0
  21. data/sample/depot/vendor/plugins/will_paginate/test/array_pagination_test.rb +131 -0
  22. data/sample/depot/vendor/plugins/will_paginate/test/boot.rb +23 -0
  23. data/sample/depot/vendor/plugins/will_paginate/test/finder_test.rb +290 -0
  24. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/admin.rb +3 -0
  25. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/company.rb +9 -0
  26. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/developer.rb +11 -0
  27. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/project.rb +15 -0
  28. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/reply.rb +5 -0
  29. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/schema.rb +38 -0
  30. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/topic.rb +4 -0
  31. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/user.rb +2 -0
  32. data/sample/depot/vendor/plugins/will_paginate/test/helper.rb +25 -0
  33. data/sample/depot/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +23 -0
  34. data/sample/depot/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +67 -0
  35. data/sample/depot/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +13 -0
  36. data/sample/depot/vendor/plugins/will_paginate/test/pagination_test.rb +240 -0
  37. data/sample/hello/test1.rb +23 -0
  38. data/sample/login_engine/config/environment.rb +18 -20
  39. data/sample/login_engine/config/environments/development.rb +2 -2
  40. data/sample/login_engine/db/schema.rb +24 -17
  41. data/sample/login_engine/lib/login_engine/authenticated_system.rb +18 -18
  42. data/sample/login_engine/test/functional/user_controller_test.rb +1 -0
  43. data/sample/ramaze/ramaise_amrita2.rb +156 -0
  44. data/specs/attribute.rb +11 -0
  45. data/specs/datatypes.rb +13 -0
  46. data/specs/sample.rb +1 -2
  47. data/specs/sanitize.rb +14 -0
  48. metadata +28 -7
  49. data/sample/depot/app/helpers/ar_form.rb +0 -169
  50. data/sample/depot/app/helpers/form_tag.rb +0 -24
  51. data/sample/depot/app/helpers/standard_form.rb +0 -73
  52. data/sample/depot/test/integration/dsl_user_stories_test.rb +0 -126
  53. data/sample/depot/test/integration/user_stories_test.rb +0 -70
data/specs/sample.rb CHANGED
@@ -1,11 +1,10 @@
1
-
2
1
  require 'amrita2'
3
2
  require 'amrita2/testsupport'
4
3
 
5
4
  module SampleTestSupport
6
5
  def get_result(dir, fname)
7
6
  Dir::chdir("sample/#{dir}") do
8
- IO.popen("ruby -I../../lib #{fname}") do |f|
7
+ IO.popen("ruby -rubygems -I../../lib #{fname}") do |f|
9
8
  f.read
10
9
  end
11
10
  end
data/specs/sanitize.rb CHANGED
@@ -61,6 +61,20 @@ include Amrita2
61
61
  result.should_be_samexml_as(expected)
62
62
  end
63
63
  end
64
+
65
+ specify "do sanitize double quotes" do
66
+ data = {
67
+ :aaa=> {
68
+ :href=>'http://www.ruby-lang.org/',
69
+ :title=>"\"Ruby's home page\"",
70
+ :body=>'<Ruby>'
71
+ }
72
+ }
73
+ expected = %[<a href="http://www.ruby-lang.org/" title="&quot;Ruby's home page&quot;">&lt;Ruby&gt;</a>]
74
+ @t.test_with(data) do |result|
75
+ result.should_be_samexml_as(expected)
76
+ end
77
+ end
64
78
 
65
79
  specify "stop sanitize" do
66
80
  data = {
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: amrita2
5
5
  version: !ruby/object:Gem::Version
6
- version: 2.0.0
7
- date: 2008-01-16 00:00:00 +09:00
6
+ version: 2.0.1
7
+ date: 2008-02-07 00:00:00 +09:00
8
8
  summary: Amrita2 is a a xml/xhtml template library for Ruby
9
9
  require_paths:
10
10
  - lib
@@ -88,12 +88,11 @@ files:
88
88
  - sample/login_engine/config/environments/production.rb
89
89
  - sample/login_engine/config/environments/development.rb
90
90
  - sample/login_engine/config/environments/test.rb
91
- - sample/depot/app/helpers/ar_form.rb
92
- - sample/depot/app/helpers/standard_form.rb
91
+ - sample/depot/app/helpers/cart_helper.rb
93
92
  - sample/depot/app/helpers/application_helper.rb
94
93
  - sample/depot/app/helpers/admin_helper.rb
94
+ - sample/depot/app/helpers/price_helper.rb
95
95
  - sample/depot/app/helpers/store_helper.rb
96
- - sample/depot/app/helpers/form_tag.rb
97
96
  - sample/depot/app/helpers/info_helper.rb
98
97
  - sample/depot/app/controllers/admin_controller.rb
99
98
  - sample/depot/app/controllers/login_controller.rb
@@ -116,8 +115,6 @@ files:
116
115
  - sample/depot/test/unit/order_test.rb
117
116
  - sample/depot/test/unit/cart_test.rb
118
117
  - sample/depot/test/unit/product_test.rb
119
- - sample/depot/test/integration/user_stories_test.rb
120
- - sample/depot/test/integration/dsl_user_stories_test.rb
121
118
  - sample/depot/test/performance/order_speed_test.rb
122
119
  - sample/depot/public/dispatch.rb
123
120
  - sample/depot/db/schema.rb
@@ -129,13 +126,37 @@ files:
129
126
  - sample/depot/db/migrate/006_create_line_items.rb
130
127
  - sample/depot/db/migrate/003_add_test_data.rb
131
128
  - sample/depot/vendor/plugins/amrita2/init.rb
129
+ - sample/depot/vendor/plugins/will_paginate/init.rb
130
+ - sample/depot/vendor/plugins/will_paginate/lib/will_paginate.rb
131
+ - sample/depot/vendor/plugins/will_paginate/lib/will_paginate/collection.rb
132
+ - sample/depot/vendor/plugins/will_paginate/lib/will_paginate/finder.rb
133
+ - sample/depot/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb
134
+ - sample/depot/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb
135
+ - sample/depot/vendor/plugins/will_paginate/test/helper.rb
136
+ - sample/depot/vendor/plugins/will_paginate/test/finder_test.rb
137
+ - sample/depot/vendor/plugins/will_paginate/test/array_pagination_test.rb
138
+ - sample/depot/vendor/plugins/will_paginate/test/pagination_test.rb
139
+ - sample/depot/vendor/plugins/will_paginate/test/boot.rb
140
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/project.rb
141
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/developer.rb
142
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/user.rb
143
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/company.rb
144
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/schema.rb
145
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/reply.rb
146
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/topic.rb
147
+ - sample/depot/vendor/plugins/will_paginate/test/fixtures/admin.rb
148
+ - sample/depot/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb
149
+ - sample/depot/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb
150
+ - sample/depot/vendor/plugins/will_paginate/test/lib/load_fixtures.rb
132
151
  - sample/depot/config/routes.rb
133
152
  - sample/depot/config/environment.rb
134
153
  - sample/depot/config/boot.rb
135
154
  - sample/depot/config/environments/production.rb
136
155
  - sample/depot/config/environments/development.rb
137
156
  - sample/depot/config/environments/test.rb
157
+ - sample/hello/test1.rb
138
158
  - sample/hello/hello.rb
159
+ - sample/ramaze/ramaise_amrita2.rb
139
160
  - README
140
161
  - init.rb
141
162
  test_files: []
@@ -1,169 +0,0 @@
1
- require 'amrita2/macro'
2
-
3
-
4
- module Amrita2View
5
- class InputField < Amrita2::Macro::Base
6
- include Amrita2
7
- include Amrita2::Util
8
-
9
- attr_accessor :set_value
10
-
11
- def get_macro_template
12
- %[<input macro:filter="Attr" />]
13
- end
14
-
15
- def macro_data(element)
16
- attrs = element.as_amrita_dictionary
17
- prefix = attrs.delete(:prefix).to_s.split
18
- input_id = attrs.delete(:id)
19
- if attrs.delete(:set_value)
20
- self.set_value = true
21
- end
22
- default_attrs.merge(attrs).merge( {
23
- :id => get_id(prefix, input_id),
24
- :name => get_name(prefix, input_id),
25
- :target_filter => target_filter(input_id)
26
- } )
27
- end
28
-
29
- private
30
-
31
- def target_filter(input_id)
32
- if set_value
33
- "Attr[:value=>#{input_id.intern.inspect}]"
34
- else
35
- nil
36
- end
37
- end
38
-
39
- def get_id(prefix, name)
40
- (prefix + [name]).join("_")
41
- end
42
-
43
- def get_name(prefix, name)
44
- case prefix.size
45
- when 0
46
- name
47
- when 1
48
- "#{prefix.first}[#{name}]"
49
- else
50
- prefix.first +
51
- prefix[1..-1].collect do |pre|
52
- "[#{pre}]"
53
- end.join('') +
54
- "[#{name}]"
55
- end
56
- end
57
- end
58
-
59
- class TextField < InputField
60
-
61
- Option = {
62
- :tag => "ar:text_field",
63
- }
64
-
65
- def default_attrs
66
- {
67
- :type => 'text',
68
- :size => 30
69
- }
70
- end
71
- end
72
-
73
- class TextArea < InputField
74
-
75
- Option = {
76
- :tag => "ar:textarea",
77
- }
78
-
79
- def get_macro_template
80
- %[<textarea macro:filter="Attr" />]
81
- end
82
-
83
- def default_attrs
84
- {
85
- :rows => 20,
86
- :cols => 40,
87
- }
88
- end
89
-
90
- def target_filter(input_id)
91
- if set_value
92
- "Attr[:body=>#{input_id.intern.inspect}]"
93
- else
94
- nil
95
- end
96
- end
97
- end
98
-
99
- class ARForm < Amrita2::Macro::Base
100
- include Amrita2
101
- TemplateText = <<-'END'
102
- <<:|Amrita2View::ARFormFilter[{:prefix => :uuuu}] <
103
- <<:contents>>
104
- END
105
-
106
- Option = {
107
- :tag=>"ar:form",
108
- :use_contents=>:contents
109
- }
110
-
111
- FieldMacros = []
112
-
113
- def self.add_macro(m)
114
- FieldMacros << m
115
- end
116
-
117
- add_macro TextField
118
- add_macro TextArea
119
-
120
- def initialize
121
- @filter = Amrita2::Filters::MacroFilter.new(*FieldMacros)
122
- super
123
- end
124
-
125
- def process(de, element)
126
- @filter.macros.each do |m|
127
- m.set_value = element.get_attribute("set_value")
128
- end
129
- element = process_prefix(element, [])
130
- @filter.filter_element(de, element).to_s
131
- end
132
-
133
- private
134
-
135
- def process_prefix(e, prefix)
136
- if e.name == "ar:form"
137
- prefix = prefix + [e.get_attribute("prefix")]
138
- e.name = "_"
139
- e.delete_attribute("prefix")
140
- e.delete_attribute("set_value")
141
- elsif @filter.macros.any? { |m| m.get_element_name == e.name }
142
- e.set_attribute("prefix", prefix.join(" ")) unless e.get_attribute("prefix")
143
- end
144
- e.children.each do |c|
145
- process_prefix(c, prefix) if c.kind_of?(Hpricot::Elem)
146
- end
147
- e
148
- end
149
- end
150
-
151
- class FormTag < Amrita2::Macro::Base
152
- TemplateText = <<-END
153
- <%
154
- action = $_[:action]
155
- method = $_[:method]
156
- %>
157
- <%%= form_tag({:action=><%= action.inspect%>}, {:method=><%= method.inspect %>}) %%>
158
- <span macro:src='contents' />
159
- <%%= "</form>" %%>
160
- END
161
-
162
- Option = {
163
- :tag => :form_tag,
164
- :use_contents => :contents
165
- }
166
- end
167
- end
168
-
169
- ARForm = Amrita2View::ARForm
@@ -1,24 +0,0 @@
1
-
2
- class FormTag < Amrita2::Macro::Base
3
- TemplateText = <<-END_OF_TEMPLATE
4
- <%%= form_tag(<%= $_[:url].inspect %>) %%>
5
- <<:contents>>
6
- <%%= '</form>' %%>
7
-
8
- END_OF_TEMPLATE
9
-
10
- def macro_data(element)
11
- root = element.as_amrita_dictionary
12
- url = element.search("url").first
13
- contents = element.children.find_all do |c|
14
- c != url
15
- end
16
-
17
- ret = {
18
- :url => url ? url.as_amrita_dictionary : {},
19
- :contents => Amrita2::SanitizedString[contents]
20
- }
21
- ret
22
- end
23
- end
24
-
@@ -1,73 +0,0 @@
1
-
2
- class StandardForm < Amrita2::Macro::Base
3
- TemplateText = <<-END_OF_TEMPLATE
4
- <<fieldset<
5
- <<legend:title>>
6
- <%%= form_tag(<%= $_[:url].inspect %>) %%>
7
- <<:header>>
8
- <<p:items<
9
- <<label:label|Attr[:for]<
10
- <<:text>>:
11
- <<:input>>
12
- <<:fotter>>
13
- <%%= '</form>' %%>
14
-
15
- END_OF_TEMPLATE
16
-
17
- def macro_data(element)
18
- root = element.as_amrita_dictionary
19
- record = root[:record].intern
20
- title = element.search("form_title").first
21
- url = element.search("url").first
22
- header = element.search("header").first
23
- items = element.search("tr").collect do |tr|
24
- tr_to_data(record, tr)
25
- end
26
- fotter = element.search("fotter").first
27
-
28
- ret = {
29
- :title => title.contents,
30
- :record => record,
31
- :url => url ? url.as_amrita_dictionary : {},
32
- :header => header.contents,
33
- :items => items,
34
- :fotter => fotter.contents
35
- }
36
- ret
37
- end
38
-
39
- def tr_to_data(record, tr)
40
- label = tr.search("th").first
41
- td = tr.search("td").first
42
- input = td_to_input(record, td) || { }
43
- {
44
- :label => {
45
- :for => "#{record}_#{input[:field_id]}",
46
- :text => label.contents.strip,
47
- },
48
- :input => input[:input]
49
- }
50
- end
51
-
52
- def td_to_input(record, td)
53
- x = td.children.find { |c| c.kind_of?(Hpricot::Elem) }
54
- raise "input was not found in <td>" unless x
55
- attr = x.as_amrita_dictionary
56
- field_id = attr.delete(:id)
57
- input = case x.name
58
- when "text"
59
- "<%= text_field #{record.to_s.inspect}, #{field_id.to_s.inspect}, #{attr.inspect} %>"
60
- when "text_area"
61
- "<%= text_area #{record.to_s.inspect}, #{field_id.to_s.inspect}, #{attr.inspect} %>"
62
- when "field"
63
- x.contents
64
- else
65
- raise "unknown input field #{x.name} "
66
- end
67
- {
68
- :input => Amrita2::SanitizedString[input],
69
- :field_id => field_id
70
- }
71
- end
72
- end
73
-
@@ -1,126 +0,0 @@
1
- #---
2
- # Excerpted from "Agile Web Development with Rails, 2nd Ed."
3
- # We make no guarantees that this code is fit for any purpose.
4
- # Visit http://www.pragmaticprogrammer.com/titles/rails2 for more book information.
5
- #---
6
- require "#{File.dirname(__FILE__)}/../test_helper"
7
-
8
- class DslUserStoriesTest < ActionController::IntegrationTest
9
- fixtures :products
10
-
11
-
12
-
13
- DAVES_DETAILS = {
14
- :name => "Dave Thomas",
15
- :address => "123 The Street",
16
- :email => "dave@pragprog.com",
17
- :pay_type => "check"
18
- }
19
-
20
-
21
- MIKES_DETAILS = {
22
- :name => "Mike Clark",
23
- :address => "345 The Avenue",
24
- :email => "mike@pragmaticstudio.com",
25
- :pay_type => "cc"
26
- }
27
-
28
-
29
-
30
- def setup
31
- LineItem.delete_all
32
- Order.delete_all
33
- @ruby_book = products(:ruby_book)
34
- @rails_book = products(:rails_book)
35
- end
36
-
37
- # A user goes to the store index page. They select a product,
38
- # adding it to their cart. They then check out, filling in
39
- # their details on the checkout form. When they submit,
40
- # an order is created in the database containing
41
- # their information, along with a single line item
42
- # corresponding to the product they added to their cart.
43
-
44
-
45
- def test_buying_a_product
46
- dave = regular_user
47
- dave.get "/store/index"
48
- dave.is_viewing "index"
49
- dave.buys_a @ruby_book
50
- dave.has_a_cart_containing @ruby_book
51
- dave.checks_out DAVES_DETAILS
52
- dave.is_viewing "index"
53
- check_for_order DAVES_DETAILS, @ruby_book
54
- end
55
-
56
-
57
-
58
- def test_two_people_buying
59
- dave = regular_user
60
- mike = regular_user
61
- dave.buys_a @ruby_book
62
- mike.buys_a @rails_book
63
- dave.has_a_cart_containing @ruby_book
64
- dave.checks_out DAVES_DETAILS
65
- mike.has_a_cart_containing @rails_book
66
- check_for_order DAVES_DETAILS, @ruby_book
67
- mike.checks_out MIKES_DETAILS
68
- check_for_order MIKES_DETAILS, @rails_book
69
- end
70
-
71
-
72
-
73
- def regular_user
74
- open_session do |user|
75
- def user.is_viewing(page)
76
- assert_response :success
77
- assert_template page
78
- end
79
-
80
- def user.buys_a(product)
81
- xml_http_request "/store/add_to_cart", :id => product.id
82
- assert_response :success
83
- end
84
-
85
- def user.has_a_cart_containing(*products)
86
- cart = session[:cart]
87
- assert_equal products.size, cart.items.size
88
- for item in cart.items
89
- assert products.include?(item.product)
90
- end
91
- end
92
-
93
- def user.checks_out(details)
94
- post "/store/checkout"
95
- assert_response :success
96
- assert_template "checkout"
97
-
98
- post_via_redirect "/store/save_order",
99
- :order => { :name => details[:name],
100
- :address => details[:address],
101
- :email => details[:email],
102
- :pay_type => details[:pay_type]
103
- }
104
- assert_response :success
105
- assert_template "index"
106
- assert_equal 0, session[:cart].items.size
107
- end
108
- end
109
- end
110
-
111
-
112
- def check_for_order(details, *products)
113
- order = Order.find_by_name(details[:name])
114
- assert_not_nil order
115
-
116
- assert_equal details[:name], order.name
117
- assert_equal details[:address], order.address
118
- assert_equal details[:email], order.email
119
- assert_equal details[:pay_type], order.pay_type
120
-
121
- assert_equal products.size, order.line_items.size
122
- for line_item in order.line_items
123
- assert products.include?(line_item.product)
124
- end
125
- end
126
- end