who_am_i 0.0.1 → 0.0.2

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