Class: BloodContracts::Storage

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer, Forwardable
Defined in:
lib/blood_contracts/storage.rb

Constant Summary collapse

Serializer =
BloodContracts::Storages::Serializer
FileBackend =
BloodContracts::Storages::FileBackend
DEFAULT_WRITER =
-> (options) do
  "INPUT:\n#{options.input}\n\n#{'=' * 90}\n\nOUTPUT:\n#{options.output}"
end
UNDEFINED_RULE =
:__no_tag_match__
EXCEPTION_CAUGHT =
:__exception_raised__

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.valid_writer(writer) ⇒ Object

Raises:

  • (ArgumentError)


38
39
40
41
# File 'lib/blood_contracts/storage.rb', line 38

def self.valid_writer(writer)
  return writer if writer.respond_to?(:call) || writer.respond_to?(:to_sym)
  raise ArgumentError
end

Instance Method Details

#default_serializerObject



66
67
68
# File 'lib/blood_contracts/storage.rb', line 66

def default_serializer
  { load: Oj.method(:load), dump: Oj.method(:dump) }
end

#input_serializer=(serializer) ⇒ Object



43
44
45
# File 'lib/blood_contracts/storage.rb', line 43

def input_serializer=(serializer)
  @input_serializer = Serializer.call(serializer)
end

#input_writer=(writer) ⇒ Object



55
56
57
# File 'lib/blood_contracts/storage.rb', line 55

def input_writer=(writer)
  @input_writer = self.class.valid_writer(writer)
end

#meta_serializer=(serializer) ⇒ Object



51
52
53
# File 'lib/blood_contracts/storage.rb', line 51

def meta_serializer=(serializer)
  @meta_serializer = Serializer.call(serializer)
end

#output_serializer=(serializer) ⇒ Object



47
48
49
# File 'lib/blood_contracts/storage.rb', line 47

def output_serializer=(serializer)
  @output_serializer = Serializer.call(serializer)
end

#output_writer=(writer) ⇒ Object



59
60
61
# File 'lib/blood_contracts/storage.rb', line 59

def output_writer=(writer)
  @output_writer = self.class.valid_writer(writer)
end

#store(options:, rules:, context:) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/blood_contracts/storage.rb', line 70

def store(options:, rules:, context:)
  options = Hashie::Mash.new(options)

  Array(rules).each do |rule_name|
    describe_sample(rule_name, options, context)
    serialize_sample(rule_name, options, context)
  end
end