Skip to content

Commit 73a3e0d

Browse files
committed
Add offsets from markdown parser text
1 parent aefa6a3 commit 73a3e0d

File tree

1 file changed

+14
-1
lines changed
  • shards/modules/markdown/src

1 file changed

+14
-1
lines changed

shards/modules/markdown/src/lib.rs

+14-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ use shards::types::{common_type, AutoSeqVar, ClonedVar, ParamVar, STRINGS_TYPES,
88
use shards::types::{Context, ExposedTypes, InstanceData, Type, Types, Var};
99

1010
use pulldown_cmark::{
11-
BlockQuoteKind, CodeBlockKind, Event, LinkType, MetadataBlockKind, Options, Parser, Tag, TagEnd,
11+
BlockQuoteKind, CodeBlockKind, CowStr, Event, LinkType, MetadataBlockKind, Options, Parser, Tag,
12+
TagEnd,
1213
};
1314

1415
#[derive(shards::shard)]
@@ -73,6 +74,8 @@ impl Shard for MarkdownParseShard {
7374
self.parser = Some(Parser::new_ext(input, Options::all()));
7475
}
7576

77+
let str_base_ptr = unsafe { self.input.0.payload.__bindgen_anon_1.string.elements };
78+
7679
self.output.0.clear();
7780
let next = self.parser.as_mut().unwrap().next();
7881
if let Some(event) = next {
@@ -97,6 +100,7 @@ impl Shard for MarkdownParseShard {
97100
self.output.0.push(&a);
98101
self.output.0.push(&b);
99102
self.output.0.push(&c);
103+
self.output.0.push(&c);
100104
if let Some(id) = id {
101105
let id = format!("#{}", id);
102106
let d = Var::ephemeral_string(&id);
@@ -547,8 +551,17 @@ impl Shard for MarkdownParseShard {
547551
Event::Text(text) => {
548552
let a = Var::ephemeral_string("Text");
549553
let b = Var::ephemeral_string(&text);
554+
// let d = Var::new_int(
550555
self.output.0.push(&a);
551556
self.output.0.push(&b);
557+
if let CowStr::Borrowed(sv) = text {
558+
let p0 = str_base_ptr as usize;
559+
let p1 = sv.as_ptr() as usize;
560+
if p1 > p0 {
561+
let ofs = p1 as usize - p0 as usize;
562+
self.output.0.push(&Var::new_int(ofs as i64));
563+
}
564+
};
552565
}
553566
Event::Code(text) => {
554567
let a = Var::ephemeral_string("Code");

0 commit comments

Comments
 (0)