kramdown-ansi 0.0.1 → 0.0.3

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: dd37ac254127e9b4654a9a7621159894bee90193506f2b30fad07e3db7978663
4
- data.tar.gz: 9cf0fa562dd8e274b7fba315c85c9148082ba71afdaf5a9f11a4e2ba201787b9
3
+ metadata.gz: 321a4eec7c5e73169503bd328310cb2d9a87db5c324fe4932d5512b5b704f761
4
+ data.tar.gz: cc3a340e04a4dd934089112dcb9a15553f0120c5ee5e51cbf9e6507f3dc08fa6
5
5
  SHA512:
6
- metadata.gz: 8e72c1899f5338ed596bd4dc6a367e9ed32d9eb3a1cdcbc9ec9c4b1476557934de5ac5706d63f85a77f73880ad6a0316a26a5b58f4768cf77aebcf0d9076cc1b
7
- data.tar.gz: 7cdd5cde26c6e8a15975d75c867fa57b78fe07794b6a785802c6c5098fc6004a2b1a6b95d78eca4ad58df3c0ef214ffc5e2d4d4b27502d436a40db10b5711229
6
+ metadata.gz: 9edd4e208d70b903ca25eee9e6b634f95c56501975c014d095de2f696e53050c379837bb58147b8a9a4aeb474508c772400577bcbfc2a99bcd4d2f4d8d7dd275
7
+ data.tar.gz: e4887d5eab51e9badbb0f4e5c111aa99962a564ec7ec689e12aa2c3429948a305a5710c59cd1b07637536eab95ac68058a6304dae5fd7f62865cf69d1380d590
data/CHANGES.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changes
2
2
 
3
+ ## 2025-02-28 v0.0.3
4
+
5
+ * Improve `all_images` testing
6
+ * Updated Docker RUN command to install build-base and yaml-dev packages.
7
+ * Updated `gem_hadar` development dependency to version ~> **1.20**.
8
+ * Removed gem update and install commands.
9
+ * Added Docker image for **3.4** Ruby version.
10
+ * Improve documentation
11
+ * Added images of `md` and `git-md` output to README.
12
+ * Added new files `img/git-md.png` and `img/md.png`.
13
+ * Updated list of files in `kramdown-ansi.gemspec`.
14
+
15
+ ## 2024-12-08 v0.0.2
16
+
17
+ * Added handling of `Interrupt` and `Errno::EPIPE` exceptions when using pager in `md` and `git-md` executables:
18
+ * Added require `'term/ansicolor'` to `Kramdown::ANSI::Pager`.
19
+ * Added rescue blocks in `Kramdown::ANSI::Pager.pager` to catch `Interrupt`, `Errno::EPIPE` exceptions.
20
+ * Added `pager_reset_screen` method to reset terminal screen by printing ANSI escape codes.
21
+ * Updated `spec/kramdown/ansi/pager_spec.rb` with tests for new functionality.
22
+
3
23
  ## 2024-10-31 v0.0.1
4
24
 
5
25
  * Strip CSI and OSC sequences in `Terminal::Table`:
data/README.md CHANGED
@@ -62,6 +62,10 @@ open a pager command like `less` or `more` and pipes its output into it.
62
62
  By setting the `PAGER` environment variable accordingly one can define a custom
63
63
  command for this purpose.
64
64
 
65
+ The output of the `md` command can be seen in this screenshot:
66
+
67
+ ![md output](./img/md.png)
68
+
65
69
  ### The git-md executable
66
70
 
67
71
  The `git-md` executable is a git plugin that can be used to output markdown
@@ -85,6 +89,11 @@ pager command was defined setting `git config set core.pager FOO`, in which
85
89
  case the FOO command is used as a pager for all git commands including `git
86
90
  md`.
87
91
 
92
+ The output of the `git md` command can be seen in this screenshot:
93
+
94
+ ![git md output](./img/git-md.png)
95
+
96
+
88
97
  ## Download
89
98
 
90
99
  The homepage of this library is located at
@@ -101,7 +110,7 @@ This software is licensed under the <i>MIT</i> license.
101
110
 
102
111
  ## Mandatory Kitten Image
103
112
 
