imdb-terminal 0.2 → 0.4
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/bin/imdb +72 -23
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 318c36f7732c8e2ff3831c96d3e15cef170d9ca6528a49ed65f6de7ff9411f88
|
4
|
+
data.tar.gz: 685167952efd3b9b8b90d79ac7a285347217e2ed246ed9c29f09e93172c25316
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b9bc63aaa63bb5f979b9ab3e8b956ae937bba83de7fca1be15e43b75c695f42fcf7e52ad0cc869151ed6bde6475959cd4ada1424f726286cb02bc19f96349b8
|
7
|
+
data.tar.gz: fadebca0abc0f276141a90a2b0eb1f11232f76e7774b530ce249379a35a7c539deff79a9938cded9f8fe109f89bc24f9429807a8ae721f84ad5f9d02dc2a847f
|
data/bin/imdb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# for any damages resulting from its use. Further, I am under no
|
15
15
|
# obligation to maintain or extend this software. It is provided
|
16
16
|
# on an 'as is' basis without any expressed or implied warranty.
|
17
|
-
@version = "0.
|
17
|
+
@version = "0.3"
|
18
18
|
|
19
19
|
# PRELIMINARIES
|
20
20
|
@help = <<HELPTEXT
|
@@ -117,40 +117,87 @@ end
|
|
117
117
|
|
118
118
|
# CLASSES
|
119
119
|
class Curses::Window # CLASS EXTENSION
|
120
|
-
attr_accessor :fg, :bg, :attr, :text, :index, :list, :update
|
121
120
|
# General extensions (see https://github.com/isene/Ruby-Curses-Class-Extension)
|
122
|
-
|
121
|
+
# This is a class extension to Ruby Curses - a class in dire need of such.
|
122
|
+
# self.pair keeps a registry of colors as they are encountered - defined with:
|
123
|
+
# init_pair(index, foreground, background)
|
124
|
+
# self.fg is set for the foreground color
|
125
|
+
# self.bg is set for the background color
|
126
|
+
# self.attr is set for text attributes like Curses::A_BOLD
|
127
|
+
# self.update can be used to indicate if a window should be updated (true/false)
|
128
|
+
# self.index can be used to keep track of the current list item in a window
|
129
|
+
attr_accessor :fg, :bg, :attr, :text, :update, :index, :list
|
130
|
+
def self.pair(fg, bg)
|
131
|
+
@p = [[]] if @p == nil
|
132
|
+
fg = fg.to_i; bg = bg.to_i
|
133
|
+
if @p.include?([fg,bg])
|
134
|
+
@p.index([fg,bg])
|
135
|
+
else
|
136
|
+
@p.push([fg,bg])
|
137
|
+
cp = @p.index([fg,bg])
|
138
|
+
init_pair(cp, fg, bg)
|
139
|
+
@p.index([fg,bg])
|
140
|
+
end
|
141
|
+
end
|
142
|
+
def clr # Clears the whole window
|
123
143
|
self.setpos(0, 0)
|
124
144
|
self.maxy.times {self.deleteln()}
|
125
145
|
self.refresh
|
126
146
|
self.setpos(0, 0)
|
127
147
|
end
|
128
|
-
def fill # Fill window with color as set by
|
148
|
+
def fill # Fill window with color as set by self.color (or self.bg if not set)
|
149
|
+
self.setpos(0, 0)
|
150
|
+
self.fill_from_cur_pos
|
151
|
+
end
|
152
|
+
def fill_to_cur_pos # Fills the window up to current line
|
153
|
+
x = self.curx
|
154
|
+
y = self.cury
|
129
155
|
self.setpos(0, 0)
|
130
156
|
self.bg = 0 if self.bg == nil
|
131
157
|
self.fg = 255 if self.fg == nil
|
132
|
-
xor = self.fg ^ self.bg
|
133
|
-
init_pair(xor, self.fg, self.bg)
|
134
158
|
blank = " " * self.maxx
|
135
|
-
self.
|
159
|
+
cp = Curses::Window.pair(self.fg, self.bg)
|
160
|
+
y.times {self.attron(color_pair(cp)) {self << blank}}
|
136
161
|
self.refresh
|
137
|
-
self.setpos(
|
162
|
+
self.setpos(y, x)
|
138
163
|
end
|
139
|
-
def
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
164
|
+
def fill_from_cur_pos # Fills the rest of the window from current line
|
165
|
+
x = self.curx
|
166
|
+
y = self.cury
|
167
|
+
self.setpos(y, 0)
|
168
|
+
self.bg = 0 if self.bg == nil
|
169
|
+
self.fg = 255 if self.fg == nil
|
170
|
+
blank = " " * self.maxx
|
171
|
+
cp = Curses::Window.pair(self.fg, self.bg)
|
172
|
+
self.maxy.times {self.attron(color_pair(cp)) {self << blank}}
|
173
|
+
self.refresh
|
174
|
+
self.setpos(y, x)
|
175
|
+
end
|
176
|
+
def write
|
144
177
|
self.attr = 0 if self.attr == nil
|
145
|
-
self.
|
178
|
+
self.bg = 0 if self.bg == nil
|
179
|
+
self.fg = 255 if self.fg == nil
|
180
|
+
cp = Curses::Window.pair(self.fg, self.bg)
|
181
|
+
self.attron(color_pair(cp) | self.attr) { self << self.text }
|
146
182
|
self.refresh
|
147
|
-
self.text = ""
|
148
183
|
end
|
149
|
-
def p(
|
150
|
-
|
151
|
-
self.
|
184
|
+
def p(text) # Puts text to window
|
185
|
+
self.attr = 0 if self.attr == nil
|
186
|
+
self.bg = 0 if self.bg == nil
|
187
|
+
self.fg = 255 if self.fg == nil
|
188
|
+
cp = Curses::Window.pair(self.fg, self.bg)
|
189
|
+
self.attron(color_pair(cp) | attr) { self << text }
|
190
|
+
self.refresh
|
191
|
+
end
|
192
|
+
def pa(fg = self.fg, bg = self.bg, attr = self.attr, text) # Puts text to window with full set of attributes
|
193
|
+
cp = Curses::Window.pair(fg, bg)
|
194
|
+
self.attron(color_pair(cp) | attr) { self << text }
|
152
195
|
self.refresh
|
153
196
|
end
|
197
|
+
def format_text(text) # Format text so that it linebreaks neatly inside window
|
198
|
+
return "\n" + text.gsub(/(.{1,#{self.maxx}})( +|$\n?)|(.{1,#{self.maxx}})/, "\\1\\3\n")
|
199
|
+
end
|
200
|
+
alias :puts :p
|
154
201
|
end
|
155
202
|
|
156
203
|
# GENERIC FUNCTIONS
|
@@ -504,8 +551,10 @@ end
|
|
504
551
|
|
505
552
|
# BASIC WINDOW FUNCTIONS
|
506
553
|
def w_t # SHOW INFO IN @w_t
|
554
|
+
@w_t.clr
|
507
555
|
@movies ? @w_t.text = " MOVIES :: " : @w_t.text = " SERIES :: "
|
508
556
|
@w_t.text += "Rating MIN: #{@rating} - Year MIN: #{@yearMin} - Year MAX: #{@yearMax} :: Selection = #{@imdbsel.size}"
|
557
|
+
@w_t.text += " " * (@w_t.maxx - @w_t.text.length) if @w_t.text.length < @w_t.maxx
|
509
558
|
@w_t.write
|
510
559
|
end
|
511
560
|
def w_list(win) # LIST IN WINDOW
|
@@ -513,7 +562,7 @@ def w_list(win) # LIST IN WINDOW
|
|
513
562
|
win.fill
|
514
563
|
ix = 0
|
515
564
|
ix = win.index - win.maxy/2 if win.index > win.maxy/2 and win.list.size > win.maxy - 1
|
516
|
-
while ix < win.list.size
|
565
|
+
while ix < win.list.size
|
517
566
|
str = win.list[ix][0]
|
518
567
|
str = win.list[ix] if win == @w_g
|
519
568
|
if ix == win.index and win == @active
|
@@ -716,10 +765,11 @@ end
|
|
716
765
|
loop do # OUTER LOOP - (catching refreshes via 'r')
|
717
766
|
@break = false # Initialize @break variable (set if user hits 'r')
|
718
767
|
begin # Create the windows/panels
|
719
|
-
Curses.stdscr.bg = 234 # Use for borders
|
720
|
-
Curses.stdscr.fill
|
721
768
|
maxx = Curses.cols
|
722
769
|
maxy = Curses.lines
|
770
|
+
init_pair(255, 0, 234)
|
771
|
+
maxy.times {Curses.stdscr.attron(color_pair(255)) {Curses.stdscr << " " * maxx}}
|
772
|
+
Curses.stdscr.refresh
|
723
773
|
# Curses::Window.new( h, w, y, x )
|
724
774
|
@w_t = Curses::Window.new( 1, maxx, 0, 0 )
|
725
775
|
@w_i = Curses::Window.new( maxy-2, 40, 1, 0 )
|
@@ -737,7 +787,6 @@ loop do # OUTER LOOP - (catching refreshes via 'r')
|
|
737
787
|
@w_p.fg, @w_p.bg = Wpfg, WIbg
|
738
788
|
@w_b.fg, @w_b.bg = Wbfg, Wbbg
|
739
789
|
[@w_i, @w_g, @w_m, @w_n].each{|w| w.index = 0}
|
740
|
-
@w_b.fill
|
741
790
|
@w_g.list = @genres
|
742
791
|
@w_b.update = true
|
743
792
|
@w_d.update = true
|
@@ -754,7 +803,7 @@ loop do # OUTER LOOP - (catching refreshes via 'r')
|
|
754
803
|
@search == '' ? @w_t.bg = WtSbg : @w_t.bg = WtSbgS
|
755
804
|
@w_t.attr = Curses::A_BOLD
|
756
805
|
end
|
757
|
-
@
|
806
|
+
@w_i.fill; @w_g.fill; @w_m.fill; @w_n.fill; @w_p.fill
|
758
807
|
w_t; w_list(@w_i); w_list(@w_g); w_list(@w_m); w_list(@w_n)
|
759
808
|
if @w_d.update
|
760
809
|
@w_d.fill
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imdb-terminal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geir Isene
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -30,11 +30,26 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.3.2
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rest-client
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.0'
|
33
47
|
description: 'Narrow down your preferences from a 1000 movies and almost 500 series.
|
34
48
|
Select a minimum IMDB rating, range of production years, genres you like and dislike
|
35
49
|
to get your preferred list. Get detailed information on movies and series and where
|
36
50
|
you can stream them. Even the movie poster in the terminal. New in 0.2: Added ''v''
|
37
|
-
to show version and RubyGem version. Code cleanup.
|
51
|
+
to show version and RubyGem version. Code cleanup. 0.4: Adopted new curses extension
|
52
|
+
upgrade. Added gem dependency for rest-client'
|
38
53
|
email: g@isene.com
|
39
54
|
executables:
|
40
55
|
- imdb
|