gitlab-glfm-markdown 0.0.12-arm64-darwin → 0.0.14-arm64-darwin

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: 79554ac20de0aecab848caa382572f611a135c8344000c07244e2b945cf7fc05
4
- data.tar.gz: be79fe65bcf3eec2e6b6d8fcdbba76a5304d833a77df18018c025a73142c7399
3
+ metadata.gz: 024fd187f39a9309cb0ed0d2ca59b1c7c9a701d8064df3df7d93db6622dd4b36
4
+ data.tar.gz: 4768c2b3d420fd80785c98cee100a37d7d7a1bbbd23ec4302c965d86e1ac72e6
5
5
  SHA512:
6
- metadata.gz: 1fe71166534173738d7b5dde3d1ddd8dad31dd102761ae8b548fcb71797fbb60dac397ad6a6b57b495d52977a18bbc053b8f8621b3923684abdde25cc6481156
7
- data.tar.gz: 522ccf16b6280adb640ce4acb298a008740f547abe8c60069f665eaa628416e5c44fecb41f2f476ad3cd5577e8efea5724f110af343f13becd8c032ad9f8cdb1
6
+ metadata.gz: cf8a703be24928f78998b723c23a8bb1c67da2dcedf35d8d17e4ee9e552ebf621b6103c388dfd41aaa919ef0c30158770e5c4b547508a7c4bcd53a24e813cf95
7
+ data.tar.gz: b4c4bde9f3d3bf56e5e6b754d1cb91d6087309760e8b238b039ddb7bb97164a2517ca06f06b561c704b344545b8eb759c06b9fa2d6a6f4ff52ac11845c6688d1
data/Cargo.lock CHANGED
@@ -216,9 +216,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
216
216
 
217
217
  [[package]]
218
218
  name = "comrak"
219
- version = "0.21.0"
219
+ version = "0.22.0"
220
220
  source = "registry+https://github.com/rust-lang/crates.io-index"
