ld 0.4.1 → 0.4.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: 4aa24c26d705bf565bb481b9aceca58a56afa136
4
- data.tar.gz: 4a94928e5dd958663f0702e5273bb1a25787866d
3
+ metadata.gz: e256c2666589abfd51ced4014d74e9dcff24bfbe
4
+ data.tar.gz: ed4dee97ccf1e8436b899fb6ba60e8750d11719e
5
5
  SHA512:
6
- metadata.gz: 3cd3d87c25b8eefd6d7b04944c42b21b7e87f4c5f4cd75e0f5bc00a87e1ff99188e97189e7bdb44953a88faad01a0b4d99f34217f64abb1281d6e28ebee6ff60
7
- data.tar.gz: a491724ef9e82858a6971bd18900a9ffb8b822800314bf55ff2fb2027d5bab2c952d426b6a7a32d02d062d00e14ff6d1cd5a5f6000e12c2cd0a97fe4e3aa040e
6
+ metadata.gz: 74b28ef6771b6d292c95829f283b3c1e26f8ed6a041717381099c0dda8a0d6c75d298bb8901ea245421351a86a3db147f50948cfd7e51b0255b6ce1bab96108e
7
+ data.tar.gz: 3151f396e5811b216802015e7321a39abaf7dbe309760d7d311c28b1f88bbabd97daaeaf9098fabd9c953d531ff28df8cc8d8eea5e95e722fe06ff707343cecd
data/README.md CHANGED
@@ -118,6 +118,7 @@ Ld::Print.p users, 'id ,name, created_at'
118
118
 
119
119
  ## API
120
120
 
121
+
121
122
  ### Ld::Project
122
123
  * `initialize table_hash = {}, project_root_path = Rails.root.to_s`
123
124
  * 作用:解析一个项目的代码获得结构化的数据
@@ -128,10 +129,6 @@ Ld::Print.p users, 'id ,name, created_at'
128
129
  * `to_xls path = {:file_path => "#{@root.path}/project.xls"}`
129
130
  * 作用:将这个项目的代码分析结果保存到excel文件(默认在项目根目录下的project.xls)
130
131
 
131
- ### Ld::Document
132
- * `initialize file`
133
- * 作用:读一个rb文件生成api数据
134
-
135
132
  ### Ld::Excel
136
133
  * `self.open path`
137
134
  * 作用:打开一个xls文件,返回Ld::Excel实例
@@ -216,27 +213,3 @@ Ld::Print.p users, 'id ,name, created_at'
216
213
 
217
214
  * `ls `
218
215
  * 作用:输出目录中所有条目
