Sha256: 263d4527f3532acda3d1ff0069149e682f7c090dd507afa0aed18eb46acf8570
Contents?: true
Size: 1.53 KB
Versions: 2
Compression:
Stored size: 1.53 KB
Contents
# frozen_string_literal: true class Serega module SeregaValidations module Attribute # # Attribute `name` parameter validator # class CheckName # Regexp for valid one-char attribute name FORMAT_ONE_CHAR = /\A[a-zA-Z0-9]\z/ # Regexp for valid multi-chars attribute name FORMAT_MANY_CHARS = /\A[a-zA-Z0-9][a-zA-Z0-9_-]*?[a-zA-Z0-9]\z/ # allow '-' and '_' in the middle private_constant :FORMAT_ONE_CHAR, :FORMAT_MANY_CHARS class << self # # Checks allowed characters. # Globally allowed characters: "a-z", "A-Z", "0-9". # Minus and low line "-", "_" also allowed except as the first or last character. # # @param name [String, Symbol] Attribute name # # @raise [SeregaError] when name has invalid format # @return [void] # def call(name) name = SeregaUtils::SymbolName.call(name) valid = case name.size when 0 then false when 1 then name.match?(FORMAT_ONE_CHAR) else name.match?(FORMAT_MANY_CHARS) end return if valid raise SeregaError, message(name) end private def message(name) %(Invalid attribute name = #{name.inspect}. Globally allowed characters: "a-z", "A-Z", "0-9". Minus and low line "-", "_" also allowed except as the first or last character) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
serega-0.9.0 | lib/serega/validations/attribute/check_name.rb |
serega-0.8.3 | lib/serega/validations/attribute/check_name.rb |