lab5 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/lab5.rb +22 -29
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 30c8270c6d223fd328d36caf33be69dd985e29c8
4
- data.tar.gz: d96e12a7628e62689f3a08d7baac960c0868a2aa
3
+ metadata.gz: 2695165a7fce53e50644a344ec3a5a2acc1a2b13
4
+ data.tar.gz: abb45727b9207b1c4729c7ea490f0088b6951977
5
5
  SHA512:
6
- metadata.gz: 654686ec254f4a8b4fa82c543b0e534c4d45f574d8221ebdcaffcd28fd9cea2592d08f053243808a76a012c07c856573426d0082c27621d6cb00e331da576508
7
- data.tar.gz: 38e1c8bab8718e19e7b35c40f80c7b90386422d95a3e7e882feda831b66c8560097db5da91e82e0c9b18b06451e8e1cc8607e4ddcc453b6310fc4975f3300e05
6
+ metadata.gz: 13f2739340977c72b446dafa66daf2310cbeced9c8dcd8f0b86cec1b436f263ce6a2e0a35d38639b303cc5326860824fac33f97c08d5e73c815096c990dfe7c7
7
+ data.tar.gz: 0c4891d3826036455ff03761dd88c08224fe13adb4d84efa8b16307129620cb4fb22f3dc4049692235d3d77c9c750e2abeef26f3012a045a529eea8518ad3b1d
data/lib/lab5.rb CHANGED
@@ -1,38 +1,31 @@
1
- require 'ox'
2
- require 'xmlsimple'
1
+ require 'nokogiri'
3
2
 
4
3
  class XmlSerializer
5
- def self.xml_ser(array)
6
- hash = array.map { |item| object_to_hash(item) }
7
- XmlSimple.xml_out(array, { 'KeepRoot' => true })
8
- end
9
-
10
- def self.yaml_deser(xml)
11
- Ox.parse(xml)
12
- end
13
-
14
- private
15
-
16
- def self.object_to_hash(object)
17
- variable_names = object.instance_variables
18
- variables = {}
19
-
20
- variable_names.each do |name|
21
- variables[name] = object.instance_variable_get(name)
4
+ def self.serialize_array(array)
5
+ builder = Nokogiri::XML::Builder.new do |xml|
6
+ xml.objects do
7
+ array.each do |object|
8
+ xml.object class_name: object.class.name do
9
+ object.instance_variables.each do |variable_name|
10
+ xml.instance_variable object.instance_variable_get(variable_name),
11
+ name: variable_name
12
+ end
13
+ end
14
+ end
15
+ end
22
16
  end
23
17
 
24
- {
25
- object.class.name => variables
26
- }
18
+ builder.to_xml
27
19
  end
28
20
 
29
- def self.hash_to_object(hash)
30
- object = hash['class'].constantize.new
21
+ def self.deserialize_array(file)
22
+ Nokogiri::XML(File.open(file)).css('object').map do |element|
23
+ object = element.attribute('class_name').value.constantize.new
24
+ element.css('instance_variable').each do |var_element|
25
+ object.instance_variable_set(var_element.attribute('name').value, var_element.text)
26
+ end
31
27
 
32
- hash['instance_variables'].each do |name, value|
33
- object.instance_variable_set(name, value)
28
+ object
34
29
  end
35
-
36
- object
37
30
  end
38
- end
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lab5
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatiana Karpesh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-02 00:00:00.000000000 Z
11
+ date: 2015-05-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: XML serializer/deserializer
14
14
  email: tatiana.karpesh@gmail.com