+20
.editorconfig
+71
.github/workflows/CI.yml
+33
-1
.gitignore
+53
.vscode/launch.json
+9
.vscode/settings.json
+6
lx/.gitignore
+506
-31
lx/Cargo.lock
+21
-9
lx/Cargo.toml
+91
lx/README.md
+11
lx/crates/json-feed/Cargo.toml
+7
lx/crates/json-feed/README.md
+112
lx/crates/json-feed/src/lib.rs
+345
lx/crates/json-feed/src/v1_1.rs
+22
lx/docs/src/config/hierarchical.md
+10
lx/lx.sublime-project
+436
lx/lx.sublime-workspace
+152
lx/src/build.rs
+24
-22
lx/src/cli.rs
+14
lx/src/collection.rs
+50
lx/src/config.rs
+47
lx/src/config/email.rs
+52
lx/src/feed.rs
+1
lx/src/feed/json.rs
+5
lx/src/initializer.rs
+11
lx/src/lib.rs
+24
-9
lx/src/main.rs
+120
lx/src/markdown/mod.rs
-1238
lx/src/md/mdast_ext.rs
-43
lx/src/md/mod.rs
+132
lx/src/page.rs
+37
lx/src/page/components.rs
+116
lx/src/page/metadata.rs
+99
lx/src/page/metadata/serial.rs
+448
lx/tests/pathological-behavior/academic-markdown-citations-workflow.md
+83
lx/tests/pure-config.yaml
+27
lx/tests/sympolymathesy/_data/config.json5
+18
lx/tests/sympolymathesy/_data/pages.js
+84
lx/tests/sympolymathesy/_redirects
+257
lx/tests/sympolymathesy/_static/fonts/02cdd60b-1b63-4966-8b27-1120a35b4baa.svg
lx/tests/sympolymathesy/_static/fonts/071ca42b-37ce-4761-a0d4-14f9c23d8b71.eot
This is a binary file and will not be displayed.
+256
lx/tests/sympolymathesy/_static/fonts/0762f8ec-52a3-4904-bee1-35dc946afd9e.svg
lx/tests/sympolymathesy/_static/fonts/31c5d71b-6d71-4d7b-97a9-59545b90b29e.eot
This is a binary file and will not be displayed.
+461
lx/tests/sympolymathesy/_static/fonts/37af8d8b-c83a-4cd9-93ce-3ffd48dfbc82.svg
lx/tests/sympolymathesy/_static/fonts/39871785-fa83-42e9-a673-cc3f0ac5d4c0.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/4a2fcbba-7d75-4e70-8cb5-977bb5ff18d3.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/4f20df70-3ab5-4d4c-b4bc-5e2bec4db04e.woff
This is a binary file and will not be displayed.
+625
lx/tests/sympolymathesy/_static/fonts/5dbb7b25-c9a8-425c-b5dd-c53ab192cfd5.svg
lx/tests/sympolymathesy/_static/fonts/6601ba70-f82e-4650-984d-eb467f31e0a0.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/68d9414d-b0d7-441f-9272-5d8328823feb.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/6e852986-62bc-4056-a086-04503ce8e74d.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/6fe30a8e-027f-400f-9a5d-3dc81216ff29.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/73ddb857-a4de-4b20-bae4-028e95d2f23b.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/93780186-d6b9-4d46-9d64-29b5bd1d4d3a.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/969bbc95-ead7-49c9-b140-2d0d411786ea.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/97cc3218-440b-467f-a13a-081fa7c46cc2.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/9b911ac9-2be8-4e0b-85cf-00846bbdf792.woff
This is a binary file and will not be displayed.
+256
lx/tests/sympolymathesy/_static/fonts/9e565b23-eb5f-47f1-8626-ec7a3135e080.svg
lx/tests/sympolymathesy/_static/fonts/a6c99224-9456-4aae-8aaa-05bb45aa1e77.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/ab10114e-76fd-4204-a4ab-e071f416edc1.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/b6714b42-7b5a-4a34-8e1e-e42afa58e0d8.eot
This is a binary file and will not be displayed.
+256
lx/tests/sympolymathesy/_static/fonts/bccd317d-af96-433e-acd1-2215c176cc0a.svg
lx/tests/sympolymathesy/_static/fonts/c639641e-5dca-4f06-828b-4ab02bc7ce16.ttf
This is a binary file and will not be displayed.
+461
lx/tests/sympolymathesy/_static/fonts/ccbe5fb2-5e47-4321-8097-e9e16afd9e26.svg
lx/tests/sympolymathesy/_static/fonts/cdc9065e-5039-46f3-82d3-56128b36f556.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/d1586749-27ed-4757-b076-1d51087e8076.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/d99b45ff-bec7-40de-aaed-1ef67cd25b03.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/d9fa54bb-c609-48ba-b7b4-9debad4497fd.ttf
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/db681a5a-42b7-4db5-bc00-07df879b6e7c.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/dda2869e-0b02-4856-88ff-bb2abc82b694.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/de498528-620d-4da3-bb35-1dc57bbaaefd.ttf
This is a binary file and will not be displayed.
+461
lx/tests/sympolymathesy/_static/fonts/dee7c7a0-7e93-4cf9-96bc-d585941d6e95.svg
+559
lx/tests/sympolymathesy/_static/fonts/e035a53a-04ca-4096-94bd-d25a3385eeb4.svg
lx/tests/sympolymathesy/_static/fonts/e63fe280-cddb-418d-91f2-c1511de50941.woff2
This is a binary file and will not be displayed.
+256
lx/tests/sympolymathesy/_static/fonts/fa118146-9793-4cfa-963f-eb497160972a.svg
lx/tests/sympolymathesy/_static/fonts/fa2786ee-4f10-499a-ac2a-9556b5a962b5.eot
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/fc05ab8c-00f2-4a77-9616-8c133f634734.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-bold-subset.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-bold-subset.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-bolditalic-subset.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-bolditalic-subset.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-italic-subset.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-italic-subset.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-regular-subset.woff
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/fonts/hack-regular-subset.woff2
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/images/favicon.ico
This is a binary file and will not be displayed.
lx/tests/sympolymathesy/_static/images/favicon.png
This is a binary file and will not be displayed.
+6
lx/tests/sympolymathesy/_ui/_includes/_page.njk
+35
lx/tests/sympolymathesy/_ui/_includes/_post.njk
+93
lx/tests/sympolymathesy/_ui/_includes/base.njk
+7
lx/tests/sympolymathesy/_ui/_includes/blocks/short-about.njk
+3
lx/tests/sympolymathesy/_ui/_includes/blocks/sponsor-me.njk
+11
lx/tests/sympolymathesy/_ui/_includes/blocks/wip.njk
+71
lx/tests/sympolymathesy/_ui/_includes/components/archive-list.njk
+99
lx/tests/sympolymathesy/_ui/_includes/components/atom.njk
+35
lx/tests/sympolymathesy/_ui/_includes/components/book.njk
+74
lx/tests/sympolymathesy/_ui/_includes/components/index-list.njk
+84
lx/tests/sympolymathesy/_ui/_includes/components/item.njk
+34
lx/tests/sympolymathesy/_ui/_includes/feed.njk
+33
lx/tests/sympolymathesy/_ui/_includes/index.njk
+25
lx/tests/sympolymathesy/_ui/_includes/item.njk
+151
lx/tests/sympolymathesy/_ui/_includes/styles/_color-scheme.scss
+10
lx/tests/sympolymathesy/_ui/_includes/styles/_components.scss
+17
lx/tests/sympolymathesy/_ui/_includes/styles/_config.scss
+147
lx/tests/sympolymathesy/_ui/_includes/styles/_defaults.scss
+66
lx/tests/sympolymathesy/_ui/_includes/styles/_layout.scss
+1
lx/tests/sympolymathesy/_ui/_includes/styles/_mixins.scss
+40
lx/tests/sympolymathesy/_ui/_includes/styles/_reset.scss
+36
lx/tests/sympolymathesy/_ui/_includes/styles/_typography.scss
+1
lx/tests/sympolymathesy/_ui/_includes/styles/_utils.scss
+17
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/_modularscale.scss
+53
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_function.scss
+39
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_pow.scss
+58
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_respond.scss
+7
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_round-px.scss
+37
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_settings.scss
+34
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_sort.scss
+7
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_strip-units.scss
+7
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_sugar.scss
+49
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_target.scss
+25
lx/tests/sympolymathesy/_ui/_includes/styles/_vendor/modularscale/_vars.scss
lx/tests/sympolymathesy/_ui/_includes/styles/components/.gitkeep
This is a binary file and will not be displayed.
+216
lx/tests/sympolymathesy/_ui/_includes/styles/components/_archive-list.scss
+708
lx/tests/sympolymathesy/_ui/_includes/styles/components/_article.scss
+7
lx/tests/sympolymathesy/_ui/_includes/styles/components/_content.scss
+157
lx/tests/sympolymathesy/_ui/_includes/styles/components/_header.scss
+52
lx/tests/sympolymathesy/_ui/_includes/styles/components/_item-header.scss
+166
lx/tests/sympolymathesy/_ui/_includes/styles/components/_latest.scss
+6
lx/tests/sympolymathesy/_ui/_includes/styles/components/_main.scss
lx/tests/sympolymathesy/_ui/_includes/styles/components/_note.scss
This is a binary file and will not be displayed.
+3
lx/tests/sympolymathesy/_ui/_includes/styles/components/_post.scss
+63
lx/tests/sympolymathesy/_ui/_includes/styles/components/post-meta.scss
+77
lx/tests/sympolymathesy/_ui/_includes/styles/fonts.scss
+22
lx/tests/sympolymathesy/_ui/_includes/styles/mixins/_slash.scss
+72
lx/tests/sympolymathesy/_ui/_includes/styles/print.scss
+70
lx/tests/sympolymathesy/_ui/_includes/styles/style.scss
+93
lx/tests/sympolymathesy/_ui/_includes/styles/syntax-highlighting/_a11y-light.scss
+69
lx/tests/sympolymathesy/_ui/_includes/styles/syntax-highlighting/_tomorrow-night-bright.scss
+3
lx/tests/sympolymathesy/_ui/_includes/styles/utils/_no-break.scss
+1
lx/tests/sympolymathesy/_ui/_layouts/_custom-css.njk
+28
lx/tests/sympolymathesy/_ui/_layouts/archives.njk
+21
lx/tests/sympolymathesy/_ui/_layouts/index.njk
+5
lx/tests/sympolymathesy/_ui/_layouts/link-post.njk
+1
lx/tests/sympolymathesy/_ui/_layouts/note.njk
+1
lx/tests/sympolymathesy/_ui/_layouts/page.njk
+1
lx/tests/sympolymathesy/_ui/_layouts/post.njk
+46
lx/tests/sympolymathesy/_ui/_layouts/topics.njk
+4
lx/tests/sympolymathesy/_ui/styles/fonts.css
+1
lx/tests/sympolymathesy/_ui/styles/print.css
+1
lx/tests/sympolymathesy/_ui/styles/style.css
+24
lx/tests/sympolymathesy/content/archive.njk
+7
lx/tests/sympolymathesy/content/atom.njk
+22
lx/tests/sympolymathesy/content/elsewhere/Humans of Open Source.md
+29
lx/tests/sympolymathesy/content/elsewhere/Tracking in the Glimmer VM.md
+11
lx/tests/sympolymathesy/content/elsewhere/_index.md
+4
lx/tests/sympolymathesy/content/elsewhere/elsewhere.11tydata.json
+11
lx/tests/sympolymathesy/content/essays/_index.md
+4
lx/tests/sympolymathesy/content/essays/essays.11tydata.json
+6
lx/tests/sympolymathesy/content/feeds/elsewhere.11ty.js
+14
lx/tests/sympolymathesy/content/feeds/elsewhere.njk
+6
lx/tests/sympolymathesy/content/feeds/essays.11ty.js
+14
lx/tests/sympolymathesy/content/feeds/essays.njk
+15
lx/tests/sympolymathesy/content/feeds/feed-without-notes.njk
+6
lx/tests/sympolymathesy/content/feeds/feed-without-reply.11ty.js
+4
lx/tests/sympolymathesy/content/feeds/feeds.11tydata.json
+6
lx/tests/sympolymathesy/content/feeds/journal.11ty.js
+14
lx/tests/sympolymathesy/content/feeds/journal.njk
+6
lx/tests/sympolymathesy/content/feeds/library.11ty.js
+14
lx/tests/sympolymathesy/content/feeds/library.njk
+14
lx/tests/sympolymathesy/content/feeds/notes-without-reply.njk
+6
lx/tests/sympolymathesy/content/feeds/notes.11ty.js
+14
lx/tests/sympolymathesy/content/feeds/notes.njk
+13
lx/tests/sympolymathesy/content/index.md
+4
lx/tests/sympolymathesy/content/journal/2019/2019.11tydata.json
+85
lx/tests/sympolymathesy/content/journal/2019/25,462 Words.md
+278
lx/tests/sympolymathesy/content/journal/2019/Adieu to 2019.md
+46
lx/tests/sympolymathesy/content/journal/2019/Decaffeinating.md
+44
lx/tests/sympolymathesy/content/journal/2019/Endings and Edges.md
+83
lx/tests/sympolymathesy/content/journal/2019/JSON Feed Apology and Explanation.md
+31
lx/tests/sympolymathesy/content/journal/2019/On Remembering Scripture.md
+47
lx/tests/sympolymathesy/content/journal/2019/Some Thoughts on micro.blog.md
+50
lx/tests/sympolymathesy/content/journal/2019/Travel is my Kryptonite.md
+57
lx/tests/sympolymathesy/content/journal/2019/Writing Implements.md
+25
lx/tests/sympolymathesy/content/journal/2019/Writing Requires Reading.md
+42
lx/tests/sympolymathesy/content/journal/2019/and Running is Sunlight.md
+141
lx/tests/sympolymathesy/content/journal/2019/relaunch.md
+48
lx/tests/sympolymathesy/content/journal/2019/twitter-bots-and-decline.md
+4
lx/tests/sympolymathesy/content/journal/2020/2020.11tydata.json
+875
lx/tests/sympolymathesy/content/journal/2020/Async Data and Autotracking in Ember Octane.md
+26
lx/tests/sympolymathesy/content/journal/2020/Atom Feed Apology and Explanation.md
+562
lx/tests/sympolymathesy/content/journal/2020/Autotracking Elegant DX Via Cutting-Edge CS.md
+29
lx/tests/sympolymathesy/content/journal/2020/Building the Slow Way.md
+71
lx/tests/sympolymathesy/content/journal/2020/Can You Recommend a Book on This.md
+821
lx/tests/sympolymathesy/content/journal/2020/Data Constructors Part 1 Understanding by Implementing.md
+621
lx/tests/sympolymathesy/content/journal/2020/Data Constructors Part 2 Better TypeScript.md
+85
lx/tests/sympolymathesy/content/journal/2020/Decadal Kind of Change.md
+58
lx/tests/sympolymathesy/content/journal/2020/Ember Octane is a New Mental Model.md
+30
lx/tests/sympolymathesy/content/journal/2020/Epistemic Status.md
+46
lx/tests/sympolymathesy/content/journal/2020/Follow-Up on Command-Line Finding and Filtering.md
+352
lx/tests/sympolymathesy/content/journal/2020/Git Workflow for Managing Long-Running Upgrades A.md
+274
lx/tests/sympolymathesy/content/journal/2020/How I Publish This Site.md
+46
lx/tests/sympolymathesy/content/journal/2020/Infra Engineers Blind Spot The.md
+105
lx/tests/sympolymathesy/content/journal/2020/Initializing Class Fields in Ember Octane.md
+53
lx/tests/sympolymathesy/content/journal/2020/JavaScript Functional Immutable Update Performance.md
+459
lx/tests/sympolymathesy/content/journal/2020/Making Illegal States Unrepresentable in TS.md
+222
lx/tests/sympolymathesy/content/journal/2020/Migrating Off of PromiseProxyMixin in Ember Octane.md
+182
lx/tests/sympolymathesy/content/journal/2020/Notes on Thoughtbots Stop Using Any.md
+27
lx/tests/sympolymathesy/content/journal/2020/On Saints.md
+55
lx/tests/sympolymathesy/content/journal/2020/Please Dont Just Screenshot Books.md
+29
lx/tests/sympolymathesy/content/journal/2020/Please Reply.md
+31
lx/tests/sympolymathesy/content/journal/2020/Presence.md
+91
lx/tests/sympolymathesy/content/journal/2020/Private Chat and DMs Are Good Actually.md
+42
lx/tests/sympolymathesy/content/journal/2020/Reading Habits.md
+51
lx/tests/sympolymathesy/content/journal/2020/Reluctantly Returning to Social Media.md
+50
lx/tests/sympolymathesy/content/journal/2020/Scripting Affiliate Links With Alfred.md
+94
lx/tests/sympolymathesy/content/journal/2020/Superscript and Subscript Line Heights.md
+47
lx/tests/sympolymathesy/content/journal/2020/Twitter and Me Redux.md
+62
lx/tests/sympolymathesy/content/journal/2020/Ulysses Publishing With WordPress on Linode.md
+32
lx/tests/sympolymathesy/content/journal/2020/Waiting for Communion.md
+245
lx/tests/sympolymathesy/content/journal/2020/Writing Robust TypeScript Libraries.md
+7
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/crew-dragon-fanfare.11tydata.json
+58
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-1.md
+45
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-2.md
+49
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-3.md
+41
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-4-part-1.md
+34
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-4-part-2.md
+54
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-5.md
+51
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-6.md
+40
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-7.md
+111
lx/tests/sympolymathesy/content/journal/2020/crew-dragon-fanfare/day-8.md
+92
lx/tests/sympolymathesy/content/journal/2020/find grep xargs newlines null.md
+127
lx/tests/sympolymathesy/content/journal/2020/mut and set and auto-tracking in Ember Octane.md
+48
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/1.md
+49
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/2.md
+45
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/3.md
+60
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/4.md
+48
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/5.md
+32
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/ending-for-now.md
+4
lx/tests/sympolymathesy/content/journal/2020/this-week-i-learned/this-week-i-learned.11tydata.json
+43
lx/tests/sympolymathesy/content/journal/Things I Was Wrong About/1 Types.md
+11
lx/tests/sympolymathesy/content/journal/Things I Was Wrong About/Things I Was Wrong About.11tydata.json
+11
lx/tests/sympolymathesy/content/journal/_index.md
+144
lx/tests/sympolymathesy/content/journal/content-test.md
+4
lx/tests/sympolymathesy/content/journal/journal.11tydata.json
+153
lx/tests/sympolymathesy/content/journal/rewrite/003.md
+8
lx/tests/sympolymathesy/content/journal/rewrite/rewrite.11tydata.json
+3
lx/tests/sympolymathesy/content/json-feed.11ty.js
+25
lx/tests/sympolymathesy/content/library/Adding a Reading List Page.md
+15
lx/tests/sympolymathesy/content/library/Confronted by Grace/Confronted by Grace.11tydata.json
+17
lx/tests/sympolymathesy/content/library/Confronted by Grace/God teaches us.md
lx/tests/sympolymathesy/content/library/Confronted by Grace/config.lx.yaml
This is a binary file and will not be displayed.