auto_demeter 0.0.7 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9c478f9df3c1b6f1c7e5b7d9aa38a96362326fdd7acdee6bef3de8817278690d
4
+ data.tar.gz: '00187a4d4ef1be491625b9709a41824fb385edb7c2aebebefd3de0034afd074a'
5
+ SHA512:
6
+ metadata.gz: 17b1122f3f982ea564a70f9fa9d0bbe02ec8897440b793dd2e8392c897cfea73ae2191dfcd75a04b98e49ce25756bec294fb2f6c7ecf617b05b5f727bfc2fc60
7
+ data.tar.gz: 5fdc2cec66519a27f264ece2a9be9749e67ca057d69c4ccc398531c1f9770d6f3eed2e659dbfc0c7175fa7d62a487a1d4605e5d3785092f1cae4fa5897500012
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ /.idea/
data/README.md CHANGED
@@ -52,8 +52,3 @@ without having to define manager_name on the association.
52
52
  4. Push to the branch (`git push origin my-new-feature`)
53
53
  5. Create new Pull Request
54
54
 
55
- ## Todo
56
-
57
- 1. Tests
58
- 2. More tests around the is and is_not mechanism
59
- 3. Potentially deprecate the is and is_not mechanism which should really be handled in a different gem.
data/auto_demeter.gemspec CHANGED
@@ -19,15 +19,14 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_development_dependency 'sqlite3'
22
+ spec.add_development_dependency 'rake', '~> 12.3', '>=12.3.3'
22
23
 
23
24
  if RUBY_VERSION >= '1.9'
24
25
  spec.add_development_dependency 'bundler'
25
- spec.add_development_dependency 'rake'
26
26
  spec.add_development_dependency 'active_record'
27
27
  spec.add_development_dependency 'simplecov'
28
28
  else
29
29
  spec.add_development_dependency 'bundler', '~> 1.3'
30
- spec.add_development_dependency 'rake', '~>0.9.2'
31
30
  spec.add_development_dependency 'activerecord'
32
31
  spec.add_development_dependency 'rcov'
33
32
  end
@@ -1,13 +1,16 @@
1
1
  module AutoDemeter
2
2
  private
3
3
  def base_names
4
- @base_names||=self.class.reflect_on_all_associations.find_all { |x| [:has_one, :belongs_to].include?(x.send(:macro)) }.map { |x| x.send(:name).to_s }
4
+ @base_names||=self.class.reflect_on_all_associations.find_all { |x| [:has_one, :belongs_to].include?(x.send(:macro)) }.map { |x| x.send(:name).to_s } rescue []
5
5
  end
6
6
 
7
7
  def children_names
