drain 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +6 -2
  3. data/.travis.yml +10 -0
  4. data/.yardopts +6 -1
  5. data/Gemfile +7 -0
  6. data/LICENSE.txt +1 -1
  7. data/README.md +11 -5
  8. data/Rakefile +7 -12
  9. data/drain.gemspec +15 -5
  10. data/gemspec.yml +4 -3
  11. data/lib/dr.rb +1 -0
  12. data/lib/{drain → dr}/base.rb +0 -0
  13. data/lib/{drain → dr}/base/bool.rb +0 -0
  14. data/lib/dr/base/converter.rb +33 -0
  15. data/lib/{drain → dr}/base/encoding.rb +0 -0
  16. data/lib/dr/base/eruby.rb +284 -0
  17. data/lib/{drain → dr}/base/functional.rb +2 -2
  18. data/lib/dr/base/graph.rb +378 -0
  19. data/lib/dr/base/utils.rb +28 -0
  20. data/lib/dr/parse.rb +1 -0
  21. data/lib/dr/parse/simple_parser.rb +70 -0
  22. data/lib/{drain → dr}/parse/time_parse.rb +0 -0
  23. data/lib/dr/ruby_ext.rb +1 -0
  24. data/lib/dr/ruby_ext/core_ext.rb +7 -0
  25. data/lib/{drain/ruby_ext/core_ext.rb → dr/ruby_ext/core_modules.rb} +67 -27
  26. data/lib/{drain → dr}/ruby_ext/meta_ext.rb +57 -30
  27. data/lib/dr/tools.rb +1 -0
  28. data/lib/{drain → dr}/tools/gtk.rb +0 -0
  29. data/lib/dr/version.rb +4 -0
  30. data/lib/drain.rb +2 -1
  31. data/test/helper.rb +12 -1
  32. data/test/test_converter.rb +42 -0
  33. data/test/test_core_ext.rb +116 -0
  34. data/test/test_graph.rb +126 -0
  35. data/test/test_meta.rb +65 -0
  36. data/test/test_simple_parser.rb +41 -0
  37. metadata +45 -21
  38. data/.document +0 -3
  39. data/lib/drain/base/eruby.rb +0 -28
  40. data/lib/drain/base/graph.rb +0 -213
  41. data/lib/drain/parse.rb +0 -5
  42. data/lib/drain/parse/simple_parser.rb +0 -61
  43. data/lib/drain/ruby_ext.rb +0 -5
  44. data/lib/drain/tools.rb +0 -5
  45. data/lib/drain/tools/git.rb +0 -116
  46. data/lib/drain/version.rb +0 -4
