kramdown-ansi 0.0.1 → 0.0.2
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/CHANGES.md +8 -0
- data/kramdown-ansi.gemspec +4 -4
- data/lib/kramdown/ansi/pager.rb +14 -0
- data/lib/kramdown/version.rb +1 -1
- data/spec/kramdown/ansi/pager_spec.rb +29 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abe5c3ac6431c1a6f2997c3c1414aa57fbfdb1c8eb2938b0bb9b7c59273c33ce
|
4
|
+
data.tar.gz: c1baef27fc70c8b613f911e5d7c945d9b8739faa0ef3b95e1cf771d705606a0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46da2186b55e0974b27ee06bbc5432b98e3dc2df22077f6a48208888ff1024c387dceae1e0dfbf0a0e17137442b33e35662a52e70e666deb017f6e622750a042
|
7
|
+
data.tar.gz: d743a08d17ebb58d7e906bca24300e0effb75e44004d40cebf5cdb5039fa0cfe6b63387a6b958748eb757dadc1522dd463eb0235e0c3631f43784c2112ae80a4
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 2024-12-08 v0.0.2
|
4
|
+
|
5
|
+
* Added handling of `Interrupt` and `Errno::EPIPE` exceptions when using pager in `md` and `git-md` executables:
|
6
|
+
* Added require `'term/ansicolor'` to `Kramdown::ANSI::Pager`.
|
7
|
+
* Added rescue blocks in `Kramdown::ANSI::Pager.pager` to catch `Interrupt`, `Errno::EPIPE` exceptions.
|
8
|
+
* Added `pager_reset_screen` method to reset terminal screen by printing ANSI escape codes.
|
9
|
+
* Updated `spec/kramdown/ansi/pager_spec.rb` with tests for new functionality.
|
10
|
+
|
3
11
|
## 2024-10-31 v0.0.1
|
4
12
|
|
5
13
|
* Strip CSI and OSC sequences in `Terminal::Table`:
|
data/kramdown-ansi.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: kramdown-ansi 0.0.
|
2
|
+
# stub: kramdown-ansi 0.0.2 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "kramdown-ansi".freeze
|
6
|
-
s.version = "0.0.
|
6
|
+
s.version = "0.0.2".freeze
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2024-
|
11
|
+
s.date = "2024-12-08"
|
12
12
|
s.description = "Kramdown::ANSI: A library for rendering Markdown(ish) documents with\nbeautiful ANSI escape sequences in the terminal.\n".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
14
|
s.executables = ["md".freeze, "git-md".freeze]
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.licenses = ["MIT".freeze]
|
19
19
|
s.rdoc_options = ["--title".freeze, "Kramdown-ansi - Output markdown in the terminal with ANSI escape sequences".freeze, "--main".freeze, "README.md".freeze]
|
20
20
|
s.required_ruby_version = Gem::Requirement.new("~> 3.1".freeze)
|
21
|
-
s.rubygems_version = "3.5.
|
21
|
+
s.rubygems_version = "3.5.23".freeze
|
22
22
|
s.summary = "Output markdown in the terminal with ANSI escape sequences".freeze
|
23
23
|
s.test_files = ["spec/kramdown/ansi/pager_spec.rb".freeze, "spec/kramdown/ansi/width_spec.rb".freeze, "spec/kramdown/ansi_spec.rb".freeze, "spec/spec_helper.rb".freeze]
|
24
24
|
|
data/lib/kramdown/ansi/pager.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'tins/terminal'
|
2
|
+
require 'term/ansicolor'
|
2
3
|
|
3
4
|
module Kramdown::ANSI::Pager
|
4
5
|
module_function
|
@@ -18,10 +19,16 @@ module Kramdown::ANSI::Pager
|
|
18
19
|
IO.popen(my_pager, 'w') do |output|
|
19
20
|
output.sync = true
|
20
21
|
yield output
|
22
|
+
rescue Interrupt, Errno::EPIPE
|
23
|
+
pager_reset_screen
|
24
|
+
return nil
|
25
|
+
ensure
|
21
26
|
output.close
|
22
27
|
end
|
28
|
+
my_pager
|
23
29
|
else
|
24
30
|
yield STDOUT
|
31
|
+
nil
|
25
32
|
end
|
26
33
|
else
|
27
34
|
return unless STDOUT.tty?
|
@@ -34,4 +41,11 @@ module Kramdown::ANSI::Pager
|
|
34
41
|
end
|
35
42
|
end
|
36
43
|
end
|
44
|
+
|
45
|
+
# Resets the terminal screen by printing ANSI escape codes for reset, clear
|
46
|
+
# screen, move home and show cursor.
|
47
|
+
def pager_reset_screen
|
48
|
+
c = Term::ANSIColor
|
49
|
+
STDOUT.print c.reset, c.clear_screen, c.move_home, c.show_cursor
|
50
|
+
end
|
37
51
|
end
|
data/lib/kramdown/version.rb
CHANGED
@@ -38,14 +38,42 @@ RSpec.describe Kramdown::ANSI::Pager do
|
|
38
38
|
it 'can output to the command for paging if enough lines' do
|
39
39
|
expect(Tins::Terminal).to receive(:lines).and_return 25
|
40
40
|
block_called = false
|
41
|
-
Kramdown::ANSI::Pager.pager(command: command, lines: 30) do |output|
|
41
|
+
result = Kramdown::ANSI::Pager.pager(command: command, lines: 30) do |output|
|
42
42
|
expect(output).to be_a IO
|
43
43
|
expect(output).not_to eq STDOUT
|
44
44
|
block_called = true
|
45
45
|
end
|
46
46
|
expect(block_called).to eq true
|
47
|
+
expect(result).to eq command
|
47
48
|
end
|
48
49
|
|
50
|
+
it 'closes output for Interrupt' do
|
51
|
+
expect(Tins::Terminal).to receive(:lines).and_return 25
|
52
|
+
block_called = false
|
53
|
+
expect_any_instance_of(IO).to receive(:sync=).and_raise Interrupt
|
54
|
+
expect_any_instance_of(IO).to receive(:close).and_call_original
|
55
|
+
expect(described_class).to receive(:pager_reset_screen)
|
56
|
+
result = Kramdown::ANSI::Pager.pager(command: command, lines: 30) do |output|
|
57
|
+
block_called = true
|
58
|
+
end
|
59
|
+
expect(block_called).to eq false
|
60
|
+
expect(result).to be_nil
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'closes output for Errno::EPIPE' do
|
64
|
+
expect(Tins::Terminal).to receive(:lines).and_return 25
|
65
|
+
block_called = false
|
66
|
+
expect_any_instance_of(IO).to receive(:sync=).and_raise Errno::EPIPE
|
67
|
+
expect_any_instance_of(IO).to receive(:close).and_call_original
|
68
|
+
expect(described_class).to receive(:pager_reset_screen)
|
69
|
+
result = Kramdown::ANSI::Pager.pager(command: command, lines: 30) do |output|
|
70
|
+
block_called = true
|
71
|
+
end
|
72
|
+
expect(block_called).to eq false
|
73
|
+
expect(result).to be_nil
|
74
|
+
end
|
75
|
+
|
76
|
+
|
49
77
|
it 'can output STDOUT if not enough lines' do
|
50
78
|
expect(Tins::Terminal).to receive(:lines).and_return 25
|
51
79
|
block_called = false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown-ansi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -178,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: '0'
|
180
180
|
requirements: []
|
181
|
-
rubygems_version: 3.5.
|
181
|
+
rubygems_version: 3.5.23
|
182
182
|
signing_key:
|
183
183
|
specification_version: 4
|
184
184
|
summary: Output markdown in the terminal with ANSI escape sequences
|