8
- class_name=base_names.map { |x| x.gsub(/^#{self.class.name.underscore}_/, '') }
9
- class_name=class_name | base_names.map { |x| x.gsub(/^#{self.base_name.underscore}_/, '') } if self.respond_to?(:base_name) && self.class.name!=self.base_name
10
- @children_names||=base_names | class_name
8
+ if @children_names.nil?
9
+ class_name=base_names.map { |x| x.gsub(/^#{self.class.name.underscore}_/, '') }
10
+ class_name=class_name | base_names.map { |x| x.gsub(/^#{self.base_name.underscore}_/, '') } if self.respond_to?(:base_name) && self.class.name!=self.base_name
11
+ @children_names=base_names | class_name
12
+ end
13
+ @children_names
11
14
  end
12
15
 
13
16
  def reflected_children_regex
@@ -17,12 +20,12 @@ module AutoDemeter
17
20
  public
18
21
  def respond_through_association?(method_id)
19
22
  if children_names && (match_data=method_id.to_s.match(reflected_children_regex)) && match_data[1].present?
20
- association_name=self.methods.include?(match_data[1]) ? match_data[1] : "#{self.class.name.underscore}_#{match_data[1]}"
23
+ association_name=(self.methods.include?(match_data[1].intern) || self.methods.include?(match_data[1])) ? match_data[1] : "#{self.class.name.underscore}_#{match_data[1]}"
21
24
  begin
22
25
  if association=send(association_name)
23
26
  association.respond_to?(match_data[2])
24
- else
25
- match_data[2][0..2] == 'is_'
27
+ elsif association.nil?
28
+ association_name.camelize.constantize.new.respond_to?(match_data[2])
26
29
  end
27
30
  rescue
28
31
  false
@@ -46,7 +49,7 @@ module AutoDemeter
46
49
  if association=send(association_name)
47
50
  association.send(match_data[2], *args, &block)
48
51
  else
49
- match_data[2][0..2] == 'is_' ? match_data[2][3..6] == 'not_' : nil
52
+ nil
50
53
  end
51
54
  rescue Exception
52
55
  raise e
@@ -1,3 +1,3 @@
1
1
  module AutoDemeter
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.12'
3
3
  end
@@ -74,5 +74,7 @@ end)
74
74
  assert_equal @paul.name, @luke_address.user_manager_name
75
75
  assert_equal @paul.name, @luke_address.user_manager.name
76
76
  assert_equal @paul.name, @luke_address.user.manager_name
77
+ @luke.address=nil
78
+ assert @luke.respond_to?(:address_postcode)
77
79
  end
78
80
  end
metadata CHANGED
@@ -1,106 +1,100 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: auto_demeter
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 7
10
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.12
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Paul McKibbin
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2016-08-01 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2021-04-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: sqlite3
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
26
17
  - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
32
20
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: bundler
36
21
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 9
43
- segments:
44
- - 1
45
- - 3
46
- version: "1.3"
47
- type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
50
28
  name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.3'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 12.3.3
37
+ type: :development
51
38
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ~>
56
- - !ruby/object:Gem::Version
57
- hash: 63
58
- segments:
59
- - 0
60
- - 9
61
- - 2
62
- version: 0.9.2
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '12.3'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 12.3.3
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
63
54
  type: :development
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: activerecord
67
55
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: active_record
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
71
65
  - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
77
68
  type: :development
78
- version_requirements: *id004
79
- - !ruby/object:Gem::Dependency
80
- name: rcov
81
69
  prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
85
72
  - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: simplecov
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
91
82
  type: :development
92
- version_requirements: *id005
93
- description: Create automated methods for all children or parents to allow a request to be handled more easily than defining a long chain
94
- email:
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: Create automated methods for all children or parents to allow a request
90
+ to be handled more easily than defining a long chain
91
+ email:
95
92
  - pmckibbin@gmail.com
96
93
  executables: []
97
-
98
94
  extensions: []
99
-
100
95
  extra_rdoc_files: []
101
-
102
- files:
103
- - .gitignore
96
+ files:
97
+ - ".gitignore"
104
98
  - Gemfile
105
99
  - LICENSE.txt
106
100
  - README.md
@@ -110,38 +104,28 @@ files:
110
104
  - lib/auto_demeter/methods.rb
111
105
  - lib/auto_demeter/version.rb
112
106
  - test/auto_demeter_test.rb
113
- homepage: ""
114
- licenses:
107
+ homepage: ''
108
+ licenses:
115
109
  - MIT
116
- post_install_message:
110
+ metadata: {}
111
+ post_install_message:
117
112
  rdoc_options: []
118
-
119
- require_paths:
113
+ require_paths:
120
114
  - lib
121
- required_ruby_version: !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
124
117
  - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
127
- segments:
128
- - 0
129
- version: "0"
130
- required_rubygems_version: !ruby/object:Gem::Requirement
131
- none: false
132
- requirements:
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
133
122
  - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: 3
136
- segments:
137
- - 0
138
- version: "0"
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
139
125
  requirements: []
140
-
141
- rubyforge_project:
142
- rubygems_version: 1.8.15
143
- signing_key:
144
- specification_version: 3
126
+ rubygems_version: 3.1.4
127
+ signing_key:
128
+ specification_version: 4
145
129
  summary: Automated demeter methods
146
- test_files:
130
+ test_files:
147
131
  - test/auto_demeter_test.rb