RubyApp 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. data/.gitignore +3 -3
  2. data/Gemfile.lock +1 -1
  3. data/features/default.feature +2 -2
  4. data/features/elements/button.feature +9 -0
  5. data/features/{dialog.feature → elements/dialog.feature} +19 -13
  6. data/features/elements/input.feature +20 -0
  7. data/features/elements/link.feature +9 -0
  8. data/features/elements/list.feature +19 -0
  9. data/features/elements/markdown.feature +9 -0
  10. data/features/elements/page.feature +10 -0
  11. data/features/elements/pages/exception_page.feature +10 -0
  12. data/features/step_definitions/default_macros.rb +1 -1
  13. data/features/step_definitions/default_steps.rb +7 -3
  14. data/features/support/env.rb +1 -1
  15. data/lib/ruby_app/application.rb +16 -41
  16. data/lib/ruby_app/configuration.rb +9 -17
  17. data/lib/ruby_app/element.rb +27 -23
  18. data/lib/ruby_app/elements/base/base_page.js.haml +1 -1
  19. data/lib/ruby_app/elements/base/base_page.rb +5 -5
  20. data/lib/ruby_app/elements/list.js.haml +1 -1
  21. data/lib/ruby_app/elements/list.rb +5 -5
  22. data/lib/ruby_app/elements/lists/select.js.haml +1 -1
  23. data/lib/ruby_app/elements/lists/select.rb +1 -3
  24. data/lib/ruby_app/elements/markdown.js.haml +1 -1
  25. data/lib/ruby_app/elements/markdown.rb +5 -5
  26. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.js.haml +1 -1
  27. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.rb +3 -3
  28. data/lib/ruby_app/elements/navigation/page_link.js.haml +1 -1
  29. data/lib/ruby_app/elements/navigation/page_link.rb +3 -3
  30. data/lib/ruby_app/elements/navigation/page_menu.js.haml +1 -1
  31. data/lib/ruby_app/elements/navigation/page_menu.rb +3 -3
  32. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb +2 -2
  33. data/lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb +2 -2
  34. data/lib/ruby_app/elements/pages/authentication/open_id/google_authentication_page.rb +1 -1
  35. data/lib/ruby_app/elements/pages/authentication/open_id/my_open_id_authentication_page.rb +1 -1
  36. data/lib/ruby_app/elements/pages/authentication/open_id/yahoo_authentication_page.rb +1 -1
  37. data/lib/ruby_app/elements/pages/default_page.rb +1 -1
  38. data/lib/ruby_app/elements/pages/exception_page.html.haml +0 -2
  39. data/lib/ruby_app/elements/pages/settings_page.rb +2 -2
  40. data/lib/ruby_app/elements/pages/test_pages/button_test_page.css.haml +3 -0
  41. data/lib/ruby_app/elements/pages/test_pages/button_test_page.html.haml +7 -0
  42. data/lib/ruby_app/elements/pages/test_pages/button_test_page.js.haml +3 -0
  43. data/lib/ruby_app/elements/pages/test_pages/button_test_page.rb +39 -0
  44. data/lib/ruby_app/elements/pages/test_pages/default_test_page.rb +8 -15
  45. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.rb +1 -1
  46. data/lib/ruby_app/elements/pages/test_pages/exception_test_page.html.haml +5 -0
  47. data/lib/ruby_app/elements/pages/test_pages/exception_test_page.rb +33 -0
  48. data/lib/ruby_app/elements/pages/test_pages/input_test_page.css.haml +1 -0
  49. data/lib/ruby_app/elements/pages/test_pages/input_test_page.html.haml +3 -0
  50. data/lib/ruby_app/elements/pages/test_pages/input_test_page.js.haml +1 -0
  51. data/lib/ruby_app/elements/pages/test_pages/input_test_page.rb +2 -0
  52. data/lib/ruby_app/elements/pages/test_pages/link_test_page.css.haml +3 -0
  53. data/lib/ruby_app/elements/pages/test_pages/link_test_page.html.haml +7 -0
  54. data/lib/ruby_app/elements/pages/test_pages/link_test_page.js.haml +3 -0
  55. data/lib/ruby_app/elements/pages/test_pages/link_test_page.rb +39 -0
  56. data/lib/ruby_app/elements/pages/test_pages/linked_test_page.css.haml +2 -0
  57. data/lib/ruby_app/elements/pages/test_pages/linked_test_page.html.haml +5 -0
  58. data/lib/ruby_app/elements/pages/test_pages/linked_test_page.js.haml +2 -0
  59. data/lib/ruby_app/elements/pages/test_pages/linked_test_page.rb +30 -0
  60. data/lib/ruby_app/elements/pages/test_pages/list_test_page.css.haml +1 -0
  61. data/lib/ruby_app/elements/pages/test_pages/list_test_page.html.haml +2 -1
  62. data/lib/ruby_app/elements/pages/test_pages/list_test_page.js.haml +1 -0
  63. data/lib/ruby_app/elements/pages/test_pages/list_test_page.rb +16 -11
  64. data/lib/ruby_app/elements/pages/test_pages/markdown_test_page.css.haml +2 -0
  65. data/lib/ruby_app/elements/pages/test_pages/markdown_test_page.html.haml +5 -0
  66. data/lib/ruby_app/elements/pages/test_pages/markdown_test_page.js.haml +2 -0
  67. data/lib/ruby_app/elements/pages/test_pages/markdown_test_page.rb +38 -0
  68. data/lib/ruby_app/elements/pages/test_pages/select_test_page.rb +44 -0
  69. data/lib/ruby_app/elements/pages/test_pages/test_page.html.haml +14 -0
  70. data/lib/ruby_app/elements/pages/test_pages/test_page.rb +42 -0
  71. data/lib/ruby_app/language.rb +9 -12
  72. data/lib/ruby_app/log.rb +19 -9
  73. data/lib/ruby_app/mixins/{configuration.rb → configure_mixin.rb} +2 -2
  74. data/lib/ruby_app/mixins/{delegate.rb → delegate_mixin.rb} +1 -1
  75. data/lib/ruby_app/mixins/{hash.rb → hash_mixin.rb} +5 -1
  76. data/lib/ruby_app/mixins/{render.rb → render_mixin.rb} +2 -2
  77. data/lib/ruby_app/mixins/{route.rb → route_mixin.rb} +5 -5
  78. data/lib/ruby_app/mixins/{template.rb → template_mixin.rb} +11 -11
  79. data/lib/ruby_app/mixins/{translate.rb → translate_mixin.rb} +1 -1
  80. data/lib/ruby_app/rack/application.rb +3 -3
  81. data/lib/ruby_app/rack/route.rb +14 -30
  82. data/lib/ruby_app/request.rb +36 -13
  83. data/lib/ruby_app/session.rb +17 -23
  84. data/lib/ruby_app/translations/en.yml +77 -15
  85. data/lib/ruby_app/version.rb +1 -1
  86. data/rakefile +1 -12
  87. data/spec/application_spec.rb +25 -0
  88. data/spec/configuration_spec.rb +25 -0
  89. data/spec/element_spec.rb +54 -5
  90. data/spec/elements/navigation/breadcrumbs_spec.rb +17 -25
  91. data/spec/elements/page_spec.rb +2 -13
  92. data/spec/language_spec.rb +25 -0
  93. data/spec/log_spec.rb +25 -0
  94. data/spec/mixins/configure_mixin_spec.rb +24 -0
  95. data/spec/mixins/delegate_mixin_spec.rb +28 -0
  96. data/spec/mixins/hash_mixin_spec.rb +39 -0
  97. data/spec/mixins/render_mixin_spec.rb +127 -0
  98. data/spec/mixins/route_mixin_spec.rb +60 -0
  99. data/spec/mixins/{template_spec.rb → template_mixin_spec.rb} +3 -3
  100. data/spec/mixins/test_a.css.haml +4 -3
  101. data/spec/mixins/test_a.html.haml +0 -1
  102. data/spec/mixins/test_a.js.haml +4 -3
  103. data/spec/mixins/test_b.css.haml +4 -4
  104. data/spec/mixins/test_b.js.haml +2 -2
  105. data/spec/mixins/test_c.css.haml +4 -4
  106. data/spec/mixins/test_c.js.haml +2 -2
  107. data/spec/mixins/translate_mixin_spec.rb +25 -0
  108. data/spec/request_spec.rb +25 -0
  109. data/spec/session_spec.rb +39 -0
  110. data/spec/spec_helper.rb +7 -0
  111. data/spec/support/shared.rb +19 -5
  112. metadata +75 -38
  113. data/features/breadcrumbs.feature +0 -11
  114. data/features/content.feature +0 -16
  115. data/features/exception.feature +0 -53
  116. data/features/input.feature +0 -13
  117. data/features/list.feature +0 -12
  118. data/features/month.feature +0 -14
  119. data/spec/mixins/render_spec.rb +0 -191
  120. data/spec/mixins/route_spec.rb +0 -60
  121. data/spec/mixins/test_e.html.haml +0 -2
  122. data/spec/mixins/test_f.html.haml +0 -2
  123. data/spec/mixins/test_g.css.haml +0 -4
