init project

This commit is contained in:
Christoph Brandau
2025-01-07 10:22:59 +01:00
commit 09d1685aa9
15 changed files with 470 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatCdlFile = formatCdlFile;
function formatCdlFile(content) {
let indentLevel = 0;
const formattedLines = [];
for (const line of content.split("\n")) {
const strippedLine = line.trim();
if (strippedLine.endsWith("}")) {
indentLevel = Math.max(indentLevel - 1, 0);
}
formattedLines.push(" ".repeat(indentLevel) + strippedLine);
if (strippedLine.endsWith("{")) {
indentLevel += 1;
}
}
return formattedLines.join("\n");
}
+51
View File
@@ -0,0 +1,51 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.activate = activate;
exports.deactivate = deactivate;
const vscode = __importStar(require("vscode"));
const handlers_1 = require("./common/handlers");
function activate(context) {
const disposable = vscode.languages.registerDocumentFormattingEditProvider({ scheme: "file", language: "cdl" }, {
provideDocumentFormattingEdits(document) {
const text = document.getText();
const formattedText = (0, handlers_1.formatCdlFile)(text);
const fullRange = new vscode.Range(document.positionAt(0), document.positionAt(text.length));
return [vscode.TextEdit.replace(fullRange, formattedText)];
},
});
context.subscriptions.push(disposable);
}
function deactivate() { }
+15
View File
@@ -0,0 +1,15 @@
export function formatCdlFile(content: string): string {
let indentLevel = 0;
const formattedLines = [];
for (const line of content.split("\n")) {
const strippedLine = line.trim();
if (strippedLine.endsWith("}")) {
indentLevel = Math.max(indentLevel - 1, 0);
}
formattedLines.push(" ".repeat(indentLevel) + strippedLine);
if (strippedLine.endsWith("{")) {
indentLevel += 1;
}
}
return formattedLines.join("\n");
}
+25
View File
@@ -0,0 +1,25 @@
import * as vscode from "vscode";
import { formatCdlFile } from "./common/handlers";
export function activate(context: vscode.ExtensionContext) {
const disposable = vscode.languages.registerDocumentFormattingEditProvider(
{ scheme: "file", language: "cdl" },
{
provideDocumentFormattingEdits(
document: vscode.TextDocument
): vscode.TextEdit[] {
const text = document.getText();
const formattedText = formatCdlFile(text);
const fullRange = new vscode.Range(
document.positionAt(0),
document.positionAt(text.length)
);
return [vscode.TextEdit.replace(fullRange, formattedText)];
},
}
);
context.subscriptions.push(disposable);
}
export function deactivate() {}