class ActiveModel::Validations::JapaneseValidator
Constants
- ALPHABET
- CHOONPU
- HANKAKU_CHOONPU
- HANKAKU_KANA
- HIRAGANA
- KANJI
- KATAKANA
- KUHAKU
- PREFIX
- SUFFIX
- SUJI
- ZENKAKU_ALPHABET
- ZENKAKU_SUJI
Public Instance Methods
validate_each(record, attribute, value)
click to toggle source
# File lib/validate_japanese/japanese_validator.rb, line 19 def validate_each(record, attribute, value) keys, regexp = build_regexp(options) unless value.to_s.match? regexp if options[:message] record.errors.add(attribute, options[:message]) else record.errors.add(attribute, :invalid_japanese, kind: available_kind(keys, concat: options[:concat])) end end end
Private Instance Methods
available_kind(keys, concat: nil, sep: '')
click to toggle source
# File lib/validate_japanese/japanese_validator.rb, line 68 def available_kind(keys, concat: nil, sep: '') kind = keys.reject {|k| %i(choonpu hankaku_choonpu).include?(k)}.map {|k| I18n.t("validate_japanese.#{k}")}.join(sep) kind += concat if concat kind end
build_regexp(options)
click to toggle source
# File lib/validate_japanese/japanese_validator.rb, line 33 def build_regexp(options) options = options.except(:message, :choonpu, :hankaku_choonpu, :prefix, :suffix, :kuhaku) japanese = %i(hiragana katakana hankaku_kana kanji suji zenkaku_suji choonpu hankaku_choonpu) keys = [] if options.empty? keys.concat japanese elsif options.has_key?(:only) keys.concat options[:only] elsif options.has_key?(:concat) keys.concat japanese else keys.concat options.select {|_, v| v}.keys end if (keys.include?(:hiragana) || keys.include?(:katakana)) && keys.exclude?(:choonpu) keys << :choonpu end if keys.include?(:hankaku_kana) && keys.exclude?(:hankaku_choonpu) keys << :hankaku_choonpu end base = keys.map(&method(:const)).join if options.has_key?(:concat) base += options[:concat].to_s end [keys, Regexp.new("#{PREFIX}[#{base}]+#{SUFFIX}")] end
const(name)
click to toggle source
# File lib/validate_japanese/japanese_validator.rb, line 64 def const(name) self.class.const_get(name.upcase) end