lolita 3.2.0.rc.17 → 3.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +22 -17
- data/Rakefile +3 -0
- data/app/assets/javascripts/lolita/list.js +2 -2
- data/app/assets/javascripts/lolita/main.js +2 -2
- data/app/assets/javascripts/lolita/tab.js +7 -7
- data/app/assets/stylesheets/lolita/PIE-custom.htc +87 -87
- data/app/assets/stylesheets/lolita/PIE.htc +81 -81
- data/app/assets/stylesheets/lolita/application.css +6 -6
- data/app/assets/stylesheets/lolita/default.css.erb +169 -169
- data/app/assets/stylesheets/lolita/jquery-ui-1.8.16.lolita.css.erb +567 -567
- data/app/assets/stylesheets/lolita/style.css.erb +4 -1
- data/app/helpers/components/lolita/configuration/list_component.rb +10 -10
- data/app/views/components/lolita/configuration/column/_first.html.haml +1 -1
- data/app/views/components/lolita/configuration/column/header/_first.html.haml +1 -1
- data/app/views/components/lolita/configuration/column/header/_sort.html.haml +6 -6
- data/app/views/components/lolita/configuration/columns/header/_display.html.haml +5 -5
- data/app/views/components/lolita/configuration/field/array/checkbox/_display.html.haml +7 -7
- data/app/views/components/lolita/configuration/filter/_display.html.haml +2 -2
- data/app/views/components/lolita/configuration/search/_display.html.haml +2 -2
- data/app/views/kaminari/lolita/_first_page.html.erb +11 -11
- data/app/views/kaminari/lolita/_gap.html.erb +8 -8
- data/app/views/kaminari/lolita/_last_page.html.erb +11 -11
- data/app/views/kaminari/lolita/_next_page.html.erb +11 -11
- data/app/views/kaminari/lolita/_page.html.erb +12 -12
- data/app/views/kaminari/lolita/_paginator.html.erb +23 -23
- data/app/views/kaminari/lolita/_prev_page.html.erb +11 -11
- data/app/views/lolita/info/index.html.erb +232 -232
- data/app/views/lolita/rest/index.html.haml +1 -1
- data/config/routes.rb +6 -6
- data/lib/generators/lolita/install_generator.rb +2 -4
- data/lib/generators/lolita/uninstall_generator.rb +3 -8
- data/lib/generators/templates/lolita.rb +13 -16
- data/lib/lolita.rb +4 -5
- data/lib/lolita/adapter/active_record.rb +4 -4
- data/lib/lolita/adapter/common_helper.rb +45 -71
- data/lib/lolita/adapter/field_helper.rb +18 -18
- data/lib/lolita/adapter/mongoid.rb +8 -8
- data/lib/lolita/configuration/field/big_decimal.rb +12 -12
- data/lib/lolita/configuration/field/boolean.rb +12 -12
- data/lib/lolita/configuration/field/date.rb +12 -12
- data/lib/lolita/configuration/field/hidden.rb +12 -12
- data/lib/lolita/configuration/field/integer.rb +11 -11
- data/lib/lolita/configuration/field/string.rb +16 -16
- data/lib/lolita/configuration/field/time.rb +13 -13
- data/lib/lolita/configuration/field_set.rb +25 -25
- data/lib/lolita/configuration/filter.rb +6 -0
- data/lib/lolita/configuration/list.rb +10 -10
- data/lib/lolita/configuration/nested_form.rb +104 -104
- data/lib/lolita/configuration/search.rb +104 -104
- data/lib/lolita/configuration/tab/content.rb +3 -3
- data/lib/lolita/controllers/component_helpers.rb +9 -9
- data/lib/lolita/controllers/rails_helpers.rb +5 -5
- data/lib/lolita/dbi/base.rb +56 -56
- data/lib/lolita/hooks.rb +16 -16
- data/lib/lolita/hooks/named_hook.rb +125 -125
- data/lib/lolita/lazy_loader.rb +54 -54
- data/lib/lolita/navigation/tree.rb +132 -132
- data/lib/lolita/rails/engine.rb +2 -2
- data/lib/lolita/rails/routes.rb +9 -9
- data/lib/lolita/ruby_ext/accessors.rb +26 -26
- data/lib/lolita/ruby_ext/lolita_model_name.rb +10 -2
- data/lib/lolita/search/simple.rb +75 -75
- data/lib/lolita/support/formatter.rb +62 -62
- data/lib/lolita/support/formatter/rails.rb +56 -56
- data/lib/lolita/test/matchers.rb +77 -77
- data/lib/lolita/version.rb +2 -2
- data/spec/adapter/common_helper_spec.rb +96 -0
- data/spec/adapter_helper.rb +3 -4
- data/spec/builder_spec.rb +120 -120
- data/spec/configuration/base_spec.rb +1 -1
- data/spec/configuration/column_spec.rb +1 -1
- data/spec/configuration/columns_spec.rb +1 -1
- data/spec/configuration/core_spec.rb +1 -1
- data/spec/configuration/field_set_spec.rb +1 -1
- data/spec/configuration/field_spec.rb +1 -1
- data/spec/configuration/filter_spec.rb +30 -1
- data/spec/configuration/list_spec.rb +44 -145
- data/spec/configuration/nested_list_spec.rb +1 -1
- data/spec/configuration/search_spec.rb +1 -1
- data/spec/configuration/tab_spec.rb +1 -1
- data/spec/configuration/tabs_spec.rb +1 -2
- data/spec/controllers/component_helpers_spec.rb +1 -1
- data/spec/controllers/configuration_spec.rb +1 -1
- data/spec/controllers/internal_helpers_spec.rb +1 -1
- data/spec/controllers/lolita_rest_nested_resources_spec.rb +1 -1
- data/spec/controllers/lolita_rest_spec.rb +2 -2
- data/spec/dbi/base_spec.rb +1 -4
- data/spec/extensions/authorization/cancan_adapter_spec.rb +4 -4
- data/spec/extensions/extensions_spec.rb +1 -1
- data/spec/generators/lolita/install_generator_spec.rb +55 -0
- data/spec/generators/lolita/uninstall_generator_spec.rb +49 -0
- data/spec/hooks_spec.rb +25 -25
- data/spec/mapping_spec.rb +1 -1
- data/spec/navigation/branch_spec.rb +1 -1
- data/spec/navigation/tree_spec.rb +1 -1
- data/spec/rails_app/app/controllers/application_controller.rb +3 -3
- data/spec/rails_app/app/helpers/application_helper.rb +3 -3
- data/spec/rails_app/app/mongoid/address.rb +7 -7
- data/spec/rails_app/app/mongoid/comment.rb +5 -5
- data/spec/rails_app/app/mongoid/preference.rb +5 -5
- data/spec/rails_app/app/mongoid/profile.rb +13 -13
- data/spec/rails_app/app/mongoid/tag.rb +3 -3
- data/spec/rails_app/app/views/components/lolita/configuration/list/_body_cell.html.erb +1 -1
- data/spec/rails_app/config/boot.rb +4 -9
- data/spec/rails_app/config/environment.rb +5 -5
- data/spec/rails_app/config/environments/production.rb +37 -37
- data/spec/rails_app/config/environments/test.rb +37 -37
- data/spec/rails_app/config/initializers/backtrace_silencers.rb +7 -7
- data/spec/rails_app/config/initializers/inflections.rb +2 -2
- data/spec/rails_app/config/initializers/secret_token.rb +1 -1
- data/spec/rails_app/config/routes.rb +1 -1
- data/spec/rails_app/lib/lolita/configuration/field/my_custom_collection.rb +13 -13
- data/spec/rails_app/log/development.log +12940 -43222
- data/spec/rails_app/public/javascripts/jquery-1.5.1.min.js +15 -15
- data/spec/rails_app/public/javascripts/lolita/main.js +6 -6
- data/spec/rails_app/public/javascripts/modernizr-1.7.min.js +1 -1
- data/spec/rails_app/public/javascripts/rails.js +137 -137
- data/spec/rails_app/public/javascripts/tinymce/langs/en.js +221 -221
- data/spec/rails_app/public/javascripts/tinymce/license.txt +504 -504
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/about.htm +52 -52
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/anchor.htm +26 -26
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/charmap.htm +51 -51
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/color_picker.htm +74 -74
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/editor_template_src.js +1328 -1328
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/image.htm +80 -80
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/about.js +73 -73
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/anchor.js +42 -42
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/charmap.js +354 -354
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/color_picker.js +329 -329
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/image.js +247 -247
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/link.js +153 -153
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/source_editor.js +56 -56
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/langs/en.js +68 -68
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/langs/en_dlg.js +53 -53
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/link.htm +57 -57
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/shortcuts.htm +47 -47
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/content.css +66 -66
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/dialog.css +117 -117
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/ui.css +988 -988
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/source_editor.htm +25 -25
- data/spec/rails_app/public/javascripts/tinymce/tiny_mce_popup.js +4 -4
- data/spec/rails_app/public/stylesheets/lolita/default.css +169 -169
- data/spec/rails_app/public/stylesheets/lolita/style.css +214 -214
- data/spec/routing/routes_spec.rb +1 -1
- data/spec/search/simple_spec.rb +1 -1
- data/spec/simple_spec_helper.rb +1 -1
- data/spec/spec_helper.rb +6 -4
- data/spec/support/formatter_spec.rb +1 -1
- data/spec/tmp/config/routes.rb +0 -0
- data/vendor/assets/javascripts/jquery-numeric.js +279 -279
- data/vendor/assets/javascripts/modernizr_1_7_min.js +1 -1
- data/vendor/assets/javascripts/tinymce/themes/advanced/skins/cirkuit/content.css +66 -66
- data/vendor/assets/javascripts/tinymce/themes/advanced/skins/cirkuit/dialog.css +117 -117
- data/vendor/assets/javascripts/tinymce/themes/advanced/skins/cirkuit/ui.css +988 -988
- data/vendor/assets/stylesheets/jquery-ui-1.8.16.custom.css +567 -567
- metadata +380 -395
- data/spec/rails_app/coverage.data +0 -1
- data/spec/rails_app/log/test.log +0 -370
data/lib/lolita/rails/engine.rb
CHANGED
@@ -8,7 +8,7 @@ ActiveSupport.on_load(:action_controller) {
|
|
8
8
|
ActiveSupport.on_load(:action_view) {
|
9
9
|
include Lolita::Controllers::UrlHelpers
|
10
10
|
include Lolita::Controllers::ComponentHelpers
|
11
|
-
include Lolita::Controllers::RailsHelpers
|
11
|
+
include Lolita::Controllers::RailsHelpers
|
12
12
|
include Lolita::Extensions
|
13
13
|
}
|
14
14
|
|
@@ -19,6 +19,6 @@ module Lolita
|
|
19
19
|
config.before_initialize do
|
20
20
|
Haml.init_rails(binding)
|
21
21
|
Haml::Template.options[:format] = :html5
|
22
|
-
end
|
22
|
+
end
|
23
23
|
end
|
24
24
|
end
|
data/lib/lolita/rails/routes.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module ActionDispatch::Routing
|
2
|
-
|
2
|
+
|
3
3
|
class RouteSet
|
4
4
|
|
5
5
|
# Each time when #draw method is called this is called as well.
|
@@ -34,7 +34,7 @@ module ActionDispatch::Routing
|
|
34
34
|
# lolita_for :galleries
|
35
35
|
# # lolita_for try to call :lolita_gallery in Mapper class
|
36
36
|
def lolita_for *resources
|
37
|
-
|
37
|
+
|
38
38
|
return if migrating? || generating?
|
39
39
|
options = resources.extract_options!
|
40
40
|
|
@@ -47,7 +47,7 @@ module ActionDispatch::Routing
|
|
47
47
|
mapping = Lolita.add_mapping(resource,options)
|
48
48
|
Lolita.resources[mapping.name] = mapping
|
49
49
|
target_class = mapping.to
|
50
|
-
|
50
|
+
|
51
51
|
#TODO refactor all these variables
|
52
52
|
all_resource_classes<<target_class
|
53
53
|
|
@@ -55,9 +55,9 @@ module ActionDispatch::Routing
|
|
55
55
|
yield if block_given?
|
56
56
|
|
57
57
|
with_lolita_exclusive_scope mapping.fullpath,mapping.path do
|
58
|
-
|
58
|
+
|
59
59
|
# if not defined lolita default configuration in model, than can't use :rest
|
60
|
-
|
60
|
+
|
61
61
|
# if !target_class.respond_to?(:lolita) && !Lolita::routes[mapping.name]
|
62
62
|
# raise Lolita::NotFound, "Lolita not found in #{target_class}. Include Lolita::Configuration"
|
63
63
|
# elsif target_class.respond_to?(:lolita) && target_class.instance_variable_get(:@lolita).nil?
|
@@ -72,14 +72,14 @@ module ActionDispatch::Routing
|
|
72
72
|
raise Lolita::ModuleNotFound, "Module #{mapping.name.to_s.capitalize} not found!"
|
73
73
|
end
|
74
74
|
send(:"lolita_#{route}_route",mapping,mapping.controllers)
|
75
|
-
|
75
|
+
|
76
76
|
Lolita.conditional_routes(target_class).each do |route_name|
|
77
77
|
send(:"lolita_#{route_name}_route",mapping,mapping.controllers)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
mapping.add_to_navigation_tree
|
84
84
|
}
|
85
85
|
Lolita.common_routes(all_resource_classes).each do |route_name|
|
@@ -88,7 +88,7 @@ module ActionDispatch::Routing
|
|
88
88
|
end
|
89
89
|
|
90
90
|
protected
|
91
|
-
|
91
|
+
|
92
92
|
def lolita_scope scope
|
93
93
|
constraint = lambda do |request|
|
94
94
|
request.env["lolita.mapping"] = Lolita.mappings[scope]
|
@@ -99,7 +99,7 @@ module ActionDispatch::Routing
|
|
99
99
|
yield
|
100
100
|
end
|
101
101
|
end
|
102
|
-
|
102
|
+
|
103
103
|
def with_lolita_exclusive_scope new_path,new_as
|
104
104
|
old_as, old_path, old_module = @scope[:as], @scope[:path], @scope[:module]
|
105
105
|
@scope[:as], @scope[:path], @scope[:module] = new_as, new_path, nil
|
@@ -1,27 +1,27 @@
|
|
1
|
-
class Object
|
2
|
-
# Works similar as <code>attr_accessor</code> only reader method is changed
|
3
|
-
# to allow to set value (used for Lolita blocks in different classes).
|
4
|
-
# ====Example
|
5
|
-
# class Klass
|
6
|
-
# lolita_accessor :my_method
|
7
|
-
# end
|
8
|
-
# k=Klass.new
|
9
|
-
# k.my_method("it's me")
|
10
|
-
# puts k.my_method #=> it's me
|
11
|
-
def lolita_accessor *methods
|
12
|
-
if [Class,Module].include?(self.class)
|
13
|
-
methods.each do |method|
|
14
|
-
class_eval <<-ACCESSORS,__FILE__,__LINE__+1
|
15
|
-
def #{method}(value=nil)
|
16
|
-
@#{method}=value if value
|
17
|
-
@#{method}
|
18
|
-
end
|
19
|
-
|
20
|
-
def #{method}=(value)
|
21
|
-
@#{method}=value
|
22
|
-
end
|
23
|
-
ACCESSORS
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
class Object
|
2
|
+
# Works similar as <code>attr_accessor</code> only reader method is changed
|
3
|
+
# to allow to set value (used for Lolita blocks in different classes).
|
4
|
+
# ====Example
|
5
|
+
# class Klass
|
6
|
+
# lolita_accessor :my_method
|
7
|
+
# end
|
8
|
+
# k=Klass.new
|
9
|
+
# k.my_method("it's me")
|
10
|
+
# puts k.my_method #=> it's me
|
11
|
+
def lolita_accessor *methods
|
12
|
+
if [Class,Module].include?(self.class)
|
13
|
+
methods.each do |method|
|
14
|
+
class_eval <<-ACCESSORS,__FILE__,__LINE__+1
|
15
|
+
def #{method}(value=nil)
|
16
|
+
@#{method}=value if value
|
17
|
+
@#{method}
|
18
|
+
end
|
19
|
+
|
20
|
+
def #{method}=(value)
|
21
|
+
@#{method}=value
|
22
|
+
end
|
23
|
+
ACCESSORS
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
27
|
end
|
@@ -11,11 +11,19 @@ module Lolita
|
|
11
11
|
else
|
12
12
|
"lolita.models.#{@class_name.underscore.gsub("/",".")}"
|
13
13
|
end
|
14
|
-
::I18n.t("#{name}.#{prefix(options)}")
|
14
|
+
::I18n.t("#{name}.#{prefix(options)}", default: default_human_name(options))
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
18
18
|
|
19
|
+
def default_human_name options = {}
|
20
|
+
if prefix(options) == 'one'
|
21
|
+
@class_name.humanize
|
22
|
+
else
|
23
|
+
ActiveModel::Naming.plural(@klass).humanize
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
19
27
|
def prefix options
|
20
28
|
if options[:count]
|
21
29
|
if options[:count] == 1
|
@@ -30,7 +38,7 @@ module Lolita
|
|
30
38
|
end
|
31
39
|
end
|
32
40
|
|
33
|
-
Object.class_eval do
|
41
|
+
Object.class_eval do
|
34
42
|
def lolita_model_name
|
35
43
|
@lolita_model_name ||= Lolita::ModelName.new(self)
|
36
44
|
end
|
data/lib/lolita/search/simple.rb
CHANGED
@@ -1,75 +1,75 @@
|
|
1
|
-
module Lolita
|
2
|
-
module Search
|
3
|
-
|
4
|
-
# Default search class for Lolita::Search. Lolita::Configuration::Search uses this by default.
|
5
|
-
# It accepts method name as constructor argument, when none is given it call Lolita::DBI#search.
|
6
|
-
class Simple
|
7
|
-
|
8
|
-
# Method in model used to run a search.
|
9
|
-
attr_accessor :search_method
|
10
|
-
attr_reader :dbi
|
11
|
-
|
12
|
-
# Accepts search method as optional argument
|
13
|
-
def initialize(dbi, *args)
|
14
|
-
@dbi = dbi
|
15
|
-
@options = args.extract_options!
|
16
|
-
@search_method = args[0]
|
17
|
-
end
|
18
|
-
|
19
|
-
# Require dbi (Lolita::DBI instance), query (String) and request and dbi as optional argument.
|
20
|
-
# Also you can pass options.
|
21
|
-
# ====Example
|
22
|
-
# search.run("query",:fields => [:name])
|
23
|
-
# # this will search only in :name field
|
24
|
-
# search.run("query",nil, Lolita::DBI::Base.create(Category))
|
25
|
-
# # this will use Category dbi for search
|
26
|
-
# When there is search method defined, it uses that otherwise run default search.
|
27
|
-
def run(query,*args)
|
28
|
-
with_query(query,*args) do
|
29
|
-
if self.search_method
|
30
|
-
run_custom_search
|
31
|
-
else
|
32
|
-
run_default_search
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def with_query(query,*args)
|
40
|
-
begin
|
41
|
-
options = args.extract_options!
|
42
|
-
@old_dbi = self.dbi
|
43
|
-
@old_options = @options
|
44
|
-
@options = options if options.any?
|
45
|
-
@dbi = args[1] if args[1]
|
46
|
-
@query = query
|
47
|
-
@request = args[0]
|
48
|
-
yield
|
49
|
-
ensure
|
50
|
-
@dbi = @old_dbi
|
51
|
-
@options = @old_options
|
52
|
-
@query,@request = nil,nil
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def run_custom_search
|
57
|
-
search_method_arity = @dbi.klass.method(self.search_method).arity
|
58
|
-
args = [@query,@request,@options]
|
59
|
-
if search_method_arity < 0
|
60
|
-
@dbi.klass.send(self.search_method.to_sym,@query,@request,@options)
|
61
|
-
elsif search_method_arity == 0
|
62
|
-
raise ArgumentError, "#{@dbi.klass.to_s} method #{search_method} must accept at least 1 argument."
|
63
|
-
else
|
64
|
-
arity_limit = search_method_arity > args.size ? args.size : search_method_arity
|
65
|
-
@dbi.klass.send(self.search_method.to_sym,*(args.slice(0..(arity_limit-1))))
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def run_default_search
|
70
|
-
@dbi.search(@query,@options || {})
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
end
|
1
|
+
module Lolita
|
2
|
+
module Search
|
3
|
+
|
4
|
+
# Default search class for Lolita::Search. Lolita::Configuration::Search uses this by default.
|
5
|
+
# It accepts method name as constructor argument, when none is given it call Lolita::DBI#search.
|
6
|
+
class Simple
|
7
|
+
|
8
|
+
# Method in model used to run a search.
|
9
|
+
attr_accessor :search_method
|
10
|
+
attr_reader :dbi
|
11
|
+
|
12
|
+
# Accepts search method as optional argument
|
13
|
+
def initialize(dbi, *args)
|
14
|
+
@dbi = dbi
|
15
|
+
@options = args.extract_options!
|
16
|
+
@search_method = args[0]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Require dbi (Lolita::DBI instance), query (String) and request and dbi as optional argument.
|
20
|
+
# Also you can pass options.
|
21
|
+
# ====Example
|
22
|
+
# search.run("query",:fields => [:name])
|
23
|
+
# # this will search only in :name field
|
24
|
+
# search.run("query",nil, Lolita::DBI::Base.create(Category))
|
25
|
+
# # this will use Category dbi for search
|
26
|
+
# When there is search method defined, it uses that otherwise run default search.
|
27
|
+
def run(query,*args)
|
28
|
+
with_query(query,*args) do
|
29
|
+
if self.search_method
|
30
|
+
run_custom_search
|
31
|
+
else
|
32
|
+
run_default_search
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def with_query(query,*args)
|
40
|
+
begin
|
41
|
+
options = args.extract_options!
|
42
|
+
@old_dbi = self.dbi
|
43
|
+
@old_options = @options
|
44
|
+
@options = options if options.any?
|
45
|
+
@dbi = args[1] if args[1]
|
46
|
+
@query = query
|
47
|
+
@request = args[0]
|
48
|
+
yield
|
49
|
+
ensure
|
50
|
+
@dbi = @old_dbi
|
51
|
+
@options = @old_options
|
52
|
+
@query,@request = nil,nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def run_custom_search
|
57
|
+
search_method_arity = @dbi.klass.method(self.search_method).arity
|
58
|
+
args = [@query,@request,@options]
|
59
|
+
if search_method_arity < 0
|
60
|
+
@dbi.klass.send(self.search_method.to_sym,@query,@request,@options)
|
61
|
+
elsif search_method_arity == 0
|
62
|
+
raise ArgumentError, "#{@dbi.klass.to_s} method #{search_method} must accept at least 1 argument."
|
63
|
+
else
|
64
|
+
arity_limit = search_method_arity > args.size ? args.size : search_method_arity
|
65
|
+
@dbi.klass.send(self.search_method.to_sym,*(args.slice(0..(arity_limit-1))))
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def run_default_search
|
70
|
+
@dbi.search(@query,@options || {})
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
@@ -1,63 +1,63 @@
|
|
1
|
-
module Lolita
|
2
|
-
module Support
|
3
|
-
# Containes different kind of formaters.
|
4
|
-
# Change output format of different input types.
|
5
|
-
# To define, pass block, or String.
|
6
|
-
# ====Exmaple
|
7
|
-
# Lolita::Support::Formatter.new do |value|
|
8
|
-
# value.to_i**2
|
9
|
-
# end
|
10
|
-
# # or as String
|
11
|
-
# Lolita::Support::Formatter.new("%U")
|
12
|
-
# To format any value with defined formater call #with
|
13
|
-
# ====Example
|
14
|
-
# # Previous examples may be called like this
|
15
|
-
# formatter.with(1)
|
16
|
-
# formatter.with(Date.today)
|
17
|
-
class Formatter
|
18
|
-
|
19
|
-
def initialize(format=nil,&block)
|
20
|
-
@format=format
|
21
|
-
@block=block if block_given?
|
22
|
-
end
|
23
|
-
|
24
|
-
def format
|
25
|
-
@format
|
26
|
-
end
|
27
|
-
|
28
|
-
def block
|
29
|
-
@block
|
30
|
-
end
|
31
|
-
|
32
|
-
def with(value,*optional_values)
|
33
|
-
if @block
|
34
|
-
@block.call(value,*optional_values)
|
35
|
-
elsif @format
|
36
|
-
use_format_for(value,*optional_values)
|
37
|
-
else
|
38
|
-
use_default_format(value,*optional_values)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def use_default_format(value,*optional_values)
|
45
|
-
value
|
46
|
-
end
|
47
|
-
|
48
|
-
def use_format_for(value, *optional_values)
|
49
|
-
if value.respond_to?(:format)
|
50
|
-
call_block(value,*optional_values)
|
51
|
-
else
|
52
|
-
@format ? (@format % value) : value
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def call_block(value,*optional_values)
|
57
|
-
value.send(:format,value,*optional_values)
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
1
|
+
module Lolita
|
2
|
+
module Support
|
3
|
+
# Containes different kind of formaters.
|
4
|
+
# Change output format of different input types.
|
5
|
+
# To define, pass block, or String.
|
6
|
+
# ====Exmaple
|
7
|
+
# Lolita::Support::Formatter.new do |value|
|
8
|
+
# value.to_i**2
|
9
|
+
# end
|
10
|
+
# # or as String
|
11
|
+
# Lolita::Support::Formatter.new("%U")
|
12
|
+
# To format any value with defined formater call #with
|
13
|
+
# ====Example
|
14
|
+
# # Previous examples may be called like this
|
15
|
+
# formatter.with(1)
|
16
|
+
# formatter.with(Date.today)
|
17
|
+
class Formatter
|
18
|
+
|
19
|
+
def initialize(format=nil,&block)
|
20
|
+
@format=format
|
21
|
+
@block=block if block_given?
|
22
|
+
end
|
23
|
+
|
24
|
+
def format
|
25
|
+
@format
|
26
|
+
end
|
27
|
+
|
28
|
+
def block
|
29
|
+
@block
|
30
|
+
end
|
31
|
+
|
32
|
+
def with(value,*optional_values)
|
33
|
+
if @block
|
34
|
+
@block.call(value,*optional_values)
|
35
|
+
elsif @format
|
36
|
+
use_format_for(value,*optional_values)
|
37
|
+
else
|
38
|
+
use_default_format(value,*optional_values)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def use_default_format(value,*optional_values)
|
45
|
+
value
|
46
|
+
end
|
47
|
+
|
48
|
+
def use_format_for(value, *optional_values)
|
49
|
+
if value.respond_to?(:format)
|
50
|
+
call_block(value,*optional_values)
|
51
|
+
else
|
52
|
+
@format ? (@format % value) : value
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def call_block(value,*optional_values)
|
57
|
+
value.send(:format,value,*optional_values)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
63
|
end
|