104
- ![cat](spec/assets/kitten.jpg)
113
+ ![cat](./spec/assets/kitten.jpg)
105
114
 
106
115
  ---
107
116
 
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ GemHadar do
19
19
  '.yardoc', 'doc', 'tags', 'errors.lst', 'cscope.out', 'coverage', 'tmp',
20
20
  'yard'
21
21
  package_ignore '.all_images.yml', '.tool-versions', '.gitignore', 'VERSION',
22
- '.rspec', *Dir.glob('.github/**/*', File::FNM_DOTMATCH)
22
+ '.rspec', *Dir.glob('.github/**/*', File::FNM_DOTMATCH)
23
23
  readme 'README.md'
24
24
 
25
25
  executables << 'md' << 'git-md'
data/img/git-md.png ADDED
Binary file
data/img/md.png ADDED
Binary file
@@ -1,30 +1,30 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: kramdown-ansi 0.0.1 ruby lib
2
+ # stub: kramdown-ansi 0.0.3 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "kramdown-ansi".freeze
6
- s.version = "0.0.1".freeze
6
+ s.version = "0.0.3".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-10-31"
11
+ s.date = "2025-02-28"
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]
15
15
  s.extra_rdoc_files = ["README.md".freeze, "lib/kramdown/ansi.rb".freeze, "lib/kramdown/ansi/pager.rb".freeze, "lib/kramdown/ansi/width.rb".freeze, "lib/kramdown/version.rb".freeze]
16
- s.files = ["CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "bin/git-md".freeze, "bin/md".freeze, "kramdown-ansi.gemspec".freeze, "lib/kramdown/ansi.rb".freeze, "lib/kramdown/ansi/pager.rb".freeze, "lib/kramdown/ansi/width.rb".freeze, "lib/kramdown/version.rb".freeze, "spec/assets/README.ansi".freeze, "spec/assets/kitten.jpg".freeze, "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]
16
+ s.files = ["CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "bin/git-md".freeze, "bin/md".freeze, "img/git-md.png".freeze, "img/md.png".freeze, "kramdown-ansi.gemspec".freeze, "lib/kramdown/ansi.rb".freeze, "lib/kramdown/ansi/pager.rb".freeze, "lib/kramdown/ansi/width.rb".freeze, "lib/kramdown/version.rb".freeze, "spec/assets/README.ansi".freeze, "spec/assets/kitten.jpg".freeze, "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]
17
17
  s.homepage = "https://github.com/flori/kramdown-ansi".freeze
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.22".freeze
21
+ s.rubygems_version = "3.6.2".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
 
25
25
  s.specification_version = 4
26
26
 
27
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.19".freeze])
27
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.20".freeze])
28
28
  s.add_development_dependency(%q<all_images>.freeze, ["~> 0.4".freeze])
29
29
  s.add_development_dependency(%q<rspec>.freeze, ["~> 3.2".freeze])
30
30
  s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
@@ -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
@@ -1,6 +1,6 @@
1
1
  module Kramdown
2
2
  # Kramdown version
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.3'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -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,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-ansi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-10-31 00:00:00.000000000 Z
10
+ date: 2025-02-28 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: gem_hadar
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '1.19'
18
+ version: '1.20'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '1.19'
25
+ version: '1.20'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: all_images
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -144,6 +143,8 @@ files:
144
143
  - Rakefile
145
144
  - bin/git-md
146
145
  - bin/md
146
+ - img/git-md.png
147
+ - img/md.png
147
148
  - kramdown-ansi.gemspec
148
149
  - lib/kramdown/ansi.rb
149
150
  - lib/kramdown/ansi/pager.rb
@@ -159,7 +160,6 @@ homepage: https://github.com/flori/kramdown-ansi
159
160
  licenses:
160
161
  - MIT
161
162
  metadata: {}
162
- post_install_message:
163
163
  rdoc_options:
164
164
  - "--title"
165
165
  - Kramdown-ansi - Output markdown in the terminal with ANSI escape sequences
@@ -178,8 +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.22
182
- signing_key:
181
+ rubygems_version: 3.6.2
183
182
  specification_version: 4
184
183
  summary: Output markdown in the terminal with ANSI escape sequences
185
184
  test_files: