Class: Serialbench::Serializers::Yaml::YeptrisSerializer

Inherits:
BaseYamlSerializer show all
Defined in:
lib/serialbench/serializers/yaml/yeptris_serializer.rb

Instance Method Summary collapse

Methods inherited from BaseYamlSerializer

#default_generation_options, #features, format

Methods inherited from BaseSerializer

#get_version, #initialize, #require_library, #supports?

Constructor Details

This class inherits a constructor from Serialbench::Serializers::BaseSerializer

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 32

def available?
  return @available if defined?(@available)

  @available = begin
    require 'yeptris'
    Yeptris::YAML.load('probe: true')
    true
  rescue StandardError, LoadError => e
    warn "#{name} unavailable: #{e.class}: #{e.message}"
    false
  end
end

#capabilitiesObject



28
29
30
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 28

def capabilities
  super | Set.new(%i[streaming])
end

#generate(object, _options = {}) ⇒ Object



18
19
20
21
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 18

def generate(object, _options = {})
  require 'yeptris'
  Yeptris::YAML.dump(object)
end

#library_require_nameObject



52
53
54
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 52

def library_require_name
  'yeptris'
end

#nameObject



9
10
11
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 9

def name
  'yeptris-yaml'
end

#parse(yaml_string) ⇒ Object



13
14
15
16
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 13

def parse(yaml_string)
  require 'yeptris'
  Yeptris::YAML.load(yaml_string)
end

#stream_parse(yaml_string, &block) ⇒ Object



23
24
25
26
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 23

def stream_parse(yaml_string, &block)
  require 'yeptris'
  Yeptris::YAML.load_stream(yaml_string).each { |doc| block.call(:document, doc) }
end

#versionObject



45
46
47
48
49
50
# File 'lib/serialbench/serializers/yaml/yeptris_serializer.rb', line 45

def version
  return 'unknown' unless available?

  require 'yeptris'
  Yeptris::VERSION
end