Edward Loveall 09995cde5c Overlapping refactor
Example:

* Text: "strong and emphasized only"
* Markups:
  * Strong: 0..10
  * Emphasis: 7..21

First, get all the borders of the markups, including the start (0) and
end (text.size) indexes of the text in order:

```
[0, 7, 10, 21, 26]
```

Then attach markups to each range. Note that the ranges are exclusive;
they don't include the final number:

* 0...7: Strong
* 7...10: Strong, Emphasized
* 10...21: Emphasized
* 21...26: N/A

Bundle each range and it's related markups into a value object
RangeWithMarkup and return the list.

Loop through that list and recursively apply each markup to each
segment of text:

* Apply a `Strong` markup to the text "strong "
* Apply a `Strong` markup to the text "and"
  * Wrap that in an `Emphasis` markup
* Apply an `Emphasis` markup to the text " emphasized"
* Leave the text " only" as is

---

This has the side effect of breaking up the nodes more than they need
to be broken up. For example right now the algorithm creates this HTML:

```
<strong>strong </strong><em><strong>and</strong></em>
```

instead of:

```
<strong>strong <em>and</em></strong>
```

But that's a task for another day.
2021-08-08 15:08:43 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:39:05 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-07-04 16:03:25 -04:00
2021-08-08 15:08:43 -04:00
2021-08-08 15:08:43 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-08-08 14:22:34 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-07-04 16:28:03 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00
2021-05-01 17:03:38 -04:00

scribe

This is a project written using Lucky. Enjoy!

Setting up the project

  1. Install required dependencies
  2. Update database settings in config/database.cr
  3. Run script/setup
  4. Run lucky dev to start the app

Learning Lucky

Lucky uses the Crystal programming language. You can learn about Lucky from the Lucky Guides.

Description
No description provided
Readme AGPL-3.0 733 KiB
Languages
Crystal 83.9%
Nix 8.6%
Shell 4.6%
JavaScript 1.4%
Dockerfile 1%
Other 0.5%