gitlab-glfm-markdown 0.0.40 → 0.0.41
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/Cargo.lock +15 -79
- data/ext/gitlab_glfm_markdown/Cargo.toml +2 -2
- data/ext/gitlab_glfm_markdown/src/formatter.rs +91 -1
- data/lib/gitlab_glfm_markdown/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1445bbc636daa93e3ce66ea8badaf7a7fe35e22336c9f1bf4cb73bd675e42841
|
|
4
|
+
data.tar.gz: 965093d0179080780839cd1a432530a378f239f46c145719c7c3c0bb0c2c178d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: df6026804283f776151ab9de7221b0a6178e8acb82f62994538bbc1d4b0a93c02f6e763aa0d57c26f57ce866f1eda45142de7f09e3a1d631fabcce8433607d77
|
|
7
|
+
data.tar.gz: 39825c8f51d936bf2034b9b08bf34babb14b84ab7ceb1b9aaff76c10d8a6a285eb6048caac007e27eac185e8bc4eb662eea675428c01dd4138586d65835996f8
|
data/Cargo.lock
CHANGED
|
@@ -307,7 +307,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
|
307
307
|
|
|
308
308
|
[[package]]
|
|
309
309
|
name = "gitlab-glfm-markdown"
|
|
310
|
-
version = "0.0.
|
|
310
|
+
version = "0.0.41"
|
|
311
311
|
dependencies = [
|
|
312
312
|
"clap",
|
|
313
313
|
"comrak",
|
|
@@ -399,7 +399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
399
399
|
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
|
|
400
400
|
dependencies = [
|
|
401
401
|
"cfg-if",
|
|
402
|
-
"windows-targets
|
|
402
|
+
"windows-targets",
|
|
403
403
|
]
|
|
404
404
|
|
|
405
405
|
[[package]]
|
|
@@ -574,18 +574,18 @@ dependencies = [
|
|
|
574
574
|
|
|
575
575
|
[[package]]
|
|
576
576
|
name = "rb-sys"
|
|
577
|
-
version = "0.9.
|
|
577
|
+
version = "0.9.124"
|
|
578
578
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
579
|
-
checksum = "
|
|
579
|
+
checksum = "c85c4188462601e2aa1469def389c17228566f82ea72f137ed096f21591bc489"
|
|
580
580
|
dependencies = [
|
|
581
581
|
"rb-sys-build",
|
|
582
582
|
]
|
|
583
583
|
|
|
584
584
|
[[package]]
|
|
585
585
|
name = "rb-sys-build"
|
|
586
|
-
version = "0.9.
|
|
586
|
+
version = "0.9.124"
|
|
587
587
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
588
|
-
checksum = "
|
|
588
|
+
checksum = "568068db4102230882e6d4ae8de6632e224ca75fe5970f6e026a04e91ed635d3"
|
|
589
589
|
dependencies = [
|
|
590
590
|
"bindgen",
|
|
591
591
|
"lazy_static",
|
|
@@ -889,7 +889,7 @@ version = "0.59.0"
|
|
|
889
889
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
890
890
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
|
891
891
|
dependencies = [
|
|
892
|
-
"windows-targets
|
|
892
|
+
"windows-targets",
|
|
893
893
|
]
|
|
894
894
|
|
|
895
895
|
[[package]]
|
|
@@ -898,30 +898,14 @@ version = "0.52.6"
|
|
|
898
898
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
899
899
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
|
900
900
|
dependencies = [
|
|
901
|
-
"windows_aarch64_gnullvm
|
|
902
|
-
"windows_aarch64_msvc
|
|
903
|
-
"windows_i686_gnu
|
|
904
|
-
"windows_i686_gnullvm
|
|
905
|
-
"windows_i686_msvc
|
|
906
|
-
"windows_x86_64_gnu
|
|
907
|
-
"windows_x86_64_gnullvm
|
|
908
|
-
"windows_x86_64_msvc
|
|
909
|
-
]
|
|
910
|
-
|
|
911
|
-
[[package]]
|
|
912
|
-
name = "windows-targets"
|
|
913
|
-
version = "0.53.2"
|
|
914
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
915
|
-
checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
|
|
916
|
-
dependencies = [
|
|
917
|
-
"windows_aarch64_gnullvm 0.53.0",
|
|
918
|
-
"windows_aarch64_msvc 0.53.0",
|
|
919
|
-
"windows_i686_gnu 0.53.0",
|
|
920
|
-
"windows_i686_gnullvm 0.53.0",
|
|
921
|
-
"windows_i686_msvc 0.53.0",
|
|
922
|
-
"windows_x86_64_gnu 0.53.0",
|
|
923
|
-
"windows_x86_64_gnullvm 0.53.0",
|
|
924
|
-
"windows_x86_64_msvc 0.53.0",
|
|
901
|
+
"windows_aarch64_gnullvm",
|
|
902
|
+
"windows_aarch64_msvc",
|
|
903
|
+
"windows_i686_gnu",
|
|
904
|
+
"windows_i686_gnullvm",
|
|
905
|
+
"windows_i686_msvc",
|
|
906
|
+
"windows_x86_64_gnu",
|
|
907
|
+
"windows_x86_64_gnullvm",
|
|
908
|
+
"windows_x86_64_msvc",
|
|
925
909
|
]
|
|
926
910
|
|
|
927
911
|
[[package]]
|
|
@@ -930,96 +914,48 @@ version = "0.52.6"
|
|
|
930
914
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
931
915
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
|
932
916
|
|
|
933
|
-
[[package]]
|
|
934
|
-
name = "windows_aarch64_gnullvm"
|
|
935
|
-
version = "0.53.0"
|
|
936
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
937
|
-
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
|
|
938
|
-
|
|
939
917
|
[[package]]
|
|
940
918
|
name = "windows_aarch64_msvc"
|
|
941
919
|
version = "0.52.6"
|
|
942
920
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
943
921
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
|
944
922
|
|
|
945
|
-
[[package]]
|
|
946
|
-
name = "windows_aarch64_msvc"
|
|
947
|
-
version = "0.53.0"
|
|
948
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
949
|
-
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
|
|
950
|
-
|
|
951
923
|
[[package]]
|
|
952
924
|
name = "windows_i686_gnu"
|
|
953
925
|
version = "0.52.6"
|
|
954
926
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
955
927
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
|
956
928
|
|
|
957
|
-
[[package]]
|
|
958
|
-
name = "windows_i686_gnu"
|
|
959
|
-
version = "0.53.0"
|
|
960
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
961
|
-
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
|
|
962
|
-
|
|
963
929
|
[[package]]
|
|
964
930
|
name = "windows_i686_gnullvm"
|
|
965
931
|
version = "0.52.6"
|
|
966
932
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
967
933
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
|
968
934
|
|
|
969
|
-
[[package]]
|
|
970
|
-
name = "windows_i686_gnullvm"
|
|
971
|
-
version = "0.53.0"
|
|
972
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
973
|
-
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
|
|
974
|
-
|
|
975
935
|
[[package]]
|
|
976
936
|
name = "windows_i686_msvc"
|
|
977
937
|
version = "0.52.6"
|
|
978
938
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
979
939
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
|
980
940
|
|
|
981
|
-
[[package]]
|
|
982
|
-
name = "windows_i686_msvc"
|
|
983
|
-
version = "0.53.0"
|
|
984
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
985
|
-
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
|
|
986
|
-
|
|
987
941
|
[[package]]
|
|
988
942
|
name = "windows_x86_64_gnu"
|
|
989
943
|
version = "0.52.6"
|
|
990
944
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
991
945
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
|
992
946
|
|
|
993
|
-
[[package]]
|
|
994
|
-
name = "windows_x86_64_gnu"
|
|
995
|
-
version = "0.53.0"
|
|
996
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
997
|
-
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
|
|
998
|
-
|
|
999
947
|
[[package]]
|
|
1000
948
|
name = "windows_x86_64_gnullvm"
|
|
1001
949
|
version = "0.52.6"
|
|
1002
950
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1003
951
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
|
1004
952
|
|
|
1005
|
-
[[package]]
|
|
1006
|
-
name = "windows_x86_64_gnullvm"
|
|
1007
|
-
version = "0.53.0"
|
|
1008
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1009
|
-
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
|
|
1010
|
-
|
|
1011
953
|
[[package]]
|
|
1012
954
|
name = "windows_x86_64_msvc"
|
|
1013
955
|
version = "0.52.6"
|
|
1014
956
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1015
957
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
|
1016
958
|
|
|
1017
|
-
[[package]]
|
|
1018
|
-
name = "windows_x86_64_msvc"
|
|
1019
|
-
version = "0.53.0"
|
|
1020
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1021
|
-
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
|
|
1022
|
-
|
|
1023
959
|
[[package]]
|
|
1024
960
|
name = "yaml-rust"
|
|
1025
961
|
version = "0.4.5"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "gitlab-glfm-markdown"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.41"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
authors = ["digitalmoksha <bwalker@gitlab.com>", "Asherah Connor <aconnor@gitlab.com>"]
|
|
6
6
|
description = "GitLab Flavored Markdown parser and formatter. 100% CommonMark-compatible. Experimental."
|
|
@@ -17,7 +17,7 @@ required-features = ["cli"]
|
|
|
17
17
|
clap = { version = "=4.4.18", optional = true, features = ["derive", "string"] }
|
|
18
18
|
comrak = { version = "0.49.0", default-features = false, features = ["shortcodes"] }
|
|
19
19
|
magnus = "0.8.2"
|
|
20
|
-
rb-sys = { version = "0.9.
|
|
20
|
+
rb-sys = { version = "0.9.124", default-features = false, features = ["stable-api-compiled-fallback"] }
|
|
21
21
|
regex = "1.11.1"
|
|
22
22
|
lazy_static = "1.5.0"
|
|
23
23
|
serde_magnus = "0.10.0"
|
|
@@ -2,7 +2,9 @@ use std::fmt::{self, Write};
|
|
|
2
2
|
use std::sync::LazyLock;
|
|
3
3
|
|
|
4
4
|
use comrak::html::{collect_text, format_node_default, render_sourcepos, ChildRendering, Context};
|
|
5
|
-
use comrak::nodes::{
|
|
5
|
+
use comrak::nodes::{
|
|
6
|
+
ListType, NodeHeading, NodeLink, NodeList, NodeTaskItem, NodeValue, TableAlignment,
|
|
7
|
+
};
|
|
6
8
|
use comrak::{create_formatter, html, node_matches, Node};
|
|
7
9
|
use regex::Regex;
|
|
8
10
|
|
|
@@ -59,6 +61,9 @@ create_formatter!(CustomFormatter<RenderUserData>, {
|
|
|
59
61
|
NodeValue::TaskItem(ref nti) => |context, node, entering| {
|
|
60
62
|
return render_task_item(context, node, entering, nti);
|
|
61
63
|
},
|
|
64
|
+
NodeValue::TableCell => |context, node, entering| {
|
|
65
|
+
return render_table_cell(context, node, entering);
|
|
66
|
+
},
|
|
62
67
|
NodeValue::Escaped => |context, node, entering| {
|
|
63
68
|
return render_escaped(context, node, entering);
|
|
64
69
|
},
|
|
@@ -361,6 +366,78 @@ fn render_task_item_with(
|
|
|
361
366
|
Ok(())
|
|
362
367
|
}
|
|
363
368
|
|
|
369
|
+
fn render_table_cell<T>(
|
|
370
|
+
context: &mut Context<T>,
|
|
371
|
+
node: Node<'_>,
|
|
372
|
+
entering: bool,
|
|
373
|
+
) -> Result<ChildRendering, fmt::Error> {
|
|
374
|
+
let Some(row_node) = node.parent() else {
|
|
375
|
+
panic!("rendered a table cell without a containing table row");
|
|
376
|
+
};
|
|
377
|
+
let row = &row_node.data().value;
|
|
378
|
+
let in_header = match *row {
|
|
379
|
+
NodeValue::TableRow(header) => header,
|
|
380
|
+
_ => panic!("rendered a table cell contained by something other than a table row"),
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
let Some(table_node) = row_node.parent() else {
|
|
384
|
+
panic!("rendered a table cell without a containing table");
|
|
385
|
+
};
|
|
386
|
+
let table = &table_node.data().value;
|
|
387
|
+
let alignments = match table {
|
|
388
|
+
NodeValue::Table(nt) => &nt.alignments,
|
|
389
|
+
_ => {
|
|
390
|
+
panic!("rendered a table cell in a table row contained by something other than a table")
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
if entering {
|
|
395
|
+
context.cr()?;
|
|
396
|
+
if in_header {
|
|
397
|
+
context.write_str("<th")?;
|
|
398
|
+
render_sourcepos(context, node)?;
|
|
399
|
+
} else {
|
|
400
|
+
context.write_str("<td")?;
|
|
401
|
+
render_sourcepos(context, node)?;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
let mut start = row_node.first_child().unwrap(); // guaranteed to exist because `node' itself does!
|
|
405
|
+
let mut i = 0;
|
|
406
|
+
while !start.same_node(node) {
|
|
407
|
+
i += 1;
|
|
408
|
+
start = start.next_sibling().unwrap();
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
match alignments[i] {
|
|
412
|
+
TableAlignment::Left => {
|
|
413
|
+
context.write_str(" align=\"left\"")?;
|
|
414
|
+
}
|
|
415
|
+
TableAlignment::Right => {
|
|
416
|
+
context.write_str(" align=\"right\"")?;
|
|
417
|
+
}
|
|
418
|
+
TableAlignment::Center => {
|
|
419
|
+
context.write_str(" align=\"center\"")?;
|
|
420
|
+
}
|
|
421
|
+
TableAlignment::None => (),
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
if context.options.parse.tasklist_in_table
|
|
425
|
+
&& context.options.render.tasklist_classes
|
|
426
|
+
&& contains_only_task_item(node)
|
|
427
|
+
{
|
|
428
|
+
context.write_str(" class=\"task-table-item\"")?;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
context.write_str(">")?;
|
|
432
|
+
} else if in_header {
|
|
433
|
+
context.write_str("</th>")?;
|
|
434
|
+
} else {
|
|
435
|
+
context.write_str("</td>")?;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
Ok(ChildRendering::HTML)
|
|
439
|
+
}
|
|
440
|
+
|
|
364
441
|
fn render_escaped(
|
|
365
442
|
context: &mut Context<RenderUserData>,
|
|
366
443
|
node: Node<'_>,
|
|
@@ -454,3 +531,16 @@ where
|
|
|
454
531
|
};
|
|
455
532
|
f(text)
|
|
456
533
|
}
|
|
534
|
+
|
|
535
|
+
fn contains_only_task_item(node: Node<'_>) -> bool {
|
|
536
|
+
let Some(first) = node.first_child() else {
|
|
537
|
+
return false;
|
|
538
|
+
};
|
|
539
|
+
if !matches!(first.data().value, NodeValue::TaskItem(..)) {
|
|
540
|
+
return false;
|
|
541
|
+
}
|
|
542
|
+
if first.next_sibling().is_some() {
|
|
543
|
+
return false;
|
|
544
|
+
}
|
|
545
|
+
true
|
|
546
|
+
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gitlab-glfm-markdown
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.41
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brett Walker
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2026-01-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rb_sys
|
|
@@ -17,14 +17,14 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 0.9.
|
|
20
|
+
version: 0.9.124
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 0.9.
|
|
27
|
+
version: 0.9.124
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: rake
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -45,14 +45,14 @@ dependencies:
|
|
|
45
45
|
requirements:
|
|
46
46
|
- - "~>"
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: '1.
|
|
48
|
+
version: '1.3'
|
|
49
49
|
type: :development
|
|
50
50
|
prerelease: false
|
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements:
|
|
53
53
|
- - "~>"
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: '1.
|
|
55
|
+
version: '1.3'
|
|
56
56
|
description: Markdown processing for GitLab Flavored Markdown
|
|
57
57
|
email:
|
|
58
58
|
- bwalker@gitlab.com
|