ld 0.1.2 → 0.1.6

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: f3b6b64f9438e636536830ef1fdc49b8478bae56
4
- data.tar.gz: e72dc4769c11b9acd36cf23e1bd398c0c13dd256
3
+ metadata.gz: 2fca7404f3d9c8f44c54e0dafc99a7ac32d64d9c
4
+ data.tar.gz: c8df603095e2cac129223acca4e171d42e0b179c
5
5
  SHA512:
6
- metadata.gz: 08c08ed9280553a3c948508385624fc42b7de35c281583fc2950ea57843b1497dbee09f6324e2499aad62c6284f1ac432e98747aa2b6beeca676c72bc496edb1
7
- data.tar.gz: d51c5e34531415e8809697843f045289f43a955126d33176a90f577f4d1c14f7cf00692a9b98bdbbde41afabe5cfcb92059b1e143edb45560c481fb01b9cfc02
6
+ metadata.gz: f742f74988299f3de9cb03df2120f3ea7239156e3e25fa9ab45b49d876eeb7b3648aaffeb0327530ab126c1a8f2987ca6b2ff89ba5c24e5de5353973664e0090
7
+ data.tar.gz: 933d4982483354e85039712b7c7437758208da0ed54f29cc041269e1fa91fbaed7a88aec6a0c6364f8e03e54f668cdcbd65f67154e636e28f973a270e56ddb24
data/README.md CHANGED
@@ -1,8 +1,19 @@
1
1
  # Ld
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/ld`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ 提供开发基础功能,旨在提高日常工作的开发效率
4
+ 主要有以下类:
5
+ ```ruby
6
+ module Ld
7
+ class excel
8
+ end
9
+ class file
10
+ end
11
+ class table
12
+ end
13
+ class project
14
+ end
15
+ end
16
+ ```
6
17
 
7
18
  ## Installation
8
19
 
@@ -22,7 +33,22 @@ Or install it yourself as:
22
33
 
23
34
  ## Usage
24
35
 
25
- TODO: Write usage instructions here
36
+ ```ruby
37
+ Ld::Table.p User.all, 'id ,name , created_at'
38
+ Ld::Excel.open('/Users/liudong/Desktop/abss.xls').read('sh1?a1:c5')
39
+ Ld::Excel.create '/Users/liudong/Desktop/abss.xls' do |excel|
40
+ ['sh1','sh2','发有3'].each do |sheet_name|
41
+ excel.write_sheet sheet_name do |sheet|
42
+ sheet.set_format({color: :red, font_size: 22, font: '宋体'})
43
+ sheet.set_headings ['a','b']
44
+ sheet.set_point 'c5'
45
+ (5..22).to_a.each do |i|
46
+ sheet.add_row i.times.map{|j| '村腰里 是'}
47
+ end
48
+ end
49
+ end
50
+ end
51
+ ```
26
52
 
27
53
  ## Development
28
54
 
@@ -39,3 +65,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERN
39
65
 
40
66
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
67
 
68
+ ##
data/ld.gemspec CHANGED
@@ -9,11 +9,13 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Liu Dong"]
10
10
  spec.email = ["chuangye201012@163.com"]
11
11
 
12
- spec.summary = %q{这是总结.}
13
- spec.description = %q{这是描述.}
12
+ spec.summary = %q{我的工具箱}
13
+ spec.description = %q{我的工具箱}
14
14
  spec.homepage = "https://github.com/18810625123/ld"
15
15
  spec.license = "MIT"
16
16
 
17
+ spec.add_dependency 'terminal-table', '~> 1.8'
18
+ spec.add_dependency 'spreadsheet'
17
19
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
20
  # to allow pushing to a single host or delete this section to allow pushing to any host.
19
21
  if spec.respond_to?(:metadata)
data/lib/ld/excel.rb CHANGED
@@ -60,16 +60,9 @@ class Ld::Excel
60
60
  self
61
61
  end
62
62
 
63
- # 创建新页(先查有没有该页)
64
- def new_sheet(sheet_name)
65
- @sheet = @excel.create_worksheet(:name => sheet_name)
66
- # puts "创建了一页 #{sheet_name}"
67
- self
68
- end
69
-
70
63
  # 读一个单元格
71
64
  def read_location(location,parse = true)
72
- l = parse_location(location)
65
+ l = Ld::Excel.parse_location(location)
73
66
  unit = read_unit_by_xy(l[:r],l[:c],parse)
74
67
  # puts ""
75
68
  end
@@ -83,7 +76,7 @@ class Ld::Excel
83
76
 
84
77
  # 刷新excel中的sheet
85
78
  def open_new
86
- excel_new = Excel.open @path
79
+ excel_new = Ld::Excel.open @path
87
80
  end
88
81
 
89
82
  # 读很多个location链,返回二维数组
@@ -101,18 +94,14 @@ class Ld::Excel
101
94
  unit_list = []
102
95
  open_sheet locations_config.split('?')[0]
103
96
  locations_config.split('?')[1].split('.').each do |location|
104
- l = parse_location(location)
97
+ l = Ld::Excel.parse_location(location)
105
98
  unit = read_unit_by_xy(l[:r],l[:c],parse)
106
99
  unit_list << unit
107
100
  end
108
101
  unit_list
109
102
  end
110
103
 
111
- # 通过xy坐标往unit写内容
112
- def write_unit_by_xy x, y, unit
113
- unit = unit.to_s if unit.class == Array
114
- @sheet.row(x)[y] = unit
115
- end
104
+
116
105
 
117
106
  # 通过x,y坐标获取unit内容
118
107
  def read_unit_by_xy x, y, parse
@@ -127,14 +116,14 @@ class Ld::Excel
127
116
  end
128
117
 
129
118
  def flush
130
- Excel.new self.path
119
+ Ld::Excel.new self.path
131
120
  end
132
121
 
133
122
  def parse_del_to_hash address, scope
134
123
  arr = address.split '-'
135
124
  arr = arr[1..arr.size-1]
136
125
  start_row_num = scope.scan(/\d/).join[0..1]# 首行行号
137
- location = parse_location(scope.split(':')[0])
126
+ location = Ld::Excel.parse_location(scope.split(':')[0])
138
127
  hash = {}
139
128
  del_rows = []
140
129
  address.each do |del_row_num|# 去除行行号
@@ -145,7 +134,7 @@ class Ld::Excel
145
134
  end
146
135
 
147
136
  # 解析一个excel location
148
- def parse_location location
137
+ def self.parse_location location
149
138
  if location and location.class == String
150
139
  location.upcase!
151
140
  {
@@ -335,7 +324,7 @@ class Ld::Excel
335
324
 
336
325
  # 先打开一个sheet页,再读scope范围数据
337
326
  # params?b13:m27-g.j.k.(14:18)
338
- def read_sheet_scope full_scope, simple = true, filter_nil = false
327
+ def read full_scope, simple = true, filter_nil = false
339
328
  if full_scope.include?('?')
340
329
  sheet_name = full_scope.split('?')[0]
341
330
  if sheet_name
@@ -409,215 +398,47 @@ class Ld::Excel
409
398
  arr
410
399
  end
411
400
 
412
- # 将二维数组写到表中
413
- def write_arrs_to_point(arrs,point = "a1")
414
- l = parse_location(point)
415
- arrs.each_with_index do |arr,r|
416
- arr.each_with_index do |data,c|
417
- write_unit_by_xy(r+l[:x],c+l[:y],data)
418
- end
419
- end
420
- self
421
- end
422
-
423
- # 将一维数组写到表中,可写成列,也可以写成行
424
- def write_arr_to_point(arr, rank = '|', point = "a1")
425
- l = parse_location(point)
426
- if rank == '|' or rank == 'col'
427
- arr.each_with_index do |data,r|
428
- # 坚写,行动列不动
429
- write_unit_by_xy(l[:r]+r,l[:c],data)
430
- end
431
- elsif rank == '-' or rank == 'row'
432
- arr.each_with_index do |data,c|
433
- # 横写,列动行不动
434
- write_unit_by_xy(l[:r],l[:c]+c,data)
435
- end
436
- else
437
- raise "横写rank | 竖写rank - 无法识别#{rank}"
438
- end
439
- self
440
- end
441
-
442
401
  # 保存文件
443
- def save(path = nil)
444
- flag = 1
445
- if path==nil
446
- if File.exist? @path
447
- @excel.write @path
448
- puts "保存覆盖了一个同名文件 #{@path}"
449
- else
450
- @excel.write @path
451
- puts "保存到: #{@path}"
452
- end
453
- else
402
+ def save path
403
+ if File.exist? path
454
404
  @excel.write path
455
- if File.exist? path
456
- puts "保存到: #{path}"
457
- else
458
- raise "保存失败!"
459
- end
460
- end
461
- self
462
- end
463
-
464
- def save_to_source(basename)
465
- if basename.match(/.xls$/)!=nil
466
- save(@@base_path + "source/" + basename)
467
- else
468
- raise "要以.xls结尾"
469
- end
470
- self
471
- end
472
-
473
- def save_to_complete(basename)
474
- if basename.match(/.xls$/)!=nil
475
- save(@@base_path + "complete/" + basename)
405
+ puts "保存覆盖了一个同名文件 #{@path}"
476
406
  else
477
- raise "要以.xls结尾"
407
+ @excel.write @path
408
+ puts "保存到: #{@path}"
478
409
  end
479
410
  self
480
411
  end
481
412
 
482
- def save_to(path_name)
483
- if path_name.match(/.xls$/)!=nil
484
- save(path_name)
485
- else
486
- raise "要以.xls结尾"
487
- end
488
- self
413
+ def new_sheet name
414
+ Ld::Sheet.new @excel, name
489
415
  end
490
416
 
491
- # 打印信息
492
- def info
493
- if File.exist?(@path)
494
- @sheets ||= @excel.worksheets
495
- @sheets.each_with_index do |sheet,i|
496
- puts "第#{i}个sheet,name:#{sheet.name}"
497
- end
498
- puts "Excel文件size:#{File.size @path},sheet数:#{@sheets.size},文件path:#{@path}"
499
- else
500
- puts "不存在的文件,#{@path}"
501
- end
502
- self
417
+ def write_sheet sheet_name, &block
418
+ @sheet = new_sheet sheet_name
419
+ block.call @sheet
420
+ @sheet.save
503
421
  end
504
422
 
505
- # 获取第一列的所有单元格格式颜色arr
506
- def get_examples
507
- @sheet.row(4).formats[0].pattern_fg_color == :red
508
- cols = excel.sheet.column(0)
509
- cols.each do |col|
510
- puts col
511
- end
423
+ def self.create path, &block
424
+ excel = Ld::Excel.new
425
+ block.call excel
426
+ excel.save path
512
427
  end
513
428
 
514
- # 重新加载文件数据
515
- def reload
516
- if @path!=nil
517
- if File.exist? @path
518
- @excel = Spreadsheet.open @path
519
- @sheets = @excel.worksheets
520
- @sheet = nil
521
- @basename = nil
522
- puts "reload成功 #{@path}"
523
- else
524
- raise "#{path},这个文件不存在,无法reload"
429
+ def self.test
430
+ Ld::Excel.create '/Users/liudong/Desktop/abss.xls' do |excel|
431
+ ['sh1','sh2','发有3'].each do |sheet_name|
432
+ excel.write_sheet sheet_name do |sheet|
433
+ sheet.set_format({color: :green, font_size: 22, font: '宋体'})
434
+ sheet.set_headings ['a','b']
435
+ sheet.set_point 'c5'
436
+ (5..22).to_a.each do |i|
437
+ sheet.add_row i.times.map{|j| '村腰里 是'}
438
+ end
439
+ end
525
440
  end
526
-
527
- else
528
- raise "@path==nil,无法reload"
529
441
  end
530
- self
531
442
  end
532
-
533
- def set_default_format(font_color = :black)
534
- if @sheet!=nil
535
- @format = Spreadsheet::Format.new(
536
- :color => :blue,
537
- :weight => :bold,
538
- :size => 11
539
- )
540
- @format.font.color = font_color
541
- @format.font.name = "微软雅黑"
542
- @format.font.size = 11
543
- @sheet.default_format = @format
544
- # puts "设置默认格式成功 #{@sheet.name}"
545
- else
546
- raise "@sheet==nil,无法获取默认格式,无法设置默认格式"
547
- end
548
- @format
549
- end
550
-
551
- def write_sheet(sheet)
552
- new_sheet sheet[:name]
553
- set_default_format(sheet[:color].nil? ? 'black' : sheet[:color])
554
- write_arrs_to_point(sheet[:arrs], sheet[:point].nil? ? "a1" : sheet[:point])
555
- sheet
556
- end
557
-
558
- def self.write_excel(arrs_list,excel_name)
559
- new_excel = Excel.new
560
- arrs_list.each_with_index do |arrs,i|
561
- new_excel.write_sheet arrs,'sheet'+(i+1).to_s,:red
562
- end
563
- new_excel.save_to_complete excel_name
564
- end
565
-
566
- def self.create(path, sheets)
567
- e = Excel.new
568
- sheets.each do |sheet|
569
- e.write_sheet sheet
570
- end
571
- e.save path
572
- end
573
-
574
- def self.write_excel2(arrs,excel_name)
575
- new_excel = Excel.new
576
- new_excel.write_sheet arrs,'sheet1',:red
577
- new_excel.save_to excel_name
578
- rescue
579
- puts $!
580
- puts $@
581
- end
582
-
583
443
  end
584
444
 
585
- =begin
586
-
587
- # <Spreadsheet::Format:0x007fe8297dba40
588
- @bottom=:none,
589
- @bottom_color=:builtin_black,
590
- @cross_down=false,
591
- @cross_up=false,
592
- @diagonal_color=:builtin_black,
593
- @font=
594
- # <Spreadsheet::Font:0x007fe8285948a0
595
- @color=:black,
596
- @encoding=:iso_latin1,
597
- @escapement=:normal,
598
- @family=:none,
599
- @italic=false,
600
- @name="仿宋",
601
- @outline=false,
602
- @previous_fast_key=nil,
603
- @shadow=false,
604
- @size=11,
605
- @strikeout=false,
606
- @underline=:none,
607
- @weight=400>,
608
- @horizontal_align=:center,
609
- @indent_level=0,
610
- @left=:none,
611
- @left_color=:builtin_black,
612
- @number_format="GENERAL",
613
- @pattern=1,
614
- @pattern_bg_color=:border,
615
- @pattern_fg_color=:red,
616
- @regexes=
617
- {:date=>/[YMD]/,
618
- :date_or_time=>/[hmsYMD]/,
619
- :datetime=>/([YMD].*[HS])|([HS].*[YMD])/,
620
- :time=>/[hms]/,
621
- :number=>/([# ]|0+)/,
622
- :locale=>/(?-mix:\A\[\$\-\d+\])/},
623
- =end
data/lib/ld/file.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  class Ld::File
2
2
 
3
- attr_accessor :path, :name, :type
3
+ attr_accessor :path, :base_name, :name, :type
4
4
 
5
5
  def initialize path
6
6
  @path = path
7
7
  @name = File.basename @path
8
+ @base_name = name.split('.')[0]
8
9
  @type = File.directory?(@path) ? 1 : 0
9
10
  end
10
11
 
@@ -12,10 +13,12 @@ class Ld::File
12
13
  father.children
13
14
  end
14
15
 
15
- def children
16
+ def children(remove = nil)
16
17
  arr = []
17
18
  Dir.foreach(@path)do |p|
18
- if !['.','..','.DS_Store'].include?(p)
19
+ removes = ['.','..','.DS_Store']
20
+ removes << remove if remove
21
+ if !removes.include?(p)
19
22
  arr << Ld::File.new("#{@path}/#{p}")
20
23
  end
21
24
  end
@@ -53,6 +56,12 @@ class Ld::File
53
56
  arr
54
57
  end
55
58
 
59
+ def search regexp
60
+ arr = []
61
+ iter_search regexp, arr
62
+ arr
63
+ end
64
+
56
65
  def iter_search regexp, arr
57
66
  children.each do |f|
58
67
  if f.type == 1
@@ -75,6 +84,20 @@ class Ld::File
75
84
  self
76
85
  end
77
86
 
87
+ def size
88
+ File.size path
89
+ end
90
+
91
+ def lines
92
+ arr = []
93
+ File.new(path).each_line{|l| arr << l }
94
+ arr
95
+ end
96
+
97
+ def exist?
98
+ File.exist? path
99
+ end
100
+
78
101
  def method_missing name
79
102
  find name
80
103
  end
data/lib/ld/project.rb ADDED
@@ -0,0 +1,59 @@
1
+ class Ld::Project
2
+
3
+ attr_accessor :root, :app, :name, :path, :models, :views_dir, :views, :controllers, :routes
4
+
5
+ def initialize path
6
+ @root = Ld::File.new(path)
7
+ @app = @root.app
8
+ @models = @app.models.search(/.rb$/)
9
+ @views_dir = @app.views.children
10
+ @views = @app.views.search(/.html/)
11
+ @controllers = @app.controllers.search(/_controller.rb$/)
12
+ @routes = @root.config.find('routes.rb')
13
+ end
14
+
15
+ def self.p model = :all
16
+ @@p ||= Ld::Project.new(Rails.root.to_s)
17
+
18
+ t = Terminal::Table.new
19
+ case model.to_s
20
+ when 'all'
21
+ t.title = "project:#{@@p.root.name}"
22
+ t.headings = ['models', 'views', 'controllers', 'routes']
23
+ t.add_row [@@p.models.size, @@p.views.size, @@p.controllers.size, @@p.routes.lines.size]
24
+ when 'models'
25
+ t.title = 'models'
26
+ t.headings = ['name', 'action-size', 'line-size', 'routes']
27
+ @@p.models.map{|f| [f.name.split('.')[0], f.lines.map{|l| l if l.match(/def /)}.compact.size, f.lines.size, nil] }
28
+ .sort{|a,b| b[1]-a[1]}.each{|i| t.add_row i}
29
+ when 'controllers'
30
+ t.title = 'controllers'
31
+ t.headings = ['name', 'action-size', 'line-size']
32
+ @@p.controllers.map{|f| [f.name.split('.')[0], f.lines.map{|l| l if l.match(/def /)}.compact.size, f.lines.size] }
33
+ .sort{|a,b| b[1]-a[1]}.each{|i| t.add_row i}
34
+ when 'views'
35
+ t.title = 'views'
36
+ t.headings = ['name', 'file-size', 'html']
37
+ @@p.app.views.children('shared')
38
+ .map{|f| htmls = f.search(/.html/);[f.name, htmls.size, htmls.map{|f2| f2.name.split('.')[0]}.join(' ')]}
39
+ .sort{|a,b| b[1]-a[1]}
40
+ .each{|arr| t.add_row arr}
41
+ when 'routes'
42
+ file = Ld::File.new @@p.root.path + '/routes.txt'
43
+ if !file.exist?
44
+ system "rake routes > #{@@p.root.path + '/routes.txt'}"
45
+ end
46
+ arrs = file.lines.map{|l| lines = l.split(' '); lines.size == 3 ? lines.unshift(nil) : lines}
47
+ arrs.delete_at 0
48
+ t.title = 'routes'
49
+ t.headings = ['controller', 'action', 'type']
50
+ arrs.map{|arr| controller,action = arr[3].split('#'); [controller, action, arr[1]]}
51
+ .each{|arr| t.add_row arr}
52
+ else
53
+ puts '(models/controllers/views)'
54
+ return
55
+ end
56
+ puts t
57
+ end
58
+
59
+ end
data/lib/ld/sheet.rb ADDED
@@ -0,0 +1,140 @@
1
+ class Ld::Sheet
2
+
3
+ def initialize excel, name
4
+ @excel = excel
5
+ @name = name
6
+ @point = 'a1'
7
+ @rows = []
8
+ @headings = nil
9
+ @sheet = excel.create_worksheet :name => name
10
+ @format = @sheet.default_format
11
+ end
12
+
13
+ def save
14
+ l = Ld::Excel.parse_location @point
15
+ raise '保存sheet必须要有内容,请 set_rows' if !@rows
16
+ raise '保存sheet必须要有name,请 set_rows' if !@name
17
+ @rows.unshift @headings if @headings
18
+ @sheet.default_format = @format
19
+ @rows.each_with_index do |row,r|
20
+ row.each_with_index do |data,c|
21
+ write_unit_by_xy(r+l[:y],c+l[:x],data)
22
+ end
23
+ end
24
+ self
25
+ end
26
+
27
+ def set_rows rows
28
+ raise '必须是一个数组且是一个二维数组' if rows.class != Array && rows.first.class != Array
29
+ @rows = rows
30
+ end
31
+
32
+ def set_headings headings
33
+ if headings
34
+ raise 'headings 必须是一个数组' if headings.class != Array
35
+ @headings = headings
36
+ else
37
+ @headings = nil
38
+ end
39
+ end
40
+
41
+ def add_row row
42
+ raise 'add_row 传入的必须是一个数组' if row.class != Array
43
+ @rows << row
44
+ end
45
+
46
+ # 通过xy坐标往unit写内容
47
+ def write_unit_by_xy x, y, unit
48
+ if unit.class == Array
49
+ unit = unit.to_s
50
+ puts '有一个单元格是数组格式,已经转化成字符串'
51
+ end
52
+ @sheet.row(x)[y] = unit
53
+ end
54
+
55
+ # 将一维数组写到表中,可写成列,也可以写成行
56
+ def write_arr_to_point(arr, rank = '|', point = "a1")
57
+ l = Ld::Excel.parse_location(point)
58
+ if rank == '|' or rank == 'col'
59
+ arr.each_with_index do |data,r|
60
+ # 坚写,行动列不动
61
+ write_unit_by_xy(l[:r]+r,l[:c],data)
62
+ end
63
+ elsif rank == '-' or rank == 'row'
64
+ arr.each_with_index do |data,c|
65
+ # 横写,列动行不动
66
+ write_unit_by_xy(l[:r],l[:c]+c,data)
67
+ end
68
+ else
69
+ raise "横写rank | 竖写rank - 无法识别#{rank}"
70
+ end
71
+ self
72
+ end
73
+
74
+ def set_color color
75
+ @format.font.color = color
76
+ end
77
+
78
+ def set_font_size size
79
+ raise 'size 必须是一个整数' if size.class != Fixnum
80
+ @format.font.size = size
81
+ end
82
+
83
+ def set_font font
84
+ @format.font.name = font
85
+ end
86
+
87
+ def set_weight weight
88
+ @format
89
+ end
90
+
91
+ def set_point point
92
+ @point = point
93
+ end
94
+
95
+ def set_format hash
96
+ set_color hash[:color]
97
+ set_font_size hash[:font_size]
98
+ set_font hash[:font]
99
+ end
100
+ end
101
+
102
+ =begin
103
+
104
+ # <Spreadsheet::Format:0x007fe8297dba40
105
+ @bottom=:none,
106
+ @bottom_color=:builtin_black,
107
+ @cross_down=false,
108
+ @cross_up=false,
109
+ @diagonal_color=:builtin_black,
110
+ @font=
111
+ # <Spreadsheet::Font:0x007fe8285948a0
112
+ @color=:black,
113
+ @encoding=:iso_latin1,
114
+ @escapement=:normal,
115
+ @family=:none,
116
+ @italic=false,
117
+ @name="仿宋",
118
+ @outline=false,
119
+ @previous_fast_key=nil,
120
+ @shadow=false,
121
+ @size=11,
122
+ @strikeout=false,
123
+ @underline=:none,
124
+ @weight=400>,
125
+ @horizontal_align=:center,
126
+ @indent_level=0,
127
+ @left=:none,
128
+ @left_color=:builtin_black,
129
+ @number_format="GENERAL",
130
+ @pattern=1,
131
+ @pattern_bg_color=:border,
132
+ @pattern_fg_color=:red,
133
+ @regexes=
134
+ {:date=>/[YMD]/,
135
+ :date_or_time=>/[hmsYMD]/,
136
+ :datetime=>/([YMD].*[HS])|([HS].*[YMD])/,
137
+ :time=>/[hms]/,
138
+ :number=>/([# ]|0+)/,
139
+ :locale=>/(?-mix:\A\[\$\-\d+\])/},
140
+ =end
data/lib/ld/table.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'terminal-table'
2
+
3
+ class Ld::Table
4
+
5
+ def initialize models
6
+ @models = models
7
+ end
8
+
9
+ def self.p models,fields
10
+ t = Terminal::Table.new
11
+ t.title = models.first.class.to_s
12
+ fields = (fields.class == Array ? fields : fields.split(',')).map{|f| f.rstrip.lstrip}
13
+ t.headings = fields
14
+ models.map { |model|
15
+ fields.map { |field|
16
+ value = model.send field
17
+ value = value.strftime("%Y/%m/%d %H:%M:%S") if [Date, Time, DateTime, ActiveSupport::TimeWithZone].include? value.class
18
+ value
19
+ }
20
+ }#.sort{|a,b| a[2] <=> b[2]}
21
+ .each{|row| t.add_row row}
22
+ puts t
23
+ end
24
+
25
+ end
data/lib/ld/tree.rb CHANGED
@@ -36,4 +36,4 @@ class Ld::Tree
36
36
 
37
37
 
38
38
 
39
- end
39
+ end
data/lib/ld/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ld
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.6"
3
3
  end
data/lib/ld.rb CHANGED
@@ -1,29 +1,10 @@
1
1
  require "ld/version"
2
2
 
3
3
  module Ld
4
- class Excel
5
- end
6
-
7
- class File
8
-
9
- end
10
-
11
- class Dir
12
-
13
- end
14
-
15
- class Node
16
-
17
- end
18
-
19
- class Nodes
20
-
21
- end
22
-
23
- class Tree
24
-
25
- end
26
4
 
27
5
  end
6
+
28
7
  require "ld/excel"
8
+ require "ld/sheet"
29
9
  require "ld/file"
10
+ require "ld/project"
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ld
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.6
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-05-26 00:00:00.000000000 Z
11
+ date: 2017-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: terminal-table
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: spreadsheet
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,7 +66,7 @@ dependencies:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
68
  version: '10.0'
41
- description: 这是描述.
69
+ description: 我的工具箱
42
70
  email:
43
71
  - chuangye201012@163.com
44
72
  executables: []
@@ -68,6 +96,9 @@ files:
68
96
  - lib/ld/file.rb
69
97
  - lib/ld/node.rb
70
98
  - lib/ld/nodes.rb
99
+ - lib/ld/project.rb
100
+ - lib/ld/sheet.rb
101
+ - lib/ld/table.rb
71
102
  - lib/ld/tree.rb
72
103
  - lib/ld/version.rb
73
104
  homepage: https://github.com/18810625123/ld
@@ -94,5 +125,5 @@ rubyforge_project:
94
125
  rubygems_version: 2.6.7
95
126
  signing_key:
96
127
  specification_version: 4
97
- summary: 这是总结.
128
+ summary: 我的工具箱
98
129
  test_files: []