_rubyapp 0.0.3

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 (197) hide show
  1. data/.gitignore +6 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +0 -0
  5. data/Rakefile +65 -0
  6. data/bin/rubyapp +78 -0
  7. data/features/breadcrumbs.feature +10 -0
  8. data/features/content.feature +15 -0
  9. data/features/default.feature +9 -0
  10. data/features/exception.feature +50 -0
  11. data/features/input.feature +12 -0
  12. data/features/list.feature +12 -0
  13. data/features/step_definitions/default_macros.rb +15 -0
  14. data/features/step_definitions/default_steps.rb +36 -0
  15. data/features/support/env.rb +8 -0
  16. data/lib/rubyapp.rb +1 -0
  17. data/lib/rubyapp/config.ru +22 -0
  18. data/lib/rubyapp/element.css.haml +3 -0
  19. data/lib/rubyapp/element.html.haml +2 -0
  20. data/lib/rubyapp/element.js.haml +3 -0
  21. data/lib/rubyapp/element.rb +100 -0
  22. data/lib/rubyapp/elements/button.css.haml +5 -0
  23. data/lib/rubyapp/elements/button.html.haml +3 -0
  24. data/lib/rubyapp/elements/button.rb +19 -0
  25. data/lib/rubyapp/elements/click.js.haml +9 -0
  26. data/lib/rubyapp/elements/click.rb +44 -0
  27. data/lib/rubyapp/elements/content.css.haml +12 -0
  28. data/lib/rubyapp/elements/content.html.haml +3 -0
  29. data/lib/rubyapp/elements/content.js.haml +9 -0
  30. data/lib/rubyapp/elements/content.rb +51 -0
  31. data/lib/rubyapp/elements/dialog.css.haml +30 -0
  32. data/lib/rubyapp/elements/dialog.html.haml +8 -0
  33. data/lib/rubyapp/elements/dialog.rb +58 -0
  34. data/lib/rubyapp/elements/dialogs/exception_dialog.css.haml +4 -0
  35. data/lib/rubyapp/elements/dialogs/exception_dialog.html.haml +8 -0
  36. data/lib/rubyapp/elements/dialogs/exception_dialog.rb +32 -0
  37. data/lib/rubyapp/elements/dialogs/message_dialog.html.haml +8 -0
  38. data/lib/rubyapp/elements/dialogs/message_dialog.rb +33 -0
  39. data/lib/rubyapp/elements/exception_element.css.haml +12 -0
  40. data/lib/rubyapp/elements/exception_element.html.haml +6 -0
  41. data/lib/rubyapp/elements/exception_element.rb +19 -0
  42. data/lib/rubyapp/elements/input.css.haml +5 -0
  43. data/lib/rubyapp/elements/input.html.haml +2 -0
  44. data/lib/rubyapp/elements/input.js.haml +8 -0
  45. data/lib/rubyapp/elements/input.rb +55 -0
  46. data/lib/rubyapp/elements/link.css.haml +5 -0
  47. data/lib/rubyapp/elements/link.html.haml +3 -0
  48. data/lib/rubyapp/elements/link.rb +19 -0
  49. data/lib/rubyapp/elements/list.css.haml +33 -0
  50. data/lib/rubyapp/elements/list.html.haml +11 -0
  51. data/lib/rubyapp/elements/list.js.haml +9 -0
  52. data/lib/rubyapp/elements/list.rb +60 -0
  53. data/lib/rubyapp/elements/mobile/ios/page.html.haml +36 -0
  54. data/lib/rubyapp/elements/mobile/ios/page.rb +29 -0
  55. data/lib/rubyapp/elements/navigation/breadcrumbs.css.haml +24 -0
  56. data/lib/rubyapp/elements/navigation/breadcrumbs.html.haml +16 -0
  57. data/lib/rubyapp/elements/navigation/breadcrumbs.js.haml +9 -0
  58. data/lib/rubyapp/elements/navigation/breadcrumbs.rb +49 -0
  59. data/lib/rubyapp/elements/navigation/page_link.css.haml +12 -0
  60. data/lib/rubyapp/elements/navigation/page_link.html.haml +8 -0
  61. data/lib/rubyapp/elements/navigation/page_link.js.haml +9 -0
  62. data/lib/rubyapp/elements/navigation/page_link.rb +56 -0
  63. data/lib/rubyapp/elements/navigation/page_menu.css.haml +36 -0
  64. data/lib/rubyapp/elements/navigation/page_menu.html.haml +11 -0
  65. data/lib/rubyapp/elements/navigation/page_menu.js.haml +9 -0
  66. data/lib/rubyapp/elements/navigation/page_menu.rb +57 -0
  67. data/lib/rubyapp/elements/page.css.haml +50 -0
  68. data/lib/rubyapp/elements/page.html.haml +30 -0
  69. data/lib/rubyapp/elements/page.js.haml +52 -0
  70. data/lib/rubyapp/elements/page.rb +60 -0
  71. data/lib/rubyapp/elements/pages/default_page.css.haml +4 -0
  72. data/lib/rubyapp/elements/pages/default_page.html.haml +5 -0
  73. data/lib/rubyapp/elements/pages/default_page.js.haml +4 -0
  74. data/lib/rubyapp/elements/pages/default_page.rb +33 -0
  75. data/lib/rubyapp/elements/pages/exception_page.css.haml +4 -0
  76. data/lib/rubyapp/elements/pages/exception_page.html.haml +3 -0
  77. data/lib/rubyapp/elements/pages/exception_page.rb +27 -0
  78. data/lib/rubyapp/elements/pages/test_pages/alphabet_list.html.haml +3 -0
  79. data/lib/rubyapp/elements/pages/test_pages/base_test_page.css.haml +17 -0
  80. data/lib/rubyapp/elements/pages/test_pages/base_test_page.html.haml +6 -0
  81. data/lib/rubyapp/elements/pages/test_pages/base_test_page.js.haml +4 -0
  82. data/lib/rubyapp/elements/pages/test_pages/base_test_page.rb +41 -0
  83. data/lib/rubyapp/elements/pages/test_pages/breadcrumbs_test_page.html.haml +4 -0
  84. data/lib/rubyapp/elements/pages/test_pages/breadcrumbs_test_page.rb +36 -0
  85. data/lib/rubyapp/elements/pages/test_pages/content_test_page.css.haml +5 -0
  86. data/lib/rubyapp/elements/pages/test_pages/content_test_page.html.haml +6 -0
  87. data/lib/rubyapp/elements/pages/test_pages/content_test_page.js.haml +4 -0
  88. data/lib/rubyapp/elements/pages/test_pages/content_test_page.rb +40 -0
  89. data/lib/rubyapp/elements/pages/test_pages/default_test_page.html.haml +3 -0
  90. data/lib/rubyapp/elements/pages/test_pages/default_test_page.rb +26 -0
  91. data/lib/rubyapp/elements/pages/test_pages/exception_content.html.haml +8 -0
  92. data/lib/rubyapp/elements/pages/test_pages/exception_test_page.css.haml +9 -0
  93. data/lib/rubyapp/elements/pages/test_pages/exception_test_page.html.haml +21 -0
  94. data/lib/rubyapp/elements/pages/test_pages/exception_test_page.rb +65 -0
  95. data/lib/rubyapp/elements/pages/test_pages/input_test_page.css.haml +5 -0
  96. data/lib/rubyapp/elements/pages/test_pages/input_test_page.html.haml +7 -0
  97. data/lib/rubyapp/elements/pages/test_pages/input_test_page.js.haml +4 -0
  98. data/lib/rubyapp/elements/pages/test_pages/input_test_page.rb +40 -0
  99. data/lib/rubyapp/elements/pages/test_pages/list_test_page.css.haml +5 -0
  100. data/lib/rubyapp/elements/pages/test_pages/list_test_page.html.haml +7 -0
  101. data/lib/rubyapp/elements/pages/test_pages/list_test_page.js.haml +4 -0
  102. data/lib/rubyapp/elements/pages/test_pages/list_test_page.rb +56 -0
  103. data/lib/rubyapp/mixins/duration.rb +18 -0
  104. data/lib/rubyapp/mixins/render.rb +69 -0
  105. data/lib/rubyapp/mixins/route.rb +40 -0
  106. data/lib/rubyapp/mixins/template.rb +38 -0
  107. data/lib/rubyapp/mixins/translate.rb +47 -0
  108. data/lib/rubyapp/rack/duration.rb +32 -0
  109. data/lib/rubyapp/rack/locale.rb +32 -0
  110. data/lib/rubyapp/rack/logger.rb +30 -0
  111. data/lib/rubyapp/rack/route.rb +97 -0
  112. data/lib/rubyapp/rack/session.rb +32 -0
  113. data/lib/rubyapp/resources/application.manifest +0 -0
  114. data/lib/rubyapp/resources/favicon.ico +0 -0
  115. data/lib/rubyapp/resources/mobile/ios/icon.png +0 -0
  116. data/lib/rubyapp/resources/mobile/ios/icon.psd +0 -0
  117. data/lib/rubyapp/resources/mobile/ios/start.png +0 -0
  118. data/lib/rubyapp/resources/mobile/ios/start.psd +0 -0
  119. data/lib/rubyapp/session.rb +44 -0
  120. data/lib/rubyapp/template/Gemfile +3 -0
  121. data/lib/rubyapp/template/Rakefile +25 -0
  122. data/lib/rubyapp/template/config.ru +22 -0
  123. data/lib/rubyapp/template/elements/pages/default_page.css.haml +13 -0
  124. data/lib/rubyapp/template/elements/pages/default_page.html.haml +6 -0
  125. data/lib/rubyapp/template/elements/pages/default_page.rb +22 -0
  126. data/lib/rubyapp/template/resources/application.manifest +0 -0
  127. data/lib/rubyapp/template/resources/favicon.ico +0 -0
  128. data/lib/rubyapp/template/resources/mobile/ios/icon.png +0 -0
  129. data/lib/rubyapp/template/resources/mobile/ios/start.png +0 -0
  130. data/lib/rubyapp/template/session.rb +17 -0
  131. data/lib/rubyapp/template/translations/en.yml +5 -0
  132. data/lib/rubyapp/translations/ar.yml +46 -0
  133. data/lib/rubyapp/translations/bg.yml +46 -0
  134. data/lib/rubyapp/translations/ca.yml +46 -0
  135. data/lib/rubyapp/translations/cs.yml +46 -0
  136. data/lib/rubyapp/translations/da.yml +46 -0
  137. data/lib/rubyapp/translations/de.yml +46 -0
  138. data/lib/rubyapp/translations/el.yml +46 -0
  139. data/lib/rubyapp/translations/en.bak +44 -0
  140. data/lib/rubyapp/translations/en.yml +48 -0
  141. data/lib/rubyapp/translations/es.yml +46 -0
  142. data/lib/rubyapp/translations/et.yml +46 -0
  143. data/lib/rubyapp/translations/fa.yml +46 -0
  144. data/lib/rubyapp/translations/fi.yml +46 -0
  145. data/lib/rubyapp/translations/fr.yml +46 -0
  146. data/lib/rubyapp/translations/gl.yml +46 -0
  147. data/lib/rubyapp/translations/hi.yml +46 -0
  148. data/lib/rubyapp/translations/hr.yml +46 -0
  149. data/lib/rubyapp/translations/ht.yml +46 -0
  150. data/lib/rubyapp/translations/hu.yml +46 -0
  151. data/lib/rubyapp/translations/id.yml +46 -0
  152. data/lib/rubyapp/translations/it.yml +46 -0
  153. data/lib/rubyapp/translations/iw.yml +46 -0
  154. data/lib/rubyapp/translations/ja.yml +46 -0
  155. data/lib/rubyapp/translations/ko.yml +46 -0
  156. data/lib/rubyapp/translations/lt.yml +46 -0
  157. data/lib/rubyapp/translations/lv.yml +46 -0
  158. data/lib/rubyapp/translations/mt.yml +46 -0
  159. data/lib/rubyapp/translations/nl.yml +46 -0
  160. data/lib/rubyapp/translations/no.yml +47 -0
  161. data/lib/rubyapp/translations/pl.yml +46 -0
  162. data/lib/rubyapp/translations/pt-PT.yml +46 -0
  163. data/lib/rubyapp/translations/ro.yml +46 -0
  164. data/lib/rubyapp/translations/ru.yml +46 -0
  165. data/lib/rubyapp/translations/sk.yml +46 -0
  166. data/lib/rubyapp/translations/sl.yml +46 -0
  167. data/lib/rubyapp/translations/sq.yml +46 -0
  168. data/lib/rubyapp/translations/sr.yml +46 -0
  169. data/lib/rubyapp/translations/sv.yml +46 -0
  170. data/lib/rubyapp/translations/th.yml +46 -0
  171. data/lib/rubyapp/translations/tl.yml +46 -0
  172. data/lib/rubyapp/translations/tr.yml +46 -0
  173. data/lib/rubyapp/translations/uk.yml +46 -0
  174. data/lib/rubyapp/translations/vi.yml +46 -0
  175. data/lib/rubyapp/translations/zh-CN.yml +46 -0
  176. data/lib/rubyapp/translations/zh-TW.yml +46 -0
  177. data/lib/rubyapp/translations/zh.yml +46 -0
  178. data/lib/rubyapp/version.rb +3 -0
  179. data/rubyapp.gemspec +36 -0
  180. data/spec/element_spec.rb +20 -0
  181. data/spec/mixins/duration_spec.rb +17 -0
  182. data/spec/mixins/render_spec.rb +190 -0
  183. data/spec/mixins/route_spec.rb +60 -0
  184. data/spec/mixins/template_spec.rb +78 -0
  185. data/spec/mixins/test_a.css.haml +3 -0
  186. data/spec/mixins/test_a.html.haml +3 -0
  187. data/spec/mixins/test_a.js.haml +3 -0
  188. data/spec/mixins/test_b.css.haml +4 -0
  189. data/spec/mixins/test_b.html.haml +3 -0
  190. data/spec/mixins/test_b.js.haml +4 -0
  191. data/spec/mixins/test_c.css.haml +4 -0
  192. data/spec/mixins/test_c.html.haml +2 -0
  193. data/spec/mixins/test_c.js.haml +4 -0
  194. data/spec/mixins/test_e.html.haml +2 -0
  195. data/spec/mixins/test_f.html.haml +2 -0
  196. data/spec/mixins/test_g.css.haml +4 -0
  197. metadata +540 -0
