git-switcher 1.0.4 → 1.0.5

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
  SHA256:
3
- metadata.gz: 9b80ce756220a37a78e3aa8e2b89cd4c8bd66c40d59a69359766fa97be95bab4
4
- data.tar.gz: a96fc78937a990a08ee0c86ea4df66783c6e99eacd17c0d33fc20504d09e5155
3
+ metadata.gz: 1034e1e575b8cdf55bdaf978c135fdff155d716a161498c4aa58a6b45b4e6361
4
+ data.tar.gz: 43ed44115e64374da365049cb952b3e3f922fe30c95700de292801a677ca8795
5
5
  SHA512:
6
- metadata.gz: ba924be522e0f7211eca94ed4667c3c6d53dbbdc7661e0ab528b38b9479daf49d41e7fb0ea4ce9279e3c14ff84da38e70510a0d4f4b6bc4159744344e32f01bb
7
- data.tar.gz: e485eedb9d90bdc9d9d8bfcc7be3b4d11cca56e00b14af71865106172cb7802738f8ded17cda29410796e00ad5c60fbf48a52c34b9300ca8fd6c46f4ece54700
6
+ metadata.gz: d80b503cd74f5600b49215dd5596f99c562dbff260da62d4035993f23d6a6eabadd21bd1278de5b13e0921e5cda709a5bd846809f104e64c41078b6799c9cf3b
7
+ data.tar.gz: 057f568046ed72af9901349a0fa0c9364f3fd1973aed86cd29e6f25a5a820d8ba903566997d72526e1aa65c3b66ac50398290709d6a4a4c197ba1823d0392aaf
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git-switcher (1.0.4)
4
+ git-switcher (1.0.5)
5
5
  rainbow (~> 3.0)
6
6
  rugged (~> 0.27)
7
7
 
@@ -1,53 +1,41 @@
1
1
  module Git
2
2
  module Switcher
3
- class Menu
4
3
 
5
- Submenu = Struct.new(:label, :menu_items) do
6
- def to_s
7
- header = Rainbow(label).steelblue
8
- "\n\t#{header}\n\n" + menu_items.join("\n")
9
- end
4
+ Submenu = Struct.new(:label, :menu_items) do
5
+ def to_s
6
+ header = Rainbow(label).steelblue
7
+ "\n\t#{header}\n\n" + menu_items.join("\n")
8
+ end
9
+ end
10
+
11
+ MenuItem = Struct.new(:repo, :shortcut, :reference, :next) do
12
+ HEAD = Rainbow(' <- HEAD ***').bold.aquamarine.freeze
13
+
14
+ def head?
15
+ reference.targets?(repo.head)
10
16
  end
11
17
 
12
- MenuItem = Struct.new(:repo, :shortcut, :reference, :next) do
13
- HEAD = Rainbow(' <- HEAD ***').bold.aquamarine.freeze
14
-
15
- def head?
16
- reference.targets?(repo.head)
17
- end
18
-
19
- def to_s
20
- name = reference.name
21
- label = format('[%2s]', shortcut)
22
- format(
23
- " %<label>s\t%<name>s%<head>s",
24
- label: head? ? Rainbow(label).bold : label,
25
- name: head? ? Rainbow(name).inverse : name,
26
- head: head? ? HEAD : '',
27
- )
28
- end
18
+ def to_s
19
+ name = reference.name
20
+ label = format('[%2s]', shortcut)
21
+ format(
22
+ " %<label>s\t%<name>s%<head>s",
23
+ label: head? ? Rainbow(label).bold : label,
24
+ name: head? ? Rainbow(name).inverse : name,
25
+ head: head? ? HEAD : '',
26
+ )
29
27
  end
28
+ end
30
29
 
30
+ class Menu
31
31
  def self.for(repo)
32
32
  new(repo)
33
33
  end
34
34
 
35
35
  def initialize(repo)
36
36
  @repo = repo
37
-
38
- remote_branches = @repo.branches.find_all(&:remote?)
39
- local_branches = @repo.branches.find_all(&:local?)
40
-
41
- shortcuts = (1..Float::INFINITY).each
42
-
43
- @submenus = [
44
- submenu_for('REMOTE BRANCHES', remote_branches, shortcuts),
45
- submenu_for('LOCAL BRANCHES', local_branches, shortcuts),
46
- submenu_for('TAGS', @repo.tags, shortcuts),
47
- ].compact
48
-
37
+ @submenus = submenus
49
38
  @menu_items = @submenus.map(&:menu_items).flatten
50
-
51
39
  @lookup = Hash[@menu_items.map(&:shortcut).zip(@menu_items)]
52
40
  end
53
41
 
@@ -69,17 +57,26 @@ module Git
69
57
 
70
58
  private
71
59
 
72
- def shortcuts(initial)
73
- shortcut = initial
74
- Enumerator.new do |yielder|
75
- loop do
76
- yielder << shortcut
77
- shortcut = case shortcut
78
- when Integer then shortcut + 1
79
- when String then (shortcut.ord + 1).chr
80
- end
81
- end
82
- end
60
+ def remote_branches
61
+ @repo.branches.find_all(&:remote?)
62
+ end
63
+
64
+ def local_branches
65
+ @repo.branches.find_all(&:local?)
66
+ end
67
+
68
+ def tags
69
+ @repo.tags # TODO: distinguish between annotated and lightweight tags
70
+ end
71
+
72
+ def submenus
73
+ shortcuts = (1..Float::INFINITY).each
74
+
75
+ [
76
+ submenu_for('REMOTE BRANCHES', remote_branches, shortcuts),
77
+ submenu_for('LOCAL BRANCHES', local_branches, shortcuts),
78
+ submenu_for('TAGS', tags, shortcuts),
79
+ ].compact
83
80
  end
84
81
 
85
82
  def submenu_for(label, references, shortcuts)
@@ -1,7 +1,7 @@
1
1
  module Git
2
2
  module Switcher
3
3
  NAME = 'git-switcher'.freeze
4
- VERSION = '1.0.4'.freeze
4
+ VERSION = '1.0.5'.freeze
5
5
 
6
6
  def self.version
7
7
  "#{NAME} v#{VERSION}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-switcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Vandenberk