lab5 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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