@@ -8,7 +8,8 @@ use shards::types::{common_type, AutoSeqVar, ClonedVar, ParamVar, STRINGS_TYPES,
8
8
use shards:: types:: { Context , ExposedTypes , InstanceData , Type , Types , Var } ;
9
9
10
10
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 ,
12
13
} ;
13
14
14
15
#[ derive( shards:: shard) ]
@@ -73,6 +74,8 @@ impl Shard for MarkdownParseShard {
73
74
self . parser = Some ( Parser :: new_ext ( input, Options :: all ( ) ) ) ;
74
75
}
75
76
77
+ let str_base_ptr = unsafe { self . input . 0 . payload . __bindgen_anon_1 . string . elements } ;
78
+
76
79
self . output . 0 . clear ( ) ;
77
80
let next = self . parser . as_mut ( ) . unwrap ( ) . next ( ) ;
78
81
if let Some ( event) = next {
@@ -97,6 +100,7 @@ impl Shard for MarkdownParseShard {
97
100
self . output . 0 . push ( & a) ;
98
101
self . output . 0 . push ( & b) ;
99
102
self . output . 0 . push ( & c) ;
103
+ self . output . 0 . push ( & c) ;
100
104
if let Some ( id) = id {
101
105
let id = format ! ( "#{}" , id) ;
102
106
let d = Var :: ephemeral_string ( & id) ;
@@ -547,8 +551,17 @@ impl Shard for MarkdownParseShard {
547
551
Event :: Text ( text) => {
548
552
let a = Var :: ephemeral_string ( "Text" ) ;
549
553
let b = Var :: ephemeral_string ( & text) ;
554
+ // let d = Var::new_int(
550
555
self . output . 0 . push ( & a) ;
551
556
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
+ } ;
552
565
}
553
566
Event :: Code ( text) => {
554
567
let a = Var :: ephemeral_string ( "Code" ) ;
0 commit comments