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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e82ceedc32d4f33e64e2eefd9d09967a4c6a020
4
- data.tar.gz: 533a500efb72af1cfd8278d0140926038fa62675
3
+ metadata.gz: cba286f17fc6bfa0be4ed7e36547321bcfa734f3
4
+ data.tar.gz: 68b9b391234a9dc978e229880fb3134f59bcf72a
5
5
  SHA512:
6
- metadata.gz: f555b578f97197307c92dcdc7e990c1b6219b94564c0bd9eb8929bb8059183709e10cb3c43c0a79f2b5cd8b27b4ea048e26ee5ab9843cf4b165d5af0e9253b78
7
- data.tar.gz: 135dba4c38186108f0cc4f2adfae8ea799026d250f1d4cb5f5ad2a64edac7b949fa7ff55a3f4ccfb932049676ef42905a7aaec442c3d6e135fe248fde87daf89
6
+ metadata.gz: 94fc9a6b9e7d2fd978f65f02127a41921c1d71ad6573b8efca4d552dfbbb784c8f8803e4345865388df86e4bd3e09501127ea1b53443ffb49fa82626e2086249
7
+ data.tar.gz: 583cfd77f02f0a9863971279f985fbdefcb69ac4e4b2fd3041992f7a7dc517124fae1bc19702d65eae416928f8add8bff891d403e3a5ce06897bc861d59c0774
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- k-replace (0.0.1)
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
@@ -4,8 +4,8 @@ module K
4
4
  module Replace
5
5
  require "k/replace/config"
6
6
  require "k/replace/version"
7
+ require "k/replace/dynamic_accessors"
7
8
  require "k/replace/keys"
8
- require "k/replace/changes"
9
9
  require "k/replace/statement"
10
10
 
11
11
  def self.setup
@@ -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
@@ -4,7 +4,7 @@ module K
4
4
  module Replace
5
5
  class Statement
6
6
  include Keys
7
- include Changes
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(*objects)
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, objs[k])}
25
+ chained.each{|k, v| replaced = resolve_property(k, v, hash[k])}
27
26
  end
28
27
  replaced
29
28
  end
@@ -3,9 +3,9 @@
3
3
  module K
4
4
  module Replace
5
5
  module VERSION
6
- MAJOR = 0
7
- MINOR = 1
8
- PATCH = 1
6
+ MAJOR = 1
7
+ MINOR = 0
8
+ PATCH = 0
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
11
11
 
@@ -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.1.1
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-12 00:00:00.000000000 Z
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
@@ -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