Sha256: 6f42fa0e0fc0cceb79e44e6761b891a964d82ae1030ab62b4a284728fa9f8958

Contents?: true

Size: 1.36 KB

Versions: 99

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

module Motor
  module BuildSchema
    module FindDisplayColumn
      DISPLAY_NAMES = Set.new(
        %w[
          name
          full_name
          fullname
          last_name
          lastname
          first_name
          firstname
          fname
          lname
          sname
          company
          domain
          website
          title
          phone
          phone_number
          email
          phone
          filename
          file_name
          url
          make
          brand
          manufacturer
          model
          address
          code
        ]
      ).freeze

      DISPLAY_NAME_REGEXP = Regexp.new(Regexp.union(DISPLAY_NAMES.to_a).source, Regexp::IGNORECASE)

      module_function

      def call(model)
        column_names = fetch_column_names(model)

        select_column_name(column_names)
      end

      def select_column_name(column_names)
        name   = column_names.find { |column_name| column_name.in?(DISPLAY_NAMES) }
        name ||= column_names.find { |column_name| column_name.match?(DISPLAY_NAME_REGEXP) }

        name
      end

      def fetch_column_names(model)
        model.columns.map do |column|
          next unless column.type.in?(BuildSchema::SEARCHABLE_COLUMN_TYPES)
          next if column.try(:array?)

          column.name
        end.compact
      end
    end
  end
end

Version data entries

99 entries across 99 versions & 7 rubygems

Version Path
motor-admin-0.4.36 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.35 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.34 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.33 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.32 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.31 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.30 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.29 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.28 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.35 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.34 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.33 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.32 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.31 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.30 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.29 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.28 lib/motor/build_schema/find_display_column.rb
motor-admin-cstham8-0.4.27 lib/motor/build_schema/find_display_column.rb
motor-admin-0.4.27 lib/motor/build_schema/find_display_column.rb
motor-admin-unosquare-0.4.28 lib/motor/build_schema/find_display_column.rb