Sha256: 0df766889b4a216921e3cbab57d185f74f553c9737cd54fe39a03d503653df5b

Contents?: true

Size: 1.36 KB

Versions: 16

Compression:

Stored size: 1.36 KB

Contents

module ActiveAdmin
  module OutputSafetyHelper
    # Converts the array to a comma-separated sentence where the last element is
    # joined by the connector word. This is the html_safe-aware version of
    # ActiveSupport's {Array#to_sentence}[http://api.rubyonrails.org/classes/Array.html#method-i-to_sentence].
    #
    # Copied from Rails 5 to support Rails 4.
    # https://github.com/rails/rails/blob/9c35bf2a6a27431c6aa283db781c19f61c5155be/actionview/lib/action_view/helpers/output_safety_helper.rb#L43
    def to_sentence(array, options = {})
      options.assert_valid_keys(:words_connector, :two_words_connector, :last_word_connector, :locale)

      default_connectors = {
        words_connector: ", ",
        two_words_connector: " and ",
        last_word_connector: ", and "
      }
      if defined?(::I18n)
        i18n_connectors = ::I18n.translate(:'support.array', locale: options[:locale], default: {})
        default_connectors.merge!(i18n_connectors)
      end
      options = default_connectors.merge!(options)

      case array.length
      when 0
        "".html_safe
      when 1
        ERB::Util.html_escape(array[0])
      when 2
        safe_join([array[0], array[1]], options[:two_words_connector])
      else
        safe_join([safe_join(array[0...-1], options[:words_connector]), options[:last_word_connector], array[-1]], nil)
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
activeadmin-rb-1.5.0 lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.7.1 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin-rb-1.4.0 lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.7.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.4.3 lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.4.2 lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.4.1 lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.4.0 lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.3.1 lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.6.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.5.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.3.0 lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.4.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.3.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin_addons-1.2.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/helpers/output_safety_helper.rb
activeadmin-1.2.1 lib/active_admin/helpers/output_safety_helper.rb