219
-
220
- ### Ld::Print
221
- * `self.p models, fields`
222
- * 作用:格式化打印模型数组
223
-
224
-
225
-
226
-
227
- ## Development
228
-
229
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
230
-
231
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
232
-
233
- ## Contributing
234
-
235
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ld. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
236
-
237
-
238
- ## License
239
-
240
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
241
-
242
- ##
data/README2.md ADDED
@@ -0,0 +1,102 @@
1
+ ## API
2
+
3
+
4
+ ### Ld::Project
5
+ * `initialize table_hash = {}, project_root_path = Rails.root.to_s`
6
+ * 作用:解析一个项目的代码获得结构化的数据
7
+
8
+ * `print model_name, type = :relations`
9
+ * 作用:查看模型的相关信息(参数有:relations,fields,tables,routes,views,controllers)
10
+
11
+ * `to_xls path = {:file_path => "#{@root.path}/project.xls"}`
12
+ * 作用:将这个项目的代码分析结果保存到excel文件(默认在项目根目录下的project.xls)
13
+
14
+ ### Ld::Excel
15
+ * `self.open path`
16
+ * 作用:打开一个xls文件,返回Ld::Excel实例
17
+
18
+ * `self.write path, &block`
19
+ * 作用:写excel(创建新的xls文件)
20
+
21
+ * `self.create path, &block`
22
+ * 作用:write的同名方法
23
+
24
+ * `read params, show_location = false`
25
+ * 示例:Ld::Excel.read "Sheet1?A1:B2"
26
+ * 作用:读xls文件中的内容,二维数组
27
+
28
+ * `read_with_location params`
29
+ * 作用:与read方法相同(但会多返回坐标数据)
30
+
31
+ ### Ld::Sheet
32
+ * `set_headings headings`
33
+ * 作用:在当前sheet的主体内容顶上方添加一个表头(传入二维数组),但不写入(只有调用Ld::Excel的实例方法save才会写入io)
34
+
35
+ * `set_color color`
36
+ * 作用:设置当前sheet页的字体颜色
37
+
38
+ * `set_font_size size`
39
+ * 作用:设置当前sheet页的字体大小
40
+
41
+ * `set_font font`
42
+ * 作用:设置当前sheet页的字体
43
+
44
+ * `set_weight weight`
45
+ * 作用:设置当前sheet页的单元格宽度(暂时无效)
46
+
47
+ * `set_point point`
48
+ * 作用:设置当前sheet页的字体颜色
49
+
50
+ ### Ld::File
51
+ * `self.open path`
52
+ * 作用:打开一个文件
53
+
54
+ * `children `
55
+ * 作用:返回这个目录下的所有一级目录与一级文件,如果不是目录,会报错
56
+
57
+ * `self.current `
58
+ * 作用:返回当前所在目录(Dir.pwd)
59
+
60
+ * `dir? `
61
+ * 作用:判断这是目录吗
62
+
63
+ * `file? `
64
+ * 作用:判断这是文件吗
65
+
66
+ * `find name`
67
+ * 作用:查找文件或目录,返回一个一级目录或文件,如果不存在则返回nil
68
+
69
+ * `search name, type = :all`
70
+ * 作用:精确查找,返回所有匹配的目录和文件
71
+
72
+ * `search_regexp regexp, type = :all`
73
+ * 作用:模糊查找,返回所有匹配的目录和文件
74
+
75
+ * `lines `
76
+ * 作用:如果是一个文本文件,返回所有行
77
+
78
+ * `rename new_name`
79
+ * 作用:修改名称(目录或文件均可)
80
+
81
+ * `delete `
82
+ * 作用:删除当前文件(有gets确认)
83
+
84
+ * `files `
85
+ * 作用:返回所有文件
86
+
87
+ * `parent `
88
+ * 作用:返回父目录
89
+
90
+ * `siblings `
91
+ * 作用:返回所有兄弟
92
+
93
+ * `dirs `
94
+ * 作用:返回所有目录
95
+
96
+ * `ls `
97
+ * 作用:输出目录中所有条目
98
+
99
+ ### Ld::Print
100
+ * `self.p models, fields`
101
+ * 作用:格式化打印模型数组
102
+
data/ld.gemspec CHANGED
@@ -34,4 +34,5 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  spec.add_development_dependency "bundler", "~> 1.14"
36
36
  spec.add_development_dependency "rake", "~> 10.0"
37
+ spec.add_development_dependency "hpricot", "~> 0.8.6"
37
38
  end
data/lib/ld.rb CHANGED
@@ -4,6 +4,7 @@ module Ld
4
4
  end
5
5
 
6
6
  require "ld/file/file"
7
+ require "ld/file/dir"
7
8
  require "ld/file/files"
8
9
 
9
10
  require "ld/project/project"
@@ -20,5 +21,7 @@ require "ld/print/print"
20
21
 
21
22
  require "ld/document/document"
22
23
 
24
+ require "ld/document/parse_html"
25
+
23
26
 
24
27
 
@@ -2,7 +2,7 @@ class Ld::Document
2
2
 
3
3
  attr_accessor :doc
4
4
 
5
- #= 作用 读一个rb文件生成api数据
5
+ # 作用 读一个rb文件生成api数据
6
6
  def initialize file
7
7
  @doc = {}
8
8
  @lines = file.lines
data/lib/ld/file/dir.rb CHANGED
@@ -1,123 +1,62 @@
1
1
  class Ld::Dir
2
2
 
3
- attr_accessor :path, :name, :dir, :dirs, :files
3
+ attr_accessor :path, :name, :dirs, :files, :others, :all_files, :all_dirs, :all_others
4
+ attr_accessor :all_others_sum, :all_files_sum
4
5
 
5
- def initialize path, dir = nil
6
+ def initialize path
6
7
  @path = path
