Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Latest commit

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jade2php

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered. Gulp plugin available.

Purpose

Write Jade templates, parse them with original Jade parser (not a PHP port) and convert into equivalent PHP templates.

Getting started

  • install gulp-jade2php: npm install --save gulp-jade2php
  • install command line utility: npm install -g jade2php
  • install node module for API usage: npm install --save jade2php

Features

Full support for all Jade features is maintained through unit testing, based on Language Reference.

Jade Language Reference
Plain Text
✓ Piped Text
✓ Inline in a Tag
✓ Block in a Tag
Tags
✓ Tags
✓ Predefined Self Closing Tags
✓ Block Expansion
✓ Self Closing Tags
Doctype
✓ Doctype
✓ doctype html
✓ doctype xml
✓ doctype transitional
✓ doctype strict
✓ doctype frameset
✓ doctype 1.1
✓ doctype basic
✓ doctype mobile
✓ Custom Doctypes
Comments
✓ Comments
✓ Unbuffered comments
✓ Block Comments
✓ Conditional Comments
Attributes
✓ Attributes
✓ Normal JavaScript expressions
✓ Spread them across many lines
✓ Unescaped Attributes
✓ Boolean Attributes
✓ Boolean Attributes terse style when doctype html
✓ Class Attributes
✓ Class Literal
✓ Class Literal (default tag is div)
✓ ID Literal
✓ ID Literal (default tag is div)
✓ &attributes
✓ &attributes(variable)
Code & Interpolation
✓ Unbuffered Code
✓ Buffered Code
✓ Buffered Code (JavaScript expressions)
✓ Unescaped Buffered Code
✓ Unescaped Buffered Code (JavaScript expressions)
✓ Interpolation
✓ Unescaped Interpolation
Conditionals
✓ Conditionals
✓ Unless
Case
✓ Case
✓ Case Fall Through
✓ Block Expansion
Iteration
✓ each
✓ index
✓ keys
✓ tern
✓ while
Mixins
✓ Mixins
✓ Mixins with arguments
✓ Mixin Blocks
✓ Mixin Attributes
✓ Mixin &attributes
✓ Rest Arguments

Additional, code-level checks

JadePhpCompiler
rendering simple jade syntax into vanilla html
✓ should support simple text ✓ should support simple tags ✓ should support self-closing tags ✓ should support doctypes ✓ should support tags with text ✓ should support tags with attrs ✓ should support classes via dot notation ✓ should support ids via sharp notation ✓ should support nested tags rendering simple expressions
✓ should support simple output ✓ should support simple unescaped output ✓ should support attr values ✓ should support attr unescaped values ✓ should support tag text ✓ should support tag unescaped text ✓ should support several attrs and text string interpolation
✓ should support simple string output ✓ should support simple unsecaped string output ✓ should support simple interpolation with variable ✓ should support simple attr interpolation with variable control statements
condition
if
✓ simple ✓ with else ✓ several if-else-if-else-if-else ✓ support negated if – unless case
✓ string comparisons ✓ numeric comparisons ✓ default comparisons iteration
✓ simple ✓ simple with indexing ✓ alternative code node
✓ simple class attribute
✓ simple mixins
✓ simple ✓ with args ✓ name with dashes ✓ support mixin blocks ✓ support call mixin inside mixin with blocks ✓ support rest params

Roadmap

  • pretty php code option
  • pretty html output option
  • code cleanup

License

MIT

Running tests

PHP must be installed to run tests.

npm install --dev
npm test

Contributing

Pull requests, sharing experience and ideas are welcomed :)

Contributors

About

Unlock Jade for PHP! Convert Jade templates into raw PHP templates. CLI tool and JavaScript API. Test covered.

Resources

Contributing

Stars

42 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages