Coder Social home page Coder Social logo

joaorico / note-link-janitor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from andymatuschak/note-link-janitor

0.0 0.0 0.0 30 KB

Maintains backlink structure among interlinked Markdown notes

License: MIT License

JavaScript 17.59% TypeScript 82.41%

note-link-janitor's Introduction

note-link-janitor

This script reads in a folder of Markdown files, notes all the [[wiki-style links]] between them, then adds a special "backlinks" section which lists passages which reference a given file.

For example, this text might get added to Sample note.md:

## Backlinks
* [[Something that links here]]
    * The block of text in the referencing note which contains the link to [[Sample note]].
    * Another block in that same note which links to [[Sample note]].
* [[A different note that links here]]
    * This is a paragraph from another note which links to [[Sample note]].

The script is idempotent; on subsequent runs, it will update that backlinks section in-place.

The backlinks section will be initially inserted at the end of the file. If there happens to be a HTML-style <!-- --> block at the end of your note, the backlinks will be inserted before that block.

Assumptions/warnings

  1. Links are formatted [[like this]].
  2. Note titles are inferred from the first line of each note, which is assumed to be formatted as a heading, i.e. # Note title.
  3. All .md files are siblings; the script does not currently recursively traverse subtrees (though that would be a simple modification if you need it; see lib/readAllNotes.ts)
  4. The backlinks "section" is defined as the AST span between ## Backlinks and the next heading tag (or <!-- --> tag). Any text you might add to this section will be clobbered. Don't append text after the backlinks list without a heading in between! (I like to leave my backlinks list at the end of the file)

This is FYI-style open source

This is FYI-style open source. I'm sharing it for interested parties, but without any stewardship commitment. Assume that my default response to issues and pull requests will be to ignore or close them without comment. If you do something interesting with this, though, please let me know.

Usage

To install a published release, run:

yarn global add @andymatuschak/note-link-janitor

Then to run it (note that it will modify your .md files in-place; you may want to make a backup!):

note-link-janitor path/to/folder/containing/md/files

That will run it once; you'll need to create a cron job or a launch daemon to run it regularly.

It's built to run against Node >=12, so you may need to upgrade or swap your runtime version.

Building a local copy

yarn install
yarn run build

Future work

In the future, I intend to expand this project to monitor for broken links, orphans, and other interesting hypertext-y predicates.


Arthur Perret has localized this tool into French.

note-link-janitor's People

Contributors

andymatuschak avatar edoreld avatar riderofgiraffes avatar

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.