Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add support for frontmatter - #390

Draft
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter
Draft

Add support for frontmatter#390
jlangeveld wants to merge 7 commits into
prettier:mainfrom
jlangeveld:Add_Support_for_Frontmatter

Conversation

@jlangeveld

@jlangeveldjlangeveld commented Jun 9, 2022

Copy link
Copy Markdown

Closes#389

First round - yaml frontmatter is being parsed en re-inserted.
Graymatter supports json out of the box, so I want to work that in too...

@Shinigami92Shinigami92 added the type: feature request Functionality that introduces a new feature label Jun 9, 2022
Comment threadpackage.json
"tsconfig.json"
],
"dependencies": {
"gray-matter": "^4.0.3",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we potentially use an optional dependency somehow here? Nearly every user that use my plugin don't use frontmatter. You are the first case in 2-3 years.
Adding a direct dependency would result in not used content for thousands of users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might experiment, but gray-matter is a relatively small lib, so I don't know if it's worth the trouble...
What do you think?

j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/gray-matter/
96K node_modules/gray-matter/
[task/Make_frontmatter-parsing_optional]
j.langeveld@nicagini ~/git/github/jlangeveld/plugin-pug
> du -sh node_modules/
190M node_modules/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It brings sub-dependencies with it... https://github.com/jonschlinkert/gray-matter/blob/a5726b04f3167fadc764241deb545518c454eb82/package.json#L36-L41
And these have sub-sub-deps and so on.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooooohhhhhhhh.... yes.
I should have realised.

j.langeveld@nicagini ~/git/github/gray-matter
> du -sh node_modules/
32M node_modules/

I'll see what I can do.

Comment threadtests/frontmatter/unformatted.pug
@fisker

Copy link
Copy Markdown
Member

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

@jlangeveld

Copy link
Copy Markdown
Author

Maybe copy this https://github.com/prettier/prettier/blob/f2244bdc8621c0a001e3717f595bc8fd8653cce7/src/utils/front-matter/parse.js#L50? Or should Prettier expose it?

Sorry for being off the radar, got a bit swamped...
I figured this as a better idea too.
At first just copy it, but ask prettier to expose it.

However, I got hung up trying to convince typescript to accept this javascript code without erorring out on missing type declarations.
Got any tips about that?

@taniki

Copy link
Copy Markdown

As an 11ty user, I would be very interested by this plugin supporting pug with frontmatter.

@jlangeveldparse.js has been converted to typescript since then. Will this solve your problem?

I don't think I am proficient enough to pick up the ball.

@taniki

Copy link
Copy Markdown

formatting frontmatter would be nice too.

@Shinigami92

Copy link
Copy Markdown
Member

@taniki I'm still here to support or lead

@tanikitaniki mentioned this pull request Jan 14, 2026
@taniki

taniki commented Jan 14, 2026

Copy link
Copy Markdown

@Shinigami92 I opened up a new pull request. I don't know if there is a way for me to push directly into @jlangeveld branch.

I am a bit strained on time. It is not complete. I still have to figure out to import and format the frontmatter part whatever language it uses. This file seems to be what we need.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature requestFunctionality that introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Frontmatter

4 participants

@jlangeveld@fisker@taniki@Shinigami92