k-replace 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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