wrapper = settings['wrapper'].to_s
csv_options[:quote_char] = wrapper if wrapper.size == 1
- CSV.foreach(filepath, csv_options) do |row|
+ CSV.foreach(filepath, **csv_options) do |row|
yield row if block_given?
end
end
attachable_options[:delete_permission] = options.delete(:delete_permission) || "edit_#{self.name.pluralize.underscore}".to_sym
has_many :attachments, lambda {order("#{Attachment.table_name}.created_on ASC, #{Attachment.table_name}.id ASC")},
- options.merge(:as => :container, :dependent => :destroy, :inverse_of => :container)
+ **options, as: :container, dependent: :destroy, inverse_of: :container
send :include, Redmine::Acts::Attachable::InstanceMethods
before_save :attach_saved_attachments
after_rollback :detach_saved_attachments
::I18n.t(*args)
when 2
if args.last.is_a?(Hash)
- ::I18n.t(*args)
+ ::I18n.t(*args.first, **args.last)
elsif args.last.is_a?(String)
::I18n.t(args.first, :value => args.last)
else
def ll(lang, str, arg=nil)
options = arg.is_a?(Hash) ? arg : {:value => arg}
locale = lang.to_s.gsub(%r{(.+)\-(.+)$}) { "#{$1}-#{$2.upcase}" }
- ::I18n.t(str.to_s, options.merge(:locale => locale))
+ ::I18n.t(str.to_s, **options, locale: locale)
end
# Localizes the given args with user's language
return nil unless date
options = {}
options[:format] = Setting.date_format unless Setting.date_format.blank?
- ::I18n.l(date.to_date, options)
+ ::I18n.l(date.to_date, **options)
end
def format_time(time, include_date=true, user=nil)
options[:format] = (Setting.time_format.blank? ? :time : Setting.time_format)
time = time.to_time if time.is_a?(String)
local = user.convert_time_to_user_timezone(time)
- (include_date ? "#{format_date(local)} " : "") + ::I18n.l(local, options)
+ (include_date ? "#{format_date(local)} " : "") + ::I18n.l(local, **options)
end
def format_hours(hours)