Sha256: 2ccc031e031818451b7981386c54b9d7fad3276eee1ee5be007eddda952c9471

Contents?: true

Size: 1.32 KB

Versions: 9

Compression:

Stored size: 1.32 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)

          column.name
        end.compact
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
motor-admin-0.1.55 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.54 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.53 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.52 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.51 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.50 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.49 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.48 lib/motor/build_schema/find_display_column.rb
motor-admin-0.1.47 lib/motor/build_schema/find_display_column.rb