remedy 0.4.0 → 0.5.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/.github/workflows/ci.yml +1 -1
- data/README.markdown +1 -1
- data/lib/remedy/console.rb +16 -2
- data/lib/remedy/console_resize.rb +1 -0
- data/lib/remedy/interaction.rb +1 -1
- data/lib/remedy/partial.rb +1 -1
- data/lib/remedy/version.rb +1 -1
- data/lib/remedy/viewport.rb +2 -2
- data/remedy.gemspec +3 -0
- data/spec/viewport_spec.rb +24 -9
- metadata +17 -4
- data/.travis.yml +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a8fe8ed0c57993d0c71fa5d584dce0343e6548d4b42ce70431333fb62d9490d
|
4
|
+
data.tar.gz: 0eab58e635c11d57b167d842ce6411d4970ac9d4a4adb4660b057a4ae2d7b217
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4206bd86137641bea396f02d9935488e7b099c65515d41312e372f9ad8dc0c80d8352190049a92907f2c6db78e0a1a438fa7743a418ee5cdcfe59612e2cafcb2
|
7
|
+
data.tar.gz: 9f4d5f519809aa4d2c720358f82c888657235781d4713ba705a35331e3ad6c24396b0031b05cae74d5cfef0c1996e8a56180766b363fd473aa42fcd90cc6cc7f
|
data/.github/workflows/ci.yml
CHANGED
@@ -10,7 +10,7 @@ jobs:
|
|
10
10
|
strategy:
|
11
11
|
fail-fast: false
|
12
12
|
matrix:
|
13
|
-
ruby: ["2.
|
13
|
+
ruby: ["2.5", "2.6", "2.7", "3.0", "3.1", "3.2", "3.3", "3.4", ruby-head, jruby-10.0, jruby-head]
|
14
14
|
|
15
15
|
steps:
|
16
16
|
- uses: actions/checkout@v4
|
data/README.markdown
CHANGED
@@ -110,7 +110,7 @@ The most interesting function in my opinion is the callback that gets triggered
|
|
110
110
|
Remedy in the Wild
|
111
111
|
------------------
|
112
112
|
|
113
|
-
Remedy was originally written for my own console-based game
|
113
|
+
Remedy was originally written for my own console-based game. Remedy was extracted from it and open-sourced and it has lived on.
|
114
114
|
|
115
115
|
Here are some projects that use Remedy:
|
116
116
|
|
data/lib/remedy/console.rb
CHANGED
@@ -23,6 +23,14 @@ module Remedy
|
|
23
23
|
@output ||= $stdout
|
24
24
|
end
|
25
25
|
|
26
|
+
def input= new_input
|
27
|
+
@input = new_input
|
28
|
+
end
|
29
|
+
|
30
|
+
def output= new_output
|
31
|
+
@output = new_output
|
32
|
+
end
|
33
|
+
|
26
34
|
def raw
|
27
35
|
raw!
|
28
36
|
result = yield
|
@@ -52,21 +60,27 @@ module Remedy
|
|
52
60
|
alias_method :height, :rows
|
53
61
|
|
54
62
|
def size
|
63
|
+
return @size_override if @size_override
|
64
|
+
|
55
65
|
str = [0, 0, 0, 0].pack('SSSS')
|
56
|
-
if input.ioctl(TIOCGWINSZ, str) >= 0 then
|
66
|
+
if input.respond_to?(:ioctl) && input.ioctl(TIOCGWINSZ, str) >= 0 then
|
57
67
|
Size.new str.unpack('SSSS').first 2
|
58
68
|
else
|
59
69
|
raise UnknownConsoleSize, "Unable to get console size"
|
60
70
|
end
|
61
71
|
end
|
62
72
|
|
73
|
+
def size_override= new_size
|
74
|
+
@size_override = new_size
|
75
|
+
end
|
76
|
+
|
63
77
|
def interactive?
|
64
78
|
input.isatty
|
65
79
|
end
|
66
80
|
|
67
81
|
def set_console_resized_hook!
|
68
82
|
Console::Resize.set_console_resized_hook! do |*args|
|
69
|
-
yield
|
83
|
+
yield(*args)
|
70
84
|
end
|
71
85
|
end
|
72
86
|
|
data/lib/remedy/interaction.rb
CHANGED
data/lib/remedy/partial.rb
CHANGED
data/lib/remedy/version.rb
CHANGED
data/lib/remedy/viewport.rb
CHANGED
@@ -8,7 +8,7 @@ module Remedy
|
|
8
8
|
def draw content, scroll = Size.zero, header = Partial.new, footer = Partial.new
|
9
9
|
range = range_find content, scroll, available_space(header,footer)
|
10
10
|
|
11
|
-
viewable_content = content.excerpt
|
11
|
+
viewable_content = content.excerpt(*range)
|
12
12
|
|
13
13
|
view = View.new viewable_content, header, footer
|
14
14
|
|
@@ -36,7 +36,7 @@ module Remedy
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def size
|
39
|
-
|
39
|
+
Console.size
|
40
40
|
end
|
41
41
|
|
42
42
|
def get_range offset, actual, available
|
data/remedy.gemspec
CHANGED
data/spec/viewport_spec.rb
CHANGED
@@ -1,19 +1,34 @@
|
|
1
|
-
require_relative
|
2
|
-
require
|
1
|
+
require_relative "spec_helper"
|
2
|
+
require "remedy/viewport"
|
3
3
|
|
4
4
|
describe Remedy::Viewport do
|
5
|
+
let(:console){ ::Remedy::Console }
|
6
|
+
let(:size_override){ Size 20, 40 }
|
7
|
+
let(:stringio){ StringIO.new }
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
console.input = stringio
|
11
|
+
console.output = stringio
|
12
|
+
console.size_override = size_override
|
13
|
+
end
|
14
|
+
|
15
|
+
after(:each) do
|
16
|
+
console.input = $stdin
|
17
|
+
console.output = $stdout
|
18
|
+
console.size_override = nil
|
19
|
+
end
|
20
|
+
|
5
21
|
it 'should be able to execute the example code from the readme' do
|
6
|
-
|
22
|
+
expected = "\\e[H\\e[JQ: What's the difference between a duck?\\e[1B\\e[0GA: Purple, because ice cream has no bone\\e[1B\\e[0G"
|
23
|
+
|
7
24
|
joke = ::Remedy::Partial.new
|
8
25
|
joke << "Q: What's the difference between a duck?"
|
9
26
|
joke << "A: Purple, because ice cream has no bones!"
|
10
27
|
|
11
28
|
screen = ::Remedy::Viewport.new
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
expect(
|
16
|
-
ensure
|
17
|
-
$stdout = @stdout
|
29
|
+
screen.draw joke
|
30
|
+
|
31
|
+
actual = stringio.string.inspect[1..-2]
|
32
|
+
expect(actual).to eq expected
|
18
33
|
end
|
19
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remedy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony M. Cook
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
description: Pure Ruby console interaction library in the vein of Curses with MVC-style
|
28
42
|
seperation of concerns.
|
29
43
|
email:
|
@@ -37,7 +51,6 @@ files:
|
|
37
51
|
- ".gitignore"
|
38
52
|
- ".ruby-gemset"
|
39
53
|
- ".ruby-version"
|
40
|
-
- ".travis.yml"
|
41
54
|
- Gemfile
|
42
55
|
- LICENSE.txt
|
43
56
|
- README.markdown
|
@@ -77,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
90
|
requirements:
|
78
91
|
- - ">="
|
79
92
|
- !ruby/object:Gem::Version
|
80
|
-
version: '
|
93
|
+
version: '2.5'
|
81
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
95
|
requirements:
|
83
96
|
- - ">="
|