Skip to content

Position of final ; in character reference not included in text that is ended by character reference #38

Closed
@599316527

Description

@599316527

Initial checklist

Affected packages and versions

[email protected]

Link to runnable example

https://codesandbox.io/p/sandbox/ecstatic-kare-jrjg63?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clwkj36qd00063b6i1xez9e5d%2522%252C%2522sizes%2522%253A%255B100%252C0%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clwkj36qc00023b6i9zm256ih%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clwkj36qd00033b6incw8582z%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clwkj36qd00053b6igcv486qo%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clwkj36qc00023b6i9zm256ih%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clwkj36qc00013b6ismt4hxpe%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252Fsrc%252Findex.html%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%252C%2522id%2522%253A%2522clwkj36qc00023b6i9zm256ih%2522%252C%2522activeTabId%2522%253A%2522clwkj36qc00013b6ismt4hxpe%2522%257D%252C%2522clwkj36qd00053b6igcv486qo%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clwkj36qd00043b6isgfgfwh2%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A0%252C%2522path%2522%253A%2522%252F%2522%257D%255D%252C%2522id%2522%253A%2522clwkj36qd00053b6igcv486qo%2522%252C%2522activeTabId%2522%253A%2522clwkj36qd00043b6isgfgfwh2%2522%257D%252C%2522clwkj36qd00033b6incw8582z%2522%253A%257B%2522tabs%2522%253A%255B%255D%252C%2522id%2522%253A%2522clwkj36qd00033b6incw8582z%2522%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Afalse%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D

Steps to reproduce

import { fromMarkdown } from "mdast-util-from-markdown";

// const doc = fs.readFileSync("example.md", "utf8");

const doc = `abc _*_ efg`;
const tree = fromMarkdown(doc);

const emphasisEl = tree.children[0].children[1];
const starTextEl = emphasisEl.children[0];

console.log(emphasisEl.position);
// -> {
//   start: { line: 1, column: 5, offset: 4 },
//   end: { line: 1, column: 12, offset: 11 }
// }

console.log(starTextEl.position);
// -> {
//   start: { line: 1, column: 6, offset: 5 },
//   end: { line: 1, column: 10, offset: 9 }     <-------- Expected end offset is 10
// }

console.log(
  doc.substring(
    emphasisEl.position.start.offset,
    emphasisEl.position.end.offset
  )
);
// -> _&#42;_

console.log(
  doc.substring(
    starTextEl.position.start.offset,
    starTextEl.position.end.offset
  )
);
// -> &#42     <----------------------------------- Expected: &#42;

Expected behavior

The position.end.offset of html entity escape should be after ;

Actual behavior

The position.end.offset of html entity escape is one less than expected.

Affected runtime and version

[email protected]

Affected package manager and version

[email protected]

Affected OS and version

macOS Ventura 13.6.7

Build and bundle tools

webpack

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions