transcriber 0.0.8 → 0.0.9

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.
@@ -0,0 +1,26 @@
1
+ $:.push 'lib'; require 'transcriber'
2
+
3
+ class Customer < Transcriber::Resource
4
+ property :name
5
+ embeds_many :phones
6
+ end
7
+
8
+ class Phone < Transcriber::Resource
9
+ properties :number, :extension
10
+ end
11
+
12
+ @root = Customer.new({
13
+ name: "Jackie Chan",
14
+ phones: [
15
+ {
16
+ number: "2980319083",
17
+ extension: "1398"
18
+ },
19
+ {
20
+ number: "2979139332",
21
+ extension: "1011"
22
+ }
23
+ ]})
24
+
25
+ puts "root: #{@root.inspect}"
26
+ puts "resource: #{@root.resource}"
@@ -0,0 +1,20 @@
1
+ $:.push 'lib'; require 'transcriber'
2
+
3
+ class Customer < Transcriber::Resource
4
+ property :name
5
+ embeds_one :address
6
+ end
7
+
8
+ class Address < Transcriber::Resource
9
+ properties :street, :number
10
+ end
11
+
12
+ @root = Customer.new({
13
+ name: "Jackie Chan",
14
+ address: {
15
+ street: "Aurora St",
16
+ number: 666
17
+ }})
18
+
19
+ puts "root: #{@root.inspect}"
20
+ puts "resource: #{@root.resource}"
@@ -0,0 +1,10 @@
1
+ $:.push 'lib'; require 'transcriber'
2
+
3
+ class Customer < Transcriber::Resource
4
+ property :name
5
+ end
6
+
7
+ @root = Customer.new(name: "Jackie Chan")
8
+
9
+ puts "root: #{@root.inspect}"
10
+ puts "resource: #{@root.resource}"
@@ -24,6 +24,12 @@ module Transcriber
24
24
  def resource_class
25
25
  @class_name.constantize
26
26
  end
27
+
28
+ def from_hash(attrs)
29
+ return nil if attrs.nil? or attrs.empty?
30
+ one? ? resource_class.new(attrs)
31
+ : Array(attrs).map {|item| resource_class.new(item)}
32
+ end
27
33
  end
28
34
  end
29
35
  end
@@ -7,6 +7,11 @@ module Transcriber
7
7
  def raw?
8
8
  [Hash, Array].include?(resource_class)
9
9
  end
10
+
11
+ def from_hash(attrs)
12
+ return hash if raw?
13
+ super
14
+ end
10
15
  end
11
16
  end
12
17
  end
@@ -13,6 +13,10 @@ module Transcriber
13
13
  @translations = options[:values] if options[:values].kind_of?(Proc)
14
14
  @translations = options[:values].invert if options[:values].kind_of?(Hash)
15
15
  end
16
+
17
+ def from_hash(value)
18
+ value
19
+ end
16
20
  end
17
21
  end
18
22
  end
@@ -9,7 +9,11 @@ module Transcriber
9
9
  cattr_writer :resource_name
10
10
 
11
11
  def initialize(attrs = {})
12
- attrs.map {|name, value| send("#{name}=", value)}
12
+ return if attrs.nil? or attrs.empty?
13
+
14
+ self.class.keys.each do |key|
15
+ __send__("#{key.name}=", key.from_hash(attrs[key.name])) if key.present? self
16
+ end
13
17
  end
14
18
 
15
19
  def self.keys
@@ -1,3 +1,3 @@
1
1
  module Transcriber
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transcriber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -15,7 +15,7 @@ date: 2011-08-29 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
- requirement: &70339095238080 !ruby/object:Gem::Requirement
18
+ requirement: &70363203539880 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '3.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70339095238080
26
+ version_requirements: *70363203539880
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: i18n
29
- requirement: &70339095237500 !ruby/object:Gem::Requirement
29
+ requirement: &70363203539360 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0.5'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70339095237500
37
+ version_requirements: *70363203539360
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rspec
40
- requirement: &70339095236980 !ruby/object:Gem::Requirement
40
+ requirement: &70363203538900 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '2.6'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70339095236980
48
+ version_requirements: *70363203538900
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: guard
51
- requirement: &70339095236300 !ruby/object:Gem::Requirement
51
+ requirement: &70363203538440 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0.5'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70339095236300
59
+ version_requirements: *70363203538440
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: guard-rspec
62
- requirement: &70339095235800 !ruby/object:Gem::Requirement
62
+ requirement: &70363203537960 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '0.4'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70339095235800
70
+ version_requirements: *70363203537960
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: growl
73
- requirement: &70339095235180 !ruby/object:Gem::Requirement
73
+ requirement: &70363203537480 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ~>
@@ -78,7 +78,7 @@ dependencies:
78
78
  version: '1.0'
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *70339095235180
81
+ version_requirements: *70363203537480
82
82
  description: ''
83
83
  email:
84
84
  - victorcrodrigues@gmail.com
@@ -107,6 +107,9 @@ files:
107
107
  - examples/embeds_one/with_if.rb
108
108
  - examples/embeds_one/with_start_key.rb
109
109
  - examples/has_many/simple.rb
110
+ - examples/initialize/embeds_many.rb
111
+ - examples/initialize/embeds_one.rb
112
+ - examples/initialize/simple.rb
110
113
  - examples/properties/array_serialization.rb
111
114
  - examples/properties/collections.rb
112
115
  - examples/properties/simple.rb