mirror of
https://github.com/pojokcodeid/nvim-lazy.git
synced 2025-06-22 08:53:31 +02:00
update
This commit is contained in:
parent
e53a643e3d
commit
1ab37bd478
209 changed files with 79957 additions and 0 deletions
178
my-snippets/laravel-blade2/src/extension.ts
Normal file
178
my-snippets/laravel-blade2/src/extension.ts
Normal file
|
@ -0,0 +1,178 @@
|
|||
import * as vscode from 'vscode';
|
||||
const Beautifier = require('js-beautify').html;
|
||||
|
||||
// function bladeBeautifier(html_source: any, options: any) {
|
||||
// //Wrapper function to invoke all the necessary constructors and deal with the output.
|
||||
// html_source = html_source || '';
|
||||
|
||||
// // BEGIN
|
||||
// html_source = html_source.replace(/\{\{((?:(?!\}\}).)+)\}\}/g, function (m: any, c: any) {
|
||||
// if (c) {
|
||||
// c = c.replace(/(^[ \t]*|[ \t]*$)/g, '');
|
||||
// c = c.replace(/'/g, ''');
|
||||
// c = c.replace(/"/g, '"');
|
||||
// c = encodeURIComponent(c);
|
||||
// }
|
||||
// return "{{" + c + "}}";
|
||||
// });
|
||||
|
||||
// html_source = html_source.replace(/^[ \t]*@([a-z]+)([^\r\n]*)$/gim, function (m: any, d: any, c: any) {
|
||||
// var ce = c;
|
||||
|
||||
// if (ce) {
|
||||
// ce = ce.replace(/'/g, ''');
|
||||
// ce = ce.replace(/"/g, '"');
|
||||
// ce = "|" + encodeURIComponent(ce);
|
||||
// }
|
||||
|
||||
// switch (d) {
|
||||
// case 'break':
|
||||
// case 'case':
|
||||
// case 'continue':
|
||||
// case 'csrf':
|
||||
// case 'else':
|
||||
// case 'elseif':
|
||||
// case 'empty':
|
||||
// case 'extends':
|
||||
// case 'include':
|
||||
// case 'includeFirst':
|
||||
// case 'includeIf':
|
||||
// case 'includeWhen':
|
||||
// case 'inject':
|
||||
// case 'json':
|
||||
// case 'method':
|
||||
// case 'parent':
|
||||
// case 'stack':
|
||||
// case 'yield':
|
||||
// return "<blade " + d + ce + "/>";
|
||||
// case 'section':
|
||||
// if(c.match(/[ \t]*\([ \t]*['"][^'"]*['"][ \t]*\)/i)){
|
||||
// return "<blade " + d + ce + ">";
|
||||
// } else {
|
||||
// return "<blade " + d + ce + "/>";
|
||||
// }
|
||||
// case 'show':
|
||||
// case 'stop':
|
||||
// return "</blade " + d + ce + ">";
|
||||
// default:
|
||||
// if (d.startsWith('end')) {
|
||||
// return "</blade " + d + ce + ">";
|
||||
// } else {
|
||||
// return "<blade " + d + ce + ">";
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// // END
|
||||
|
||||
// var sweet_code = Beautifier(html_source, options);
|
||||
|
||||
// // BEGIN
|
||||
// sweet_code = sweet_code.replace(/^([ \t]*)<\/?blade ([a-z]+)\|?([^>\/]+)?\/?>$/gim, function (m: any, s: any, d: any, c: any) {
|
||||
// if (c) {
|
||||
// c = decodeURIComponent(c);
|
||||
// c = c.replace(/'/g, "'");
|
||||
// c = c.replace(/"/g, '"');
|
||||
// c = c.replace(/^[ \t]*/g, '');
|
||||
// } else {
|
||||
// c = "";
|
||||
// }
|
||||
// if (!s) {
|
||||
// s = "";
|
||||
// }
|
||||
// return s + "@" + d + c;
|
||||
// });
|
||||
|
||||
// sweet_code = sweet_code.replace(/\{\{((?:(?!\}\}).)+)\}\}/g, function (m: any, c: any) {
|
||||
// if (c) {
|
||||
// c = decodeURIComponent(c);
|
||||
// c = c.replace(/'/g, "'");
|
||||
// c = c.replace(/"/g, '"');
|
||||
// c = c.replace(/(^[ \t]*|[ \t]*$)/g, ' ');
|
||||
// }
|
||||
// return "{{" + c + "}}";
|
||||
// });
|
||||
// // END
|
||||
|
||||
// return sweet_code;
|
||||
// }
|
||||
|
||||
const editor = vscode.workspace.getConfiguration('editor');
|
||||
const config = vscode.workspace.getConfiguration('blade');
|
||||
|
||||
function beautify(document: vscode.TextDocument, range: vscode.Range) {
|
||||
const result = [];
|
||||
let output = '';
|
||||
let options = Beautifier.defaultOptions;
|
||||
|
||||
options.indent_size = editor.tabSize;
|
||||
options.end_with_newline = config.newLine;
|
||||
|
||||
options.indent_char = ' ';
|
||||
options.extra_liners = [];
|
||||
options.brace_style = 'collapse';
|
||||
options.indent_scripts = 'normal';
|
||||
options.space_before_conditional = true;
|
||||
options.keep_array_indentation = false;
|
||||
options.break_chained_methods = false;
|
||||
options.unescape_strings = false;
|
||||
options.wrap_line_length = 0;
|
||||
options.jslint_happy = false;
|
||||
options.comma_first = true;
|
||||
options.e4x = true;
|
||||
|
||||
output = Beautifier(document.getText(range), options);
|
||||
|
||||
result.push(vscode.TextEdit.replace(range, output));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
function activate(context: vscode.ExtensionContext) {
|
||||
console.log('Laravel blade activated!');
|
||||
|
||||
const LANGUAGES = { scheme: 'file', language: 'blade' };
|
||||
|
||||
if (config.format.enable === true) {
|
||||
context.subscriptions.push(
|
||||
vscode.languages.registerDocumentFormattingEditProvider(LANGUAGES, {
|
||||
provideDocumentFormattingEdits(document: vscode.TextDocument) {
|
||||
const start = new vscode.Position(0, 0);
|
||||
const end = new vscode.Position(
|
||||
document.lineCount - 1,
|
||||
document.lineAt(document.lineCount -1).text.length
|
||||
);
|
||||
const rng = new vscode.Range(start, end);
|
||||
|
||||
return beautify(document, rng);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
context.subscriptions.push(
|
||||
vscode.languages.registerDocumentRangeFormattingEditProvider(LANGUAGES, {
|
||||
provideDocumentRangeFormattingEdits(document: vscode.TextDocument, range: vscode.Range) {
|
||||
let end = range.end
|
||||
|
||||
if (end.character === 0) {
|
||||
end = end.translate(-1, Number.MAX_VALUE);
|
||||
} else {
|
||||
end = end.translate(0, Number.MAX_VALUE);
|
||||
}
|
||||
|
||||
const rng = new vscode.Range(new vscode.Position(range.start.line, 0), end)
|
||||
|
||||
return beautify(document, rng);
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
function deactivate() {}
|
||||
|
||||
export {
|
||||
activate,
|
||||
deactivate,
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue