RubyApp 0.0.8 → 0.0.9

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 (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