ld 0.2.7 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ld/project/controllers.rb +1 -1
- data/lib/ld/project/models.rb +23 -13
- data/lib/ld/project/project.rb +81 -3
- data/lib/ld/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e89cf241b75524b55030d7380c492ca33997d1a0
|
4
|
+
data.tar.gz: 5bf0835e73ca16ac0b6c47d5caa4da5ba632677d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b942469c6091f7d0e7fe839899446f3b07f5a3de8b16d2c2468362f2cdb9ce3ebf0b9e94b9baf1a9e453f312a066c687405197ca83d9f3f048a2ba373d5f5cd
|
7
|
+
data.tar.gz: e9c8834ce7d77486ef47c88d6660469b91da4f37b820095c80f231f1c2ff56002db55124f3315d6b35acbf8ff258ecc0da93422ae655544dd802b5b8a856ba40
|
@@ -23,7 +23,7 @@ class Ld::Controllers
|
|
23
23
|
controller = find_controller model_name.pluralize
|
24
24
|
if controller
|
25
25
|
controller_lines = controller.lines
|
26
|
-
controller_methods = controller_lines.map{|l| l.split('def ')[1] if l.match(/def /)}.compact
|
26
|
+
controller_methods = controller_lines.map{|l| l.split('def ')[1].chomp if l.match(/def /)}.compact
|
27
27
|
end
|
28
28
|
controller
|
29
29
|
end
|
data/lib/ld/project/models.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class Ld::Models
|
2
2
|
attr_accessor :headings, :rows, :models
|
3
3
|
|
4
|
-
def initialize root, tables
|
4
|
+
def initialize root, tables, table_hash
|
5
5
|
@root = root
|
6
6
|
@tables = tables
|
7
|
+
@table_hash = table_hash
|
7
8
|
parse
|
8
9
|
end
|
9
10
|
|
@@ -18,18 +19,20 @@ class Ld::Models
|
|
18
19
|
methods_full = lines.map{|l| l.split('def ')[1] if l.match(/def /)}.compact
|
19
20
|
methods = methods_full.map{|method_full| method_full.split(' ')[0]}
|
20
21
|
instance = name.camelize.constantize.new
|
21
|
-
data_count =
|
22
|
+
data_count = name.camelize.constantize.count
|
22
23
|
fields = instance.attributes.keys
|
23
24
|
relations = get_relations file.lines
|
24
25
|
[
|
25
|
-
name,name.pluralize,name.camelize,data_count,lines.size,file.path,methods.size,
|
26
|
+
name,name.pluralize,@table_hash[name],name.camelize,data_count,lines.size,file.path,methods.size,
|
26
27
|
methods.join(','),fields.join(','),fields.size,
|
27
28
|
relations[:has_many].size,relations[:belongs_to].size,relations[:has_one].size,
|
28
|
-
relations[:has_many].join(
|
29
|
+
relations[:has_many].join(",\n"),
|
30
|
+
relations[:belongs_to].join(",\n"),
|
31
|
+
relations[:has_one].join(",\n")
|
29
32
|
]
|
30
|
-
}.compact.sort{|a,b| b[
|
33
|
+
}.compact.sort{|a,b| b[0] <=> a[0]} # 按 模型文件行数 排序
|
31
34
|
@models = @rows.map{|arr| arr[0]}.uniq
|
32
|
-
@headings = ['模型名','表名','类','数据数量','行数','path', '方法数',
|
35
|
+
@headings = ['模型名','表名','comment','类','数据数量','行数','path', '方法数',
|
33
36
|
'所有方法', '所有字段','字段数量',
|
34
37
|
'has_many个数','belongs_to个数','has_one个数',
|
35
38
|
'has_many','belongs_to','has_one']
|
@@ -38,13 +41,20 @@ class Ld::Models
|
|
38
41
|
def get_relations lines
|
39
42
|
relations = {has_many:[],belongs_to:[],has_one:[]}
|
40
43
|
lines.each do |line|
|
41
|
-
|
42
|
-
if arr[0]
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
arr = line.split(' ')
|
45
|
+
if ['has_many','belongs_to','has_one'].include? arr[0]
|
46
|
+
model = arr[1].split(':')[1].split(',')[0]
|
47
|
+
china = @table_hash[model.singularize]
|
48
|
+
if !china
|
49
|
+
if i = arr.index('class_name:')
|
50
|
+
if class_name = arr[i+1]
|
51
|
+
class_name = class_name.split('"')[1] if class_name.match(/"/)
|
52
|
+
class_name = class_name.split("'")[1] if class_name.match(/'/)
|
53
|
+
china = @table_hash[class_name.underscore]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
relations[arr[0].to_sym] << "#{model}(#{china})"
|
48
58
|
end
|
49
59
|
end
|
50
60
|
relations
|
data/lib/ld/project/project.rb
CHANGED
@@ -2,24 +2,99 @@ class Ld::Project
|
|
2
2
|
|
3
3
|
attr_accessor :root, :tables, :models, :controllers, :views, :routes
|
4
4
|
|
5
|
-
def initialize path = Rails.root.to_s
|
5
|
+
def initialize table_hash = {}, path = Rails.root.to_s
|
6
6
|
@root = Ld::File.new path
|
7
|
+
@table_hash = table_hash
|
7
8
|
parse_project
|
8
9
|
end
|
9
10
|
|
10
11
|
def parse_project
|
11
12
|
@tables = Ld::Tables.new @root, nil
|
12
|
-
@models = Ld::Models.new @root, @tables
|
13
|
+
@models = Ld::Models.new @root, @tables, @table_hash
|
13
14
|
@routes = Ld::Routes.new @root, @models
|
14
15
|
@tables = Ld::Tables.new @root, @models
|
15
16
|
@views = Ld::Views.new @root, @models
|
16
17
|
@controllers = Ld::Controllers.new @root, @models
|
17
18
|
end
|
18
19
|
|
20
|
+
def print model_name, type = :relations
|
21
|
+
if !@models.models.include? model_name
|
22
|
+
puts "不存在 #{model_name}"
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
title_str = "#{model_name.camelize}(#{@table_hash[model_name]})"
|
27
|
+
|
28
|
+
case type
|
29
|
+
when :fields
|
30
|
+
fs = '字段,字段类型,描述,空约束,默认值,精度位数,limit'.split(',')
|
31
|
+
indexs = fs.map{|f| @tables.headings.index(f)}.compact
|
32
|
+
rows = []
|
33
|
+
@tables.rows.select{|a| a[0]==model_name}.each{|arr| rows << indexs.map{|i| arr[i]} }
|
34
|
+
puts Terminal::Table.new(
|
35
|
+
:title => "#{title_str}:字段解释",
|
36
|
+
:headings => fs,
|
37
|
+
:rows => rows
|
38
|
+
)
|
39
|
+
when :relations
|
40
|
+
fs = 'has_many,belongs_to,has_one'.split(',')
|
41
|
+
indexs = fs.map{|f| @models.headings.index(f)}.compact
|
42
|
+
rows = []
|
43
|
+
@models.rows.select{|a| a[0]==model_name}.each{|arr|
|
44
|
+
rows << indexs.map{|i| arr[i]}
|
45
|
+
}
|
46
|
+
puts Terminal::Table.new(
|
47
|
+
:title => "#{title_str}:关联关系",
|
48
|
+
:headings => fs,
|
49
|
+
:rows => rows
|
50
|
+
)
|
51
|
+
when :routes
|
52
|
+
fs = '控制器,action,请求类型,URI,帮助方法'.split(',')
|
53
|
+
indexs = fs.map{|f| @routes.headings.index(f)}.compact
|
54
|
+
rows = []
|
55
|
+
@routes.rows.select{|a| a[0]==model_name}.each{|arr| rows << indexs.map{|i| arr[i]} }
|
56
|
+
puts Terminal::Table.new(
|
57
|
+
:title => "#{title_str}:路由",
|
58
|
+
:headings => fs,
|
59
|
+
:rows => rows
|
60
|
+
)
|
61
|
+
when :views
|
62
|
+
fs = '文件夹名,行数,文件名,path'.split(',')
|
63
|
+
indexs = fs.map{|f| @views.headings.index(f)}.compact
|
64
|
+
rows = []
|
65
|
+
@views.rows.select{|a| a[0]==model_name}.each{|arr| rows << indexs.map{|i| arr[i]} }
|
66
|
+
puts Terminal::Table.new(
|
67
|
+
:title => "#{title_str}:视图",
|
68
|
+
:headings => fs,
|
69
|
+
:rows => rows
|
70
|
+
)
|
71
|
+
when :controllers
|
72
|
+
fs = 'action个数,文件行数,所有action'.split(',')
|
73
|
+
indexs = fs.map{|f| @controllers.headings.index(f)}.compact
|
74
|
+
rows = []
|
75
|
+
@controllers.rows.select{|a| a[0]==model_name}.each{|arr| rows << indexs.map{|i| arr[i]} }
|
76
|
+
puts Terminal::Table.new(
|
77
|
+
:title => "#{title_str}:控制器",
|
78
|
+
:headings => fs,
|
79
|
+
:rows => rows
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
true
|
84
|
+
end
|
85
|
+
|
86
|
+
def delete_rows_index
|
87
|
+
@routes.rows.delete_at 0
|
88
|
+
@tables.rows.delete_at 0
|
89
|
+
@models.rows.delete_at 0
|
90
|
+
@views.rows.delete_at 0
|
91
|
+
@controllers.rows.delete_at 0
|
92
|
+
end
|
93
|
+
|
19
94
|
def to_xls path = "#{@root.path}/project.xls"
|
20
95
|
Ld::Excel.create path do |excel|
|
21
|
-
# sheet.set_format({color: :black, font_size: 14, font: '微软雅黑'})
|
22
96
|
excel.write_sheet 'routes' do |sheet|
|
97
|
+
sheet.set_format({color: :black, font_size: 18, font: '微软雅黑'})
|
23
98
|
sheet.set_headings @routes.headings
|
24
99
|
sheet.set_rows @routes.rows
|
25
100
|
end
|
@@ -40,10 +115,13 @@ class Ld::Project
|
|
40
115
|
sheet.set_rows @controllers.rows
|
41
116
|
end
|
42
117
|
end
|
118
|
+
#delete_rows_index
|
43
119
|
end
|
44
120
|
|
45
121
|
def add_bug
|
46
122
|
|
47
123
|
end
|
48
124
|
|
125
|
+
|
126
|
+
|
49
127
|
end
|
data/lib/ld/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ld
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liu Dong
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: terminal-table
|