Sha256: 91ef0484907ca61bdef413645751b941116995a53d6c9d5917e5279496eeb0ed

Contents?: true

Size: 1020 Bytes

Versions: 14

Compression:

Stored size: 1020 Bytes

Contents

# frozen_string_literal: true

class Serega
  module SeregaValidations
    module Attribute
      #
      # Attribute `name` parameter validator
      #
      class CheckName
        # Regexp for valid attribute name
        FORMAT = /\A[\w~-]+\z/

        class << self
          #
          # Checks allowed characters.
          # Allowed characters: "a-z", "A-Z", "0-9", "_", "-", "~".
          #
          # @param name [String, Symbol] Attribute name
          #
          # @raise [SeregaError] when name has invalid format
          # @return [void]
          #
          def call(name)
            name = SeregaUtils::SymbolName.call(name)
            raise SeregaError, message(name) unless FORMAT.match?(name)
          end

          private

          def message(name)
            <<~MESSAGE.tr("\n", "")
              Invalid attribute name = #{name.inspect}.
               Allowed characters: "a-z", "A-Z", "0-9", "_", "-", "~"
            MESSAGE
          end
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
serega-0.21.0 lib/serega/validations/attribute/check_name.rb
serega-0.20.1 lib/serega/validations/attribute/check_name.rb
serega-0.20.0 lib/serega/validations/attribute/check_name.rb
serega-0.19.0 lib/serega/validations/attribute/check_name.rb
serega-0.18.0 lib/serega/validations/attribute/check_name.rb
serega-0.17.0 lib/serega/validations/attribute/check_name.rb
serega-0.16.0 lib/serega/validations/attribute/check_name.rb
serega-0.15.0 lib/serega/validations/attribute/check_name.rb
serega-0.14.0 lib/serega/validations/attribute/check_name.rb
serega-0.12.0 lib/serega/validations/attribute/check_name.rb
serega-0.11.2 lib/serega/validations/attribute/check_name.rb
serega-0.11.1 lib/serega/validations/attribute/check_name.rb
serega-0.11.0 lib/serega/validations/attribute/check_name.rb
serega-0.10.0 lib/serega/validations/attribute/check_name.rb