tabscroll 1.0.40 → 1.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/bin/tabscroll +8 -1
- data/lib/tabscroll.rb +29 -18
- data/lib/tabscroll/settings.rb +23 -3
- data/lib/tabscroll/track.rb +5 -2
- data/lib/tabscroll/version.rb +1 -1
- data/tabscroll.gemspec +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99b7ce3438c86990d1e371a58dc0344faec3c2b2
|
4
|
+
data.tar.gz: f0dec39df6e7178087f25220cb97ab2d089008ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5f0afba94716225f46ae66bc70ba01c1169d38eaa53e3076bc0d165e93ae4650b9502cd7d084bacfbbe8fb0e4a0e7624ea3908147f9c1fe454082a07429937f
|
7
|
+
data.tar.gz: 9ca2e31c3ecfeb97cef96a1123315ef499f6bc28a49eb4e80bf4cdf7d84e0ff75871770cb7a3de2f8340628f2db8570f89d2333f38b6feb0406a10c169176cef
|
data/CHANGELOG.md
CHANGED
data/bin/tabscroll
CHANGED
@@ -13,6 +13,13 @@ begin
|
|
13
13
|
$settings = Settings.new
|
14
14
|
$settings.parse ARGV
|
15
15
|
|
16
|
-
|
16
|
+
# We'll provide a sample file so the user can test the program
|
17
|
+
if $settings[:run_sample_file]
|
18
|
+
filename = $settings[:sample_filename]
|
19
|
+
else
|
20
|
+
filename = $settings[:filename]
|
21
|
+
end
|
22
|
+
|
23
|
+
TabScroll::run filename
|
17
24
|
end
|
18
25
|
|
data/lib/tabscroll.rb
CHANGED
@@ -13,11 +13,18 @@ require 'tabscroll/version'
|
|
13
13
|
# (Settings class).
|
14
14
|
module TabScroll
|
15
15
|
|
16
|
-
#
|
16
|
+
# Starts the Curses engine and parses `filename`, finally
|
17
|
+
# displaying things onscreen.
|
17
18
|
def self.run filename
|
19
|
+
|
20
|
+
if not File.exists? filename
|
21
|
+
puts "Error: File '#{filename}' doesn't exist."
|
22
|
+
exit 69
|
23
|
+
end
|
24
|
+
|
18
25
|
@engine = Engine.new
|
19
26
|
if not @engine
|
20
|
-
puts
|
27
|
+
puts "Error: Failed to start Curses!"
|
21
28
|
exit 1337
|
22
29
|
end
|
23
30
|
@engine.timeout 10
|
@@ -48,24 +55,24 @@ module TabScroll
|
|
48
55
|
bars_hidden = (bars_hidden ? false : true)
|
49
56
|
Curses::clear
|
50
57
|
when '<'
|
51
|
-
track.scroll -
|
58
|
+
track.scroll -10
|
52
59
|
when '>'
|
53
|
-
track.scroll
|
60
|
+
track.scroll 10
|
54
61
|
when Curses::KEY_LEFT
|
55
62
|
track.speed -= 1
|
56
63
|
when Curses::KEY_RIGHT
|
57
64
|
track.speed += 1
|
58
|
-
when Curses::KEY_DOWN, Curses::KEY_UP
|
65
|
+
when Curses::KEY_DOWN, Curses::KEY_UP, ' '
|
59
66
|
track.speed = 0
|
60
67
|
when 'q'
|
61
|
-
|
62
|
-
|
68
|
+
@engine.exit
|
69
|
+
exit
|
63
70
|
end
|
64
71
|
|
65
72
|
track.update
|
66
73
|
track.show
|
67
74
|
if not bars_hidden
|
68
|
-
titlebar.mvaddstr(0, 0, "#{filename} (#{track.percent_completed}%) ", Engine::Colors[:cyan])
|
75
|
+
titlebar.mvaddstr(0, 0, "#{File.basename filename} (#{track.percent_completed}%) ", Engine::Colors[:cyan])
|
69
76
|
titlebar.mvaddstr_right(0, " Speed: #{track.speed}", Engine::Colors[:cyan])
|
70
77
|
|
71
78
|
statusbar.mvaddstr_left(0, "tabscroll v#{VERSION} - press `h` for help", Engine::Colors[:green])
|
@@ -80,22 +87,26 @@ module TabScroll
|
|
80
87
|
def self.show_help_window
|
81
88
|
title = 'Help'
|
82
89
|
text = <<END_OF_TEXT
|
83
|
-
|
84
|
-
|
85
|
-
left/right auto-scroll left/right
|
86
|
-
|
87
|
-
|
88
|
-
|
90
|
+
q quit
|
91
|
+
h help/go back
|
92
|
+
left/right auto-scroll left/right
|
93
|
+
up/down/space bar stop auto-scrolling
|
94
|
+
</> step scroll left/right
|
95
|
+
o toggle status/title bars
|
89
96
|
|
97
|
+
_|_ _. |_ _ _ ._ _ | |
|
98
|
+
|_ (_| |_) _> (_ | (_) | | #{VERSION}
|
90
99
|
|
91
|
-
tabscroll
|
92
|
-
|
93
|
-
author Alexandre Dantas <eu@alexdantas.net>
|
100
|
+
homepage alexdantas.net/projects/tabscroll
|
101
|
+
author Alexandre Dantas <eu@alexdantas.net>
|
94
102
|
END_OF_TEXT
|
95
103
|
|
96
104
|
pop = Popup.new(title, text)
|
97
105
|
will_quit = pop.show
|
98
|
-
|
106
|
+
if will_quit
|
107
|
+
@engine.exit
|
108
|
+
exit
|
109
|
+
end
|
99
110
|
end
|
100
111
|
end
|
101
112
|
|
data/lib/tabscroll/settings.rb
CHANGED
@@ -12,6 +12,21 @@ class Settings
|
|
12
12
|
def initialize
|
13
13
|
@settings = {}
|
14
14
|
@settings[:filename] = nil
|
15
|
+
|
16
|
+
# We have a way to test the program.
|
17
|
+
# We're distributing a sample tab file with the Gem so
|
18
|
+
# when users run `tabscroll --sample` they can see
|
19
|
+
# how the program works.
|
20
|
+
# This setting enables it
|
21
|
+
@settings[:run_sample_file] = false
|
22
|
+
|
23
|
+
# And this is the absolute filename of the file
|
24
|
+
# distributed with the gem.
|
25
|
+
# It'll be `../../sample_tab.txt` based on `settings.rb` path.
|
26
|
+
filename = File.expand_path("../../", __FILE__)
|
27
|
+
filename = File.dirname filename
|
28
|
+
filename += "/sample_tab.txt"
|
29
|
+
@settings[:sample_filename] = filename
|
15
30
|
end
|
16
31
|
|
17
32
|
# Sets options based on commandline arguments `args`.
|
@@ -23,8 +38,13 @@ class Settings
|
|
23
38
|
|
24
39
|
# Make output beautiful
|
25
40
|
parser.separator ""
|
26
|
-
parser.separator "
|
41
|
+
parser.separator "Options:"
|
42
|
+
|
43
|
+
parser.on("--sample", "Run `tabscroll` with sample file") do
|
44
|
+
@settings[:run_sample_file] = true
|
45
|
+
end
|
27
46
|
|
47
|
+
# These options appear if no other is given.
|
28
48
|
parser.on_tail("-h", "--help", "Show this message") do
|
29
49
|
puts parser
|
30
50
|
exit
|
@@ -37,7 +57,7 @@ class Settings
|
|
37
57
|
end
|
38
58
|
opts.parse! args
|
39
59
|
|
40
|
-
# After parsing all
|
60
|
+
# After parsing all dashed arguments we will check if
|
41
61
|
# the user has provided a filename.
|
42
62
|
#
|
43
63
|
# The first argument without a leading '-' will be
|
@@ -49,7 +69,7 @@ class Settings
|
|
49
69
|
end
|
50
70
|
end
|
51
71
|
|
52
|
-
if not @settings[:filename]
|
72
|
+
if not @settings[:filename] and not @settings[:run_sample_file]
|
53
73
|
puts opts
|
54
74
|
exit 666
|
55
75
|
end
|
data/lib/tabscroll/track.rb
CHANGED
@@ -59,8 +59,11 @@ class Track
|
|
59
59
|
# I will also make every line have the same width
|
60
60
|
# as of the biggest one.
|
61
61
|
|
62
|
-
# Any tab line MUST have EITHER
|
63
|
-
|
62
|
+
# Any tab line MUST have EITHER:
|
63
|
+
# ---1---9--|
|
64
|
+
# or
|
65
|
+
# |---3----0
|
66
|
+
tab_line = /[-[:alnum:]*]\||\|[-[:alnum:]*]/
|
64
67
|
|
65
68
|
# Duration of each note only has those chars.
|
66
69
|
# So we look for anything BUT these chars.
|
data/lib/tabscroll/version.rb
CHANGED
data/tabscroll.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Adding lib directory to load path
|
1
|
+
# Adding ./lib directory to load path
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$:.unshift lib unless $:.include? lib
|
4
4
|
|
@@ -20,7 +20,7 @@ END_OF_DESCRIPTION
|
|
20
20
|
s.homepage = 'http://www.alexdantas.net/projects/tabscroll'
|
21
21
|
s.license = "GPL-3.0"
|
22
22
|
|
23
|
-
# Including everything that's on
|
23
|
+
# Including everything that's checked out on git
|
24
24
|
s.files = `git ls-files`.split($/)
|
25
25
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
26
26
|
s.require_paths = ['lib']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabscroll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Dantas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- lib/tabscroll/timer.rb
|
50
50
|
- lib/tabscroll/track.rb
|
51
51
|
- lib/tabscroll/version.rb
|
52
|
+
- sample_tab.txt
|
52
53
|
- tabscroll.gemspec
|
53
54
|
homepage: http://www.alexdantas.net/projects/tabscroll
|
54
55
|
licenses:
|