@@ -22,7 +22,7 @@ module RubyApp
22
22
  super
23
23
 
24
24
  @markdown = RubyApp::Elements::Markdown.new
25
- @markdown.navigated do |element, event|
25
+ @markdown.clicked do |element, event|
26
26
  case event.name
27
27
  when 'do_busy_dialog'
28
28
  RubyApp::Session.show(event, RubyApp::Elements::Dialogs::BusyDialog.new(self.translate.busy_dialog.message)) do |_event|
@@ -0,0 +1,5 @@
1
+ - self.content_for(:content) do
2
+ /
3
+ #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
@@ -0,0 +1,33 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'ruby_app/elements/markdown'
9
+ require 'ruby_app/elements/pages/blank_page'
10
+
11
+ class ExceptionTestPage < RubyApp::Elements::Pages::BlankPage
12
+
13
+ template_path(:all, File.dirname(__FILE__))
14
+
15
+ def initialize
16
+ super
17
+ @markdown = RubyApp::Elements::Markdown.new
18
+ end
19
+
20
+ def render(format)
21
+ raise self.translate.exception
22
+ super(format)
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -1,4 +1,5 @@
1
1
  = RubyApp::Elements::Dialogs::MessageDialog.render(:css)
2
2
  = RubyApp::Elements::Input.render(:css)
3
3
  = RubyApp::Elements::Inputs::DurationInput.render(:css)
4
+ = RubyApp::Elements::Markdown.render(:css)
4
5
  = yield
@@ -1,9 +1,12 @@
1
1
  - self.content_for(:content) do
2
2
  /
3
3
  #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
4
6
  %label{:for => @input.element_id}
5
7
  = self.translate.label.input
6
8
  = @input.render(:html)
9
+ %br
7
10
  %label{:for => @duration_input.element_id}
8
11
  = self.translate.label.duration_input
9
12
  = @duration_input.render(:html)
@@ -1,4 +1,5 @@
1
1
  = RubyApp::Elements::Dialogs::MessageDialog.render(:js)
2
2
  = RubyApp::Elements::Input.render(:js)
3
3
  = RubyApp::Elements::Inputs::DurationInput.render(:js)
4
+ = RubyApp::Elements::Markdown.render(:js)
4
5
  = yield
@@ -19,6 +19,8 @@ module RubyApp
19
19
  def initialize
20
20
  super
21
21
 
22
+ @markdown = RubyApp::Elements::Markdown.new
23
+
22
24
  @input = RubyApp::Elements::Input.new
23
25
  @input.changed do |element, event|
24
26
  RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
@@ -0,0 +1,3 @@
1
+ = RubyApp::Elements::Link.render(:css)
2
+ = RubyApp::Elements::Markdown.render(:css)
3
+ = yield
@@ -0,0 +1,7 @@
1
+ - self.content_for(:content) do
2
+ /
3
+ #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
6
+ = @link.render(:html) do |element|
7
+ - element.content_for(:body, self.translate.link.body)
@@ -0,0 +1,3 @@
1
+ = RubyApp::Elements::Link.render(:js)
2
+ = RubyApp::Elements::Markdown.render(:js)
3
+ = yield
@@ -0,0 +1,39 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'ruby_app/elements/link'
9
+ require 'ruby_app/elements/markdown'
10
+ require 'ruby_app/elements/pages/blank_page'
11
+ require 'ruby_app/elements/pages/test_pages/linked_test_page'
12
+ require 'ruby_app/session'
13
+
14
+ class LinkTestPage < RubyApp::Elements::Pages::BlankPage
15
+
16
+ template_path(:all, File.dirname(__FILE__))
17
+
18
+ def initialize
19
+ super
20
+
21
+ @markdown = RubyApp::Elements::Markdown.new
22
+
23
+ @link = RubyApp::Elements::Link.new
24
+ @link.clicked do |element, event|
25
+ RubyApp::Session.pages.push(RubyApp::Elements::Pages::TestPages::LinkedTestPage.new)
26
+ event.refresh
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,2 @@
1
+ = RubyApp::Elements::Markdown.render(:css)
2
+ = yield
@@ -0,0 +1,5 @@
1
+ - self.content_for(:content) do
2
+ /
3
+ #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
@@ -0,0 +1,2 @@
1
+ = RubyApp::Elements::Markdown.render(:js)
2
+ = yield
@@ -0,0 +1,30 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'ruby_app/elements/markdown'
9
+ require 'ruby_app/elements/pages/blank_page'
10
+
11
+ class LinkedTestPage < RubyApp::Elements::Pages::BlankPage
12
+
13
+ template_path(:all, File.dirname(__FILE__))
14
+
15
+ def initialize
16
+ super
17
+
18
+ @markdown = RubyApp::Elements::Markdown.new
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -1,4 +1,5 @@
1
1
  = RubyApp::Elements::Dialogs::MessageDialog.render(:css)
