Coder Social home page Coder Social logo

Comments (4)

medfreeman avatar medfreeman commented on May 7, 2024

Hi, sorry about the long wait.
Can you give me a simple test procedure / code ?
I believe i've perhaps fixed this in master, but that would help me test this faster (i'm really busy these days).

Thanks !

from markdown-it-toc-and-anchor.

paulathevalley avatar paulathevalley commented on May 7, 2024

Phew, it’s been awhile for me, too! We definitely worked around the missing methods, but unfortunately I don’t remember all the details.

I am currently struggling with including both markdown-it and markdown-it-toc-and-anchor libraries in a JSBin to send you a working sample, but in the meantime, perhaps you’ll be able to see something in our current method that we’re missing.

If not, that’s okay, too.

  setMarkdownRenderer(currentPath) {
    const md = new MarkdownIt({
      html: true,
      linkify: true,
      typographer: true
    });

    md.use(markdownItTocAndAnchor, {
      anchorLinkSymbol: "",
      anchorClassName: "Anchor",
      tocCallback: (tocMarkdown, tocArray) => {
        this.props.updateTocArray(tocArray);
      }
    });

    // store the original rule
    const defaultRender = md.renderer.rules.link_open || function (tokens, idx, options, env, renderer) {
      return renderer.renderToken(tokens, idx, options);
    };

    const basename = this.props.basename;

    // Update links to include the basename
    md.renderer.rules.link_open = function (tokens, idx, options, env, renderer) {
      console.log("tokens[idx] token methods are undefined: ", tokens[idx]);

      // (The workaround to using `attrIndex`)
      const tokenAttrs = tokens[idx].attrs;
      const hrefIdx = findIndex(tokenAttrs, (arr) => arr.indexOf("href") >= 0);
      if (hrefIdx >= 0) {
        const href = tokenAttrs[hrefIdx];
        if (href.length > 1) {
          if (href[1].indexOf("#") === 0) {
            href[1] = `${basename}${currentPath}${href[1]}`;
            tokenAttrs.push(["aria-hidden", "true"]);
          }
        }
      }
      return defaultRender(tokens, idx, options, env, renderer);
    };

    this.md = md;
  }

from markdown-it-toc-and-anchor.

medfreeman avatar medfreeman commented on May 7, 2024

Hi, it has been fixed in this commit, i'll cut a release with it today.

from markdown-it-toc-and-anchor.

medfreeman avatar medfreeman commented on May 7, 2024

fixed in v4.2.0

from markdown-it-toc-and-anchor.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.