Module: Serialbench::Serializers

Defined in:
lib/serialbench/serializers.rb,
lib/serialbench/serializers/base_serializer.rb,
lib/serialbench/serializers/xml/ox_serializer.rb,
lib/serialbench/serializers/json/oj_serializer.rb,
lib/serialbench/serializers/xml/oga_serializer.rb,
lib/serialbench/serializers/json/json_serializer.rb,
lib/serialbench/serializers/json/yajl_serializer.rb,
lib/serialbench/serializers/xml/rexml_serializer.rb,
lib/serialbench/serializers/yaml/syck_serializer.rb,
lib/serialbench/serializers/xml/libxml_serializer.rb,
lib/serialbench/serializers/yaml/psych_serializer.rb,
lib/serialbench/serializers/toml/tomlib_serializer.rb,
lib/serialbench/serializers/toml/tomlrb_serializer.rb,
lib/serialbench/serializers/toml/toml_rb_serializer.rb,
lib/serialbench/serializers/xml/base_xml_serializer.rb,
lib/serialbench/serializers/xml/nokogiri_serializer.rb,
lib/serialbench/serializers/json/base_json_serializer.rb,
lib/serialbench/serializers/json/rapidjson_serializer.rb,
lib/serialbench/serializers/toml/base_toml_serializer.rb,
lib/serialbench/serializers/yaml/base_yaml_serializer.rb

Defined Under Namespace

Modules: Json, Toml, Xml, Yaml Classes: BaseSerializer

Constant Summary collapse

REGISTER =

Registry of all available serializers

{
  xml: [
    Xml::RexmlSerializer,
    Xml::OxSerializer,
    Xml::NokogiriSerializer,
    Xml::OgaSerializer,
    Xml::LibxmlSerializer
  ],
  json: [
    Json::JsonSerializer,
    Json::OjSerializer,
    Json::RapidjsonSerializer,
    Json::YajlSerializer
  ],
  yaml: [
    Yaml::PsychSerializer,
    Yaml::SyckSerializer
  ],
  toml: [
    Toml::TomlRbSerializer,
    Toml::TomlibSerializer,
    Toml::TomlrbSerializer
  ]
}.freeze

Class Method Summary collapse

Class Method Details

.allObject



60
61
62
# File 'lib/serialbench/serializers.rb', line 60

def self.all
  REGISTER.values.flatten.map(&:instance)
end

.availableObject



86
87
88
# File 'lib/serialbench/serializers.rb', line 86

def self.available
  all.select(&:available?)
end

.available_for_format(format) ⇒ Object



82
83
84
# File 'lib/serialbench/serializers.rb', line 82

def self.available_for_format(format)
  for_format(format).select(&:available?)
end

.for_format(format) ⇒ Object



64
65
66
# File 'lib/serialbench/serializers.rb', line 64

def self.for_format(format)
  REGISTER[format.to_sym]&.map(&:instance) || []
end

.informationObject



68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/serialbench/serializers.rb', line 68

def self.information
  return @information if @information

  @information = available.map do |serializer_singleton|
    Models::SerializerInformation.new(
      name: serializer_singleton.name,
      format: serializer_singleton.format.to_s,
      version: serializer_singleton.version
    )
  end

  @information
end