7
- @dir = dir
8
- @name = File.basename path
9
- iter
10
- end
11
-
12
- # 迭代记录所有目录与文件
13
- def iter
14
- @dirs = []
15
- @files = []
16
- Dir.foreach path do |p|
17
- if !['.','..','.DS_Store'].include?(p)
18
- if File.directory? "#{path}/#{p}"
19
- @dirs << Ld::Dir.new("#{path}/#{p}", self)
8
+ @name = @path.split('/').last
9
+ @my = Ld::File.new @path
10
+ get_all
11
+ end
12
+
13
+ def get_all
14
+ @all = @my.search_regexp //, :all
15
+ @all_files = []
16
+ @all_dirs = []
17
+ @all_others = []
18
+ @all.each do |a|
19
+ case a.type
20
+ when 'directory'
21
+ @all_dirs << a
22
+ when 'file'
23
+ @all_files << a
20
24
  else
21
- @files << Ld::File.new("#{path}/#{p}", self)
22
- end
25
+ @all_others << a
23
26
  end
24
27
  end
25
- end
26
-
27
- # 手动
28
- def iter_all
29
- iter.dirs.each do |dir2|
30
- dir2.iter_all
31
- end
32
- end
33
-
34
- # 移动文件夹
35
- def mv_to dir
36
- files.each do |file|
37
- file.mv dir
38
- end
39
- end
40
-
41
- # 创建文件夹
42
- def mkdir name
43
- Dir.mkdir "#{path}/#{name}"
44
- end
45
-
46
- # 删除文件夹以及其下所有文件与目录
47
- def destroy_all
48
- # FileUtils.rm_r path
49
- end
50
-
51
- # 创建文件
52
- def create_file name
53
- File.new "#{@path}/#{name}"
54
- end
55
-
56
- # 创建文件夹
57
- def create_dir name
58
- Dir.mkdir "#{@path}/#{name}"
59
- end
60
-
61
- def print_tree
62
- dirs.each do |dir|
63
- puts "#{dir.name}"
64
- end
65
- end
66
-
67
- # 查看当前目录文件总大小
68
- def files_count
69
- sum = 0
70
- files.each do |file|
71
- sum += file.size
72
- end
73
- sum
74
- end
75
-
76
- # 查看当前目录下所有文件个数
77
- def sum_files_count count = 0
78
- @@sum_count = count + files.size
79
- # puts "#{@@sum_count}\t+=\t#{count}\t+\t#{files.size}"
80
- dirs.each do |dir|
81
- dir.sum_files_count @@sum_count
82
- end
83
- @@sum_count
84
- end
85
-
86
- # 查看当前目录下所有文件个数
87
- def sum_files_size size = 0
88
- @@sum_size = size + files_count
89
- # puts "#{@@sum_size}\t+=\t#{size}\t+\t#{files_count/1024.round(3)} (#{name})"
90
- dirs.each do |dir|
91
- dir.sum_files_size @@sum_size
92
- end
93
- @@sum_size
94
- end
95
-
96
-
97
- # 迭代打印当前目录下所有文件与文件夹的信息
98
- def info_all(i = 0)
99
- info(i)
100
- files_info(i)
101
- i += 1
102
- dirs.each_with_index do |dir,k|
103
- dir.info_all(i)
28
+ @all_files_sum = (@all_files.map(&:size).sum.to_f / 1024 / 1024).round(1)
29
+ @all_others_sum = (@all_others.map(&:size).sum.to_i / 1024).round(1)
30
+ @all_suffix = {}
31
+ @all_files.map(&:suffix).uniq.each do |suffix|
32
+ @all_suffix[suffix] = get_suffix_count(suffix)
104
33
  end
105
34
  nil
106
35
  end
107
36
 
108
- # 打印当前目录下所有文件夹的信息
109
- def files_info(i = 0)
110
- files.each do |file|
111
- file.info(i + 1)
37
+ def get_suffix_count suffix
38
+ count = 0
39
+ size = 0
40
+ @all_files.each do |f|
41
+ if f.suffix == suffix
42
+ count += 1
43
+ size += f.size
44
+ end
112
45
  end