2
2
  = RubyApp::Elements::List.render(:css)
3
3
  = RubyApp::Elements::Lists::Select.render(:css)
4
+ = RubyApp::Elements::Markdown.render(:css)
4
5
  = yield
@@ -1,6 +1,7 @@
1
1
  - self.content_for(:content) do
2
2
  /
3
3
  #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
4
6
  = @list.render(:html)
5
- %br
6
7
  = @select.render(:html)
@@ -1,4 +1,5 @@
1
1
  = RubyApp::Elements::Dialogs::MessageDialog.render(:js)
2
2
  = RubyApp::Elements::List.render(:js)
3
3
  = RubyApp::Elements::Lists::Select.render(:js)
4
+ = RubyApp::Elements::Markdown.render(:js)
4
5
  = yield
@@ -6,6 +6,7 @@ module RubyApp
6
6
 
7
7
  module TestPages
8
8
  require 'ruby_app/elements/dialogs/message_dialog'
9
+ require 'ruby_app/elements/markdown'
9
10
  require 'ruby_app/elements/pages/blank_page'
10
11
  require 'ruby_app/elements/list'
11
12
  require 'ruby_app/elements/lists/select'
@@ -18,26 +19,30 @@ module RubyApp
18
19
  def initialize
19
20
  super
20
21
 
22
+ @markdown = RubyApp::Elements::Markdown.new
23
+
21
24
  @list = RubyApp::Elements::List.new
22
- @list.selected do |element, event|
25
+ @list.items += [ 'Item 01',
26
+ 'Item 02',
27
+ 'Item 03',
28
+ 'Item 04',
29
+ 'Item 05' ]
30
+ @list.clicked do |element, event|
23
31
  RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
24
32
  self.translate.message_dialog.message.message(event.item)))
25
33
  end
26
34
 
27
- @list.items += [ 'Item 01',
28
- 'Item 02',
29
- 'Item 03' ]
30
-
31
35
  @select = RubyApp::Elements::Lists::Select.new
32
- @select.selected do |element, event|
36
+ @select.items += [ 'Item 11',
37
+ 'Item 12',
38
+ 'Item 13',
39
+ 'Item 14',
40
+ 'Item 15' ]
41
+ @select.clicked do |element, event|
33
42
  RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
34
- self.translate.message_dialog.message.message(event.item)))
43
+ self.translate.message_dialog.message.message(@select.selected_item)))
35
44
  end
36
45
 
37
- @select.items += [ 'Item 04',
38
- 'Item 05',
39
- 'Item 06' ]
40
-
41
46
  end
42
47
 
43
48
  end
