Class: Factbase::ToXML
- Inherits:
-
Object
- Object
- Factbase::ToXML
- Defined in:
- lib/factbase/to_xml.rb
Overview
Factbase to XML converter.
This class helps converting an entire Factbase to YAML format, for example:
require 'factbase/to_xml'
fb = Factbase.new
puts Factbase::ToXML.new(fb).xml
- Author
-
Yegor Bugayenko ([email protected])
- Copyright
-
Copyright © 2024 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
-
#initialize(fb, sorter = '_id') ⇒ ToXML
constructor
Constructor.
-
#xml ⇒ String
Convert the entire factbase into XML.
Constructor Details
#initialize(fb, sorter = '_id') ⇒ ToXML
Constructor.
41 42 43 44 |
# File 'lib/factbase/to_xml.rb', line 41 def initialize(fb, sorter = '_id') @fb = fb @sorter = sorter end |
Instance Method Details
#xml ⇒ String
Convert the entire factbase into XML.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/factbase/to_xml.rb', line 48 def xml bytes = @fb.export = { version: Factbase::VERSION, size: bytes.size } Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml.fb() do Factbase::Flatten.new(Marshal.load(bytes), @sorter).it.each do |m| xml.f_ do m.sort.to_h.each do |k, vv| if vv.is_a?(Array) xml.send(:"#{k}_") do vv.each do |v| xml.send(:v, to_str(v), t: type_of(v)) end end else xml.send(:"#{k}_", to_str(vv), t: type_of(vv)) end end end end end end.to_xml end |