k-replace 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +3 -0
- data/lib/k/replace/statement.rb +9 -1
- data/lib/k/replace/version.rb +2 -2
- data/test/replace/statement_test.rb +31 -1
- metadata +4 -3
- data/README +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e36c2c18ba839e496441de87a14c007789b08d2
|
4
|
+
data.tar.gz: 702f6a182bef8de54cfe82ab35830aef7d5eeb64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba3636be52d3e74a79cf2049a0d2c8a3de1d081be98a1c805c572997d637fb12005b2763ddb7b783a3ca8678dbeb747c5f830ebd76efbf029bc62f15f4fadef0
|
7
|
+
data.tar.gz: a3d8bd75d38b7657558764111a44877575e5a50d25ee273b9c5a76727961ad0c6fb18fb12631a2a05bcb4baebac9dc0964f674dd9690fc9f9c658064fb1f2879
|
data/CHANGELOG.md
ADDED
data/README.md
ADDED
data/lib/k/replace/statement.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
# frozen_string_literal: true
|
3
|
+
require 'pry'
|
3
4
|
module K
|
4
5
|
module Replace
|
5
6
|
class Statement
|
@@ -24,11 +25,18 @@ module K
|
|
24
25
|
replaced = ''
|
25
26
|
find_all(key) do |match|
|
26
27
|
chained = chain_property(match)
|
27
|
-
chained.each{|k, v| replaced = objs[k]
|
28
|
+
chained.each{|k, v| replaced = resolve_property(k, v, objs[k])}
|
28
29
|
end
|
29
30
|
replaced
|
30
31
|
end
|
31
32
|
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def resolve_property(ch_key, ch_value, obj)
|
37
|
+
return resolve_property ch_value.keys[0], ch_value[ch_value.keys[0]], obj.send(ch_value.keys[0].to_s) if ch_value.is_a?(Hash)
|
38
|
+
obj.send(ch_value)
|
39
|
+
end
|
32
40
|
end
|
33
41
|
end
|
34
42
|
end
|
data/lib/k/replace/version.rb
CHANGED
@@ -31,6 +31,28 @@ class ChangesTest < Minitest::Test
|
|
31
31
|
assert_equal replaced, 'I\'m John Doe and I\'m 18 years old.'
|
32
32
|
end
|
33
33
|
|
34
|
+
def test_replace_key_to_nested_object_property
|
35
|
+
statement = K::Replace::Statement.new 'I\'m ##__User.name__## and I live in ##__User.address.street__##'
|
36
|
+
@user.name = 'John Doe'
|
37
|
+
@user.address = Address.new('Telegraph Av, 123')
|
38
|
+
|
39
|
+
replaced = statement.replace @user
|
40
|
+
|
41
|
+
assert_equal replaced, 'I\'m John Doe and I live in Telegraph Av, 123'
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_replace_key_to_deep_nested_object_property
|
45
|
+
statement = K::Replace::Statement.new 'I\'m ##__User.name__## and I live in ##__User.address.street__## - ##__User.address.city.name__##'
|
46
|
+
@user.name = 'John Doe'
|
47
|
+
@address = Address.new('Telegraph Av, 123')
|
48
|
+
@address.city = City.new('Miami')
|
49
|
+
@user.address = @address
|
50
|
+
|
51
|
+
replaced = statement.replace @user
|
52
|
+
|
53
|
+
assert_equal replaced, 'I\'m John Doe and I live in Telegraph Av, 123 - Miami'
|
54
|
+
end
|
55
|
+
|
34
56
|
class User
|
35
57
|
attr_accessor :name, :age, :address
|
36
58
|
|
@@ -40,10 +62,18 @@ class ChangesTest < Minitest::Test
|
|
40
62
|
end
|
41
63
|
|
42
64
|
class Address
|
43
|
-
attr_accessor :street
|
65
|
+
attr_accessor :street, :city
|
44
66
|
|
45
67
|
def initialize(street = nil)
|
46
68
|
@street = street
|
47
69
|
end
|
48
70
|
end
|
71
|
+
|
72
|
+
class City
|
73
|
+
attr_accessor :name
|
74
|
+
|
75
|
+
def initialize(name)
|
76
|
+
@name = name
|
77
|
+
end
|
78
|
+
end
|
49
79
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k-replace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reinaldo Oliveira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -60,10 +60,11 @@ extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
62
|
- ".gitignore"
|
63
|
+
- CHANGELOG.md
|
63
64
|
- Gemfile
|
64
65
|
- Gemfile.lock
|
65
66
|
- LICENSE
|
66
|
-
- README
|
67
|
+
- README.md
|
67
68
|
- Rakefile
|
68
69
|
- k-replace.gemspec
|
69
70
|
- lib/k-replace.rb
|
data/README
DELETED
File without changes
|