git-switcher 1.0.4 → 1.0.5

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