Class: Serialbench::Serializers::Xml::LeptrisSerializer
Defined Under Namespace
Classes: StreamingHandler
Instance Method Summary
collapse
#features, format, #generate_xml, #parse_dom, #parse_sax, #supports_generation?, #supports_namespaces?, #supports_validation?
#get_version, #initialize, #require_library, #stream_parse
Instance Method Details
#available? ⇒ Boolean
The gem's require succeeds even when the libtaurus shared library is
missing -- the FFI load happens lazily at first use. Probe with a
real parse so "available" means "actually usable".
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 68
def available?
return @available if defined?(@available)
@available = begin
require 'leptris'
Leptris::XML.parse('<probe/>')
true
rescue StandardError, LoadError
false
end
end
|
#generate(data) ⇒ Object
18
19
20
21
22
23
24
25
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 18
def generate(data)
require 'leptris'
if data.is_a?(Leptris::XML::Document) || data.is_a?(Leptris::XML::Node)
data.to_xml(indent: 2)
else
build_document_from_data(data).to_xml(indent: 2)
end
end
|
#library_require_name ⇒ Object
61
62
63
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 61
def library_require_name
'leptris'
end
|
#name ⇒ Object
9
10
11
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 9
def name
'leptris'
end
|
#parse(xml_string) ⇒ Object
13
14
15
16
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 13
def parse(xml_string)
require 'leptris'
Leptris::XML.parse(xml_string)
end
|
#parse_streaming(xml_string, &block) ⇒ Object
27
28
29
30
31
32
33
34
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 27
def parse_streaming(xml_string, &block)
require 'leptris'
handler = StreamingHandler.new(&block)
parser = Leptris::XML::SAX::Parser.new(handler)
parser.parse_memory(xml_string)
handler.elements_processed
end
|
#supports_stax? ⇒ Boolean
leptris-ruby >= 1.6 exposes Leptris::XML::Pull, a StAX-style
cursor (one event per #next). Declared by gem version so the
check never triggers the FFI library load.
47
48
49
50
51
52
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 47
def supports_stax?
spec = Gem.loaded_specs['leptris'] || Gem::Specification.find_by_name('leptris')
!spec.nil? && spec.version >= Gem::Version.new('1.6.0')
rescue Gem::LoadError
false
end
|
#supports_streaming? ⇒ Boolean
36
37
38
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 36
def supports_streaming?
true
end
|
#supports_xpath? ⇒ Boolean
40
41
42
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 40
def supports_xpath?
true
end
|
#version ⇒ Object
54
55
56
57
58
59
|
# File 'lib/serialbench/serializers/xml/leptris_serializer.rb', line 54
def version
return 'unknown' unless available?
require 'leptris'
Leptris::VERSION
end
|