auto_demeter 0.0.7b → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9a8d108b1c124908ffe44ae01cb07d736d52b8454ce3d49d66f00e696f7b1843
4
+ data.tar.gz: 4d8109a4f67c12f604020618d0f04ff563893fefcf463471b0557bb5bd19e606
5
+ SHA512:
6
+ metadata.gz: 02c9d24192ec0020b8559a02ae77bbbab0e4746cae0b83ca8456292f095cfa665f3cdd37c62159a0fa721392f3f9aae2dd90de93950325ec9b20b582a19c1496
7
+ data.tar.gz: c710ab2e273803af665dc22fd2f1b2c9fd10d48b3cf9a21e06ee819f9dc77ad7bc857123ce275cbbaadd0f2768a08b181ae22c0dc6c27546a1de2850fa7eb55f
@@ -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,25 +1,28 @@
1
1
  module AutoDemeter
2
2
  private
3
3
  def base_names
4
- @base_names ||= self.class.reflect_on_all_associations.map{|x| x.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 }
5
5
  end
6
6
 
7
7
  def children_names
8
8
  class_name=base_names.map { |x| x.gsub(/^#{self.class.name.underscore}_/, '') }
9
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
10
+ @children_names||=base_names | class_name
11
11
  end
12
12
 
13
13
  def reflected_children_regex
14
14
  Regexp.new('^(' << children_names.join('|') << ')_(.*[^=])$')
15
15
  end
16
16
 
17
+ public
17
18
  def respond_through_association?(method_id)
18
19
  if children_names && (match_data=method_id.to_s.match(reflected_children_regex)) && match_data[1].present?
19
- association_name=self.methods.include?(match_data[1]) ? match_data[1] : "#{self.class.name.underscore}_#{match_data[1]}"
20
+ 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]}"
20
21
  begin
21
22
  if association=send(association_name)
22
23
  association.respond_to?(match_data[2])
24
+ elsif association.nil?
25
+ association_name.camelize.constantize.new.respond_to?(match_data[2])
23
26
  else
24
27
  match_data[2][0..2] == 'is_'
25
28
  end
@@ -31,8 +34,7 @@ module AutoDemeter
31
34
  end
32
35
  end
33
36
 
34
- public
35
- def respond_to?(method_id)
37
+ def respond_to?(method_id, public=false)
36
38
  super || (method_id != :base_name && respond_through_association?(method_id))
37
39
  end
38
40
 
@@ -1,3 +1,3 @@
1
1
  module AutoDemeter
2
- VERSION = '0.0.7b'
2
+ VERSION = '0.0.10'
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,94 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_demeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7b
5
- prerelease: 5
4
+ version: 0.0.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - Paul McKibbin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2016-06-06 00:00:00.000000000 Z
11
+ date: 2020-06-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sqlite3
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
- name: bundler
28
+ name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
33
+ version: '12.3'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 12.3.3
38
37
  type: :development
39
38
  prerelease: false
40
39
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
40
  requirements:
43
- - - ! '>='
41
+ - - "~>"
44
42
  - !ruby/object:Gem::Version
45
- version: '0'
43
+ version: '12.3'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 12.3.3
46
47
  - !ruby/object:Gem::Dependency
47
- name: rake
48
+ name: bundler
48
49
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
57
  requirements:
59
- - - ! '>='
58
+ - - ">="
60
59
  - !ruby/object:Gem::Version
61
60
  version: '0'
62
61
  - !ruby/object:Gem::Dependency
63
62
  name: active_record
64
63
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
64
  requirements:
67
- - - ! '>='
65
+ - - ">="
68
66
  - !ruby/object:Gem::Version
69
67
  version: '0'
70
68
  type: :development
71
69
  prerelease: false
72
70
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
71
  requirements:
75
- - - ! '>='
72
+ - - ">="
76
73
  - !ruby/object:Gem::Version
77
74
  version: '0'
78
75
  - !ruby/object:Gem::Dependency
79
76
  name: simplecov
80
77
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
78
  requirements:
83
- - - ! '>='
79
+ - - ">="
84
80
  - !ruby/object:Gem::Version
85
81
  version: '0'
86
82
  type: :development
87
83
  prerelease: false
88
84
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
85
  requirements:
91
- - - ! '>='
86
+ - - ">="
92
87
  - !ruby/object:Gem::Version
93
88
  version: '0'
94
89
  description: Create automated methods for all children or parents to allow a request
@@ -99,7 +94,7 @@ executables: []
99
94
  extensions: []
100
95
  extra_rdoc_files: []
101
96
  files:
102
- - .gitignore
97
+ - ".gitignore"
103
98
  - Gemfile
104
99
  - LICENSE.txt
105
100
  - README.md
@@ -112,27 +107,25 @@ files:
112
107
  homepage: ''
113
108
  licenses:
114
109
  - MIT
110
+ metadata: {}
115
111
  post_install_message:
116
112
  rdoc_options: []
117
113
  require_paths:
118
114
  - lib
119
115
  required_ruby_version: !ruby/object:Gem::Requirement
120
- none: false
121
116
  requirements:
122
- - - ! '>='
117
+ - - ">="
123
118
  - !ruby/object:Gem::Version
124
119
  version: '0'
125
120
  required_rubygems_version: !ruby/object:Gem::Requirement
126
- none: false
127
121
  requirements:
128
- - - ! '>'
122
+ - - ">="
129
123
  - !ruby/object:Gem::Version
130
- version: 1.3.1
124
+ version: '0'
131
125
  requirements: []
132
- rubyforge_project:
133
- rubygems_version: 1.8.25
126
+ rubygems_version: 3.0.3
134
127
  signing_key:
135
- specification_version: 3
128
+ specification_version: 4
136
129
  summary: Automated demeter methods
137
130
  test_files:
138
131
  - test/auto_demeter_test.rb