ransack 1.7.0 → 2.4.1
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.
- checksums.yaml +5 -5
- data/.github/FUNDING.yml +3 -0
- data/.github/SECURITY.md +12 -0
- data/.github/workflows/test.yml +120 -0
- data/.gitignore +3 -0
- data/CHANGELOG.md +463 -27
- data/CONTRIBUTING.md +52 -22
- data/Gemfile +24 -24
- data/README.md +453 -126
- data/Rakefile +6 -25
- data/lib/polyamorous/activerecord_5.2_ruby_2/join_association.rb +24 -0
- data/lib/polyamorous/activerecord_5.2_ruby_2/join_dependency.rb +79 -0
- data/lib/polyamorous/activerecord_5.2_ruby_2/reflection.rb +11 -0
- data/lib/polyamorous/activerecord_6.0_ruby_2/join_association.rb +1 -0
- data/lib/polyamorous/activerecord_6.0_ruby_2/join_dependency.rb +80 -0
- data/lib/polyamorous/activerecord_6.0_ruby_2/reflection.rb +1 -0
- data/lib/polyamorous/activerecord_6.1_ruby_2/join_association.rb +74 -0
- data/lib/polyamorous/activerecord_6.1_ruby_2/join_dependency.rb +93 -0
- data/lib/polyamorous/activerecord_6.1_ruby_2/reflection.rb +1 -0
- data/lib/polyamorous/join.rb +70 -0
- data/lib/polyamorous/polyamorous.rb +24 -0
- data/lib/polyamorous/swapping_reflection_class.rb +11 -0
- data/lib/polyamorous/tree_node.rb +7 -0
- data/lib/ransack/adapters/active_record/base.rb +27 -2
- data/lib/ransack/adapters/active_record/context.rb +213 -139
- data/lib/ransack/adapters/active_record/ransack/constants.rb +70 -55
- data/lib/ransack/adapters/active_record/ransack/context.rb +10 -18
- data/lib/ransack/adapters/active_record/ransack/nodes/condition.rb +42 -32
- data/lib/ransack/adapters/active_record/ransack/translate.rb +1 -5
- data/lib/ransack/adapters/active_record/ransack/visitor.rb +23 -0
- data/lib/ransack/adapters/active_record.rb +11 -10
- data/lib/ransack/adapters.rb +45 -23
- data/lib/ransack/configuration.rb +107 -4
- data/lib/ransack/constants.rb +13 -26
- data/lib/ransack/context.rb +45 -33
- data/lib/ransack/helpers/form_builder.rb +21 -12
- data/lib/ransack/helpers/form_helper.rb +75 -70
- data/lib/ransack/locale/ar.yml +70 -0
- data/lib/ransack/locale/az.yml +70 -0
- data/lib/ransack/locale/bg.yml +70 -0
- data/lib/ransack/locale/ca.yml +70 -0
- data/lib/ransack/locale/da.yml +70 -0
- data/lib/ransack/locale/el.yml +70 -0
- data/lib/ransack/locale/es.yml +22 -22
- data/lib/ransack/locale/fa.yml +70 -0
- data/lib/ransack/locale/fi.yml +71 -0
- data/lib/ransack/locale/id.yml +70 -0
- data/lib/ransack/locale/it.yml +70 -0
- data/lib/ransack/locale/ja.yml +70 -0
- data/lib/ransack/locale/nl.yml +4 -4
- data/lib/ransack/locale/pt-BR.yml +70 -0
- data/lib/ransack/locale/ru.yml +70 -0
- data/lib/ransack/locale/sk.yml +70 -0
- data/lib/ransack/locale/tr.yml +70 -0
- data/lib/ransack/locale/{zh.yml → zh-CN.yml} +13 -13
- data/lib/ransack/locale/zh-TW.yml +70 -0
- data/lib/ransack/nodes/attribute.rb +5 -2
- data/lib/ransack/nodes/bindable.rb +18 -6
- data/lib/ransack/nodes/condition.rb +85 -28
- data/lib/ransack/nodes/grouping.rb +17 -11
- data/lib/ransack/nodes/sort.rb +9 -5
- data/lib/ransack/nodes/value.rb +74 -68
- data/lib/ransack/nodes.rb +1 -1
- data/lib/ransack/predicate.rb +17 -20
- data/lib/ransack/search.rb +17 -8
- data/lib/ransack/translate.rb +115 -115
- data/lib/ransack/version.rb +1 -1
- data/lib/ransack/visitor.rb +1 -12
- data/lib/ransack.rb +9 -9
- data/logo/ransack-h.png +0 -0
- data/logo/ransack-h.svg +34 -0
- data/logo/ransack-v.png +0 -0
- data/logo/ransack-v.svg +34 -0
- data/logo/ransack.png +0 -0
- data/logo/ransack.svg +21 -0
- data/ransack.gemspec +7 -24
- data/spec/console.rb +4 -0
- data/spec/helpers/polyamorous_helper.rb +19 -0
- data/spec/polyamorous/join_association_spec.rb +35 -0
- data/spec/polyamorous/join_dependency_spec.rb +97 -0
- data/spec/polyamorous/join_spec.rb +19 -0
- data/spec/ransack/adapters/active_record/base_spec.rb +370 -75
- data/spec/ransack/adapters/active_record/context_spec.rb +72 -34
- data/spec/ransack/configuration_spec.rb +97 -14
- data/spec/ransack/helpers/form_builder_spec.rb +2 -11
- data/spec/ransack/helpers/form_helper_spec.rb +481 -113
- data/spec/ransack/nodes/condition_spec.rb +24 -0
- data/spec/ransack/nodes/grouping_spec.rb +56 -0
- data/spec/ransack/predicate_spec.rb +79 -5
- data/spec/ransack/search_spec.rb +207 -81
- data/spec/spec_helper.rb +8 -0
- data/spec/support/schema.rb +100 -42
- metadata +57 -184
- data/.travis.yml +0 -69
- data/lib/ransack/adapters/active_record/3.0/compat.rb +0 -179
- data/lib/ransack/adapters/active_record/3.0/context.rb +0 -201
- data/lib/ransack/adapters/active_record/3.1/context.rb +0 -215
- data/lib/ransack/adapters/active_record/3.2/context.rb +0 -44
- data/lib/ransack/adapters/active_record/compat.rb +0 -14
- data/lib/ransack/adapters/mongoid/3.2/.gitkeep +0 -0
- data/lib/ransack/adapters/mongoid/attributes/attribute.rb +0 -37
- data/lib/ransack/adapters/mongoid/attributes/order_predications.rb +0 -17
- data/lib/ransack/adapters/mongoid/attributes/predications.rb +0 -141
- data/lib/ransack/adapters/mongoid/base.rb +0 -130
- data/lib/ransack/adapters/mongoid/context.rb +0 -208
- data/lib/ransack/adapters/mongoid/inquiry_hash.rb +0 -23
- data/lib/ransack/adapters/mongoid/ransack/constants.rb +0 -88
- data/lib/ransack/adapters/mongoid/ransack/context.rb +0 -60
- data/lib/ransack/adapters/mongoid/ransack/nodes/condition.rb +0 -27
- data/lib/ransack/adapters/mongoid/ransack/translate.rb +0 -13
- data/lib/ransack/adapters/mongoid/ransack/visitor.rb +0 -24
- data/lib/ransack/adapters/mongoid/table.rb +0 -35
- data/lib/ransack/adapters/mongoid.rb +0 -13
- data/spec/mongoid/adapters/mongoid/base_spec.rb +0 -276
- data/spec/mongoid/adapters/mongoid/context_spec.rb +0 -56
- data/spec/mongoid/configuration_spec.rb +0 -102
- data/spec/mongoid/dependencies_spec.rb +0 -8
- data/spec/mongoid/helpers/ransack_helper.rb +0 -11
- data/spec/mongoid/nodes/condition_spec.rb +0 -34
- data/spec/mongoid/nodes/grouping_spec.rb +0 -13
- data/spec/mongoid/predicate_spec.rb +0 -155
- data/spec/mongoid/search_spec.rb +0 -446
- data/spec/mongoid/support/mongoid.yml +0 -6
- data/spec/mongoid/support/schema.rb +0 -128
- data/spec/mongoid/translate_spec.rb +0 -14
- data/spec/mongoid_spec_helper.rb +0 -59
- data/spec/ransack/dependencies_spec.rb +0 -12
|
@@ -6,8 +6,14 @@ module ActionView::Helpers::Tags
|
|
|
6
6
|
# https://github.com/rails/rails/commit/c1a118a
|
|
7
7
|
class Base
|
|
8
8
|
private
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
if defined? ::ActiveRecord
|
|
10
|
+
def value
|
|
11
|
+
if @allow_method_names_outside_object
|
|
12
|
+
object.send @method_name if object && object.respond_to?(@method_name, true)
|
|
13
|
+
else
|
|
14
|
+
object.send @method_name if object
|
|
15
|
+
end
|
|
16
|
+
end
|
|
11
17
|
end
|
|
12
18
|
end
|
|
13
19
|
end
|
|
@@ -15,8 +21,7 @@ end
|
|
|
15
21
|
RANSACK_FORM_BUILDER = 'RANSACK_FORM_BUILDER'.freeze
|
|
16
22
|
|
|
17
23
|
require 'simple_form' if
|
|
18
|
-
(ENV[RANSACK_FORM_BUILDER] ||
|
|
19
|
-
.match('SimpleForm'.freeze)
|
|
24
|
+
(ENV[RANSACK_FORM_BUILDER] || ''.freeze).match('SimpleForm'.freeze)
|
|
20
25
|
|
|
21
26
|
module Ransack
|
|
22
27
|
module Helpers
|
|
@@ -47,7 +52,7 @@ module Ransack
|
|
|
47
52
|
raise ArgumentError, formbuilder_error_message(
|
|
48
53
|
"#{action}_select") unless object.respond_to?(:context)
|
|
49
54
|
options[:include_blank] = true unless options.has_key?(:include_blank)
|
|
50
|
-
bases = [
|
|
55
|
+
bases = [''.freeze].freeze + association_array(options[:associations])
|
|
51
56
|
if bases.size > 1
|
|
52
57
|
collection = attribute_collection_for_bases(action, bases)
|
|
53
58
|
object.name ||= default if can_use_default?(
|
|
@@ -66,13 +71,13 @@ module Ransack
|
|
|
66
71
|
def sort_direction_select(options = {}, html_options = {})
|
|
67
72
|
unless object.respond_to?(:context)
|
|
68
73
|
raise ArgumentError,
|
|
69
|
-
formbuilder_error_message(
|
|
74
|
+
formbuilder_error_message('sort_direction'.freeze)
|
|
70
75
|
end
|
|
71
76
|
template_collection_select(:dir, sort_array, options, html_options)
|
|
72
77
|
end
|
|
73
78
|
|
|
74
79
|
def sort_select(options = {}, html_options = {})
|
|
75
|
-
attribute_select(options, html_options,
|
|
80
|
+
attribute_select(options, html_options, 'sort'.freeze) +
|
|
76
81
|
sort_direction_select(options, html_options)
|
|
77
82
|
end
|
|
78
83
|
|
|
@@ -84,6 +89,10 @@ module Ransack
|
|
|
84
89
|
@template.sort_link @object, attribute, *args
|
|
85
90
|
end
|
|
86
91
|
|
|
92
|
+
def sort_url(attribute, *args)
|
|
93
|
+
@template.sort_url @object, attribute, *args
|
|
94
|
+
end
|
|
95
|
+
|
|
87
96
|
def condition_fields(*args, &block)
|
|
88
97
|
search_fields(:c, args, block)
|
|
89
98
|
end
|
|
@@ -135,7 +144,7 @@ module Ransack
|
|
|
135
144
|
else
|
|
136
145
|
only = Array.wrap(only).map(&:to_s)
|
|
137
146
|
keys = keys.select {
|
|
138
|
-
|k| only.include? k.sub(/_(any|all)$/,
|
|
147
|
+
|k| only.include? k.sub(/_(any|all)$/, ''.freeze)
|
|
139
148
|
}
|
|
140
149
|
end
|
|
141
150
|
end
|
|
@@ -177,9 +186,9 @@ module Ransack
|
|
|
177
186
|
|
|
178
187
|
def sort_array
|
|
179
188
|
[
|
|
180
|
-
[
|
|
181
|
-
[
|
|
182
|
-
]
|
|
189
|
+
['asc'.freeze, object.translate('asc'.freeze)].freeze,
|
|
190
|
+
['desc'.freeze, object.translate('desc'.freeze)].freeze
|
|
191
|
+
].freeze
|
|
183
192
|
end
|
|
184
193
|
|
|
185
194
|
def combinator_choices
|
|
@@ -234,7 +243,7 @@ module Ransack
|
|
|
234
243
|
Translate.association(base, :context => object.context),
|
|
235
244
|
collection_for_base(action, base)
|
|
236
245
|
]
|
|
237
|
-
rescue UntraversableAssociationError
|
|
246
|
+
rescue UntraversableAssociationError
|
|
238
247
|
nil
|
|
239
248
|
end
|
|
240
249
|
end
|
|
@@ -38,43 +38,53 @@ module Ransack
|
|
|
38
38
|
#
|
|
39
39
|
# <%= sort_link(@q, :name, [:name, 'kind ASC'], 'Player Name') %>
|
|
40
40
|
#
|
|
41
|
-
|
|
41
|
+
# You can also use a block:
|
|
42
|
+
#
|
|
43
|
+
# <%= sort_link(@q, :name, [:name, 'kind ASC']) do %>
|
|
44
|
+
# <strong>Player Name</strong>
|
|
45
|
+
# <% end %>
|
|
46
|
+
#
|
|
47
|
+
def sort_link(search_object, attribute, *args, &block)
|
|
42
48
|
search, routing_proxy = extract_search_and_routing_proxy(search_object)
|
|
43
49
|
unless Search === search
|
|
44
50
|
raise TypeError, 'First argument must be a Ransack::Search!'
|
|
45
51
|
end
|
|
46
|
-
|
|
52
|
+
args[args.first.is_a?(Array) ? 1 : 0, 0] = capture(&block) if block_given?
|
|
53
|
+
s = SortLink.new(search, attribute, args, params, &block)
|
|
47
54
|
link_to(s.name, url(routing_proxy, s.url_options), s.html_options(args))
|
|
48
55
|
end
|
|
49
56
|
|
|
57
|
+
# +sort_url+
|
|
58
|
+
# <%= sort_url(@q, :created_at, default_order: :desc) %>
|
|
59
|
+
#
|
|
60
|
+
def sort_url(search_object, attribute, *args)
|
|
61
|
+
search, routing_proxy = extract_search_and_routing_proxy(search_object)
|
|
62
|
+
unless Search === search
|
|
63
|
+
raise TypeError, 'First argument must be a Ransack::Search!'
|
|
64
|
+
end
|
|
65
|
+
s = SortLink.new(search, attribute, args, params)
|
|
66
|
+
url(routing_proxy, s.url_options)
|
|
67
|
+
end
|
|
68
|
+
|
|
50
69
|
private
|
|
51
70
|
|
|
52
71
|
def options_for(record)
|
|
53
|
-
record.map
|
|
72
|
+
record.map { |r| parse_record(r) }
|
|
54
73
|
end
|
|
55
74
|
|
|
56
75
|
def parse_record(object)
|
|
57
|
-
if object.is_a?(Ransack::Search)
|
|
58
|
-
|
|
59
|
-
else
|
|
60
|
-
object
|
|
61
|
-
end
|
|
76
|
+
return object.klass if object.is_a?(Ransack::Search)
|
|
77
|
+
object
|
|
62
78
|
end
|
|
63
79
|
|
|
64
80
|
def html_option_for(option, search)
|
|
65
|
-
if option.present?
|
|
66
|
-
|
|
67
|
-
else
|
|
68
|
-
"#{search.klass.to_s.underscore}_search"
|
|
69
|
-
end
|
|
81
|
+
return option.to_s if option.present?
|
|
82
|
+
"#{search.klass.to_s.underscore}_search"
|
|
70
83
|
end
|
|
71
84
|
|
|
72
85
|
def extract_search_and_routing_proxy(search)
|
|
73
|
-
if search.is_a?
|
|
74
|
-
|
|
75
|
-
else
|
|
76
|
-
[search, nil]
|
|
77
|
-
end
|
|
86
|
+
return [search[1], search[0]] if search.is_a?(Array)
|
|
87
|
+
[search, nil]
|
|
78
88
|
end
|
|
79
89
|
|
|
80
90
|
def url(routing_proxy, options_for_url)
|
|
@@ -88,20 +98,33 @@ module Ransack
|
|
|
88
98
|
class SortLink
|
|
89
99
|
def initialize(search, attribute, args, params)
|
|
90
100
|
@search = search
|
|
91
|
-
@params = params
|
|
101
|
+
@params = parameters_hash(params)
|
|
92
102
|
@field = attribute.to_s
|
|
93
103
|
@sort_fields = extract_sort_fields_and_mutate_args!(args).compact
|
|
94
104
|
@current_dir = existing_sort_direction
|
|
95
105
|
@label_text = extract_label_and_mutate_args!(args)
|
|
96
106
|
@options = extract_options_and_mutate_args!(args)
|
|
97
|
-
@hide_indicator = @options.delete
|
|
107
|
+
@hide_indicator = @options.delete(:hide_indicator) ||
|
|
108
|
+
Ransack.options[:hide_sort_order_indicators]
|
|
98
109
|
@default_order = @options.delete :default_order
|
|
99
110
|
end
|
|
100
111
|
|
|
112
|
+
def up_arrow
|
|
113
|
+
Ransack.options[:up_arrow]
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def down_arrow
|
|
117
|
+
Ransack.options[:down_arrow]
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def default_arrow
|
|
121
|
+
Ransack.options[:default_arrow]
|
|
122
|
+
end
|
|
123
|
+
|
|
101
124
|
def name
|
|
102
125
|
[ERB::Util.h(@label_text), order_indicator]
|
|
103
126
|
.compact
|
|
104
|
-
.join(
|
|
127
|
+
.join(' '.freeze)
|
|
105
128
|
.html_safe
|
|
106
129
|
end
|
|
107
130
|
|
|
@@ -114,35 +137,34 @@ module Ransack
|
|
|
114
137
|
def html_options(args)
|
|
115
138
|
html_options = extract_options_and_mutate_args!(args)
|
|
116
139
|
html_options.merge(
|
|
117
|
-
class: [[
|
|
118
|
-
.compact.join(
|
|
140
|
+
class: [['sort_link'.freeze, @current_dir], html_options[:class]]
|
|
141
|
+
.compact.join(' '.freeze)
|
|
119
142
|
)
|
|
120
143
|
end
|
|
121
144
|
|
|
122
145
|
private
|
|
123
146
|
|
|
124
|
-
def
|
|
125
|
-
if
|
|
126
|
-
|
|
147
|
+
def parameters_hash(params)
|
|
148
|
+
if ::ActiveRecord::VERSION::MAJOR >= 5 && params.respond_to?(:to_unsafe_h)
|
|
149
|
+
params.to_unsafe_h
|
|
127
150
|
else
|
|
128
|
-
|
|
151
|
+
params
|
|
129
152
|
end
|
|
130
153
|
end
|
|
131
154
|
|
|
155
|
+
def extract_sort_fields_and_mutate_args!(args)
|
|
156
|
+
return args.shift if args[0].is_a?(Array)
|
|
157
|
+
[@field]
|
|
158
|
+
end
|
|
159
|
+
|
|
132
160
|
def extract_label_and_mutate_args!(args)
|
|
133
|
-
if args.
|
|
134
|
-
|
|
135
|
-
else
|
|
136
|
-
Translate.attribute(@field, context: @search.context)
|
|
137
|
-
end
|
|
161
|
+
return args.shift if args[0].is_a?(String)
|
|
162
|
+
Translate.attribute(@field, context: @search.context)
|
|
138
163
|
end
|
|
139
164
|
|
|
140
165
|
def extract_options_and_mutate_args!(args)
|
|
141
|
-
if args.
|
|
142
|
-
|
|
143
|
-
else
|
|
144
|
-
{}
|
|
145
|
-
end
|
|
166
|
+
return args.shift.with_indifferent_access if args[0].is_a?(Hash)
|
|
167
|
+
{}
|
|
146
168
|
end
|
|
147
169
|
|
|
148
170
|
def search_and_sort_params
|
|
@@ -155,11 +177,8 @@ module Ransack
|
|
|
155
177
|
|
|
156
178
|
def sort_params
|
|
157
179
|
sort_array = recursive_sort_params_build(@sort_fields)
|
|
158
|
-
if sort_array.
|
|
159
|
-
|
|
160
|
-
else
|
|
161
|
-
sort_array
|
|
162
|
-
end
|
|
180
|
+
return sort_array[0] if sort_array.length == 1
|
|
181
|
+
sort_array
|
|
163
182
|
end
|
|
164
183
|
|
|
165
184
|
def recursive_sort_params_build(fields)
|
|
@@ -179,52 +198,38 @@ module Ransack
|
|
|
179
198
|
if sort_dir = existing_sort_direction(attr_name)
|
|
180
199
|
direction_text(sort_dir)
|
|
181
200
|
else
|
|
182
|
-
default_sort_order(attr_name) ||
|
|
201
|
+
default_sort_order(attr_name) || 'asc'.freeze
|
|
183
202
|
end
|
|
184
203
|
end
|
|
185
204
|
|
|
186
|
-
def existing_sort_direction(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
end
|
|
205
|
+
def existing_sort_direction(f = @field)
|
|
206
|
+
return unless sort = @search.sorts.detect { |s| s && s.name == f }
|
|
207
|
+
sort.dir
|
|
190
208
|
end
|
|
191
209
|
|
|
192
210
|
def default_sort_order(attr_name)
|
|
193
|
-
if Hash === @default_order
|
|
194
|
-
|
|
195
|
-
else
|
|
196
|
-
@default_order
|
|
197
|
-
end
|
|
211
|
+
return @default_order[attr_name] if Hash === @default_order
|
|
212
|
+
@default_order
|
|
198
213
|
end
|
|
199
214
|
|
|
200
215
|
def order_indicator
|
|
201
|
-
if @hide_indicator
|
|
202
|
-
|
|
216
|
+
return if @hide_indicator
|
|
217
|
+
return default_arrow if no_sort_direction_specified?
|
|
218
|
+
if @current_dir == 'desc'.freeze
|
|
219
|
+
up_arrow
|
|
203
220
|
else
|
|
204
|
-
|
|
221
|
+
down_arrow
|
|
205
222
|
end
|
|
206
223
|
end
|
|
207
224
|
|
|
208
225
|
def no_sort_direction_specified?(dir = @current_dir)
|
|
209
|
-
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
def direction_arrow
|
|
213
|
-
if @current_dir == Constants::DESC
|
|
214
|
-
Constants::DESC_ARROW
|
|
215
|
-
else
|
|
216
|
-
Constants::ASC_ARROW
|
|
217
|
-
end
|
|
226
|
+
dir != 'asc'.freeze && dir != 'desc'.freeze
|
|
218
227
|
end
|
|
219
228
|
|
|
220
229
|
def direction_text(dir)
|
|
221
|
-
if dir ==
|
|
222
|
-
|
|
223
|
-
else
|
|
224
|
-
Constants::DESC
|
|
225
|
-
end
|
|
230
|
+
return 'asc'.freeze if dir == 'desc'.freeze
|
|
231
|
+
'desc'.freeze
|
|
226
232
|
end
|
|
227
|
-
|
|
228
233
|
end
|
|
229
234
|
end
|
|
230
235
|
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
ar:
|
|
2
|
+
ransack:
|
|
3
|
+
search: "بحث"
|
|
4
|
+
predicate: "فاعل"
|
|
5
|
+
and: "و"
|
|
6
|
+
or: "أو"
|
|
7
|
+
any: "أيُّ"
|
|
8
|
+
all: "كل"
|
|
9
|
+
combinator: "دالة توافقية"
|
|
10
|
+
attribute: "خاصية"
|
|
11
|
+
value: "قيمة"
|
|
12
|
+
condition: "شرط"
|
|
13
|
+
sort: "ترتيب"
|
|
14
|
+
asc: "تصاعدي"
|
|
15
|
+
desc: "تنازلي"
|
|
16
|
+
predicates:
|
|
17
|
+
eq: "معادل"
|
|
18
|
+
eq_any: "معادل على اﻷقل لواحد"
|
|
19
|
+
eq_all: "معادل للجميع"
|
|
20
|
+
not_eq: "ليس معادلا لـ"
|
|
21
|
+
not_eq_any: "ليس معادلا على اﻷقل لواحد"
|
|
22
|
+
not_eq_all: "ليس معادلا للجميع"
|
|
23
|
+
matches: "موائم"
|
|
24
|
+
matches_any: "موائم لواحد على اﻷقل"
|
|
25
|
+
matches_all: "موائم للجميع"
|
|
26
|
+
does_not_match: "لا يتواءم"
|
|
27
|
+
does_not_match_any: "لا يتواءم مع واحد على اﻷقل"
|
|
28
|
+
does_not_match_all: "لا يتواءم مع الجميع"
|
|
29
|
+
lt: "أصغر من"
|
|
30
|
+
lt_any: "أصغر لواحد على اﻷقل"
|
|
31
|
+
lt_all: "أصغر من الجميع"
|
|
32
|
+
lteq: "أصغر أو مساو لـ"
|
|
33
|
+
lteq_any: "أصغر أو مساو لواحد على اﻷقل"
|
|
34
|
+
lteq_all: "أصغر أو مساو للجميع"
|
|
35
|
+
gt: "أكبر من"
|
|
36
|
+
gt_any: "أكبر من واحد على اﻷقل"
|
|
37
|
+
gt_all: "أكبر من الجميع"
|
|
38
|
+
gteq: "أكبر أو مساو لـ"
|
|
39
|
+
gteq_any: "أكبر أو مساو لواحد على اﻷقل"
|
|
40
|
+
gteq_all: "أكبر أو مساو للجميع"
|
|
41
|
+
in: "متضمن لـ"
|
|
42
|
+
in_any: "متضمن لواحد على اﻷقل"
|
|
43
|
+
in_all: "متضمن للجميع"
|
|
44
|
+
not_in: "غير متضمن"
|
|
45
|
+
not_in_any: "غير متضمن لواحد على اﻷقل"
|
|
46
|
+
not_in_all: "غير متضمن للجميع"
|
|
47
|
+
cont: "محتو"
|
|
48
|
+
cont_any: "محتو لواحد على اﻷقل"
|
|
49
|
+
cont_all: "محتو لجميع"
|
|
50
|
+
not_cont: "غير محتو"
|
|
51
|
+
not_cont_any: "غير محتو لواحد على اﻷقل"
|
|
52
|
+
not_cont_all: "غير محتو للجميع"
|
|
53
|
+
start: "يبدأ بـ"
|
|
54
|
+
start_any: "يبدأ بواحد على اﻷقل"
|
|
55
|
+
start_all: "يبدأ بالجميع"
|
|
56
|
+
not_start: "لا يبدأ بـ"
|
|
57
|
+
not_start_any: "لا يبدأ بواحد على اﻷقل"
|
|
58
|
+
not_start_all: "لا يبدأ بالجميع"
|
|
59
|
+
end: "ينتهي بـ"
|
|
60
|
+
end_any: "ينتهي بواحد على اﻷقل"
|
|
61
|
+
end_all: "ينتهي بالجميع"
|
|
62
|
+
not_end: "لا ينتهي بـ"
|
|
63
|
+
not_end_any: "لا ينتهي بواحد على اﻷقل"
|
|
64
|
+
not_end_all: "لا ينتهي بالجميع"
|
|
65
|
+
'true': "صحيح"
|
|
66
|
+
'false': "خطأ"
|
|
67
|
+
present: "مستقبل"
|
|
68
|
+
blank: "فراغ"
|
|
69
|
+
'null': "عدم"
|
|
70
|
+
not_null: "غير مساو لقيمة عدم"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
az:
|
|
2
|
+
ransack:
|
|
3
|
+
search: "axtar"
|
|
4
|
+
predicate: "təsdiqlə"
|
|
5
|
+
and: "və"
|
|
6
|
+
or: "və ya"
|
|
7
|
+
any: "hər hansı"
|
|
8
|
+
all: "hamısı"
|
|
9
|
+
combinator: "birləşdirici"
|
|
10
|
+
attribute: "xüsusiyyət"
|
|
11
|
+
value: "dəyər"
|
|
12
|
+
condition: "şərt"
|
|
13
|
+
sort: "sırala"
|
|
14
|
+
asc: "artan"
|
|
15
|
+
desc: "azalan"
|
|
16
|
+
predicates:
|
|
17
|
+
eq: "bərabər"
|
|
18
|
+
eq_any: "hər hansı birinə bərabər"
|
|
19
|
+
eq_all: "hamısına bərabər"
|
|
20
|
+
not_eq: "bərabər deyil"
|
|
21
|
+
not_eq_any: "hər hansı birinə bərabər deyil"
|
|
22
|
+
not_eq_all: "heç birinə bərabər deyil"
|
|
23
|
+
matches: "uyğunlaşan"
|
|
24
|
+
matches_any: "hər hansı biri ilə uyğunlaşan"
|
|
25
|
+
matches_all: "hamısı ilə uyğunlaşan"
|
|
26
|
+
does_not_match: "uyğunlaşmayan"
|
|
27
|
+
does_not_match_any: "hər hansı biri ilə uyğunlaşmayan"
|
|
28
|
+
does_not_match_all: "heç biri ilə uyğunlaşmayan"
|
|
29
|
+
lt: "daha kiçik"
|
|
30
|
+
lt_any: "hər hansı birindən kiçik"
|
|
31
|
+
lt_all: "hamısından kiçik"
|
|
32
|
+
lteq: "daha kiçik və ya bərabər"
|
|
33
|
+
lteq_any: "daha kiçik və ya hər hansı birinə bərabər"
|
|
34
|
+
lteq_all: "daha kiçik və ya hamısına bərabər"
|
|
35
|
+
gt: "daha böyük "
|
|
36
|
+
gt_any: "hər hansı birindən daha böyük"
|
|
37
|
+
gt_all: "hamısından daha böyük"
|
|
38
|
+
gteq: "daha böyük və ya bərabər"
|
|
39
|
+
gteq_any: "daha böyük və ya hər hansı birine bərabər"
|
|
40
|
+
gteq_all: "daha böyük və ya hamısıne bərabər"
|
|
41
|
+
in: "içində"
|
|
42
|
+
in_any: "hər hansı birində"
|
|
43
|
+
in_all: "hamısında"
|
|
44
|
+
not_in: "içində deyil"
|
|
45
|
+
not_in_any: "hər hansı birində deyil"
|
|
46
|
+
not_in_all: "heç birində deyil"
|
|
47
|
+
cont: "ehtiva edən"
|
|
48
|
+
cont_any: "hər hansı birini ehtiva edən"
|
|
49
|
+
cont_all: "hamısını ehtiva edən"
|
|
50
|
+
not_cont: "ehtiva etməyən"
|
|
51
|
+
not_cont_any: "hər hansı birini ehtiva etməyən"
|
|
52
|
+
not_cont_all: "heç birini birini ehtiva etməyən"
|
|
53
|
+
start: "ilə başlayan"
|
|
54
|
+
start_any: "hər hansı biri ilə başlayan"
|
|
55
|
+
start_all: "hamısı ilə başlayan"
|
|
56
|
+
not_start: "ilə başlamayan"
|
|
57
|
+
not_start_any: "hər hansı biri ilə başlamayan"
|
|
58
|
+
not_start_all: "hiçbiri ilə başlamayan"
|
|
59
|
+
end: "ilə bitən"
|
|
60
|
+
end_any: "hər hansı biri ilə bitən"
|
|
61
|
+
end_all: "hamısı ilə bitən"
|
|
62
|
+
not_end: "ilə bitməyən"
|
|
63
|
+
not_end_any: "hər hansı biri ilə bitməyən"
|
|
64
|
+
not_end_all: "heç biri ilə bitməyən"
|
|
65
|
+
'true': "doğru"
|
|
66
|
+
'false': "yanlış"
|
|
67
|
+
present: "mövcüd"
|
|
68
|
+
blank: "boş"
|
|
69
|
+
'null': "keçərsiz"
|
|
70
|
+
not_null: "keçərli"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
bg:
|
|
2
|
+
ransack:
|
|
3
|
+
search: "търсене"
|
|
4
|
+
predicate: "предикат"
|
|
5
|
+
and: "и"
|
|
6
|
+
or: "или"
|
|
7
|
+
any: "всякакво"
|
|
8
|
+
all: "всички"
|
|
9
|
+
combinator: "комбинатор"
|
|
10
|
+
attribute: "атрибут"
|
|
11
|
+
value: "стойност"
|
|
12
|
+
condition: "условие"
|
|
13
|
+
sort: "сортиране"
|
|
14
|
+
asc: "възходящ"
|
|
15
|
+
desc: "низходящ"
|
|
16
|
+
predicates:
|
|
17
|
+
eq: "се равнява на"
|
|
18
|
+
eq_any: "се равнява на всяко"
|
|
19
|
+
eq_all: "се равнява на всички"
|
|
20
|
+
not_eq: "не е равно на"
|
|
21
|
+
not_eq_any: "не е равно на никое от"
|
|
22
|
+
not_eq_all: "не е равно на всички"
|
|
23
|
+
matches: "съвпада"
|
|
24
|
+
matches_any: "съвпада с някое"
|
|
25
|
+
matches_all: "съвпада с всички"
|
|
26
|
+
does_not_match: "не съвпада"
|
|
27
|
+
does_not_match_any: "не съвпада с никое"
|
|
28
|
+
does_not_match_all: "не съвпада с всички"
|
|
29
|
+
lt: "по-малко от"
|
|
30
|
+
lt_any: "по-малко от някое"
|
|
31
|
+
lt_all: "по-малко от всички"
|
|
32
|
+
lteq: "по-малко или равно на"
|
|
33
|
+
lteq_any: "по-малко или равно на някое"
|
|
34
|
+
lteq_all: "по-малко или равно на всички"
|
|
35
|
+
gt: "по-голямо от"
|
|
36
|
+
gt_any: "по-голямо от всякое"
|
|
37
|
+
gt_all: "по-голямо от всички"
|
|
38
|
+
gteq: "по-голямо или равно на"
|
|
39
|
+
gteq_any: "по-голямо или равно на всякое"
|
|
40
|
+
gteq_all: "по-голямо или равно на всички"
|
|
41
|
+
in: "в"
|
|
42
|
+
in_any: "във всякое"
|
|
43
|
+
in_all: "във всички"
|
|
44
|
+
not_in: "не в"
|
|
45
|
+
not_in_any: "не в никое"
|
|
46
|
+
not_in_all: "не във всички"
|
|
47
|
+
cont: "съдържа"
|
|
48
|
+
cont_any: "съдържа всякое"
|
|
49
|
+
cont_all: "съдържа всички"
|
|
50
|
+
not_cont: "не съдържа"
|
|
51
|
+
not_cont_any: "не съдържа никое"
|
|
52
|
+
not_cont_all: "не съдържа всички"
|
|
53
|
+
start: "започва с"
|
|
54
|
+
start_any: "започва с всякое"
|
|
55
|
+
start_all: "започва с всички"
|
|
56
|
+
not_start: "не започва с"
|
|
57
|
+
not_start_any: "не започва с никое"
|
|
58
|
+
not_start_all: "не започва с всички"
|
|
59
|
+
end: "завършва с"
|
|
60
|
+
end_any: "завършва с всякое"
|
|
61
|
+
end_all: "завършва с всички"
|
|
62
|
+
not_end: "не завършва с"
|
|
63
|
+
not_end_any: "не завършва с никое"
|
|
64
|
+
not_end_all: "не завършва с всички"
|
|
65
|
+
'true': "истина"
|
|
66
|
+
'false': "неистина"
|
|
67
|
+
present: "присъства"
|
|
68
|
+
blank: "е празно"
|
|
69
|
+
'null': "е нула"
|
|
70
|
+
not_null: "не е нула"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
ca:
|
|
2
|
+
ransack:
|
|
3
|
+
search: "cercar"
|
|
4
|
+
predicate: "predicat"
|
|
5
|
+
and: "i"
|
|
6
|
+
or: "o"
|
|
7
|
+
any: "qualsevol"
|
|
8
|
+
all: "tots"
|
|
9
|
+
combinator: "combinador"
|
|
10
|
+
attribute: "atribut"
|
|
11
|
+
value: "valor"
|
|
12
|
+
condition: "condició"
|
|
13
|
+
sort: "ordenar"
|
|
14
|
+
asc: "ascendent"
|
|
15
|
+
desc: "descendent"
|
|
16
|
+
predicates:
|
|
17
|
+
eq: "és igual a"
|
|
18
|
+
eq_any: "és igual a qualsevol"
|
|
19
|
+
eq_all: "és igual a tots"
|
|
20
|
+
not_eq: "no és igual a"
|
|
21
|
+
not_eq_any: "no és igual a qualsevol"
|
|
22
|
+
not_eq_all: "no és igual a tots"
|
|
23
|
+
matches: "coincideix"
|
|
24
|
+
matches_any: "coincideix a qualsevol"
|
|
25
|
+
matches_all: "coincideix a tots"
|
|
26
|
+
does_not_match: "no coincideix"
|
|
27
|
+
does_not_match_any: "no coincideix amb cap"
|
|
28
|
+
does_not_match_all: "no coincideix amb tots"
|
|
29
|
+
lt: "menor que"
|
|
30
|
+
lt_any: "menor que qualsevol"
|
|
31
|
+
lt_all: "menor o igual a"
|
|
32
|
+
lteq: "menor que o igual a"
|
|
33
|
+
lteq_any: "menor o igual a qualsevol"
|
|
34
|
+
lteq_all: "menor o igual a tots"
|
|
35
|
+
gt: "major que"
|
|
36
|
+
gt_any: "major que qualsevol"
|
|
37
|
+
gt_all: "major que tots"
|
|
38
|
+
gteq: "major que o igual a"
|
|
39
|
+
gteq_any: "major que o igual a qualsevol"
|
|
40
|
+
gteq_all: "major que o igual a tots"
|
|
41
|
+
in: "en"
|
|
42
|
+
in_any: "en qualsevol"
|
|
43
|
+
in_all: "en tots"
|
|
44
|
+
not_in: "no en"
|
|
45
|
+
not_in_any: "no en qualsevol"
|
|
46
|
+
not_in_all: "no en tots"
|
|
47
|
+
cont: "conté"
|
|
48
|
+
cont_any: "conté qualsevol"
|
|
49
|
+
cont_all: "conté tots"
|
|
50
|
+
not_cont: "no conté"
|
|
51
|
+
not_cont_any: "no conté cap"
|
|
52
|
+
not_cont_all: "no conté tota"
|
|
53
|
+
start: "comença per"
|
|
54
|
+
start_any: "comença per qualsevol"
|
|
55
|
+
start_all: "comença per tot"
|
|
56
|
+
not_start: "no comença per"
|
|
57
|
+
not_start_any: "no comença per qualsevol"
|
|
58
|
+
not_start_all: "no comença per tot"
|
|
59
|
+
end: "acaba en"
|
|
60
|
+
end_any: "acaba en qualsevol"
|
|
61
|
+
end_all: "acaba en tot"
|
|
62
|
+
not_end: "no acaba en"
|
|
63
|
+
not_end_any: "no acaba en qualsevol"
|
|
64
|
+
not_end_all: "no acaba en tot"
|
|
65
|
+
'true': "és verdader"
|
|
66
|
+
'false': "és fals"
|
|
67
|
+
present: "és present"
|
|
68
|
+
blank: "està en blanc"
|
|
69
|
+
'null': "és nul"
|
|
70
|
+
not_null: "no és nul"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
da:
|
|
2
|
+
ransack:
|
|
3
|
+
search: "søg"
|
|
4
|
+
predicate: "predicate"
|
|
5
|
+
and: "og"
|
|
6
|
+
or: "eller"
|
|
7
|
+
any: "anhver"
|
|
8
|
+
all: "alle"
|
|
9
|
+
combinator: "kombinering"
|
|
10
|
+
attribute: "attribut"
|
|
11
|
+
value: "værdi"
|
|
12
|
+
condition: "betingelse"
|
|
13
|
+
sort: "sorter"
|
|
14
|
+
asc: "opstigende"
|
|
15
|
+
desc: "faldende"
|
|
16
|
+
predicates:
|
|
17
|
+
eq: "lig med"
|
|
18
|
+
eq_any: "lig med enhver"
|
|
19
|
+
eq_all: "lig med alle"
|
|
20
|
+
not_eq: "ikke lig med"
|
|
21
|
+
not_eq_any: "ikke lig med nogen"
|
|
22
|
+
not_eq_all: "ikke lig med alle"
|
|
23
|
+
matches: "matcher"
|
|
24
|
+
matches_any: "matcher enhver"
|
|
25
|
+
matches_all: "matcher alle"
|
|
26
|
+
does_not_match: "matcher ikke"
|
|
27
|
+
does_not_match_any: "matcher ikke nogen"
|
|
28
|
+
does_not_match_all: "matcher ikke alle"
|
|
29
|
+
lt: "mindre end"
|
|
30
|
+
lt_any: "mindre end nogen"
|
|
31
|
+
lt_all: "mindre end alle"
|
|
32
|
+
lteq: "mindre end eller lig med"
|
|
33
|
+
lteq_any: "mindre end eller lig med nogen"
|
|
34
|
+
lteq_all: "mindre end eller lig med alle"
|
|
35
|
+
gt: "større end"
|
|
36
|
+
gt_any: "større end nogen"
|
|
37
|
+
gt_all: "større end alle"
|
|
38
|
+
gteq: "større end eller lig med"
|
|
39
|
+
gteq_any: "større end eller lig med nogen"
|
|
40
|
+
gteq_all: "større end eller lig med alle"
|
|
41
|
+
in: "i"
|
|
42
|
+
in_any: "i nogen"
|
|
43
|
+
in_all: "i alle"
|
|
44
|
+
not_in: "ikke i"
|
|
45
|
+
not_in_any: "ikke i nogen"
|
|
46
|
+
not_in_all: "ikke i alle"
|
|
47
|
+
cont: "indeholder"
|
|
48
|
+
cont_any: "indeholder nogen"
|
|
49
|
+
cont_all: "indeholder alle"
|
|
50
|
+
not_cont: "indeholder ikke"
|
|
51
|
+
not_cont_any: "indeholder ikke nogen"
|
|
52
|
+
not_cont_all: "indeholder ikke alle"
|
|
53
|
+
start: "starter med"
|
|
54
|
+
start_any: "starter med nogen"
|
|
55
|
+
start_all: "starter med alle"
|
|
56
|
+
not_start: "starter ikke med"
|
|
57
|
+
not_start_any: "starter ikke med nogen"
|
|
58
|
+
not_start_all: "starter ikke med alle"
|
|
59
|
+
end: "slutter med"
|
|
60
|
+
end_any: "slutter med nogen"
|
|
61
|
+
end_all: "slutter med alle"
|
|
62
|
+
not_end: "slutter ikke med"
|
|
63
|
+
not_end_any: "slutter ikke med nogen"
|
|
64
|
+
not_end_all: "slutter ikke med alle"
|
|
65
|
+
'true': "er sand"
|
|
66
|
+
'false': "er falsk"
|
|
67
|
+
present: "er til stede"
|
|
68
|
+
blank: "er blank"
|
|
69
|
+
'null': "er nul"
|
|
70
|
+
not_null: "er ikke nul"
|