113
- puts
46
+ return [count, (size.to_f / 1024).round(2)]
114
47
  end
115
48
 
116
- # 打印当前目录的汇总信息
117
- def info(i = 0)
118
- print "\t" * i
119
- puts "目录#{path}下:子文件夹个数#{dirs.size},子文件个数#{files.size}"
120
- puts "总文件个数#{sum_files_count},当前文件夹大小#{files_count/1024.round(3)}K,文件夹总大小#{sum_files_size}K"
49
+ def details
50
+ title = "目录名称:#{path.split('/').last}
51
+ 目录:#{@all_dirs.size}(个)
52
+ 文件:#{@all_files_sum}(Mb)/#{@all_files.size}(个)
53
+ 其它:#{@all_others_sum}(Kb)/#{@all_others.size}()"
54
+ headings = ['文件类型(后缀)', '数量(个)', '大小(Kb)']
55
+ rows = @all_suffix.map{|k,v| [k, v[0], v[1]]}.sort{|b,a| a[1] <=> b[1]}
56
+ Ld::Print.print headings:headings,rows:rows,title:title
121
57
  end
122
58
 
59
+ def search_all_suffix regexp
60
+ @all_files.select{|f| f.suffix == regexp}
61
+ end
123
62
  end
data/lib/ld/file/file.rb CHANGED
@@ -1,12 +1,35 @@
1
1
  class Ld::File
2
2
 
3
- attr_accessor :path, :name, :exist, :size, :mode, :type, :stat
3
+ attr_accessor :path, :name, :suffix, :exist, :size, :mode, :type, :stat
4
4
  @@current_path = Dir.pwd
5
5
  @@exclude = ['.', '..']
6
6
 
7
7
  def initialize path
8
8
  @path = path[0] == '/' ? path : "#{Dir.pwd}/#{path}"
9
9
  @name = File.basename @path
10
+ read_attrs
11
+ end
12
+
13
+ #= 作用 打开一个文件
14
+ def self.open path
15
+ f = self.new path
16
+ f.read_attrs
17
+ f
18
+ end
19
+
20
+ # 编码base64
21
+ def self.base64 path
22
+ Base64.encode64(File.open(path, 'rb').read)
23
+ end
24
+
25
+ # 解码base64,并写入图片
26
+ def self.write_image_by_base64_and_path base64, path
27
+ File.open(path,'wb').write(Base64.decode64 base64)
28
+ end
29
+
30
+ def read_attrs
31
+ @suffix = @name.split('.').last
32
+ @suffix = @suffix == @name ? nil : @suffix
10
33
  if File.exist? @path
11
34
  @exist = true
12
35
  @type = File.ftype path
@@ -19,9 +42,8 @@ class Ld::File
19
42
  end
20
43
  end
21
44
 
22
- #= 作用 打开一个文件
23
- def self.open path
24
- self.new path
45
+ def look
46
+ puts lines
25
47
  end
26
48
 
27
49
  #= 作用 返回这个目录下的所有一级目录与一级文件,如果不是目录,会报错
@@ -192,4 +214,11 @@ class Ld::File
192
214
  puts t2 - t1
193
215
  end
194
216
 
217
+ def details
218
+ Ld::Dir.new(@path).details
219
+ end
220
+
195
221
  end
222
+
223
+
224
+
data/lib/ld/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ld
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
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.4.1
4
+ version: 0.4.2
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-06-12 00:00:00.000000000 Z
11
+ date: 2017-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: terminal-table
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: hpricot
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.8.6
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.8.6
69
83
  description: For the sake of efficiency, The Module is my name abbreviations LD, Basically
70
84
  has the following Class.
71
85
  email:
@@ -87,6 +101,7 @@ files:
87
101
  - Gemfile
88
102
  - LICENSE.txt
89
103
  - README.md
104
+ - README2.md
90
105
  - Rakefile
91
106
  - bin/console
92
107
  - bin/setup
@@ -129,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
144
  version: '0'
130
145
  requirements: []
131
146
  rubyforge_project:
132
- rubygems_version: 2.6.7
147
+ rubygems_version: 2.5.1
133
148
  signing_key:
134
149
  specification_version: 4
135
150
  summary: Practical small tools.