@@ -0,0 +1,4 @@
1
+ / RubyApp::Elements::Pages::TestPages::ExceptionTestPage
2
+ - content_for(:content) do
3
+ = @add_link.render(:html) do |element|
4
+ - element.content_for(:body, self.class.translate.add_link)
@@ -0,0 +1,36 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'rubyapp/elements/pages/test_pages/base_test_page'
9
+
10
+ class BreadcrumbsTestPage < RubyApp::Elements::Pages::TestPages::BaseTestPage
11
+
12
+ template_path(__FILE__)
13
+
14
+ def initialize
15
+ super
16
+
17
+ require 'rubyapp/elements/link'
18
+
19
+ @add_link = RubyApp::Elements::Link.new
20
+ @add_link.clicked do |element, event|
21
+ RubyApp::Session.request.logger.debug("RubyApp::Elements::Pages::TestPages::BreadcrumbsTestPage element=#{element.class.inspect} event=#{event.class.inspect}")
22
+ RubyApp::Session.current.pages << RubyApp::Elements::Pages::TestPages::BreadcrumbsTestPage.new
23
+ event.refresh
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,5 @@
1
+ :plain
2
+ /* RubyApp::Elements::Pages::TestPages::ContentTestPage */
3
+ = RubyApp::Elements::Content.render(:css)
4
+ = RubyApp::Elements::Dialogs::MessageDialog.render(:css)
5
+ = yield
@@ -0,0 +1,6 @@
1
+ / RubyApp::Elements::Pages::TestPages::ContentTestPage
2
+ - content_for(:content) do
3
+ = @content.render(:html) do |element|
4
+ - element.content_for(:body) do
5
+ :markdown
6
+ Click [this one](google) to go somewhere and [this other one](yahoo) to go somewhere else.
@@ -0,0 +1,4 @@
1
+ :plain
2
+ // RubyApp::Elements::Pages::TestPages::ContentTestPage
3
+ = RubyApp::Elements::Content.render(:js)
4
+ = yield
@@ -0,0 +1,40 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'rubyapp/elements/pages/test_pages/base_test_page'
9
+
10
+ class ContentTestPage < RubyApp::Elements::Pages::TestPages::BaseTestPage
11
+
12
+ template_path(__FILE__)
13
+
14
+ def initialize
15
+ super
16
+
17
+ require 'rubyapp/elements/content'
18
+ require 'rubyapp/elements/dialogs/message_dialog'
19
+
20
+ @content = RubyApp::Elements::Content.new
21
+ @content.navigated do |element, event|
22
+ @dialog = RubyApp::Elements::Dialogs::MessageDialog.new(self.class.translate.message_title,
23
+ self.class.translate.message_body(event.name))
24
+ @dialog.hidden do |element, event|
25
+ @dialog = nil
26
+ end
27
+ event.show_dialog(@dialog)
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,3 @@
1
+ / RubyApp::Elements::Pages::TestPages::DefaultTestPage
2
+ - content_for(:content) do
3
+ = self.class.translate.content
@@ -0,0 +1,26 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'rubyapp/elements/pages/test_pages/base_test_page'
9
+
10
+ class DefaultTestPage < RubyApp::Elements::Pages::TestPages::BaseTestPage
11
+
12
+ template_path(__FILE__)
13
+
14
+ def initialize
15
+ super
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,8 @@
1
+ / RubyApp::Elements::Pages::TestPages::ExceptionTestPage::ExceptionContent
2
+ - content_for(:body) do
3
+ - if ( @count ||= 1 ) > 5
4
+ - @count = 1
5
+ - raise self.class.translate.exception
6
+ - else
7
+ = self.class.translate.content(@count)
8
+ - @count += 1
@@ -0,0 +1,9 @@
1
+ :plain
2
+ /* RubyApp::Elements::Pages::TestPages::ExceptionTestPage */
3
+ body div.test
4
+ {
5
+ margin-bottom: 10px;
6
+ }
7
+ = RubyApp::Elements::Pages::TestPages::ExceptionTestPage::ExceptionContent.render(:css)
8
+ = RubyApp::Elements::Dialogs::ExceptionDialog.render(:css)
9
+ = yield
@@ -0,0 +1,21 @@
1
+ / RubyApp::Elements::Pages::TestPages::ExceptionTestPage
2
+ - content_for(:content) do
3
+ %div.test
4
+ = self.class.translate.refresh_instructions
5
+ %div
6
+ - if ( @count ||= 1 ) > 5
7
+ - @count = 1
8
+ - raise self.class.translate.refresh_exception
9
+ - else
10
+ = self.class.translate.refresh_content(@count)
11
+ - @count += 1
12
+ %div.test
13
+ = self.class.translate.update_instructions
14
+ = @content.render(:html)
15
+ = @update_link.render(:html) do |element|
16
+ - element.content_for(:body, self.class.translate.update_link)
17
+ %div.test
18
+ = self.class.translate.dialog_instructions
19
+ %div
20
+ = @dialog_link.render(:html) do |element|
21
+ - element.content_for(:body, self.class.translate.dialog_link)
@@ -0,0 +1,65 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'rubyapp/elements/pages/test_pages/base_test_page'
9
+
10
+ class ExceptionTestPage < RubyApp::Elements::Pages::TestPages::BaseTestPage
11
+ require 'rubyapp/elements/content'
12
+
13
+ class ExceptionContent < RubyApp::Elements::Content
14
+
15
+ template_path(__FILE__)
16
+
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ end
22
+
23
+ template_path(__FILE__)
24
+
25
+ def initialize
26
+ super
27
+
28
+ @content = RubyApp::Elements::Pages::TestPages::ExceptionTestPage::ExceptionContent.new
29
+
30
+ require 'rubyapp/elements/link'
31
+
32
+ @update_link = RubyApp::Elements::Link.new
33
+ @update_link.clicked do |element, event|
34
+ event.update(@content)
35
+ end
36
+
37
+ require 'rubyapp/elements/dialogs/exception_dialog'
38
+
39
+ @dialog_link = RubyApp::Elements::Link.new
40
+ @dialog_link.clicked do |element, event|
41
+ begin
42
+ raise "Dialog exception"
43
+ rescue Exception => exception
44
+ @dialog = RubyApp::Elements::Dialogs::ExceptionDialog.new(exception)
45
+ @dialog.shown do |element, event|
46
+ # do nothing
47
+ end
48
+ @dialog.hidden do |element, event|
49
+ @dialog = nil
50
+ end
51
+ event.show_dialog(@dialog)
52
+ end
53
+ end
54
+
55
+ end
56
+
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+ end
@@ -0,0 +1,5 @@
1
+ :plain
2
+ /* RubyApp::Elements::Pages::TestPages::InputTestPage */
3
+ = RubyApp::Elements::Input.render(:css)
4
+ = RubyApp::Elements::Dialogs::MessageDialog.render(:css)
5
+ = yield
@@ -0,0 +1,7 @@
1
+ / RubyApp::Elements::Pages::TestPages::InputTestPage
2
+ - content_for(:content) do
3
+ %div
4
+ = self.class.translate.content
5
+ %label{:for => @input.element_id}
6
+ = self.class.translate.label
7
+ = @input.render(:html)
@@ -0,0 +1,4 @@
1
+ :plain
2
+ // RubyApp::Elements::Pages::TestPages::InputTestPage
3
+ = RubyApp::Elements::Input.render(:js)
4
+ = yield
@@ -0,0 +1,40 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'rubyapp/elements/pages/test_pages/base_test_page'
9
+
10
+ class InputTestPage < RubyApp::Elements::Pages::TestPages::BaseTestPage
11
+
12
+ template_path(__FILE__)
13
+
14
+ def initialize
15
+ super
16
+
17
+ require 'rubyapp/elements/dialogs/message_dialog'
18
+ require 'rubyapp/elements/input'
19
+
20
+ @input = RubyApp::Elements::Input.new
21
+ @input.changed do |element, event|
22
+ @dialog = RubyApp::Elements::Dialogs::MessageDialog.new(self.class.translate.message_title,
23
+ self.class.translate.message_body(event.value))
24
+ @dialog.hidden do |element, event|
25
+ @dialog = nil
26
+ end
27
+ event.show_dialog(@dialog)
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,5 @@
1
+ :plain
2
+ /* RubyApp::Elements::Pages::TestPages::ListTestPage */
3
+ = RubyApp::Elements::List.render(:css)
4
+ = RubyApp::Elements::Dialogs::MessageDialog.render(:css)
5
+ = yield
@@ -0,0 +1,7 @@
1
+ / RubyApp::Elements::Pages::TestPages::InputTestPage
2
+ - content_for(:content) do
3
+ %div
4
+ = self.class.translate.content
5
+ = @list.render(:html) do |element|
6
+ - element.content_for(:item) do |_for, item|
7
+ #{item[:code]}, #{item[:description]}
@@ -0,0 +1,4 @@
1
+ :plain
2
+ // RubyApp::Elements::Pages::TestPages::ListTestPage
3
+ = RubyApp::Elements::List.render(:js)
4
+ = yield
@@ -0,0 +1,56 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'rubyapp/elements/pages/test_pages/base_test_page'
9
+
10
+ class ListTestPage < RubyApp::Elements::Pages::TestPages::BaseTestPage
11
+ require 'rubyapp/elements/list'
12
+
13
+ class AlphabetList < RubyApp::Elements::List
14
+
15
+ template_path(__FILE__)
16
+
17
+ def initialize
18
+ super
19
+ items << { :code => 'A', :description => 'Eh' }
20
+ items << { :code => 'B', :description => 'Bee' }
21
+ items << { :code => 'C', :description => 'See' }
22
+ items << { :code => 'D', :description => 'Dee' }
23
+ items << { :code => 'E', :description => 'Eee' }
24
+ items << { :code => 'F', :description => 'Ef' }
25
+ end
26
+
27
+ end
28
+
29
+ template_path(__FILE__)
30
+
31
+ def initialize
32
+ super
33
+
34
+ require 'rubyapp/elements/dialogs/message_dialog'
35
+
36
+ @list = RubyApp::Elements::Pages::TestPages::ListTestPage::AlphabetList.new
37
+ @list.selected do |element, event|
38
+ @dialog = RubyApp::Elements::Dialogs::MessageDialog.new(self.class.translate.message_title,
39
+ self.class.translate.message_body(event.item[:code], event.item[:description]))
40
+ @dialog.hidden do |element, event|
41
+ @dialog = nil
42
+ end
43
+ event.show_dialog(@dialog)
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,18 @@
1
+ module RubyApp
2
+
3
+ module Mixins
4
+
5
+ module Duration
6
+
7
+ def measure_duration
8
+ started = Time.now
9
+ yield
10
+ finished = Time.now
11
+ finished - started
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,69 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'haml'
5
+
6
+ Haml::Helpers::init_haml_helpers
7
+
8
+ module RubyApp
9
+
10
+ module Mixins
11
+
12
+ module Render
13
+ require 'rubyapp/mixins/template'
14
+
15
+ def self.extended(base)
16
+ base.extend RubyApp::Mixins::Template
17
+ end
18
+
19
+ def self.included(base)
20
+ base.extend RubyApp::Mixins::Template
21
+ end
22
+
23
+ def content_for(name, value = nil, &block)
24
+ ( @_content ||= {} )[Thread.current] ||= {}
25
+ if block_given?
26
+ @_content[Thread.current][name] = block
27
+ elsif value
28
+ @_content[Thread.current][name] = value
29
+ else
30
+ @_content[Thread.current][name]
31
+ end
32
+ end
33
+
34
+ def render(format)
35
+
36
+ begin
37
+
38
+ yield(self) if block_given?
39
+
40
+ templates = self.is_a?(Class) ? self.get_templates(format) : self.class.get_templates(format)
41
+ templates.each_with_index do |template, index|
42
+ content = Haml::Engine.new(File.read(template), :filename => template).render(self) do |*arguments|
43
+ if arguments.empty?
44
+ index == 0 ? nil : self.content_for(templates[index - 1])
45
+ else
46
+ _content = self.content_for(arguments[0])
47
+ if Haml::Helpers.block_is_haml?(_content)
48
+ Haml::Helpers.capture_haml(arguments, &_content)
49
+ else
50
+ _content
51
+ end
52
+ end
53
+ end
54
+ self.content_for(template, content)
55
+ end
56
+
57
+ self.content_for(templates.last)
58
+
59
+ ensure
60
+ @_content.delete(Thread.current) if @_content
61
+ end
62
+
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+
69
+ end