hagenburger / pimd

PIMD – Processing Instructions for Markdown
https://hagenburger.github.io/pimd-docs/
MIT License
20 stars 5 forks source link

Links plugin #32

Open hagenburger opened 6 years ago

hagenburger commented 6 years ago

New feature

Allow links in code blocks. This is useful when there are definitions elsewhere.

Specifications

``` html +link=/class/g:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class,/my-special-list-item/g:#my-special-list-item
<ul>
  <li class="my-list-item">
    Item 1
  </li>
  <li class="my-list-item my-special-list-item">
    Item 2
  </li>
  <li class="my-list-item">
    Item 3
  </li>
  <li class="my-list-item">
    Item 4
  </li>
</ul>


Result:

![preview](https://user-images.githubusercontent.com/103399/44299946-2bccc380-a2ff-11e8-8e1d-7f2b1c3d2287.png)

### The following syntax should be valid:

* `+link="xxx":url` – link `xxx` to `url`
* `+link="xxx":url-a,"yyy":url-b` – link multiple strings
* `+link=/xxx/:url` – search for RegExp
* `+link=/xxx/g:url` – allow modifiers
* `+link=/xxx/:url-a,/yyy/:url-b` – allow multiple RegExp
* `+link="xxx":url-a,/yyy/:url-b,/zzz/gi:url-c` – mix everything up

## Open questions

* How to escape `"`, `:`, `;`, and `/`? → Use JavaScript syntax
* Should `"` and `'` be allowed? → No, use JSON syntax
* Maybe `/class=".*(my-class).*"/` could link `my-class` only (as in the group). This could be useful for linkin the tag name of `li` in `<li class="list-item">` but not within `list-item`. Background: Look ahead/behind in JavaScript’s RegExp are not supported well and hard to read/write. Using a group could be much more easy.

→ This is not optimal yet as it results in long lines. Maybe another solution could be better.