mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-24 14:12:40 +00:00
This simply moves the codeEditor folder to the components directory. `codeEditor.jsx` simply builds a component which is then used elsewhere, and isn't shared between client and server, so it should be in the client directory. Arguably it could go in `client/homebrew/editor` but I think the `/homebrew/` folder should be eliminated down the line and it's contents just re-sorted. When working on the editor right now it's a pain to switch between `shared` and `client` hunting for the right file.
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
module.exports = {
|
|
registerHomebreweryHelper : function(CodeMirror) {
|
|
CodeMirror.registerHelper('fold', 'homebrewerycss', function(cm, start) {
|
|
|
|
// BRACE FOLDING
|
|
const startMatcher = /\{[ \t]*$/;
|
|
const endMatcher = /\}[ \t]*$/;
|
|
const activeLine = cm.getLine(start.line);
|
|
|
|
|
|
if(activeLine.match(startMatcher)) {
|
|
const lastLineNo = cm.lastLine();
|
|
let end = start.line + 1;
|
|
let braceCount = 1;
|
|
|
|
while (end < lastLineNo) {
|
|
const curLine = cm.getLine(end);
|
|
if(curLine.match(startMatcher)) braceCount++;
|
|
if(curLine.match(endMatcher)) braceCount--;
|
|
if(braceCount == 0) break;
|
|
++end;
|
|
}
|
|
|
|
return {
|
|
from : CodeMirror.Pos(start.line, 0),
|
|
to : CodeMirror.Pos(end, cm.getLine(end).length)
|
|
};
|
|
}
|
|
|
|
// @import and data-url folding
|
|
const importMatcher = /^@import.*?;/;
|
|
const dataURLMatcher = /url\(.*?data\:.*\)/;
|
|
|
|
if(activeLine.match(importMatcher) || activeLine.match(dataURLMatcher)) {
|
|
return {
|
|
from : CodeMirror.Pos(start.line, 0),
|
|
to : CodeMirror.Pos(start.line, activeLine.length)
|
|
};
|
|
}
|
|
|
|
return null;
|
|
});
|
|
}
|
|
};
|