RubyApp 0.0.6
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.
- data/.gitignore +13 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +0 -0
- data/bin/console.rb +8 -0
- data/bin/ruby_app +168 -0
- data/features/breadcrumbs.feature +11 -0
- data/features/content.feature +16 -0
- data/features/default.feature +5 -0
- data/features/dialog.feature +56 -0
- data/features/exception.feature +53 -0
- data/features/input.feature +13 -0
- data/features/list.feature +12 -0
- data/features/month.feature +14 -0
- data/features/step_definitions/default_macros.rb +16 -0
- data/features/step_definitions/default_steps.rb +36 -0
- data/features/support/env.rb +12 -0
- data/lib/ruby_app.rb +1 -0
- data/lib/ruby_app/application.rb +72 -0
- data/lib/ruby_app/config.ru +27 -0
- data/lib/ruby_app/config.yml +15 -0
- data/lib/ruby_app/configuration.rb +44 -0
- data/lib/ruby_app/element.rb +120 -0
- data/lib/ruby_app/elements/base/base_dialog.css.haml +9 -0
- data/lib/ruby_app/elements/base/base_dialog.html.haml +4 -0
- data/lib/ruby_app/elements/base/base_dialog.rb +64 -0
- data/lib/ruby_app/elements/base/base_page.css.haml +13 -0
- data/lib/ruby_app/elements/base/base_page.html.haml +20 -0
- data/lib/ruby_app/elements/base/base_page.js.haml +97 -0
- data/lib/ruby_app/elements/base/base_page.rb +80 -0
- data/lib/ruby_app/elements/button.html.haml +4 -0
- data/lib/ruby_app/elements/button.rb +19 -0
- data/lib/ruby_app/elements/calendars/base/base_month.css.haml +10 -0
- data/lib/ruby_app/elements/calendars/base/base_month.html.haml +42 -0
- data/lib/ruby_app/elements/calendars/base/base_month.js.haml +18 -0
- data/lib/ruby_app/elements/calendars/base/base_month.rb +101 -0
- data/lib/ruby_app/elements/calendars/month.rb +27 -0
- data/lib/ruby_app/elements/click.js.haml +10 -0
- data/lib/ruby_app/elements/click.rb +44 -0
- data/lib/ruby_app/elements/dialog.rb +23 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.css.haml +9 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.html.haml +7 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.rb +27 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.css.haml +11 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.html.haml +6 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.js.haml +2 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.rb +33 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.css.haml +15 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.js.haml +2 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.rb +40 -0
- data/lib/ruby_app/elements/dialogs/blank_dialog.html.haml +9 -0
- data/lib/ruby_app/elements/dialogs/blank_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/busy_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.css.haml +19 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.html.haml +18 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.js.haml +3 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.rb +52 -0
- data/lib/ruby_app/elements/dialogs/close_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/confirmation_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/confirmation_dialog.rb +26 -0
- data/lib/ruby_app/elements/dialogs/exception_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/exception_dialog.rb +23 -0
- data/lib/ruby_app/elements/dialogs/message_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/message_dialog.rb +26 -0
- data/lib/ruby_app/elements/dialogs/yes_no_dialog.rb +22 -0
- data/lib/ruby_app/elements/exception_element.html.haml +7 -0
- data/lib/ruby_app/elements/exception_element.rb +19 -0
- data/lib/ruby_app/elements/input.html.haml +3 -0
- data/lib/ruby_app/elements/input.js.haml +9 -0
- data/lib/ruby_app/elements/input.rb +54 -0
- data/lib/ruby_app/elements/inputs/duration_input.rb +46 -0
- data/lib/ruby_app/elements/link.html.haml +4 -0
- data/lib/ruby_app/elements/link.rb +19 -0
- data/lib/ruby_app/elements/list.html.haml +9 -0
- data/lib/ruby_app/elements/list.js.haml +10 -0
- data/lib/ruby_app/elements/list.rb +55 -0
- data/lib/ruby_app/elements/lists/select.html.haml +14 -0
- data/lib/ruby_app/elements/lists/select.js.haml +10 -0
- data/lib/ruby_app/elements/lists/select.rb +47 -0
- data/lib/ruby_app/elements/markdown.html.haml +5 -0
- data/lib/ruby_app/elements/markdown.js.haml +10 -0
- data/lib/ruby_app/elements/markdown.rb +51 -0
- data/lib/ruby_app/elements/navigation/back_button.html.haml +2 -0
- data/lib/ruby_app/elements/navigation/back_button.rb +29 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.html.haml +17 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.rb +58 -0
- data/lib/ruby_app/elements/navigation/breadcrumbs.rb +22 -0
- data/lib/ruby_app/elements/navigation/page_link.html.haml +9 -0
- data/lib/ruby_app/elements/navigation/page_link.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/page_link.rb +56 -0
- data/lib/ruby_app/elements/navigation/page_menu.html.haml +12 -0
- data/lib/ruby_app/elements/navigation/page_menu.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/page_menu.rb +57 -0
- data/lib/ruby_app/elements/page.rb +21 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb +77 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb +52 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/google_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/my_open_id_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/sreg_authentication_page.rb +52 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/yahoo_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.css.haml +18 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.html.haml +11 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.js.haml +3 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.rb +36 -0
- data/lib/ruby_app/elements/pages/blank_page.rb +22 -0
- data/lib/ruby_app/elements/pages/default_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/default_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/default_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/default_page.rb +34 -0
- data/lib/ruby_app/elements/pages/exception_page.html.haml +8 -0
- data/lib/ruby_app/elements/pages/exception_page.rb +23 -0
- data/lib/ruby_app/elements/pages/quit_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/quit_page.rb +24 -0
- data/lib/ruby_app/elements/pages/settings_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/settings_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/settings_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/settings_page.rb +37 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.rb +55 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.css.haml +7 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.js.haml +7 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.rb +66 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.html.haml +9 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.rb +44 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.html.haml +6 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.rb +51 -0
- data/lib/ruby_app/language.rb +44 -0
- data/lib/ruby_app/log.rb +33 -0
- data/lib/ruby_app/mixins/configuration.rb +31 -0
- data/lib/ruby_app/mixins/delegate.rb +15 -0
- data/lib/ruby_app/mixins/hash.rb +19 -0
- data/lib/ruby_app/mixins/render.rb +76 -0
- data/lib/ruby_app/mixins/route.rb +39 -0
- data/lib/ruby_app/mixins/template.rb +38 -0
- data/lib/ruby_app/mixins/translate.rb +35 -0
- data/lib/ruby_app/rack/application.rb +24 -0
- data/lib/ruby_app/rack/route.rb +128 -0
- data/lib/ruby_app/request.rb +54 -0
- data/lib/ruby_app/resources/elements/dialogs/base/base_busy_dialog.gif +0 -0
- data/lib/ruby_app/resources/favicon.ico +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.psd +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/manifest +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/start.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/start.psd +0 -0
- data/lib/ruby_app/resources/themes/mobile/lists/select.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/lists/select.psd +0 -0
- data/lib/ruby_app/session.rb +101 -0
- data/lib/ruby_app/templates/application/Gemfile +3 -0
- data/lib/ruby_app/templates/application/config.ru +42 -0
- data/lib/ruby_app/templates/application/config.yml +1 -0
- data/lib/ruby_app/templates/application/console.rb +16 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/application.rb +16 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.css.haml +9 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.html.haml +7 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.rb +26 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/session.rb +17 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/version.rb +4 -0
- data/lib/ruby_app/templates/application/spec/spec_helper.rb +1 -0
- data/lib/ruby_app/templates/application/spec/support/shared.rb +18 -0
- data/lib/ruby_app/templates/application/translations/en.yml +5 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.css.haml +3 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.html.haml +4 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.js.haml +3 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.rb +14 -0
- data/lib/ruby_app/themes/mobile.rb +37 -0
- data/lib/ruby_app/themes/mobile/base/base_page.html.haml +30 -0
- data/lib/ruby_app/themes/mobile/calendars/month.css.haml +21 -0
- data/lib/ruby_app/themes/mobile/colors.sass +24 -0
- data/lib/ruby_app/themes/mobile/dialog.css.haml +17 -0
- data/lib/ruby_app/themes/mobile/dialogs/blank_dialog.css.haml +12 -0
- data/lib/ruby_app/themes/mobile/dialogs/busy_dialog.css.haml +9 -0
- data/lib/ruby_app/themes/mobile/dialogs/close_dialog.css.haml +12 -0
- data/lib/ruby_app/themes/mobile/dialogs/yes_no_dialog.css.haml +14 -0
- data/lib/ruby_app/themes/mobile/list.css.haml +25 -0
- data/lib/ruby_app/themes/mobile/lists/select.css.haml +27 -0
- data/lib/ruby_app/themes/mobile/markdown.css.haml +11 -0
- data/lib/ruby_app/themes/mobile/navigation/base/base_breadcrumbs.html.haml +7 -0
- data/lib/ruby_app/themes/mobile/page.css.haml +18 -0
- data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.css.haml +18 -0
- data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.html.haml +13 -0
- data/lib/ruby_app/themes/mobile/pages/blank_page.css.haml +19 -0
- data/lib/ruby_app/translations/en.yml +125 -0
- data/lib/ruby_app/version.rb +4 -0
- data/rakefile +62 -0
- data/ruby_app.gemspec +40 -0
- data/spec/element_spec.rb +22 -0
- data/spec/elements/navigation/breadcrumbs_spec.rb +69 -0
- data/spec/elements/page_spec.rb +31 -0
- data/spec/mixins/render_spec.rb +182 -0
- data/spec/mixins/route_spec.rb +60 -0
- data/spec/mixins/template_spec.rb +78 -0
- data/spec/mixins/test_a.css.haml +3 -0
- data/spec/mixins/test_a.html.haml +3 -0
- data/spec/mixins/test_a.js.haml +3 -0
- data/spec/mixins/test_b.css.haml +4 -0
- data/spec/mixins/test_b.html.haml +3 -0
- data/spec/mixins/test_b.js.haml +4 -0
- data/spec/mixins/test_c.css.haml +4 -0
- data/spec/mixins/test_c.html.haml +2 -0
- data/spec/mixins/test_c.js.haml +4 -0
- data/spec/mixins/test_e.html.haml +2 -0
- data/spec/mixins/test_f.html.haml +2 -0
- data/spec/mixins/test_g.css.haml +4 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/shared.rb +15 -0
- metadata +654 -0
@@ -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/input'
|
11
|
+
require 'ruby_app/elements/inputs/duration_input'
|
12
|
+
require 'ruby_app/elements/pages/blank_page'
|
13
|
+
require 'ruby_app/session'
|
14
|
+
|
15
|
+
class InputTestPage < RubyApp::Elements::Pages::BlankPage
|
16
|
+
|
17
|
+
template_path(:all, File.dirname(__FILE__))
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
super
|
21
|
+
|
22
|
+
@input = RubyApp::Elements::Input.new
|
23
|
+
@input.changed do |element, event|
|
24
|
+
RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
|
25
|
+
self.translate.message_dialog.message.message(@input.value)))
|
26
|
+
end
|
27
|
+
|
28
|
+
@duration_input = RubyApp::Elements::Inputs::DurationInput.new
|
29
|
+
@duration_input.changed 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(@duration_input.duration)))
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,51 @@
|
|
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/pages/blank_page'
|
10
|
+
require 'ruby_app/elements/list'
|
11
|
+
require 'ruby_app/elements/lists/select'
|
12
|
+
require 'ruby_app/session'
|
13
|
+
|
14
|
+
class ListTestPage < RubyApp::Elements::Pages::BlankPage
|
15
|
+
|
16
|
+
template_path(:all, File.dirname(__FILE__))
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
super
|
20
|
+
|
21
|
+
@list = RubyApp::Elements::List.new
|
22
|
+
@list.selected do |element, event|
|
23
|
+
RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
|
24
|
+
self.translate.message_dialog.message.message(event.item)))
|
25
|
+
end
|
26
|
+
|
27
|
+
@list.items += [ 'Item 01',
|
28
|
+
'Item 02',
|
29
|
+
'Item 03' ]
|
30
|
+
|
31
|
+
@select = RubyApp::Elements::Lists::Select.new
|
32
|
+
@select.selected do |element, event|
|
33
|
+
RubyApp::Session.show(event, RubyApp::Elements::Dialogs::MessageDialog.new(self.translate.message_dialog.message.title,
|
34
|
+
self.translate.message_dialog.message.message(event.item)))
|
35
|
+
end
|
36
|
+
|
37
|
+
@select.items += [ 'Item 04',
|
38
|
+
'Item 05',
|
39
|
+
'Item 06' ]
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'r18n-core'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
require 'ruby_app/mixins/delegate'
|
8
|
+
|
9
|
+
class Language < R18n::I18n
|
10
|
+
extend RubyApp::Mixins::Delegate
|
11
|
+
|
12
|
+
def reload
|
13
|
+
R18n.get.reload!
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.get
|
17
|
+
R18n.get
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.load(language, translations_paths)
|
21
|
+
language = RubyApp::Language.new(language, translations_paths)
|
22
|
+
R18n.thread_set(language)
|
23
|
+
if block_given?
|
24
|
+
begin
|
25
|
+
yield language
|
26
|
+
ensure
|
27
|
+
R18n.thread_set(nil)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.unload
|
33
|
+
R18n.thread_set(nil)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def initialize(language, translations_paths)
|
39
|
+
super(language, translations_paths)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/ruby_app/log.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
module RubyApp
|
4
|
+
require 'ruby_app/mixins/delegate'
|
5
|
+
|
6
|
+
class Log < ::Logger
|
7
|
+
extend RubyApp::Mixins::Delegate
|
8
|
+
|
9
|
+
def self.get
|
10
|
+
@@_logger
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.open(path)
|
14
|
+
directory = File.dirname(path)
|
15
|
+
Dir.mkdir(directory) unless File.exists?(directory)
|
16
|
+
@@_logger = RubyApp::Log.new(path)
|
17
|
+
@@_logger.debug("#{self}##{__method__} path=#{path.inspect}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.close
|
21
|
+
@@_logger.close
|
22
|
+
@@_logger = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def initialize(path)
|
28
|
+
super(path)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Mixins
|
4
|
+
|
5
|
+
module Configuration
|
6
|
+
require 'ruby_app/configuration'
|
7
|
+
|
8
|
+
def configuration
|
9
|
+
|
10
|
+
name = self.is_a?(Class) ? self.to_s : self.class.to_s
|
11
|
+
name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
12
|
+
name.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
13
|
+
name.tr!("-", "_")
|
14
|
+
name.downcase!
|
15
|
+
|
16
|
+
names = name.split('::')
|
17
|
+
|
18
|
+
value = RubyApp::Configuration.document
|
19
|
+
names.each do |name|
|
20
|
+
value = value[name]
|
21
|
+
end
|
22
|
+
|
23
|
+
return value
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Mixins
|
4
|
+
|
5
|
+
module Hash
|
6
|
+
|
7
|
+
def method_missing(name, *arguments)
|
8
|
+
if name.to_s.match(/(.*)=/)
|
9
|
+
self[$~.captures[0].to_s] = arguments[0]
|
10
|
+
else
|
11
|
+
self[name.to_s] || self[name.to_sym]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler/setup'
|
4
|
+
|
5
|
+
require 'facets/string/interpolate'
|
6
|
+
require 'haml'
|
7
|
+
|
8
|
+
module RubyApp
|
9
|
+
|
10
|
+
module Mixins
|
11
|
+
|
12
|
+
module Render
|
13
|
+
require 'ruby_app/log'
|
14
|
+
|
15
|
+
def rendered?(template)
|
16
|
+
unless Thread.current[:_rendered].key?(template)
|
17
|
+
yield
|
18
|
+
Thread.current[:_rendered][template] = ( Thread.current[:_rendered][template] || 0 ) + 1
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def content_for(name, value = nil, &block)
|
23
|
+
( @_content ||= {} )[Thread.current] ||= {}
|
24
|
+
if block_given?
|
25
|
+
@_content[Thread.current][name] = block
|
26
|
+
elsif value
|
27
|
+
@_content[Thread.current][name] = String.interpolate { value }
|
28
|
+
else
|
29
|
+
@_content[Thread.current][name]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def clear_content_for
|
34
|
+
( @_content ||= {} )[Thread.current] ||= {}
|
35
|
+
@_content.delete(Thread.current)
|
36
|
+
end
|
37
|
+
|
38
|
+
def render(format)
|
39
|
+
|
40
|
+
self.init_haml_helpers
|
41
|
+
|
42
|
+
begin
|
43
|
+
|
44
|
+
yield(self) if block_given?
|
45
|
+
|
46
|
+
templates = self.is_a?(Class) ? self.get_templates(format) : self.class.get_templates(format)
|
47
|
+
templates.each_with_index do |template, index|
|
48
|
+
#RubyApp::Log.debug("#{self.is_a?(Class) ? self : self.class}##{__method__} template=#{File.expand_path(template)}")
|
49
|
+
content = Haml::Engine.new(File.read(template), :filename => template).render(self) do |*arguments|
|
50
|
+
if arguments.empty?
|
51
|
+
index == 0 ? nil : self.content_for(templates[index - 1])
|
52
|
+
else
|
53
|
+
_content = self.content_for(arguments[0])
|
54
|
+
if self.block_is_haml?(_content)
|
55
|
+
self.capture_haml(arguments, &_content)
|
56
|
+
else
|
57
|
+
_content
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
self.content_for(template, content)
|
62
|
+
end
|
63
|
+
|
64
|
+
self.content_for(templates.last)
|
65
|
+
|
66
|
+
ensure
|
67
|
+
self.clear_content_for
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'mime/types'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
|
8
|
+
module Mixins
|
9
|
+
|
10
|
+
module Route
|
11
|
+
|
12
|
+
GET = 'GET'
|
13
|
+
POST = 'POST'
|
14
|
+
|
15
|
+
def route(method, pattern, &block)
|
16
|
+
self.routes << { :method => method, :pattern => pattern, :block => block }
|
17
|
+
end
|
18
|
+
|
19
|
+
def do_route(method, path)
|
20
|
+
self.routes.each do |route|
|
21
|
+
if method == route[:method] and path =~ route[:pattern]
|
22
|
+
return route[:block].call([method].concat($~.to_a))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def routes
|
28
|
+
@_routes ||= []
|
29
|
+
end
|
30
|
+
|
31
|
+
def clear_routes
|
32
|
+
self.routes.clear
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Mixins
|
4
|
+
|
5
|
+
module Template
|
6
|
+
|
7
|
+
def template_name
|
8
|
+
|
9
|
+
name = self.to_s.split('::').last
|
10
|
+
name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
11
|
+
name.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
12
|
+
name.tr!("-", "_")
|
13
|
+
name.downcase
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
def template_path(format, path)
|
18
|
+
(@_template_path ||= {})[format] = File.directory?(path) ? "#{File.join(path, self.template_name)}.*.haml" : path
|
19
|
+
end
|
20
|
+
|
21
|
+
def exclude_parent_template?(format)
|
22
|
+
( @_exclude_parent_template_formats ||= [] ).include?(:all) || @_exclude_parent_template_formats.include?(format)
|
23
|
+
end
|
24
|
+
|
25
|
+
def exclude_parent_template(*formats)
|
26
|
+
@_exclude_parent_template_formats = formats
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_templates(format)
|
30
|
+
templates = Dir.glob((@_template_path[format] || @_template_path[:all] || "#{File.join(File.dirname(__FILE__), self.template_name)}.*.haml").gsub(/\*/,format.to_s))
|
31
|
+
( templates.length > 0 ? [templates.first] : [] ).concat( ( !self.exclude_parent_template?(format) and self.superclass.respond_to?(:get_templates) ) ? self.superclass.get_templates(format) : [] )
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Mixins
|
4
|
+
|
5
|
+
module Translate
|
6
|
+
require 'ruby_app/language'
|
7
|
+
|
8
|
+
def translate
|
9
|
+
|
10
|
+
name = self.is_a?(Class) ? self.to_s : self.class.to_s
|
11
|
+
name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
12
|
+
name.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
13
|
+
name.tr!("-", "_")
|
14
|
+
name.downcase!
|
15
|
+
|
16
|
+
names = name.split('::')
|
17
|
+
|
18
|
+
value = RubyApp::Language.t
|
19
|
+
names.each do |name|
|
20
|
+
value = value[name]
|
21
|
+
end
|
22
|
+
|
23
|
+
return value
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def localize(*parameters)
|
28
|
+
RubyApp::Language.l(*parameters)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|