k-replace 0.1.1 → 1.0.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/Gemfile.lock +4 -4
- data/lib/k/replace.rb +1 -1
- data/lib/k/replace/dynamic_accessors.rb +26 -0
- data/lib/k/replace/statement.rb +3 -4
- data/lib/k/replace/version.rb +3 -3
- data/test/replace/statement_test.rb +4 -4
- metadata +3 -3
- data/lib/k/replace/changes.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cba286f17fc6bfa0be4ed7e36547321bcfa734f3
|
4
|
+
data.tar.gz: 68b9b391234a9dc978e229880fb3134f59bcf72a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94fc9a6b9e7d2fd978f65f02127a41921c1d71ad6573b8efca4d552dfbbb784c8f8803e4345865388df86e4bd3e09501127ea1b53443ffb49fa82626e2086249
|
7
|
+
data.tar.gz: 583cfd77f02f0a9863971279f985fbdefcb69ac4e4b2fd3041992f7a7dc517124fae1bc19702d65eae416928f8add8bff891d403e3a5ce06897bc861d59c0774
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
k-replace (0.
|
4
|
+
k-replace (0.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -34,9 +34,9 @@ PLATFORMS
|
|
34
34
|
|
35
35
|
DEPENDENCIES
|
36
36
|
k-replace!
|
37
|
-
minitest
|
38
|
-
minitest-utils
|
39
|
-
pry-meta
|
37
|
+
minitest (~> 5.10)
|
38
|
+
minitest-utils (~> 0.4)
|
39
|
+
pry-meta (~> 0.0)
|
40
40
|
|
41
41
|
BUNDLED WITH
|
42
42
|
1.15.4
|
data/lib/k/replace.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
module K
|
4
|
+
module Replace
|
5
|
+
module DynamicAccessors
|
6
|
+
|
7
|
+
def create_accessors(attributes)
|
8
|
+
@_dynamic_attributes = attributes.with_indifferent_access
|
9
|
+
@_dynamic_attributes.each_with_index do |attribute, index|
|
10
|
+
create_accessor attribute[0].to_s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def create_accessor(name)
|
17
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
18
|
+
def #{name}
|
19
|
+
@_dynamic_attributes["#{name}"]
|
20
|
+
end
|
21
|
+
RUBY
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/k/replace/statement.rb
CHANGED
@@ -4,7 +4,7 @@ module K
|
|
4
4
|
module Replace
|
5
5
|
class Statement
|
6
6
|
include Keys
|
7
|
-
include
|
7
|
+
include DynamicAccessors
|
8
8
|
|
9
9
|
attr_reader :source, :keys
|
10
10
|
|
@@ -17,13 +17,12 @@ module K
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def replace(
|
21
|
-
objs = hash_objects(objects)
|
20
|
+
def replace(hash)
|
22
21
|
@source.gsub(kreplace.key_pattern) do |key|
|
23
22
|
replaced = ''
|
24
23
|
find_all(key) do |match|
|
25
24
|
chained = chain_property(match)
|
26
|
-
chained.each{|k, v| replaced = resolve_property(k, v,
|
25
|
+
chained.each{|k, v| replaced = resolve_property(k, v, hash[k])}
|
27
26
|
end
|
28
27
|
replaced
|
29
28
|
end
|
data/lib/k/replace/version.rb
CHANGED
@@ -16,7 +16,7 @@ class ChangesTest < Minitest::Test
|
|
16
16
|
statement = K::Replace::Statement.new "Hello, ##__User.name__##!"
|
17
17
|
@user.name = 'John Doe'
|
18
18
|
|
19
|
-
replaced = statement.replace @user
|
19
|
+
replaced = statement.replace({ user: @user })
|
20
20
|
|
21
21
|
assert_equal replaced, "Hello, John Doe!"
|
22
22
|
end
|
@@ -26,7 +26,7 @@ class ChangesTest < Minitest::Test
|
|
26
26
|
@user.name = 'John Doe'
|
27
27
|
@user.age = 18
|
28
28
|
|
29
|
-
replaced = statement.replace @user
|
29
|
+
replaced = statement.replace({ user: @user })
|
30
30
|
|
31
31
|
assert_equal replaced, 'I\'m John Doe and I\'m 18 years old.'
|
32
32
|
end
|
@@ -36,7 +36,7 @@ class ChangesTest < Minitest::Test
|
|
36
36
|
@user.name = 'John Doe'
|
37
37
|
@user.address = Address.new('Telegraph Av, 123')
|
38
38
|
|
39
|
-
replaced = statement.replace @user
|
39
|
+
replaced = statement.replace({ user: @user })
|
40
40
|
|
41
41
|
assert_equal replaced, 'I\'m John Doe and I live in Telegraph Av, 123'
|
42
42
|
end
|
@@ -48,7 +48,7 @@ class ChangesTest < Minitest::Test
|
|
48
48
|
@address.city = City.new('Miami')
|
49
49
|
@user.address = @address
|
50
50
|
|
51
|
-
replaced = statement.replace @user
|
51
|
+
replaced = statement.replace({ user: @user })
|
52
52
|
|
53
53
|
assert_equal replaced, 'I\'m John Doe and I live in Telegraph Av, 123 - Miami'
|
54
54
|
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.
|
4
|
+
version: 1.0.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: 2018-01-
|
11
|
+
date: 2018-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -69,8 +69,8 @@ files:
|
|
69
69
|
- k-replace.gemspec
|
70
70
|
- lib/k-replace.rb
|
71
71
|
- lib/k/replace.rb
|
72
|
-
- lib/k/replace/changes.rb
|
73
72
|
- lib/k/replace/config.rb
|
73
|
+
- lib/k/replace/dynamic_accessors.rb
|
74
74
|
- lib/k/replace/keys.rb
|
75
75
|
- lib/k/replace/statement.rb
|
76
76
|
- lib/k/replace/version.rb
|
data/lib/k/replace/changes.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
# frozen_string_literal: true
|
3
|
-
module K
|
4
|
-
module Replace
|
5
|
-
module Changes
|
6
|
-
private
|
7
|
-
|
8
|
-
def hash_objects(objs)
|
9
|
-
Hash.new.tap do |hsh|
|
10
|
-
objs.each{|obj| hsh[obj.class.name.to_s.gsub(/^.*::/, '').downcase.to_sym] = obj}
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def call_attribute(objs, attrs)
|
15
|
-
attrs.each do |k, atts|
|
16
|
-
atts.each do |att|
|
17
|
-
raise NoMethodError, "undefined method `#{att}` for #{objs[k].inspect}" unless
|
18
|
-
!objs[k].nil? && objs[k].respond_to?(att)
|
19
|
-
return objs[k].send(att)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|