@@ -0,0 +1,2 @@
1
+ = RubyApp::Elements::Markdown.render(:css)
2
+ = yield
@@ -0,0 +1,5 @@
1
+ - self.content_for(:content) do
2
+ /
3
+ #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
@@ -0,0 +1,2 @@
1
+ = RubyApp::Elements::Markdown.render(:js)
2
+ = yield
@@ -0,0 +1,38 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'ruby_app/elements/markdown'
9
+ require 'ruby_app/elements/pages/blank_page'
10
+ require 'ruby_app/elements/pages/test_pages/linked_test_page'
11
+ require 'ruby_app/session'
12
+
13
+ class MarkdownTestPage < RubyApp::Elements::Pages::BlankPage
14
+
15
+ template_path(:all, File.dirname(__FILE__))
16
+
17
+ def initialize
18
+ super
19
+
20
+ @markdown = RubyApp::Elements::Markdown.new
21
+ @markdown.clicked do |element, event|
22
+ if event.name == "go"
23
+ RubyApp::Session.pages.push(RubyApp::Elements::Pages::TestPages::LinkedTestPage.new)
24
+ event.refresh
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,44 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'ruby_app/elements/dialogs/message_dialog'
9
+ require 'ruby_app/elements/markdown'
10
+ require 'ruby_app/elements/pages/blank_page'
11
+ require 'ruby_app/elements/lists/select'
12
+ require 'ruby_app/session'
13
+
14
+ class SelectTestPage < RubyApp::Elements::Pages::BlankPage
15
+
16
+ template_path(:all, File.dirname(__FILE__))
17
+
18
+ def initialize
19
+ super
20
+
21
+ @markdown = RubyApp::Elements::Markdown.new
22
+
23
+ @select = RubyApp::Elements::Select.new
24
+ @select.items += [ 'Item 01',
25
+ 'Item 02',
26
+ 'Item 03',
27
+ 'Item 04',
28
+ 'Item 05' ]
29
+ @select.clicked do |element, event|
30
+ RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
31
+ self.translate.message_dialog.message.message(@select.selected_item)))
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,14 @@
1
+ - self.content_for(:content) do
2
+ /
3
+ #{__FILE__}
4
+ = @markdown.render(:html) do |element|
5
+ - element.content_for(:body, self.translate.content.body)
6
+ %ul
7
+ %li#rendered
8
+ = self.translate.rendered
9
+ %li#loaded
10
+ = self.translate.not_loaded
11
+ %li#triggered
12
+ = self.translate.not_triggered
13
+ %li#unloaded
14
+ = self.translate.not_unloaded
@@ -0,0 +1,42 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module TestPages
8
+ require 'ruby_app/elements/markdown'
9
+ require 'ruby_app/elements/pages/blank_page'
10
+
11
+ class TestPage < RubyApp::Elements::Pages::BlankPage
12
+
13
+ template_path(:all, File.dirname(__FILE__))
14
+
15
+ def initialize
16
+ super
17
+
18
+ self.interval = 2
19
+
20
+ @markdown = RubyApp::Elements::Markdown.new
21
+
22
+ self.loaded do |element, event|
23
+ event.update_text('li#loaded', self.translate.loaded)
24
+ end
25
+ self.triggered do |element, event|
26
+ event.update_text('li#triggered', self.translate.triggered)
27
+ end
28
+ self.unloaded do |element, event|
29
+ event.update_text('li#unloaded', self.translate.unloaded)
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -4,32 +4,29 @@ require 'bundler/setup'
4
4
  require 'r18n-core'
5
5
 
6
6
  module RubyApp
7
- require 'ruby_app/mixins/delegate'
7
+ require 'ruby_app/application'
8
+ require 'ruby_app/mixins/delegate_mixin'
9
+ require 'ruby_app/request'
8
10
 
9
11
  class Language < R18n::I18n
10
- extend RubyApp::Mixins::Delegate
11
-
12
- def reload
13
- R18n.get.reload!
14
- end
12
+ extend RubyApp::Mixins::DelegateMixin
15
13
 
16
14
  def self.get
17
15
  R18n.get
18
16
  end
19
17
 
20
- def self.load(language, translations_paths)
21
- language = RubyApp::Language.new(language, translations_paths)
22
- R18n.thread_set(language)
18
+ def self.load!
19
+ R18n.thread_set(RubyApp::Language.new(RubyApp::Request.language, RubyApp::Application.options.translations_paths))
23
20
  if block_given?
24
21
  begin
25
- yield language
22
+ yield
26
23
  ensure
27
- R18n.thread_set(nil)
24
+ self.unload!
28
25
  end
29
26
  end
30
27
  end
31
28
 
32
- def self.unload
29
+ def self.unload!
33
30
  R18n.thread_set(nil)
34
31
  end
35
32