Index: lib/src/prism/plugins/previewer-color/prism-previewer-color.js |
diff --git a/lib/src/prism/plugins/previewer-color/prism-previewer-color.js b/lib/src/prism/plugins/previewer-color/prism-previewer-color.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..250e310f23fda62b048120458f91f71df9535f73 |
--- /dev/null |
+++ b/lib/src/prism/plugins/previewer-color/prism-previewer-color.js |
@@ -0,0 +1,89 @@ |
+(function() { |
+ |
+ if ( |
+ typeof self !== 'undefined' && !self.Prism || |
+ typeof global !== 'undefined' && !global.Prism |
+ ) { |
+ return; |
+ } |
+ |
+ var languages = { |
+ 'css': true, |
+ 'less': true, |
+ 'markup': { |
+ lang: 'markup', |
+ before: 'punctuation', |
+ inside: 'inside', |
+ root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'] |
+ }, |
+ 'sass': [ |
+ { |
+ lang: 'sass', |
+ before: 'punctuation', |
+ inside: 'inside', |
+ root: Prism.languages.sass && Prism.languages.sass['variable-line'] |
+ }, |
+ { |
+ lang: 'sass', |
+ inside: 'inside', |
+ root: Prism.languages.sass && Prism.languages.sass['property-line'] |
+ } |
+ ], |
+ 'scss': true, |
+ 'stylus': [ |
+ { |
+ lang: 'stylus', |
+ before: 'hexcode', |
+ inside: 'rest', |
+ root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside |
+ }, |
+ { |
+ lang: 'stylus', |
+ before: 'hexcode', |
+ inside: 'rest', |
+ root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside |
+ } |
+ ] |
+ }; |
+ |
+ Prism.hooks.add('before-highlight', function (env) { |
+ if (env.language && languages[env.language] && !languages[env.language].initialized) { |
+ var lang = languages[env.language]; |
+ if (Prism.util.type(lang) !== 'Array') { |
+ lang = [lang]; |
+ } |
+ lang.forEach(function(lang) { |
+ var before, inside, root, skip; |
+ if (lang === true) { |
+ before = 'important'; |
+ inside = env.language; |
+ lang = env.language; |
+ } else { |
+ before = lang.before || 'important'; |
+ inside = lang.inside || lang.lang; |
+ root = lang.root || Prism.languages; |
+ skip = lang.skip; |
+ lang = env.language; |
+ } |
+ |
+ if (!skip && Prism.languages[lang]) { |
+ Prism.languages.insertBefore(inside, before, { |
+ 'color': /\B#(?:[0-9a-f]{3}){1,2}\b|\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B|\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGray|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGray|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGray|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gray|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGray|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGray|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGray|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i |
+ }, root); |
+ env.grammar = Prism.languages[lang]; |
+ |
+ languages[env.language] = {initialized: true}; |
+ } |
+ }); |
+ } |
+ }); |
+ |
+ if (Prism.plugins.Previewer) { |
+ new Prism.plugins.Previewer('color', function(value) { |
+ this.style.backgroundColor = ''; |
+ this.style.backgroundColor = value; |
+ return !!this.style.backgroundColor; |
+ }); |
+ } |
+ |
+}()); |