diff --git a/extra_scripts/codemirror/mode/bfm/bfm.css b/extra_scripts/codemirror/mode/bfm/bfm.css index cb6fd638..f14d6f7c 100644 --- a/extra_scripts/codemirror/mode/bfm/bfm.css +++ b/extra_scripts/codemirror/mode/bfm/bfm.css @@ -34,11 +34,12 @@ .cm-s-rubyblue.CodeMirror .cm-table-row-even { background-color: rgb(41, 58, 73); } .cm-s-seti.CodeMirror .cm-table-row-even { background-color: rgb(40, 42, 43); } .cm-s-shadowfox.CodeMirror .cm-table-row-even { background-color: rgb(56, 56, 59); } -.cm-s-solarized.CodeMirror .cm-table-row-even { background-color: rgb(242, 242, 242); } .cm-s-the-matrix.CodeMirror .cm-table-row-even { background-color: rgb(0, 26, 0); } .cm-s-tomorrow-night-bright.CodeMirror .cm-table-row-even { background-color: rgb(23, 23, 23); } .cm-s-tomorrow-night-eighties.CodeMirror .cm-table-row-even { background-color: rgb(20, 20, 20); } .cm-s-twilight.CodeMirror .cm-table-row-even { background-color: rgb(43, 43, 43); } .cm-s-vibrant-ink.CodeMirror .cm-table-row-even { background-color: rgb(26, 26, 26); } .cm-s-xq-dark.CodeMirror .cm-table-row-even { background-color: rgb(34, 25, 53); } -.cm-s-yeti.CodeMirror .cm-table-row-even { background-color: rgb(235, 232, 230); } \ No newline at end of file +.cm-s-yeti.CodeMirror .cm-table-row-even { background-color: rgb(235, 232, 230); } +.cm-s-solarized.cm-s-dark .cm-table-row-even { background-color: rgb(13, 54, 64); } +.cm-s-solarized.cm-s-light .cm-table-row-even { background-color: rgb(245, 240, 222); } \ No newline at end of file diff --git a/extra_scripts/codemirror/mode/bfm/bfm.js b/extra_scripts/codemirror/mode/bfm/bfm.js index 1cd9e87c..baf65d18 100644 --- a/extra_scripts/codemirror/mode/bfm/bfm.js +++ b/extra_scripts/codemirror/mode/bfm/bfm.js @@ -54,6 +54,9 @@ stream.skipToEnd() return null + }, + blankLine(state) { + state.inTable = false } } diff --git a/gruntfile.js b/gruntfile.js index 651640fc..883e536c 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -289,9 +289,24 @@ module.exports = function (grunt) { const Color = require('color') const parseCSS = require('css').parse + function generateRule(selector, bgColor, fgColor) { + if (bgColor.isLight()) { + bgColor = bgColor.mix(fgColor, 0.05) + } else { + bgColor = bgColor.mix(fgColor, 0.1) + } + + if (selector && selector.length > 0) { + return `${selector} .cm-table-row-even { background-color: ${bgColor.rgb().string()}; }` + } + else { + return `.cm-table-row-even { background-color: ${bgColor.rgb().string()}; }` + } + } + const root = path.join(__dirname, 'node_modules/codemirror/theme/') - const colors = fs.readdirSync(root).map(file => { + const colors = fs.readdirSync(root).filter(file => file !== 'solarized.css').map(file => { const css = parseCSS(fs.readFileSync(path.join(root, file), 'utf8')) const rules = css.stylesheet.rules.filter(rule => rule.selectors && /\b\.CodeMirror$/.test(rule.selectors[0])) @@ -313,19 +328,38 @@ module.exports = function (grunt) { } }) - if (bgColor.isLight()) { + /* if (bgColor.isLight()) { bgColor = bgColor.mix(fgColor, 0.05) } else { bgColor = bgColor.mix(fgColor, 0.1) } - return `${rules[0].selectors[0]} .cm-table-row-even { background-color: ${bgColor.rgb().string()}; }` + return `${rules[0].selectors[0]} .cm-table-row-even { background-color: ${bgColor.rgb().string()}; }` */ + return generateRule(rules[0].selectors[0], bgColor, fgColor) } }).filter(value => !!value) - const defaultBgColor = Color('white').mix(Color('black'), 0.05) + //const defaultBgColor = Color('white').mix(Color('black'), 0.05) - fs.writeFileSync(path.join(__dirname, 'extra_scripts/codemirror/mode/bfm/bfm.css'), [`.cm-table-row-even { background-color: ${defaultBgColor.rgb().string()}; }`, ...colors].join('\n'), 'utf8') + // default + colors.unshift(generateRule(null, Color('white'), Color('black'))) + // solarized dark + colors.push(generateRule('.cm-s-solarized.cm-s-dark', Color('#002b36'), Color('#839496'))) + // solarized light + colors.push(generateRule('.cm-s-solarized.cm-s-light', Color('#fdf6e3'), Color('#657b83'))) + /* .cm-s-solarized.cm-s-dark { + color: #839496; + background-color: #002b36; + text-shadow: #002b36 0 1px; +} +.cm-s-solarized.cm-s-light { + background-color: #fdf6e3; + color: #657b83; + text-shadow: #eee8d5 0 1px; +} */ + + /* fs.writeFileSync(path.join(__dirname, 'extra_scripts/codemirror/mode/bfm/bfm.css'), [`.cm-table-row-even { background-color: ${defaultBgColor.rgb().string()}; }`, ...colors].join('\n'), 'utf8') */ + fs.writeFileSync(path.join(__dirname, 'extra_scripts/codemirror/mode/bfm/bfm.css'), colors.join('\n'), 'utf8') }) grunt.registerTask('default', ['build'])