module Mockolate::Types::TypeMetaData

Public Class Methods

extended(base) click to toggle source
# File lib/mockolate/types.rb, line 19
def self.extended(base)
  base.class_eval do
    attr_reader   :name,  :options
    attr_accessor :children

    def initialize(name:, options: nil)
      @name     = name
      @options  = options
      @children = []
    end

    def parse
      return name => value
    end

    def has_children?
      !children.empty?
    end

    def value
      _get_value.public_send(_cast)
    end

    private
    def _get_value
      options[:value] || _get_from_faker!
    end

    def _parse_child
      children.flatten.map do |child|
        child.parse
      end
    end

    def _cast
      class_name = self.class.name.split('::')

      return "to_#{class_name.last[0].downcase}".to_sym
    end

    def _get_from_faker!
      Object.const_get(
        "Faker::#{options[:fake_from]}"
      ).public_send(options[:key])
    end
    
  end
end
new(name:, options: nil) click to toggle source
# File lib/mockolate/types.rb, line 24
def initialize(name:, options: nil)
  @name     = name
  @options  = options
  @children = []
end

Public Instance Methods

_cast() click to toggle source
# File lib/mockolate/types.rb, line 53
def _cast
  class_name = self.class.name.split('::')

  return "to_#{class_name.last[0].downcase}".to_sym
end
_get_from_faker!() click to toggle source
# File lib/mockolate/types.rb, line 59
def _get_from_faker!
  Object.const_get(
    "Faker::#{options[:fake_from]}"
  ).public_send(options[:key])
end
_get_value() click to toggle source
# File lib/mockolate/types.rb, line 43
def _get_value
  options[:value] || _get_from_faker!
end
_parse_child() click to toggle source
# File lib/mockolate/types.rb, line 47
def _parse_child
  children.flatten.map do |child|
    child.parse
  end
end
has_children?() click to toggle source
# File lib/mockolate/types.rb, line 34
def has_children?
  !children.empty?
end
parse() click to toggle source
# File lib/mockolate/types.rb, line 30
def parse
  return name => value
end
value() click to toggle source
# File lib/mockolate/types.rb, line 38
def value
  _get_value.public_send(_cast)
end