auto_demeter 0.0.7c → 0.0.11

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 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