rb_markdown 0.2.3 → 0.2.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/src/markdown/ansi_formatter.rb +69 -0
- data/src/markdown/code_block_renderer.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: be41b3bf2cd56c672f4ead95602664da0d195ecd1c3fb61efc8ae088ce8be659
|
|
4
|
+
data.tar.gz: 0f26af64562628654112aca2c2c8d0b7507b72814209672fbbd063c61852358b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f64334004ad58643953b315a64817db7ccfff90a07669714612704f37ab87c454a77050799d635e631f4eb521b694454c12c3aafab9c482a9382e5eb220a682e
|
|
7
|
+
data.tar.gz: b1dca99f3ab74be65870b75d22b8ab40ab82362c79aeb835b7bdce354f4b4389b9ee41bbec6e8ba4577b5fae09158ddc2432a9aa77f14b44e113f92203dc6ac0
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rouge"
|
|
4
|
+
|
|
5
|
+
module Markdown
|
|
6
|
+
class AnsiFormatter < Rouge::Formatter
|
|
7
|
+
COLOR_MAP = {
|
|
8
|
+
"Comment" => "90",
|
|
9
|
+
"Comment.Preproc" => "1;90",
|
|
10
|
+
"Comment.Special" => "1;3;90",
|
|
11
|
+
"Error" => "31",
|
|
12
|
+
"Generic.Deleted" => "31",
|
|
13
|
+
"Generic.Emph" => "3",
|
|
14
|
+
"Generic.Error" => "31",
|
|
15
|
+
"Generic.Heading" => "90",
|
|
16
|
+
"Generic.Inserted" => "32",
|
|
17
|
+
"Generic.Output" => "90",
|
|
18
|
+
"Generic.Prompt" => "90",
|
|
19
|
+
"Generic.Strong" => "1",
|
|
20
|
+
"Generic.Subheading" => "37",
|
|
21
|
+
"Generic.Traceback" => "31",
|
|
22
|
+
"Keyword" => "1;36",
|
|
23
|
+
"Keyword.Namespace" => "1;31",
|
|
24
|
+
"Literal.Number" => "35",
|
|
25
|
+
"Literal.String" => "33",
|
|
26
|
+
"Literal.String.Affix" => "1;36",
|
|
27
|
+
"Literal.String.Escape" => "35",
|
|
28
|
+
"Name.Attribute" => "32",
|
|
29
|
+
"Name.Class" => "1;32",
|
|
30
|
+
"Name.Constant" => "36",
|
|
31
|
+
"Name.Decorator" => "1;32",
|
|
32
|
+
"Name.Exception" => "1;32",
|
|
33
|
+
"Name.Function" => "1;32",
|
|
34
|
+
"Name.Label" => "1",
|
|
35
|
+
"Name.Tag" => "31",
|
|
36
|
+
"Operator" => "1;31",
|
|
37
|
+
"Operator.Word" => "1;31",
|
|
38
|
+
}.freeze
|
|
39
|
+
|
|
40
|
+
def stream(tokens, &b)
|
|
41
|
+
tokens.each do |tok, val|
|
|
42
|
+
code = ansi_code_for(tok)
|
|
43
|
+
if code
|
|
44
|
+
yield "\e[#{code}m"
|
|
45
|
+
yield val
|
|
46
|
+
yield "\e[0m"
|
|
47
|
+
else
|
|
48
|
+
yield val
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def ansi_code_for(token)
|
|
56
|
+
@cache ||= {}
|
|
57
|
+
@cache.fetch(token.qualname) { @cache[token.qualname] = resolve_code(token) }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def resolve_code(token)
|
|
61
|
+
t = token
|
|
62
|
+
while t
|
|
63
|
+
return COLOR_MAP[t.qualname] if COLOR_MAP.key?(t.qualname)
|
|
64
|
+
t = t.parent
|
|
65
|
+
end
|
|
66
|
+
nil
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "rouge"
|
|
4
|
+
require_relative "./ansi_formatter"
|
|
4
5
|
|
|
5
6
|
module Markdown
|
|
6
7
|
class CodeBlockRenderer
|
|
@@ -8,8 +9,7 @@ module Markdown
|
|
|
8
9
|
lexer = Rouge::Lexer.find(language) if language
|
|
9
10
|
lexer ||= Rouge::Lexers::PlainText.new
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
formatter.format(lexer.lex(content)).gsub(/\033\[[0-9;]*m/) { |seq| seq.gsub(/;0?4(?=[;m])/, "") }
|
|
12
|
+
AnsiFormatter.new.format(lexer.lex(content))
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rb_markdown
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aurélien Delogu
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-06-
|
|
11
|
+
date: 2026-06-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_monkey
|
|
@@ -46,6 +46,7 @@ extra_rdoc_files: []
|
|
|
46
46
|
files:
|
|
47
47
|
- src/markdown/abstract_line_tag.rb
|
|
48
48
|
- src/markdown/abstract_tag.rb
|
|
49
|
+
- src/markdown/ansi_formatter.rb
|
|
49
50
|
- src/markdown/block_splitter.rb
|
|
50
51
|
- src/markdown/bold_tag.rb
|
|
51
52
|
- src/markdown/code_block_renderer.rb
|