k-replace 0.0.1 → 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.
- 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
|