Sha256: 2148c635c0025a8ed043c914bc20f778eb3dd5578a3c29ff0a96c6df2c026cba

Contents?: true

Size: 871 Bytes

Versions: 3

Compression:

Stored size: 871 Bytes

Contents

# frozen_string_literal: true

module Phlexi
  module Form
    module FieldOptions
      module Pattern
        def pattern(pattern = nil)
          if pattern.nil?
            options[:pattern] = options.fetch(:pattern) { calculate_pattern }
          else
            options[:pattern] = pattern
            self
          end
        end

        private

        def calculate_pattern
          if (pattern_validator = find_pattern_validator) && (with = pattern_validator.options[:with])
            evaluate_format_validator_option(with).source
          end
        end

        def find_pattern_validator
          find_validator(:format)
        end

        def evaluate_format_validator_option(option)
          if option.respond_to?(:call)
            option.call(object)
          else
            option
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
phlexi-form-0.3.0 lib/phlexi/form/field_options/pattern.rb
phlexi-form-0.3.0.rc1 lib/phlexi/form/field_options/pattern.rb
phlexi-form-0.2.0 lib/phlexi/form/field_options/pattern.rb