@@ -1,5 +0,0 @@
1
- #for the filename ploum.rb, load all ploum/*.rb files
2
- dir=File.expand_path(File.basename(__FILE__).chomp('.rb'), File.dirname(__FILE__))
3
- Dir.glob(File.expand_path('*.rb',dir)) do |file|
4
- require file
5
- end
@@ -1,61 +0,0 @@
1
- module DR
2
- #utilities to parse some strings into name values
3
- module SimpleParser
4
- extend self
5
-
6
- #takes a string 'name:value' and return name and value
7
- #can specify a default value; if the default is true we match
8
- #no-name as name:false
9
- def parse_namevalue(nameval, sep: ':', default: nil)
10
- name,*val=nameval.split(sep)
11
- if val.empty?
12
- if default == true
13
- #special case where if name begins by no- we return false
14
- if name =~ /^no-(.*)$/
15
- return $1, false
16
- else
17
- return name, true
18
- end
19
- else
20
- return name, default
21
- end
22
- else
23
- value=val.join(sep)
24
- return name,value
25
- end
26
- end
27
-
28
- #takes a string as "name:value!option1=ploum!option2=plam,name2:value2!!globalopt=plim,globalopt2=plam"
29
- #and return the hash
30
- #{values: {name: value, name2: value2},
31
- # localopt: {name: {option1:ploum,option2:plam}},
32
- # globalopt: {globalopt: plim, globalopt2: plam},
33
- # opt: {name: {option1:ploum,option2:plam,globalopt: plim, globalopt2: plam}, name2:{{globalopt: plim, globalopt2: plam}}}
34
- def parse_string(s)
35
- r={values: {}, local_opts: {}, global_opts: {}, opts: {}}
36
- args,*globopts=s.split('!!')
37
- globopts.map {|g| g.split(',')}.flatten.each do |g|
38
- name,value=parse_namevalue(g, sep: '=', default: true)
39
- r[:global_opts][name]=value
40
- end
41
- args.split(',').each do |arg|
42
- arg,*localopts=arg.split('!')
43
- name,value=parse_namevalue(arg)
44
- r[:values][name]=value
45
- r[:local_opts][name]={}
46
- localopts.each do |o|
47
- oname,ovalue=parse_namevalue(o, sep: '=', default: true)
48
- r[:local_opts][name][oname]=ovalue
49
- end
50
- r[:local_opts].each do |name,hash|
51
- r[:opts][name]=r[:local_opts][name].dup
52
- r[:global_opts].each do |k,v|
53
- r[:opts][name][k]||=v
54
- end
55
- end
56
- end
57
- return r
58
- end
59
-
60
- end
61
- end
@@ -1,5 +0,0 @@
1
- #for the filename ploum.rb, load all ploum/*.rb files
2
- dir=File.expand_path(File.basename(__FILE__).chomp('.rb'), File.dirname(__FILE__))
3
- Dir.glob(File.expand_path('*.rb',dir)) do |file|
4
- require file
5
- end
@@ -1,5 +0,0 @@
1
- #for the filename ploum.rb, load all ploum/*.rb files
2
- dir=File.expand_path(File.basename(__FILE__).chomp('.rb'), File.dirname(__FILE__))
3
- Dir.glob(File.expand_path('*.rb',dir)) do |file|
4
- require file
5
- end
@@ -1,116 +0,0 @@
1
- require 'shellwords'
2
- require 'dr/base/bool'
3
-
4
- module DR
5
- #git functions helper
6
- module Git
7
- extend(self)
8
- def git?(quiet:false)
9
- launch="git rev-parse"
10
- launch=launch + " 2>/dev/null" if quiet
11
- system launch
12
- return Bool.to_bool($?)
13
- end
14
- def gitdir?
15
- return Bool.to_bool(%x/git rev-parse --is-inside-git-dir/)
16
- end
17
- def worktree?
18
- return Bool.to_bool(%x/git rev-parse --is-inside-work-tree/)
19
- end
20
- def bare?
21
- return Bool.to_bool(%x/git rev-parse --is-bare-repository/)
22
- end
23
-
24
- def toplevel
25
- return %x/git rev-parse --show-toplevel/.chomp
26
- end
27
- def prefix
28
- return %x/git rev-parse --show-prefix/.chomp
29
- end
30
- def gitdir
31
- return %x/git rev-parse --git-dir/.chomp
32
- end
33
-
34
- def cd_to_toplevel(&block)
35
- dir=%x/git rev-parse --show-cdup/.chomp
36
- Dir.chdir(dir,&block) unless dir.empty?
37
- end
38
-
39
- def get_current_branch(always=true)
40
- branchname= %x/git symbolic-ref -q --short HEAD/.chomp!
41
- branchname ||= %x/git rev-parse --verify HEAD/.chomp! if always
42
- return branchname
43
- end
44
-
45
- def name_branch(branch="HEAD", method: "name", always: true)
46
- case method
47
- when "sha1"
48
- describe=%x"git rev-parse --short #{branch.shellescape}".chomp!
49
- when "describe"
50
- describe=%x"git describe #{branch.shellescape}".chomp!
51
- when "contains"
52
- describe=%x"git describe --contains #{branch.shellescape}".chomp!
53
- when "match"
54
- describe=%x"git describe --tags --exact-match #{branch.shellescape}".chomp!
55
- when "topic"
56
- describe=%x"git describe --all #{branch.shellescape}".chomp!
57
- when "branch"
58
- describe=%x"git describe --contains --all #{branch.shellescape}".chomp!
59
- when "topic-fb" #try --all, then --contains all
60
- describe=%x"git describe --all #{branch.shellescape}".chomp!
61
- describe=%x"git describe --contains --all #{branch.shellescape}".chomp! if describe.nil? or describe.empty?
62
- when "branch" #try --contains all, then --all
63
- describe=%x"git describe --contains --all #{branch.shellescape}".chomp!
64
- describe=%x"git describe --all #{branch.shellescape}".chomp! if describe.nil? or describe.empty?
65
- when "magic"
66
- describe1=%x"git describe --contains --all #{branch.shellescape}".chomp!
67
- describe2=%x"git describe --all #{branch.shellescape}".chomp!
68
- describe= describe1.length < describe2.length ? describe1 : describe2
69
- describe=describe1 if describe2.empty?
70
- describe=describe2 if describe1.empty?
71
- when "name"
72
- describe=%x"git rev-parse --abbrev-ref --symbolic-full-name #{branch.shellescape}".chomp!
73
- else
74
- describe=%x/#{method}/.chomp! unless method.nil? or method.empty?
75
- end
76
- if (describe.nil? or describe.empty?) and always
77
- describe=%x/git rev-parse --short #{branch.shellescape}/.chomp!
78
- end
79
- return describe
80
- end
81
-
82
- def branch_rebase?(branch=get_current_branch)
83
- rb=%x/git config --bool branch.shellescape.#{branch.shellescape}.rebase/.chomp!
84
- rb||=%x/git config --bool pull.rebase/.chomp!
85
- end
86
- def branch_remote(branch=get_current_branch)
87
- rb=%x/git config --get branch.shellescape.#{branch.shellescape}.remote/.chomp!
88
- rb||="origin"
89
- end
90
- def branch_upstream(branch=get_current_branch)
91
- %x/git rev-parse --abbrev-ref --symbolic-full-name #{branch.shellescape}@{u}/.chomp!
92
- end
93
-
94
- #return all branches that have an upstream
95
- #if branches=:all look throug all branches
96
- def all_upstream_branches(branches)
97
- upstreams=%x!git for-each-ref --format='%(upstream:short)' refs/heads/branch/!
98
- end
99
-
100
- def get_topic_branches(*branches, complete: :local)
101
- if branches.length >= 2
102
- return [branches[0], branches[1]]
103
- elsif branches.length == 1
104
- if complete == :local
105
- return [get_current_branch, branches[0]]
106
- elsif complete == :remote
107
- return [branches[0], branch_upstream(branches[0])]
108
- else
109
- fail "complete keyword should be :local or :remote"
110
- end
111
- else
112
- return [get_current_branch, branch_upstream]
113
- end
114
- end
115
- end
116
- end
@@ -1,4 +0,0 @@
1
- module Drain
2
- # drain version
3
- VERSION = "0.1.0"
4
- end