who_am_i 0.0.1 → 0.0.2

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: 2253bede51a5e4fa72f405ab2ff5f688623e28e3
4
- data.tar.gz: d75e93a1227f87b1be4cdff7b3a08854a62d4d90
3
+ metadata.gz: 55880585cfea925d0d39e6e92d909fbaa8a16344
4
+ data.tar.gz: 5fd295e65e97840d2f053402b778cad610543a22
5
5
  SHA512:
6
- metadata.gz: ad5bae82858ef5f415ca30934b87807358ed8c3dd16d10d1c03b1809a1fd3922f9a0232549b3e26e7bdb6cca8f8dd5de44514df98910debb12b75ea9d1f07c75
7
- data.tar.gz: f287bae2249961e3db22ceb871120a5f8bb475de5b20c84ebffe0c98094da4a3628270123413d58acce02b0c28e45cdc652f12e1afc4c84f10a98d52bb0b9d83
6
+ metadata.gz: 4d85064a47d41c6e03597ccc893bcfb5860f88a027a0c95051acb665b6a9a0fc41d6b5db037b666e8cfd1b3fce1746abe73eaa2cdca12e2cd8eda34643cd4035
7
+ data.tar.gz: 8c242e8b3ce144068ca7cbb9c80103fde3597731936702cca4ae3382a2898f73784baee06afd40d083910bbc57c52eacbfdb1ae12827ec535659c58aa6317331
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- who_am_i (0.0.0)
4
+ who_am_i (0.0.2)
5
5
  activerecord (>= 3.2, < 5.2)
6
6
  parser
7
7
  proc_party
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- who_am_i (0.0.0)
4
+ who_am_i (0.0.2)
5
5
  activerecord (>= 3.2, < 5.2)
6
6
  parser
7
7
  proc_party
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- who_am_i (0.0.0)
4
+ who_am_i (0.0.2)
5
5
  activerecord (>= 3.2, < 5.2)
6
6
  parser
7
7
  proc_party
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- who_am_i (0.0.0)
4
+ who_am_i (0.0.2)
5
5
  activerecord (>= 3.2, < 5.2)
6
6
  parser
7
7
  proc_party
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- who_am_i (0.0.0)
4
+ who_am_i (0.0.2)
5
5
  activerecord (>= 3.2, < 5.2)
6
6
  parser
7
7
  proc_party
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- who_am_i (0.0.0)
4
+ who_am_i (0.0.2)
5
5
  activerecord (>= 3.2, < 5.2)
6
6
  parser
7
7
  proc_party
@@ -23,6 +23,7 @@ module WhoAmI
23
23
  self.claimed_superclass = claimed_superclass
24
24
  self.table_name = table_name
25
25
  self.abstract_class = abstract_class
26
+ @skipped_because = []
26
27
  end
27
28
 
28
29
  def activerecord?
@@ -45,6 +46,14 @@ module WhoAmI
45
46
  end
46
47
  end
47
48
 
49
+ def skipped?
50
+ @skipped_because.size > 0
51
+ end
52
+
53
+ def skip(reason)
54
+ @skipped_because.push(reason)
55
+ end
56
+
48
57
  alias_method :to_s, :class_name
49
58
  end
50
59
  end
@@ -1,7 +1,6 @@
1
1
  module WhoAmI
2
2
  module Function
3
3
  class AnnotateModels
4
- using Refinement::YieldSelf
5
4
  include ProcParty
6
5
 
7
6
  def initialize(config, tables)
@@ -14,10 +13,14 @@ module WhoAmI
14
13
  .flat_map(&Ls.new)
15
14
  .flat_map(&ParseModel.new)
16
15
  .tap(&ExtractModelData.new)
17
- .yield_self(&ResolveTables.new)
16
+ .select(&:activerecord?)
18
17
  .reject(&:abstract_class?)
18
+ .each(&ResolveTable.new(@tables))
19
+ .reject(&:skipped?)
19
20
  .each(&ComputeComment.new)
21
+ .reject(&:skipped?)
20
22
  .each(&ComputeContent.new)
23
+ .reject(&:skipped?)
21
24
  .each(&WriteModel.new)
22
25
  end
23
26
 
@@ -0,0 +1,13 @@
1
+ module WhoAmI
2
+ module Function
3
+ class LoadInflections
4
+ include ProcParty
5
+
6
+ def call
7
+ if File.exist?("config/initializers/inflections.rb")
8
+ load "config/initializers/inflections.rb"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -8,6 +8,7 @@ module WhoAmI
8
8
  def call
9
9
  config = LoadConfig.new(@root).call
10
10
  tables = GetTables.new.call
11
+ LoadInflections.new.call
11
12
 
12
13
  AnnotateModels.new(config[:enabled][:models], tables).call
13
14
  end
@@ -18,7 +18,8 @@ module WhoAmI
18
18
  object_space["::ActiveRecord::Base"] =
