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/html/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/xml/saxon_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/xml/leptris_serializer.rb,
lib/serialbench/serializers/html/leptris_serializer.rb,
lib/serialbench/serializers/json/yeptris_serializer.rb,
lib/serialbench/serializers/toml/teptris_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/yaml/yeptris_serializer.rb,
lib/serialbench/serializers/html/nokogiri_serializer.rb,
lib/serialbench/serializers/html/base_html_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: Html, 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,
    Xml::LeptrisSerializer,
    Xml::SaxonSerializer
  ],
  json: [
    Json::JsonSerializer,
    Json::OjSerializer,
    Json::RapidjsonSerializer,
    Json::YajlSerializer,
    Json::YeptrisSerializer
  ],
  html: [
    Html::NokogiriSerializer,
    Html::OgaSerializer,
    Html::LeptrisSerializer
  ],
  yaml: [
    Yaml::PsychSerializer,
    Yaml::SyckSerializer,
    Yaml::YeptrisSerializer
  ],
  toml: [
    Toml::TomlRbSerializer,
    Toml::TomlibSerializer,
    Toml::TomlrbSerializer,
    Toml::TeptrisSerializer
  ]
}.freeze

Class Method Summary collapse

Class Method Details

.allObject



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

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

.availableObject



108
109
110
# File 'lib/serialbench/serializers.rb', line 108

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

.available_for_format(format) ⇒ Object



104
105
106
# File 'lib/serialbench/serializers.rb', line 104

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

.for_format(format) ⇒ Object



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

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

.informationObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/serialbench/serializers.rb', line 89

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,
      features: serializer_singleton.features.transform_keys(&:to_s)
    )
  end

  @information
end