Skip to content

Commit d78c6b4

Browse files
committed
Restrict private methods access from generated code
1 parent ab33049 commit d78c6b4

File tree

5 files changed

+15
-18
lines changed

5 files changed

+15
-18
lines changed

lib/datagrid/drivers/array.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ def to_scope(scope)
1313

1414
def where(scope, attribute, value)
1515
scope.select do |object|
16-
object.send(attribute) == value
16+
object.public_send(attribute) == value
1717
end
1818
end
1919

2020
def asc(scope, order)
2121
return scope unless order
2222
return scope if order.empty?
2323
scope.sort_by do |object|
24-
object.send(order)
24+
object.public_send(order)
2525
end
2626
end
2727

@@ -39,14 +39,14 @@ def reverse_order(scope)
3939

4040
def greater_equal(scope, field, value)
4141
scope.select do |object|
42-
compare_value = object.send(field)
42+
compare_value = object.public_send(field)
4343
compare_value.respond_to?(:>=) && compare_value >= value
4444
end
4545
end
4646

4747
def less_equal(scope, field, value)
4848
scope.select do |object|
49-
compare_value = object.send(field)
49+
compare_value = object.public_send(field)
5050
compare_value.respond_to?(:<=) && compare_value <= value
5151
end
5252
end
@@ -57,12 +57,12 @@ def has_column?(scope, column_name)
5757

5858
def is_timestamp?(scope, column_name)
5959
has_column?(scope, column_name) &&
60-
timestamp_class?(scope.first.send(column_name).class)
60+
timestamp_class?(scope.first.public_send(column_name).class)
6161
end
6262

6363
def contains(scope, field, value)
6464
scope.select do |object|
65-
object.send(field).to_s.include?(value)
65+
object.public_send(field).to_s.include?(value)
6666
end
6767
end
6868

lib/datagrid/filters/base_filter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def header
6868
def default(object)
6969
default = self.options[:default]
7070
if default.is_a?(Symbol)
71-
object.send(default)
71+
object.public_send(default)
7272
elsif default.respond_to?(:call)
7373
Datagrid::Utils.apply_args(object, &default)
7474
else
@@ -174,7 +174,7 @@ def driver
174174
def default_filter(value, scope, grid)
175175
return nil if dummy?
176176
if !driver.has_column?(scope, name) && scope.respond_to?(name)
177-
scope.send(name, value)
177+
scope.public_send(name, value)
178178
else
179179
default_filter_where(scope, value)
180180
end

lib/datagrid/form_builder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def datagrid_enum_filter(attribute_or_filter, options = {}, &block)
8989
end
9090

9191
def enum_checkbox_checked?(filter, option_value)
92-
current_value = object.send(filter.name)
92+
current_value = object.public_send(filter.name)
9393
if current_value.respond_to?(:include?)
9494
# Typecast everything to string
9595
# to remove difference between String and Symbol

lib/datagrid/rspec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555
before(:each) do
5656
subject.attributes = {filter.name => filter_value}
57-
subject.send(filter.name).should_not be_nil
57+
subject.public_send(filter.name).should_not be_nil
5858
end
5959

6060
it "should be supported" do

lib/datagrid/utils.rb

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,12 @@ def warn_once(message, delay = 5)
3838
end
3939

4040
def add_html_classes(options, *classes)
41+
return options if classes.empty?
4142
options = options.clone
42-
options[:class] ||= ""
43-
if options[:class].is_a?(Array)
44-
options[:class] += classes
45-
else
46-
# suppose that it is a String
47-
options[:class] += " " unless options[:class].blank?
48-
options[:class] += classes.join(" ")
49-
end
43+
options[:class] ||= []
44+
array = options[:class].is_a?(Array)
45+
value = [*options[:class], *classes]
46+
options[:class] = array ? value : value.join(" ")
5047
options
5148
end
5249

0 commit comments

Comments
 (0)