transcriber 0.0.17 → 0.0.18
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.
- data/lib/transcriber/resource/input_parser.rb +2 -0
- data/lib/transcriber/resource/key.rb +13 -13
- data/lib/transcriber/resource/parser.rb +3 -0
- data/lib/transcriber/resource/parser/embeddable.rb +30 -23
- data/lib/transcriber/resource/parser/property.rb +1 -0
- data/lib/transcriber/resource/response.rb +4 -2
- data/lib/transcriber/resource/response/embeddable.rb +0 -1
- data/lib/transcriber/version.rb +1 -1
- metadata +14 -14
@@ -3,10 +3,12 @@ module Transcriber
|
|
3
3
|
module InputParser
|
4
4
|
def to_input(options = {})
|
5
5
|
input = {}
|
6
|
+
|
6
7
|
keys_to_input(options).each do |key|
|
7
8
|
value = __send__(key.name)
|
8
9
|
input.merge! key.to_input(value, options.fetch(key.name, {}))
|
9
10
|
end
|
11
|
+
|
10
12
|
input.with_indifferent_access
|
11
13
|
end
|
12
14
|
|
@@ -8,16 +8,9 @@ module Transcriber
|
|
8
8
|
@options = options
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def visible?(resource)
|
16
|
-
!present?(resource) ? false : case visible = options[:visible]
|
17
|
-
when nil then true
|
18
|
-
when Proc then resource.instance_eval(&visible)
|
19
|
-
else visible
|
20
|
-
end
|
11
|
+
def convert_input_keys
|
12
|
+
options.fetch(:convert_input_keys, model.try(:convert_input_keys) ||
|
13
|
+
Transcriber.configuration.convert_input_keys)
|
21
14
|
end
|
22
15
|
|
23
16
|
def input_path
|
@@ -37,9 +30,16 @@ module Transcriber
|
|
37
30
|
path_definition.any? and path_definition.first[1].empty?
|
38
31
|
end
|
39
32
|
|
40
|
-
def
|
41
|
-
options
|
42
|
-
|
33
|
+
def present?(resource)
|
34
|
+
!options[:if] ? true : resource.instance_eval(&options[:if])
|
35
|
+
end
|
36
|
+
|
37
|
+
def visible?(resource)
|
38
|
+
!present?(resource) ? false : case visible = options[:visible]
|
39
|
+
when nil then true
|
40
|
+
when Proc then resource.instance_eval(&visible)
|
41
|
+
else visible
|
42
|
+
end
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -2,10 +2,13 @@ module Transcriber
|
|
2
2
|
class Resource
|
3
3
|
module Parser
|
4
4
|
def parse!(input, options = {})
|
5
|
+
fail "invalid input" unless input.kind_of?(Enumerable)
|
5
6
|
parse(input, options.merge(fail: true))
|
6
7
|
end
|
7
8
|
|
8
9
|
def parse(input, options = {})
|
10
|
+
return [] unless input.kind_of?(Enumerable)
|
11
|
+
|
9
12
|
prepare_entries(input, options).collect do |item|
|
10
13
|
parse_item(HashWithIndifferentAccess.new(item), options)
|
11
14
|
end
|
@@ -3,14 +3,14 @@ module Transcriber
|
|
3
3
|
module Parser
|
4
4
|
module Embeddable
|
5
5
|
def parse(item, resource = nil)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
return parse_fields(item) if fields
|
7
|
+
value = digg(item)
|
8
|
+
parsed_value = raw? ? value : resource_class.parse(value)
|
9
|
+
one? ? parsed_value.first : parsed_value
|
10
|
+
end
|
11
|
+
|
12
|
+
def parse_fields(item)
|
13
|
+
convert_input_keys.call(fields).map {|field| item[field]}
|
14
14
|
end
|
15
15
|
|
16
16
|
def digg(input)
|
@@ -22,33 +22,40 @@ module Transcriber
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def to_input(value, options = {})
|
25
|
-
|
26
|
-
|
25
|
+
return {} if value.nil?
|
26
|
+
fields ? to_multiple_input(value, options)
|
27
|
+
: to_single_input(value)
|
28
|
+
end
|
27
29
|
|
30
|
+
private
|
31
|
+
|
32
|
+
def to_single_input(value)
|
33
|
+
input = {}
|
28
34
|
path = input_path
|
29
35
|
|
30
36
|
if path.any?
|
31
37
|
last = path.pop
|
32
38
|
key_input = path.inject(input) {|buffer, key| buffer[key] = {}; buffer[key]}
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
value.each_with_index do |item, index|
|
37
|
-
input[mapped_fields[index]] = item
|
38
|
-
end
|
39
|
-
elsif raw?
|
40
|
-
key_input[last] = value
|
41
|
-
elsif one?
|
42
|
-
key_input[last] = value.to_input(options)
|
43
|
-
else
|
44
|
-
key_input[last] = value.map {|item| item.to_input(options)}
|
45
|
-
end
|
39
|
+
key_input[last] = raw? ? value
|
40
|
+
: one? ? value.to_input(options)
|
41
|
+
: value.map {|item| item.to_input(options)}
|
46
42
|
else
|
47
43
|
input.merge!(value.to_input(options))
|
48
44
|
end
|
49
45
|
|
50
46
|
input
|
51
47
|
end
|
48
|
+
|
49
|
+
def to_multiple_input(value, options)
|
50
|
+
input = {}
|
51
|
+
mapped_fields = convert_input_keys.call(fields)
|
52
|
+
|
53
|
+
value.each_with_index do |item, index|
|
54
|
+
input[mapped_fields[index]] = item
|
55
|
+
end
|
56
|
+
|
57
|
+
input
|
58
|
+
end
|
52
59
|
end
|
53
60
|
end
|
54
61
|
end
|
@@ -5,10 +5,12 @@ module Transcriber
|
|
5
5
|
|
6
6
|
def resource(options = {})
|
7
7
|
root = options.fetch(:root, true)
|
8
|
+
|
8
9
|
{}.tap do |resource|
|
9
10
|
resource_keys(options).inject(resource) do |buffer, key|
|
10
11
|
buffer.merge!(key.to_resource(self))
|
11
12
|
end
|
13
|
+
|
12
14
|
resource.merge!({link: link}) if root and self.class.relations.any?
|
13
15
|
end
|
14
16
|
end
|
@@ -18,8 +20,8 @@ module Transcriber
|
|
18
20
|
end
|
19
21
|
|
20
22
|
def resource_keys(options)
|
21
|
-
|
22
|
-
|
23
|
+
summarize?(options) ? self.class.summarized_keys + [Resource::Href.new]
|
24
|
+
: self.class.keys
|
23
25
|
end
|
24
26
|
|
25
27
|
def summarize?(options)
|
data/lib/transcriber/version.rb
CHANGED
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.
|
4
|
+
version: 0.0.18
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-09-
|
14
|
+
date: 2011-09-20 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
18
|
-
requirement: &
|
18
|
+
requirement: &70227590133480 !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: *
|
26
|
+
version_requirements: *70227590133480
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: i18n
|
29
|
-
requirement: &
|
29
|
+
requirement: &70227590132980 !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: *
|
37
|
+
version_requirements: *70227590132980
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rspec
|
40
|
-
requirement: &
|
40
|
+
requirement: &70227590132520 !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: *
|
48
|
+
version_requirements: *70227590132520
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: guard
|
51
|
-
requirement: &
|
51
|
+
requirement: &70227590132060 !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: *
|
59
|
+
version_requirements: *70227590132060
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: guard-rspec
|
62
|
-
requirement: &
|
62
|
+
requirement: &70227590131580 !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: *
|
70
|
+
version_requirements: *70227590131580
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: growl
|
73
|
-
requirement: &
|
73
|
+
requirement: &70227590131060 !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: *
|
81
|
+
version_requirements: *70227590131060
|
82
82
|
description: ''
|
83
83
|
email:
|
84
84
|
- victorcrodrigues@gmail.com
|