Class: Serialbench::Serializers::BaseSerializer

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/serialbench/serializers/base_serializer.rb

Instance Method Summary collapse

Constructor Details

#initializeBaseSerializer

Returns a new instance of BaseSerializer.



10
11
12
# File 'lib/serialbench/serializers/base_serializer.rb', line 10

def initialize
  # Override in subclasses
end

Instance Method Details

#generate(object) ⇒ Object

Raises:

  • (NotImplementedError)


24
25
26
# File 'lib/serialbench/serializers/base_serializer.rb', line 24

def generate(object)
  raise NotImplementedError, 'Subclasses must implement #generate'
end

#get_version(constant_path) ⇒ Object



48
49
50
51
52
# File 'lib/serialbench/serializers/base_serializer.rb', line 48

def get_version(constant_path)
  constant_path.split('::').reduce(Object) { |obj, const| obj.const_get(const) }
rescue NameError
  'unknown'
end

#parse(data) ⇒ Object

Raises:

  • (NotImplementedError)


20
21
22
# File 'lib/serialbench/serializers/base_serializer.rb', line 20

def parse(data)
  raise NotImplementedError, 'Subclasses must implement #parse'
end

#require_library(library_name) ⇒ Object



41
42
43
44
45
46
# File 'lib/serialbench/serializers/base_serializer.rb', line 41

def require_library(library_name)
  require library_name
  true
rescue LoadError
  false
end

#stream_parse(data) {|:document, result| ... } ⇒ Object

Yields:

  • (:document, result)


28
29
30
31
32
33
34
# File 'lib/serialbench/serializers/base_serializer.rb', line 28

def stream_parse(data)
  # Default implementation falls back to regular parsing
  # Override in subclasses that support streaming
  result = parse(data)
  yield(:document, result) if block_given?
  result
end

#supports_streaming?Boolean

Returns:

  • (Boolean)


36
37
38
39
# File 'lib/serialbench/serializers/base_serializer.rb', line 36

def supports_streaming?
  # Override in subclasses that support streaming
  false
end