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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 958f895a64867a4cf0facd03a03f363398263613493019627df9ed9481dc0d74
4
- data.tar.gz: c180c4b058f5c823b2dc00ad32bf63de261a070cba034326d0f29e1131ea6f53
3
+ metadata.gz: 1445bbc636daa93e3ce66ea8badaf7a7fe35e22336c9f1bf4cb73bd675e42841
4
+ data.tar.gz: 965093d0179080780839cd1a432530a378f239f46c145719c7c3c0bb0c2c178d
5
5
  SHA512:
6
- metadata.gz: f1887cab2213baf059cf86655333308a4cd021bed71438a16c32f6a234dde93c29cc0b87522bc6057d6f87acf4150634c712f98ce273032845a90899c6a4806f
7
- data.tar.gz: e7c2789aa86e38930c55d9d31520d947bee79cb093338213259d0820b8015abe1d3419ba1ce282af35495ca73fa66846745f983fec574921d97b301f725d9b7a
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.40"
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 0.53.2",
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.117"
577
+ version = "0.9.124"
578
578
  source = "registry+https://github.com/rust-lang/crates.io-index"
579
- checksum = "f900d1ce4629a2ebffaf5de74bd8f9c1188d4c5ed406df02f97e22f77a006f44"
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.117"
586
+ version = "0.9.124"
587
587
  source = "registry+https://github.com/rust-lang/crates.io-index"
588
- checksum = "ef1e9c857028f631056bcd6d88cec390c751e343ce2223ddb26d23eb4a151d59"
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 0.52.6",
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 0.52.6",
902
- "windows_aarch64_msvc 0.52.6",
903
- "windows_i686_gnu 0.52.6",
904
- "windows_i686_gnullvm 0.52.6",
905
- "windows_i686_msvc 0.52.6",
906
- "windows_x86_64_gnu 0.52.6",
907
- "windows_x86_64_gnullvm 0.52.6",
908
- "windows_x86_64_msvc 0.52.6",
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.40"
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.117", default-features = false, features = ["stable-api-compiled-fallback"] }
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::{ListType, NodeHeading, NodeLink, NodeList, NodeTaskItem, NodeValue};
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
+ }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GLFMMarkdown
4
- VERSION = '0.0.40'
4
+ VERSION = '0.0.41'
5
5
  end
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.40
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: 2025-12-10 00:00:00.000000000 Z
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.109
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.109
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.2'
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.2'
55
+ version: '1.3'
56
56
  description: Markdown processing for GitLab Flavored Markdown
57
57
  email:
58
58
  - bwalker@gitlab.com