auto_demeter 0.0.7c → 0.0.11

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: a6a2fb0f23004b01f24e25eb9a8ffe5c78ee2d4eb93c7eba9e7e1711ff23fe28
4
+ data.tar.gz: 285dfc3ca665389c03628214265e2c5ef37212d110d6421ebe2947e0634ea036
5
+ SHA512:
6
+ metadata.gz: 2d9b6eb136a787b55b53c6791abe168bbf0b04bc37827a059b563a75556145f5089d2b9a05decae94061280ca0a74588eaf8bf2c0a65a880584c3423d5b77aad
7
+ data.tar.gz: 5f5f7200a00978fe0b61a5c7cc610ea11eeae32702b14d3b86a37359b7ee55400605a94bfbce68372ba40c1b9b137e2a91cfd4fb854a7de7e115ea0b3b6db683
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ /.idea/
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,27 +1,31 @@
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 } 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
14
- Regexp.new('^(' << children_names.join('|') << ')(?:\.|_|&.)(.*[^=])$')
17
+ Regexp.new('^(' << children_names.join('|') << ')_(.*[^=])$')
15
18
  end
16
19
 
20
+ public
17
21
  def respond_through_association?(method_id)
18
22
  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]}"
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]}"
20
24
  begin
21
25
  if association=send(association_name)
22
26
  association.respond_to?(match_data[2])
23
- else
24
- match_data[2][0..2] == 'is_'
27
+ elsif association.nil?
28
+ association_name.camelize.constantize.new.respond_to?(match_data[2])
25
29
  end
26
30
  rescue
27
31
  false
@@ -31,8 +35,7 @@ module AutoDemeter
31
35
  end
32
36
  end
33
37
 
34
- public
35
- def respond_to?(method_id)
38
+ def respond_to?(method_id, public=false)
36
39
  super || (method_id != :base_name && respond_through_association?(method_id))
37
40
  end
38
41
 
@@ -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.7c'
2
+ VERSION = '0.0.11'
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.7c
5
- prerelease: 5
4
+ version: 0.0.11
6
5
  platform: ruby
7
6
  authors:
8
7
  - Paul McKibbin
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2016-06-06 00:00:00.000000000 Z
11
+ date: 2021-04-08 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
115
- post_install_message:
110
+ metadata: {}
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
134
- signing_key:
135
- specification_version: 3
126
+ rubygems_version: 3.1.4
127
+ signing_key:
128
+ specification_version: 4
136
129
  summary: Automated demeter methods
137
130
  test_files:
138
131
  - test/auto_demeter_test.rb