kramdown-syntax_tree_sitter 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09858b648cc381cb603b21a3ed091b1d96a25b55264f4dd2c4e8fe7436d68288'
|
4
|
+
data.tar.gz: 9ceeb8b78ac8cea098cbb329abbdc9e650202e676b042b647b3f0ca55665c3ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3a7cf735cab71d863433b3be34e8b1dd537cca412bfddb611b56d4ff8292b74f0f45283da701510d928d432ad4aa39224316a012eb07cbd524cc1977bfb3a2e
|
7
|
+
data.tar.gz: 23197c154c12ca2e97534829179dd2785c9907760f89205a7a7be3e80f3cca7f8f6dd2c6314897a887e1c45b55eaddbd05a2937321017378caa0d03e33e450a5
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Kramdown Tree-sitter Highlighter
|
2
2
|
|
3
|
-
[![Build status](https://img.shields.io/github/workflow/status/andrewtbiehl/kramdown-syntax_tree_sitter/
|
3
|
+
[![Build status](https://img.shields.io/github/actions/workflow/status/andrewtbiehl/kramdown-syntax_tree_sitter/quality-control.yml?branch=main&style=flat-square&logo=github)](https://github.com/andrewtbiehl/kramdown-syntax_tree_sitter/actions/workflows/quality-control.yml)
|
4
4
|
[![RubyGems page](https://img.shields.io/gem/v/kramdown-syntax_tree_sitter?style=flat-square&color=blue&logo=rubygems&logoColor=white)](https://rubygems.org/gems/kramdown-syntax_tree_sitter)
|
5
5
|
|
6
6
|
***Syntax highlight code with [Tree-sitter](https://tree-sitter.github.io/tree-sitter)
|
@@ -22,8 +22,8 @@ essentially an adapter for the
|
|
22
22
|
hence also requires a compatible [Rust](https://www.rust-lang.org) installation to
|
23
23
|
function. It is officially compatible with the following environments:
|
24
24
|
|
25
|
-
- **Ruby**: 2.7, 3.0, 3.1
|
26
|
-
- **Rust**: 1.
|
25
|
+
- **Ruby**: 2.7, 3.0, 3.1, 3.2
|
26
|
+
- **Rust**: 1.62, 1.63, 1.64, 1.65, 1.66
|
27
27
|
- **Platforms**: MacOS, Linux
|
28
28
|
|
29
29
|
### Installation
|
@@ -56,7 +56,7 @@ require 'kramdown'
|
|
56
56
|
require 'kramdown/syntax_tree_sitter'
|
57
57
|
|
58
58
|
text = <<~MARKDOWN
|
59
|
-
~~~
|
59
|
+
~~~python
|
60
60
|
print('Hello, World!')
|
61
61
|
~~~
|
62
62
|
MARKDOWN
|
@@ -64,6 +64,13 @@ MARKDOWN
|
|
64
64
|
Kramdown::Document.new(text, syntax_highlighter: :'tree-sitter').to_html
|
65
65
|
```
|
66
66
|
|
67
|
+
### General usage
|
68
|
+
|
69
|
+
To successfully highlight input text via Kramdown with this plugin enabled, make sure
|
70
|
+
that every language referenced has a corresponding Tree-sitter parser library installed.
|
71
|
+
See the subsequent ['Language identifiers'](#language-identifiers) and
|
72
|
+
['Tree-sitter parsers'](#tree-sitter-parsers) sections for more information.
|
73
|
+
|
67
74
|
### Usage with Jekyll
|
68
75
|
|
69
76
|
This plugin can be used with the popular static site generator
|
@@ -82,11 +89,9 @@ kramdown:
|
|
82
89
|
# Other Kramdown options...
|
83
90
|
```
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
subsequent ['Language identifiers'](#language-identifiers) and
|
89
|
-
['Tree-sitter parsers'](#tree-sitter-parsers) sections for more information.
|
92
|
+
Note that this plugin's general usage prerequisites (described in the previous
|
93
|
+
['General usage'](#general-usage) section) still apply when using this plugin with
|
94
|
+
Jekyll.
|
90
95
|
|
91
96
|
Also, there are multiple ways to render highlighted code blocks with Jekyll, as
|
92
97
|
illustrated in the following table:
|
@@ -103,13 +108,13 @@ illustrated in the following table:
|
|
103
108
|
|
104
109
|
---
|
105
110
|
````
|
106
|
-
```
|
111
|
+
```python
|
107
112
|
print('Hello, World!')
|
108
113
|
```
|
109
114
|
|
110
115
|
or
|
111
116
|
|
112
|
-
~~~
|
117
|
+
~~~python
|
113
118
|
print('Hello, World!')
|
114
119
|
~~~
|
115
120
|
````
|
@@ -125,7 +130,7 @@ print('Hello, World!')
|
|
125
130
|
---
|
126
131
|
```
|
127
132
|
print('Hello, World!')
|
128
|
-
{: class="language-
|
133
|
+
{: class="language-python" }
|
129
134
|
```
|
130
135
|
---
|
131
136
|
|
@@ -138,7 +143,7 @@ print('Hello, World!')
|
|
138
143
|
|
139
144
|
---
|
140
145
|
```
|
141
|
-
{% highlight
|
146
|
+
{% highlight python %}
|
142
147
|
print('Hello, World!')
|
143
148
|
{% endhighlight %}
|
144
149
|
```
|
@@ -171,12 +176,18 @@ can be found on
|
|
171
176
|
|
172
177
|
### Language identifiers
|
173
178
|
|
174
|
-
|
175
|
-
|
176
|
-
'
|
177
|
-
|
178
|
-
|
179
|
-
|
179
|
+
For most popular languages, this plugin recognizes the same language identifiers as used
|
180
|
+
by the popular highlighter [Rouge](https://github.com/rouge-ruby/rouge). For example,
|
181
|
+
both 'python' and 'py' may be used to identify a code block written in Python. For the
|
182
|
+
complete list of Rouge language identifiers recognized by this plugin, see
|
183
|
+
[`lib/kramdown/syntax_tree_sitter/languages.rb`](https://github.com/andrewtbiehl/kramdown-syntax_tree_sitter/blob/main/lib/kramdown/syntax_tree_sitter/languages.rb).
|
184
|
+
|
185
|
+
This plugin also automatically supports the language identifier format used by
|
186
|
+
Tree-sitter, known as as the 'scope' name. For example, the scope name for Python is
|
187
|
+
'source.python', whereas for HTML it is 'text.html.basic'.
|
188
|
+
|
189
|
+
For any identifiers currently supported by Rouge but not by this plugin, feel free to
|
190
|
+
open an issue or pull request on GitHub to have them included.
|
180
191
|
|
181
192
|
### CSS styling
|
182
193
|
|
@@ -31,9 +31,9 @@ dependencies = [
|
|
31
31
|
|
32
32
|
[[package]]
|
33
33
|
name = "anyhow"
|
34
|
-
version = "1.0.
|
34
|
+
version = "1.0.68"
|
35
35
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
36
|
-
checksum = "
|
36
|
+
checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
|
37
37
|
|
38
38
|
[[package]]
|
39
39
|
name = "ascii"
|
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'kramdown'
|
4
4
|
require 'tree_sitter_adapter'
|
5
5
|
|
6
|
+
require_relative '../../syntax_tree_sitter/languages'
|
7
|
+
|
6
8
|
module Kramdown
|
7
9
|
module Converter # rubocop:disable Style/Documentation
|
8
10
|
module SyntaxHighlighter
|
@@ -13,13 +15,14 @@ module Kramdown
|
|
13
15
|
module TreeSitter
|
14
16
|
DEFAULT_PARSERS_DIR = '~/tree_sitter_parsers'
|
15
17
|
|
16
|
-
def self.call(converter, raw_text,
|
17
|
-
return nil unless
|
18
|
+
def self.call(converter, raw_text, language_alias, type, _)
|
19
|
+
return nil unless language_alias
|
18
20
|
|
21
|
+
language_scope = LANGUAGE_SCOPES.fetch(language_alias, language_alias)
|
19
22
|
rendered_text = TreeSitterAdapter.highlight(
|
20
23
|
raw_text,
|
21
24
|
get_parsers_dir(converter),
|
22
|
-
|
25
|
+
language_scope,
|
23
26
|
get_use_css_classes(converter)
|
24
27
|
)
|
25
28
|
# Code blocks are additionally wrapped in HTML code tags
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kramdown
|
4
|
+
module Converter
|
5
|
+
module SyntaxHighlighter
|
6
|
+
module TreeSitter
|
7
|
+
# Maps each recognized language alias to its corresponding Tree-sitter scope
|
8
|
+
LANGUAGE_SCOPES =
|
9
|
+
{
|
10
|
+
'source.R' => %w[R S r s],
|
11
|
+
'source.bash' => %w[bash ksh sh shell zsh],
|
12
|
+
'source.c' => %w[c],
|
13
|
+
'source.cpp' => %w[c++ cpp],
|
14
|
+
'source.cs' => %w[c# cs csharp],
|
15
|
+
'source.css' => %w[css],
|
16
|
+
'source.d' => %w[d dlang],
|
17
|
+
'source.dot' => %w[dot],
|
18
|
+
'source.elixir' => %w[elixir exs],
|
19
|
+
'source.elm' => %w[elm],
|
20
|
+
'source.emacs.lisp' => %w[elisp emacs-lisp],
|
21
|
+
'source.go' => %w[go golang],
|
22
|
+
'source.hack' => %w[hack hh],
|
23
|
+
'source.haskell' => %w[haskell hs],
|
24
|
+
'source.hcl' => %w[hcl],
|
25
|
+
'source.java' => %w[java],
|
26
|
+
'source.js' => %w[javascript js],
|
27
|
+
'source.json' => %w[json],
|
28
|
+
'source.julia' => %w[jl julia],
|
29
|
+
'source.lua' => %w[lua],
|
30
|
+
'source.mk' => %w[bsdmake gnumake make makefile mf],
|
31
|
+
'source.nix' => %w[nix nixos],
|
32
|
+
'source.objc' => %w[obj-c obj_c objc objective_c objectivec],
|
33
|
+
'source.ocaml' => %w[ocaml],
|
34
|
+
'source.perl' => %w[perl pl],
|
35
|
+
'source.php' => %w[php php3 php4 php5],
|
36
|
+
'source.proto' => %w[proto protobuf],
|
37
|
+
'source.python' => %w[py python],
|
38
|
+
'source.racket' => %w[racket],
|
39
|
+
'source.ruby' => %w[rb ruby],
|
40
|
+
'source.rust' => %w[rs rust],
|
41
|
+
'source.scala' => %w[scala],
|
42
|
+
'source.sparql' => %w[sparql],
|
43
|
+
'source.sql' => %w[sql],
|
44
|
+
'source.swift' => %w[swift],
|
45
|
+
'source.toml' => %w[toml],
|
46
|
+
'source.ts' => %w[ts typescript],
|
47
|
+
'source.vhd' => %w[vhdl],
|
48
|
+
'text.html.basic' => %w[html],
|
49
|
+
'text.html.erb' => %w[erb eruby rhtml]
|
50
|
+
}
|
51
|
+
.map { |scope, aliases| aliases.map { |alias_| [alias_, scope] } }
|
52
|
+
.flatten(1)
|
53
|
+
.to_h
|
54
|
+
.freeze
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown-syntax_tree_sitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew T. Biehl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- ext/tree_sitter_adapter/src/tree_sitter_adapter.rs
|
140
140
|
- lib/kramdown/converter/syntax_highlighter/tree_sitter.rb
|
141
141
|
- lib/kramdown/syntax_tree_sitter.rb
|
142
|
+
- lib/kramdown/syntax_tree_sitter/languages.rb
|
142
143
|
- lib/kramdown/syntax_tree_sitter/version.rb
|
143
144
|
- lib/tree_sitter_adapter.rb
|
144
145
|
homepage: https://github.com/andrewtbiehl/kramdown-syntax_tree_sitter
|
@@ -161,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
162
|
- !ruby/object:Gem::Version
|
162
163
|
version: '0'
|
163
164
|
requirements: []
|
164
|
-
rubygems_version: 3.
|
165
|
+
rubygems_version: 3.4.1
|
165
166
|
signing_key:
|
166
167
|
specification_version: 4
|
167
168
|
summary: Syntax highlight code with Tree-sitter via Kramdown.
|