19
19
  ExtractedClass.new(
20
20
  "ActiveRecord::Base",
21
- outerclass: object_space[""]
21
+ outerclass: object_space[""],
22
+ abstract_class: true
22
23
  )
23
24
 
24
25
  object_space.each do |class_name, extracted_class|
@@ -0,0 +1,66 @@
1
+ module WhoAmI
2
+ module Function
3
+ class ResolveTable
4
+ include ProcParty
5
+
6
+ def initialize(known_tables)
7
+ @known_tables = known_tables
8
+ end
9
+
10
+ def call(extracted_class)
11
+ set_table_name_for(extracted_class)
12
+ end
13
+
14
+ private
15
+
16
+ def set_table_name_for(extracted_class)
17
+ if extracted_class.abstract_class?
18
+ return
19
+ end
20
+
21
+ if extracted_class.table_name
22
+ return
23
+ end
24
+
25
+ if extracted_class.resolved_superclass
26
+ if !extracted_class.resolved_superclass.abstract_class?
27
+ set_table_name_for(extracted_class.resolved_superclass)
28
+
29
+ extracted_class.table_name =
30
+ extracted_class.resolved_superclass.table_name
31
+
32
+ return
33
+ end
34
+ end
35
+
36
+ extracted_class.table_name =
37
+ guess_table_from(extracted_class.class_name)
38
+
39
+ if extracted_class.table_name.nil?
40
+ extracted_class.skip("no table could be determined")
41
+ end
42
+ end
43
+
44
+ def guess_table_from(class_name)
45
+ loop do
46
+ guess =
47
+ class_name
48
+ .underscore
49
+ .pluralize
50
+ .sub(%r{\A/}, "")
51
+ .sub(%r{/}, "_")
52
+
53
+ if @known_tables.include?(guess)
54
+ break guess
55
+ end
56
+
57
+ if class_name !~ /::/
58
+ break
59
+ end
60
+
61
+ class_name = class_name.split("::", 2).last
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,3 +1,3 @@
1
1
  module WhoAmI
2
- VERSION = "0.0.1".freeze
2
+ VERSION = "0.0.2".freeze
3
3
  end
data/lib/who_am_i.rb CHANGED
@@ -17,13 +17,14 @@ require "who_am_i/function/remove_annotation"
17
17
  require "who_am_i/function/main"
18
18
  require "who_am_i/function/load_config"
19
19
  require "who_am_i/function/get_tables"
20
+ require "who_am_i/function/load_inflections"
20
21
  require "who_am_i/function/annotate_models"
21
22
  require "who_am_i/function/ls"
22
23
  require "who_am_i/function/parse_model"
23
24
  require "who_am_i/function/extract_model_data"
24
25
  require "who_am_i/function/resolve_class_relationships"
25
26
  require "who_am_i/function/resolve_active_record"
26
- require "who_am_i/function/resolve_tables"
27
+ require "who_am_i/function/resolve_table"
27
28
  require "who_am_i/function/compute_comment"
28
29
  require "who_am_i/function/compute_content"
29
30
  require "who_am_i/function/write_model"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: who_am_i
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Ahn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-02 00:00:00.000000000 Z
11
+ date: 2018-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -242,13 +242,14 @@ files:
242
242
  - lib/who_am_i/function/extract_model_data.rb
243
243
  - lib/who_am_i/function/get_tables.rb
244
244
  - lib/who_am_i/function/load_config.rb
245
+ - lib/who_am_i/function/load_inflections.rb
245
246
  - lib/who_am_i/function/ls.rb
246
247
  - lib/who_am_i/function/main.rb
247
248
  - lib/who_am_i/function/parse_model.rb
248
249
  - lib/who_am_i/function/remove_annotation.rb
249
250
  - lib/who_am_i/function/resolve_active_record.rb
250
251
  - lib/who_am_i/function/resolve_class_relationships.rb
251
- - lib/who_am_i/function/resolve_tables.rb
252
+ - lib/who_am_i/function/resolve_table.rb
252
253
  - lib/who_am_i/function/write_model.rb
253
254
  - lib/who_am_i/rake.rb
254
255
  - lib/who_am_i/refinement/yield_self.rb
@@ -1,25 +0,0 @@
1
- module WhoAmI
2
- module Function
3
- class ResolveTables
4
- include ProcParty
5
-
6
- def call(extracted_classes)
7
- extracted_classes.each do |extracted_class|
8
- if !extracted_class.table_name.nil?
9
- next
10
- end
11
-
12
- extracted_class.table_name =
13
- if Kernel.const_defined?(extracted_class.class_name)
14
- Kernel.const_get(extracted_class.class_name).table_name
15
- else
16
- extracted_class.class_name
17
- .underscore
18
- .pluralize
19
- .sub(%r{\A/}, "")
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end