drain 0.1.0 → 0.2.0

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