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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af17b629f35cdae5c8a15c47a6e23f5aa51bce006afa7f7e129a8640c9d191b1
4
- data.tar.gz: 36568e55906c286e97666183f9e6eb704535b6155830bc93acda7c59299a2ab6
3
+ metadata.gz: 3a8fe8ed0c57993d0c71fa5d584dce0343e6548d4b42ce70431333fb62d9490d
4
+ data.tar.gz: 0eab58e635c11d57b167d842ce6411d4970ac9d4a4adb4660b057a4ae2d7b217
5
5
  SHA512:
6
- metadata.gz: 447afaf7d518eb6b8ddeb80dc9d7b4cae579a978ec6af952749dafe52b2d95b930ef6e6bbc24378ebab81ec48807102453d07e0f8196b251d62ffd84662f80a9
7
- data.tar.gz: 7d800899e64c41e9acd31215df9b66fd1dd96f9da52a735e3393c855bf91f8d75f1fc224dc559f9560fedaa89a4c88468cce94b9713bd3bb1ef3e2b428d52e61
6
+ metadata.gz: 4206bd86137641bea396f02d9935488e7b099c65515d41312e372f9ad8dc0c80d8352190049a92907f2c6db78e0a1a438fa7743a418ee5cdcfe59612e2cafcb2
7
+ data.tar.gz: 9f4d5f519809aa4d2c720358f82c888657235781d4713ba705a35331e3ad6c24396b0031b05cae74d5cfef0c1996e8a56180766b363fd473aa42fcd90cc6cc7f
@@ -10,7 +10,7 @@ jobs:
10
10
  strategy:
11
11
  fail-fast: false
12
12
  matrix:
13
- ruby: ["2.3", "2.4", "2.5", "2.6", "2.7", "3.0", "3.1", "3.2", ruby-head, jruby-9.2, jruby-9.3, jruby-head]
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 which was sort of like Dwarf Fortress. Most of the project files were lost, but since Remedy was extracted from it and open-sourced it has lived on.
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
 
@@ -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 *args
83
+ yield(*args)
70
84
  end
71
85
  end
72
86
 
@@ -37,6 +37,7 @@ module Remedy; module Console; module Resize
37
37
  end
38
38
  end
39
39
 
40
+ ensure
40
41
  resized!
41
42
  end
42
43
  end
@@ -68,7 +68,7 @@ module Remedy
68
68
  print " -- #{message}" if message
69
69
 
70
70
  ANSI.cursor.hide!
71
- key = Keyboard.get
71
+ Keyboard.get
72
72
  end
73
73
  end
74
74
  end
@@ -33,7 +33,7 @@ module Remedy
33
33
  alias_method :length, :height
34
34
 
35
35
  def width
36
- lines.map{|line| line.length }.max
36
+ lines.map{|line| line.length }.max || 0
37
37
  end
38
38
 
39
39
  def size
@@ -1,3 +1,3 @@
1
1
  module Remedy
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -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 *range
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
- Size Console.size
39
+ Console.size
40
40
  end
41
41
 
42
42
  def get_range offset, actual, available
data/remedy.gemspec CHANGED
@@ -18,5 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
+ gem.required_ruby_version = '>=2.5'
22
+
21
23
  gem.add_development_dependency 'rspec'
24
+ gem.add_development_dependency 'rake'
22
25
  end
@@ -1,19 +1,34 @@
1
- require_relative 'spec_helper'
2
- require 'remedy/viewport'
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
- @stdout = $stdout
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
- sio = StringIO.new
13
- $stdout = sio
14
- screen.draw joke unless ENV['CI']
15
- expect(sio.string).to include("ice cream")
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.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: 2023-10-05 00:00:00.000000000 Z
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: '0'
93
+ version: '2.5'
81
94
  required_rubygems_version: !ruby/object:Gem::Requirement
82
95
  requirements:
83
96
  - - ">="
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3.1
4
- - 2.2.5
5
- - 2.1.9
6
- - ruby-head
7
-
8
- before_install:
9
- - gem update bundler
10
- script: bundle exec rspec
11
-
12
- matrix:
13
- allow_failures:
14
- - rvm: ruby-head
15
-
16
- sudo: false