Class: Attributor::String

Inherits:
Object
  • Object
show all
Includes:
Type
Defined in:
lib/attributor/types/string.rb

Class Method Summary collapse

Methods included from Type

get_memoized_collection_class, set_memoized_collection_class

Class Method Details

.as_json_schema(shallow: false, example: nil, attribute_options: {}) ⇒ Object

TODO: we’re passing the attribute options for now…might need to rethink …although these are type-specific… TODO: multipleOf, minimum, maximum, exclusiveMinimum and exclusiveMaximum



33
34
35
36
37
38
39
# File 'lib/attributor/types/string.rb', line 33

def self.as_json_schema( shallow: false, example: nil, attribute_options: {} )
  h = super
  opts = ( self.respond_to?(:options) ) ? self.options.merge( attribute_options ) : attribute_options
  h[:pattern] = self.human_readable_regexp(opts[:regexp]) if opts[:regexp]
  # TODO: minLength, maxLength
  h
end

.example(_context = nil, options: {}) ⇒ Object



19
20
21
# File 'lib/attributor/types/string.rb', line 19

def self.example(_context = nil, options: {})
  Faker::Lorem.word
end

.familyObject



23
24
25
# File 'lib/attributor/types/string.rb', line 23

def self.family
  'string'
end

.human_readable_regexp(reg) ⇒ Object



41
42
43
44
# File 'lib/attributor/types/string.rb', line 41

def self.human_readable_regexp( reg )
  return $1 if reg.to_s =~ /\(\?[^:]+:(.+)\)/
  reg
end

.json_schema_typeObject



27
28
29
# File 'lib/attributor/types/string.rb', line 27

def self.json_schema_type
  :string
end

.load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/attributor/types/string.rb', line 9

def self.load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options)
  if value.is_a?(Enumerable)
    raise IncompatibleTypeError.new(context: context, value_type: value.class, type: self)
  end

  value && String(value)
rescue
  super
end

.native_typeObject



5
6
7
# File 'lib/attributor/types/string.rb', line 5

def self.native_type
  ::String
end