221
- checksum = "6751998a48e2327773c95f6f8e03c6e77c0156ce539d74c17d2199ff3d05e197"
221
+ checksum = "d0436149c9f6a1935b13306206c739b1ba84fa81f551b5eb87fc2ca7a13700af"
222
222
  dependencies = [
223
223
  "derive_builder",
224
224
  "entities",
@@ -361,7 +361,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
361
361
 
362
362
  [[package]]
363
363
  name = "glfm_markdown"
364
- version = "0.0.12"
364
+ version = "0.0.14"
365
365
  dependencies = [
366
366
  "clap",
367
367
  "comrak",
data/README.md CHANGED
@@ -3,9 +3,11 @@
3
3
  [![Pipeline status](https://gitlab.com/gitlab-org/ruby/gems/gitlab-glfm-markdown/badges/main/pipeline.svg)](https://gitlab.com/gitlab-org/ruby/gems/gitlab-glfm-markdown/-/commits/main)
4
4
  [![Latest Release](https://gitlab.com/gitlab-org/ruby/gems/gitlab-glfm-markdown/-/badges/release.svg)](https://gitlab.com/gitlab-org/ruby/gems/gitlab-glfm-markdown/-/releases)
5
5
 
6
- Implements GLFM (as used by GitLab) using a Rust-based markdown parser.
6
+ Implements GLFM (as used by GitLab) using the Rust-based markdown parser [comrak](https://github.com/kivikakk/comrak)
7
+ and providing a Ruby interface.\
8
+ _Currently using `comrak 0.22.0`_.
7
9
 
8
- This project is currently EXPLORATORY, so anything and everything will change.
10
+ This project is still in constant flux, so interfaces and functionality can change at any time.
9
11
 
10
12
  ## Installation
11
13
 
@@ -25,9 +27,37 @@ Try on command line:
25
27
  rake compile
26
28
  bin/console
27
29
 
28
- GLFMMarkdown.to_html('# header', options: { glfm: true })
30
+ GLFMMarkdown.to_html('# header', options: { sourcepos: true })
29
31
  ```
30
32
 
33
+ ### Options
34
+
35
+ | Option name | Description |
36
+ |------------------------------|---------------------------------------------------------------------------------------|
37
+ | `autolink` | Enable the `autolink` extension |
38
+ | `description_lists` | Enable the `description-lists` extension |
39
+ | `escape` | Escape raw HTML instead of clobbering it |
40
+ | `escape_char_spans` | Wrap escaped characters in a `<span>` to allow any post-processing to recognize them |
41
+ | `footnotes` | Enable the `footnotes` extension |
42
+ | `full_info_string` | Enable full info strings for code blocks |
43
+ | `github_pre_lang` | Use GitHub-style `<pre lang>` for code blocks |
44
+ | `hardbreaks` | Treat newlines as hard line breaks |
45
+ | `header_ids <PREFIX>` | Enable the `header-id` extension, with the given ID prefix |
46
+ | `math_code` | Enables `math code` extension, using math code syntax |
47
+ | `math_dollars` | Enables `math dollars` extension, using math dollar syntax |
48
+ | `multiline_block_quotes` | Enable the `multiline-block-quotes` extension |
49
+ | `relaxed_autolinks` | Enable relaxing of autolink parsing, allowing links to be recognized when in brackets |
50
+ | `relaxed_tasklist_character` | Enable relaxing which character is allowed in tasklists |
51
+ | `sourcepos` | Include source mappings in HTML attributes |
52
+ | `smart` | Use smart punctuation |
53
+ | `strikethrough` | Enable the `strikethrough` extension |
54
+ | `superscript` | Enable the `superscript` extension |
55
+ | `table` | Enable the `table` extension |
56
+ | `tagfilter` | Enable the `tagfilter` extension |
57
+ | `tasklist` | Enable the `tasklist` extension |
58
+ | `unsafe` | Allow raw HTML and dangerous URLs |
59
+ | `debug` | Show debug information |
60
+
31
61
  ## Dingus / Demo
32
62
 
33
63
  A demo is running via GitLab Pages, and can be accessed at:
@@ -50,18 +80,16 @@ directly to the gem's source directory, make sure that you're using the same ver
50
80
  of Ruby for the project and the gem. Otherwise you can see unexplained errors when
51
81
  calling into the gem.
52
82
 
53
- ### Releasing a new version
83
+ NOTE: This project generates a changelog automatically that gets attached to the release entry.
84
+ The normal [GitLab changelog entry process](https://docs.gitlab.com/ee/development/changelog.html)
85
+ should be followed.
54
86
 
55
- To release a new version:
87
+ ### Releasing a new version
56
88
 
57
- 1. Update `lib/glfm_markdown/version.rb` with the version number.
58
- 1. Update `CHANGELOG.md` with the changes in the release.
59
- 1. Create a merge request and merge it to `master`.
60
- 1. Push a new tag to the repository.
89
+ To release a new version, create a merge request and use the `Release` template, following it's instructions.
61
90
 
62
- The new version with precompiled, native gems will automatically be
63
- published to [RubyGems](https://rubygems.org/gems/gitlab-glfm-markdown) when the
64
- pipeline for the tag completes.
91
+ Once merged, the new version with precompiled, native gems will automatically be
92
+ published to [RubyGems](https://rubygems.org/gems/gitlab-glfm-markdown).
65
93
 
66
94
  ## Contributing
67
95
 
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "glfm_markdown"
3
- version = "0.0.12"
3
+ version = "0.0.14"
4
4
  edition = "2021"
5
5
  authors = ["digitalmoksha <bwalker@gitlab.com>"]
6
6
  description = "GitLab Flavored Markdown parser and formatter. 100% CommonMark-compatible. Experimental."
@@ -15,7 +15,7 @@ required-features = ["cli"]
15
15
 
16
16
  [dependencies]
17
17
  clap = { version = "4.0", optional = true, features = ["derive", "string"] }
18
- comrak = { version = "0.21.0", default-features = false }
18
+ comrak = { version = "0.22.0", default-features = false }
19
19
  magnus = "0.6.2"
20
20
  rb-sys = { version = "0.9.86", default-features = false, features = ["stable-api-compiled-fallback"] }
21
21
 
@@ -3,10 +3,14 @@ pub struct RenderOptions {
3
3
  pub autolink: bool,
4
4
  pub escape: bool,
5
5
  pub description_lists: bool,
6
+ pub escaped_char_spans: bool,
6
7
  pub footnotes: bool,
7
8
  pub full_info_string: bool,
8
9
  pub github_pre_lang: bool,
9
10
  pub hardbreaks: bool,
11
+ pub header_ids: Option<String>,
12
+ pub math_code: bool,
13
+ pub math_dollars: bool,
10
14
  pub multiline_block_quotes: bool,
11
15
  pub relaxed_autolinks: bool,
12
16
  pub relaxed_tasklist_character: bool,
@@ -32,6 +36,9 @@ fn render_comrak(text: String, options: RenderOptions) -> String {
32
36
  comrak_options.extension.autolink = options.autolink;
33
37
  comrak_options.extension.description_lists = options.description_lists;
34
38
  comrak_options.extension.footnotes = options.footnotes;
39
+ comrak_options.extension.header_ids = options.header_ids;
40
+ comrak_options.extension.math_code = options.math_code;
41
+ comrak_options.extension.math_dollars = options.math_dollars;
35
42
  comrak_options.extension.multiline_block_quotes = options.multiline_block_quotes;
36
43
  comrak_options.extension.strikethrough = options.strikethrough;
37
44
  comrak_options.extension.superscript = options.superscript;
@@ -40,6 +47,7 @@ fn render_comrak(text: String, options: RenderOptions) -> String {
40
47
  comrak_options.extension.tasklist = options.tasklist;
41
48
 
42
49
  comrak_options.render.escape = options.escape;
50
+ comrak_options.render.escaped_char_spans = options.escaped_char_spans;
43
51
  comrak_options.render.full_info_string = options.full_info_string;
44
52
  comrak_options.render.github_pre_lang = options.github_pre_lang;
45
53
  comrak_options.render.hardbreaks = options.hardbreaks;
@@ -5,31 +5,39 @@ use glfm::{render, RenderOptions};
5
5
 
6
6
  /// Lookup symbol in provided `RHash`. Returns `false` if the key is not present
7
7
  /// or value cannot be converted to a boolean.
8
- fn get_opt(arg: &str, options: RHash) -> bool {
8
+ fn get_bool_opt(arg: &str, options: RHash) -> bool {
9
9
  options.lookup(Symbol::new(arg)).unwrap_or_default()
10
10
  }
11
11
 
12
+ fn get_string_opt(arg: &str, options: RHash) -> Option<String> {
13
+ options.lookup(Symbol::new(arg)).ok()
14
+ }
15
+
12
16
  pub fn render_to_html_rs(text: String, options: RHash) -> String {
13
17
  let render_options = RenderOptions {
14
- autolink: get_opt("autolink", options),
15
- description_lists: get_opt("description_lists", options),
16
- escape: get_opt("escape", options),
17
- footnotes: get_opt("footnotes", options),
18
- full_info_string: get_opt("full_info_string", options),
19
- github_pre_lang: get_opt("github_pre_lang", options),
20
- hardbreaks: get_opt("hardbreaks", options),
21
- multiline_block_quotes: get_opt("multiline_block_quotes", options),
22
- relaxed_autolinks: get_opt("relaxed_autolinks", options),
23
- relaxed_tasklist_character: get_opt("relaxed_tasklist_character", options),
24
- sourcepos: get_opt("sourcepos", options),
25
- smart: get_opt("smart", options),
26
- strikethrough: get_opt("strikethrough", options),
27
- superscript: get_opt("superscript", options),
28
- table: get_opt("table", options),
29
- tagfilter: get_opt("tagfilter", options),
30
- tasklist: get_opt("tasklist", options),
31
- unsafe_: get_opt("unsafe", options),
32
- debug: get_opt("debug", options),
18
+ autolink: get_bool_opt("autolink", options),
19
+ description_lists: get_bool_opt("description_lists", options),
20
+ escape: get_bool_opt("escape", options),
21
+ escaped_char_spans: get_bool_opt("escaped_char_spans", options),
22
+ footnotes: get_bool_opt("footnotes", options),
23
+ full_info_string: get_bool_opt("full_info_string", options),
24
+ github_pre_lang: get_bool_opt("github_pre_lang", options),
25
+ hardbreaks: get_bool_opt("hardbreaks", options),
26
+ header_ids: get_string_opt("header_ids", options),
27
+ math_code: get_bool_opt("math_code", options),
28
+ math_dollars: get_bool_opt("math_dollars", options),
29
+ multiline_block_quotes: get_bool_opt("multiline_block_quotes", options),
30
+ relaxed_autolinks: get_bool_opt("relaxed_autolinks", options),
31
+ relaxed_tasklist_character: get_bool_opt("relaxed_tasklist_character", options),
32
+ sourcepos: get_bool_opt("sourcepos", options),
33
+ smart: get_bool_opt("smart", options),
34
+ strikethrough: get_bool_opt("strikethrough", options),
35
+ superscript: get_bool_opt("superscript", options),
36
+ table: get_bool_opt("table", options),
37
+ tagfilter: get_bool_opt("tagfilter", options),
38
+ tasklist: get_bool_opt("tasklist", options),
39
+ unsafe_: get_bool_opt("unsafe", options),
40
+ debug: get_bool_opt("debug", options),
33
41
  };
34
42
 
35
43
  render(text, render_options)
@@ -24,6 +24,10 @@ struct Args {
24
24
  #[arg(long)]
25
25
  escape: bool,
26
26
 
27
+ /// Wrap escaped characters in a `<span>` to allow any post-processing to recognize them
28
+ #[arg(long)]
29
+ escaped_char_spans: bool,
30
+
27
31
  /// Enable 'footnotes' extension
28
32
  #[arg(long)]
29
33
  footnotes: bool,
@@ -40,6 +44,22 @@ struct Args {
40
44
  #[arg(long)]
41
45
  hardbreaks: bool,
42
46
 
47
+ /// Enable the 'header IDs` extension, with the given ID prefix
48
+ #[arg(long, value_name = "PREFIX")]
49
+ header_ids: Option<String>,
50
+
51
+ /// Enables `math code` extension, using math code syntax
52
+ #[arg(long)]
53
+ math_code: bool,
54
+
55
+ /// Enables `math dollar` extension, using math dollar syntax
56
+ #[arg(long)]
57
+ math_dollars: bool,
58
+
59
+ /// Enable 'multiline block quotes' extension
60
+ #[arg(long)]
61
+ multiline_block_quotes: bool,
62
+
43
63
  /// Write output to FILE instead of stdout
44
64
  #[arg(short, long, value_name = "FILE")]
45
65
  output: Option<String>,
@@ -107,10 +127,15 @@ fn main() {
107
127
  autolink: cli.autolink,
108
128
  description_lists: cli.description_lists,
109
129
  escape: cli.escape,
130
+ escaped_char_spans: cli.escaped_char_spans,
110
131
  footnotes: cli.footnotes,
111
132
  full_info_string: cli.full_info_string,
112
133
  github_pre_lang: cli.github_pre_lang,
113
134
  hardbreaks: cli.hardbreaks,
135
+ header_ids: cli.header_ids,
136
+ math_code: cli.math_code,
137
+ math_dollars: cli.math_dollars,
138
+ multiline_block_quotes: cli.multiline_block_quotes,
114
139
  relaxed_autolinks: cli.relaxed_autolinks,
115
140
  relaxed_tasklist_character: cli.relaxed_tasklist_character,
116
141
  sourcepos: cli.sourcepos,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GLFMMarkdown
4
- VERSION = '0.0.12'
4
+ VERSION = '0.0.14'
5
5
  end
data/lib/glfm_markdown.rb CHANGED
@@ -8,10 +8,13 @@ load_rust_extension
8
8
  module GLFMMarkdown
9
9
  GLFM_DEFAULT_OPTIONS = {
10
10
  autolink: true,
11
+ escaped_char_spans: false,
11
12
  footnotes: true,
12
13
  full_info_string: true,
13
14
  github_pre_lang: false,
14
15
  hardbreaks: false,
16
+ math_code: false,
17
+ math_dollars: false,
15
18
  multiline_block_quotes: true,
16
19
  relaxed_autolinks: false,
17
20
  sourcepos: true,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-glfm-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.14
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Brett Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-29 00:00:00.000000000 Z
11
+ date: 2024-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys