kopytko-formatter 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/config.d.ts +4 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +3 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/cst-passes/aaThreshold.d.ts +4 -0
- package/dist/src/cst-passes/aaThreshold.d.ts.map +1 -0
- package/dist/src/cst-passes/aaThreshold.js +11 -0
- package/dist/src/cst-passes/aaThreshold.js.map +1 -0
- package/dist/src/cst-passes/alignAssignments.d.ts +4 -0
- package/dist/src/cst-passes/alignAssignments.d.ts.map +1 -0
- package/dist/src/cst-passes/alignAssignments.js +11 -0
- package/dist/src/cst-passes/alignAssignments.js.map +1 -0
- package/dist/src/cst-passes/blankLines.d.ts +19 -0
- package/dist/src/cst-passes/blankLines.d.ts.map +1 -0
- package/dist/src/cst-passes/blankLines.js +40 -0
- package/dist/src/cst-passes/blankLines.js.map +1 -0
- package/dist/src/cst-passes/casingPass.d.ts +12 -0
- package/dist/src/cst-passes/casingPass.d.ts.map +1 -0
- package/dist/src/cst-passes/casingPass.js +214 -0
- package/dist/src/cst-passes/casingPass.js.map +1 -0
- package/dist/src/cst-passes/commentNormalization.d.ts +24 -0
- package/dist/src/cst-passes/commentNormalization.d.ts.map +1 -0
- package/dist/src/cst-passes/commentNormalization.js +76 -0
- package/dist/src/cst-passes/commentNormalization.js.map +1 -0
- package/dist/src/cst-passes/commentWidth.d.ts +4 -0
- package/dist/src/cst-passes/commentWidth.d.ts.map +1 -0
- package/dist/src/cst-passes/commentWidth.js +50 -0
- package/dist/src/cst-passes/commentWidth.js.map +1 -0
- package/dist/src/cst-passes/elseOnNewLine.d.ts +4 -0
- package/dist/src/cst-passes/elseOnNewLine.d.ts.map +1 -0
- package/dist/src/cst-passes/elseOnNewLine.js +11 -0
- package/dist/src/cst-passes/elseOnNewLine.js.map +1 -0
- package/dist/src/cst-passes/emptyLinesBetweenMethods.d.ts +4 -0
- package/dist/src/cst-passes/emptyLinesBetweenMethods.d.ts.map +1 -0
- package/dist/src/cst-passes/emptyLinesBetweenMethods.js +11 -0
- package/dist/src/cst-passes/emptyLinesBetweenMethods.js.map +1 -0
- package/dist/src/cst-passes/endKeywordStyle.d.ts +21 -0
- package/dist/src/cst-passes/endKeywordStyle.d.ts.map +1 -0
- package/dist/src/cst-passes/endKeywordStyle.js +95 -0
- package/dist/src/cst-passes/endKeywordStyle.js.map +1 -0
- package/dist/src/cst-passes/fieldAccessConsistency.d.ts +4 -0
- package/dist/src/cst-passes/fieldAccessConsistency.d.ts.map +1 -0
- package/dist/src/cst-passes/fieldAccessConsistency.js +11 -0
- package/dist/src/cst-passes/fieldAccessConsistency.js.map +1 -0
- package/dist/src/cst-passes/functionVsSub.d.ts +13 -0
- package/dist/src/cst-passes/functionVsSub.d.ts.map +1 -0
- package/dist/src/cst-passes/functionVsSub.js +112 -0
- package/dist/src/cst-passes/functionVsSub.js.map +1 -0
- package/dist/src/cst-passes/importSorting.d.ts +25 -0
- package/dist/src/cst-passes/importSorting.d.ts.map +1 -0
- package/dist/src/cst-passes/importSorting.js +126 -0
- package/dist/src/cst-passes/importSorting.js.map +1 -0
- package/dist/src/cst-passes/indentation.d.ts +21 -0
- package/dist/src/cst-passes/indentation.d.ts.map +1 -0
- package/dist/src/cst-passes/indentation.js +115 -0
- package/dist/src/cst-passes/indentation.js.map +1 -0
- package/dist/src/cst-passes/index.d.ts +45 -0
- package/dist/src/cst-passes/index.d.ts.map +1 -0
- package/dist/src/cst-passes/index.js +77 -0
- package/dist/src/cst-passes/index.js.map +1 -0
- package/dist/src/cst-passes/infrastructure.d.ts +39 -0
- package/dist/src/cst-passes/infrastructure.d.ts.map +1 -0
- package/dist/src/cst-passes/infrastructure.js +63 -0
- package/dist/src/cst-passes/infrastructure.js.map +1 -0
- package/dist/src/cst-passes/lineCommentPosition.d.ts +4 -0
- package/dist/src/cst-passes/lineCommentPosition.d.ts.map +1 -0
- package/dist/src/cst-passes/lineCommentPosition.js +42 -0
- package/dist/src/cst-passes/lineCommentPosition.js.map +1 -0
- package/dist/src/cst-passes/mPrefixStyle.d.ts +4 -0
- package/dist/src/cst-passes/mPrefixStyle.d.ts.map +1 -0
- package/dist/src/cst-passes/mPrefixStyle.js +11 -0
- package/dist/src/cst-passes/mPrefixStyle.js.map +1 -0
- package/dist/src/cst-passes/observeFieldStyle.d.ts +6 -0
- package/dist/src/cst-passes/observeFieldStyle.d.ts.map +1 -0
- package/dist/src/cst-passes/observeFieldStyle.js +21 -0
- package/dist/src/cst-passes/observeFieldStyle.js.map +1 -0
- package/dist/src/cst-passes/paramAlignment.d.ts +4 -0
- package/dist/src/cst-passes/paramAlignment.d.ts.map +1 -0
- package/dist/src/cst-passes/paramAlignment.js +11 -0
- package/dist/src/cst-passes/paramAlignment.js.map +1 -0
- package/dist/src/cst-passes/parenthesisIfCase.d.ts +6 -0
- package/dist/src/cst-passes/parenthesisIfCase.d.ts.map +1 -0
- package/dist/src/cst-passes/parenthesisIfCase.js +42 -0
- package/dist/src/cst-passes/parenthesisIfCase.js.map +1 -0
- package/dist/src/cst-passes/printStatementRemoval.d.ts +20 -0
- package/dist/src/cst-passes/printStatementRemoval.d.ts.map +1 -0
- package/dist/src/cst-passes/printStatementRemoval.js +67 -0
- package/dist/src/cst-passes/printStatementRemoval.js.map +1 -0
- package/dist/src/cst-passes/spacing.d.ts +19 -0
- package/dist/src/cst-passes/spacing.d.ts.map +1 -0
- package/dist/src/cst-passes/spacing.js +81 -0
- package/dist/src/cst-passes/spacing.js.map +1 -0
- package/dist/src/cst-passes/splitArrayOpenBracket.d.ts +4 -0
- package/dist/src/cst-passes/splitArrayOpenBracket.d.ts.map +1 -0
- package/dist/src/cst-passes/splitArrayOpenBracket.js +11 -0
- package/dist/src/cst-passes/splitArrayOpenBracket.js.map +1 -0
- package/dist/src/cst-passes/stringConcatStyle.d.ts +4 -0
- package/dist/src/cst-passes/stringConcatStyle.d.ts.map +1 -0
- package/dist/src/cst-passes/stringConcatStyle.js +11 -0
- package/dist/src/cst-passes/stringConcatStyle.js.map +1 -0
- package/dist/src/cst-passes/stripCatchParens.d.ts +4 -0
- package/dist/src/cst-passes/stripCatchParens.d.ts.map +1 -0
- package/dist/src/cst-passes/stripCatchParens.js +29 -0
- package/dist/src/cst-passes/stripCatchParens.js.map +1 -0
- package/dist/src/cst-passes/thenStyle.d.ts +15 -0
- package/dist/src/cst-passes/thenStyle.d.ts.map +1 -0
- package/dist/src/cst-passes/thenStyle.js +140 -0
- package/dist/src/cst-passes/thenStyle.js.map +1 -0
- package/dist/src/cst-passes/trailingCommas.d.ts +13 -0
- package/dist/src/cst-passes/trailingCommas.d.ts.map +1 -0
- package/dist/src/cst-passes/trailingCommas.js +56 -0
- package/dist/src/cst-passes/trailingCommas.js.map +1 -0
- package/dist/src/cst-passes/trailingWhitespace.d.ts +13 -0
- package/dist/src/cst-passes/trailingWhitespace.d.ts.map +1 -0
- package/dist/src/cst-passes/trailingWhitespace.js +26 -0
- package/dist/src/cst-passes/trailingWhitespace.js.map +1 -0
- package/dist/src/cst-passes/wrapLongStrings.d.ts +4 -0
- package/dist/src/cst-passes/wrapLongStrings.d.ts.map +1 -0
- package/dist/src/cst-passes/wrapLongStrings.js +11 -0
- package/dist/src/cst-passes/wrapLongStrings.js.map +1 -0
- package/dist/src/formatter.d.ts +2 -1
- package/dist/src/formatter.d.ts.map +1 -1
- package/dist/src/formatter.js +74 -333
- package/dist/src/formatter.js.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -10
- package/dist/src/index.js.map +1 -1
- package/package.json +5 -2
package/dist/src/config.d.ts
CHANGED
|
@@ -103,6 +103,10 @@ export interface FormattingConfig {
|
|
|
103
103
|
alignAssignments: boolean;
|
|
104
104
|
/** Field access consistency on known objects. 'dot' prefers m.top.field, 'method' prefers m.top.getField("field"), 'preserve' leaves as-is. */
|
|
105
105
|
fieldAccessConsistency: 'dot' | 'method' | 'preserve';
|
|
106
|
+
/** Parse the formatted output to verify it's still valid BrightScript.
|
|
107
|
+
* If syntax errors are detected, the original source is returned unchanged.
|
|
108
|
+
* Default: true. */
|
|
109
|
+
verifySyntax: boolean;
|
|
106
110
|
}
|
|
107
111
|
/** Default formatting config — all rules set to preserve existing code style. */
|
|
108
112
|
export declare const DEFAULT_FORMATTING_CONFIG: FormattingConfig;
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAE/B,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,6CAA6C;IAC7C,sBAAsB,EAAE,OAAO,CAAC;IAChC,2CAA2C;IAC3C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,0BAA0B,EAAE,MAAM,CAAC;IACnC,qFAAqF;IACrF,wBAAwB,EAAE,MAAM,CAAC;IACjC,iHAAiH;IACjH,2BAA2B,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IAG9D,qFAAqF;IACrF,eAAe,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACnD,oFAAoF;IACpF,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,UAAU,CAAC;IAGlF,kLAAkL;IAClL,oBAAoB,EAAE,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,UAAU,CAAC;IACrE,iGAAiG;IACjG,8BAA8B,EAAE,OAAO,CAAC;IACxC,yFAAyF;IACzF,kCAAkC,EAAE,OAAO,CAAC;IAC5C,qEAAqE;IACrE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mDAAmD;IACnD,iBAAiB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACtC,kIAAkI;IAClI,mBAAmB,EAAE,QAAQ,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAG9D,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,kIAAkI;IAClI,eAAe,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;IACpD,kIAAkI;IAClI,iBAAiB,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;IAGtD,8DAA8D;IAC9D,8BAA8B,EAAE,OAAO,CAAC;IACxC,2PAA2P;IAC3P,4BAA4B,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAChF,mEAAmE;IACnE,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IAChD,iIAAiI;IACjI,eAAe,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACjD,kIAAkI;IAClI,0BAA0B,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IAC5D,8FAA8F;IAC9F,qBAAqB,EAAE,OAAO,CAAC;IAC/B,2EAA2E;IAC3E,mCAAmC,EAAE,MAAM,CAAC;IAG5C,2EAA2E;IAC3E,oBAAoB,EAAE,OAAO,CAAC;IAC9B,sCAAsC;IACtC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,+BAA+B;IAC/B,YAAY,EAAE,OAAO,CAAC;IAGtB,4DAA4D;IAC5D,YAAY,EAAE,GAAG,GAAG,KAAK,GAAG,UAAU,CAAC;IACvC,mEAAmE;IACnE,uBAAuB,EAAE,OAAO,CAAC;IACjC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IAGrB,6EAA6E;IAC7E,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,0EAA0E;IAC1E,qBAAqB,EAAE,OAAO,CAAC;IAG/B,yDAAyD;IACzD,0BAA0B,EAAE,OAAO,CAAC;IACpC,iDAAiD;IACjD,4BAA4B,EAAE,OAAO,CAAC;IACtC,+GAA+G;IAC/G,qBAAqB,EAAE,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;IACtD,4DAA4D;IAC5D,sBAAsB,EAAE,OAAO,CAAC;IAGhC,mEAAmE;IACnE,iBAAiB,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnD,0DAA0D;IAC1D,aAAa,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,cAAc,EAAE,OAAO,CAAC;IAGxB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC/C,mEAAmE;IACnE,mBAAmB,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAGrD,0IAA0I;IAC1I,iBAAiB,EAAE,eAAe,GAAG,MAAM,GAAG,UAAU,CAAC;IACzD,mHAAmH;IACnH,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC7C,qDAAqD;IACrD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+IAA+I;IAC/I,sBAAsB,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.js
CHANGED
|
@@ -64,6 +64,8 @@ exports.DEFAULT_FORMATTING_CONFIG = {
|
|
|
64
64
|
mPrefixStyle: 'preserve',
|
|
65
65
|
alignAssignments: false,
|
|
66
66
|
fieldAccessConsistency: 'preserve',
|
|
67
|
+
// Safety
|
|
68
|
+
verifySyntax: true,
|
|
67
69
|
};
|
|
68
70
|
/** Reads a FormattingConfig from a raw VS Code settings object. */
|
|
69
71
|
function parseFormattingConfig(cfg) {
|
|
@@ -138,6 +140,7 @@ function parseFormattingConfig(cfg) {
|
|
|
138
140
|
mPrefixStyle: str('mPrefixStyle', d.mPrefixStyle),
|
|
139
141
|
alignAssignments: bool('alignAssignments', d.alignAssignments),
|
|
140
142
|
fieldAccessConsistency: str('fieldAccessConsistency', d.fieldAccessConsistency),
|
|
143
|
+
verifySyntax: bool('verifySyntax', d.verifySyntax),
|
|
141
144
|
};
|
|
142
145
|
}
|
|
143
146
|
//# sourceMappingURL=config.js.map
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;AAuNA,sDAqFC;AApKD,iFAAiF;AACpE,QAAA,yBAAyB,GAAqB;IACzD,2BAA2B;IAC3B,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,MAAM;IAClB,sBAAsB,EAAE,IAAI;IAC5B,kBAAkB,EAAE,IAAI;IACxB,aAAa,EAAE,CAAC;IAChB,0BAA0B,EAAE,CAAC;IAC7B,wBAAwB,EAAE,CAAC;IAC3B,2BAA2B,EAAE,UAAU;IAEvC,oBAAoB;IACpB,eAAe,EAAE,UAAU;IAC3B,SAAS,EAAE,UAAU;IAErB,mBAAmB;IACnB,oBAAoB,EAAE,UAAU;IAChC,8BAA8B,EAAE,KAAK;IACrC,kCAAkC,EAAE,KAAK;IACzC,qBAAqB,EAAE,KAAK;IAC5B,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,UAAU;IAE/B,yBAAyB;IACzB,aAAa,EAAE,GAAG;IAClB,eAAe,EAAE,UAAU;IAC3B,iBAAiB,EAAE,UAAU;IAE7B,eAAe;IACf,8BAA8B,EAAE,IAAI;IACpC,4BAA4B,EAAE,UAAU;IACxC,aAAa,EAAE,OAAO;IACtB,eAAe,EAAE,UAAU;IAC3B,0BAA0B,EAAE,UAAU;IACtC,qBAAqB,EAAE,KAAK;IAC5B,mCAAmC,EAAE,CAAC;IAEtC,0BAA0B;IAC1B,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,IAAI;IAC3B,YAAY,EAAE,IAAI;IAElB,WAAW;IACX,YAAY,EAAE,UAAU;IACxB,uBAAuB,EAAE,IAAI;IAC7B,YAAY,EAAE,CAAC;IAEf,UAAU;IACV,WAAW,EAAE,KAAK;IAClB,qBAAqB,EAAE,KAAK;IAE5B,cAAc;IACd,0BAA0B,EAAE,KAAK;IACjC,4BAA4B,EAAE,KAAK;IACnC,qBAAqB,EAAE,KAAK;IAC5B,sBAAsB,EAAE,KAAK;IAE7B,eAAe;IACf,iBAAiB,EAAE,UAAU;IAC7B,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IAEpB,gBAAgB;IAChB,cAAc,EAAE,UAAU;IAC1B,mBAAmB,EAAE,UAAU;IAE/B,wBAAwB;IACxB,iBAAiB,EAAE,UAAU;IAC7B,YAAY,EAAE,UAAU;IACxB,gBAAgB,EAAE,KAAK;IACvB,sBAAsB,EAAE,UAAU;IAElC,SAAS;IACT,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,mEAAmE;AACnE,SAAgB,qBAAqB,CAAC,GAA+C;IACnF,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,GAAG,iCAAyB,EAAE,CAAC;IAElD,MAAM,CAAC,GAAG,iCAAyB,CAAC;IACpC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;QAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,GAAW,EAAU,EAAE;QAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAY,EAAW,EAAE;QAClD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC;QAC3C,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;QACnC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAmC;QAC7E,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,sBAAsB,CAAC;QAChF,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,CAAC;QACpE,aAAa,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC;QACpD,0BAA0B,EAAE,GAAG,CAAC,4BAA4B,EAAE,CAAC,CAAC,0BAA0B,CAAC;QAC3F,wBAAwB,EAAE,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,wBAAwB,CAAC;QACrF,2BAA2B,EAAE,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,2BAA2B,CAAoD;QAEjJ,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAwC;QACjG,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAkC;QAEzE,oBAAoB,EAAE,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,oBAAoB,CAA6C;QACrH,8BAA8B,EAAE,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,8BAA8B,CAAC;QACxG,kCAAkC,EAAE,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,kCAAkC,CAAC;QACpH,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,qBAAqB,CAAC;QAC7E,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,CAA0C;QACzG,mBAAmB,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,mBAAmB,CAA4C;QAEjH,aAAa,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC;QACpD,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAwC;QACjG,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,CAA0C;QAEzG,8BAA8B,EAAE,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,8BAA8B,CAAC;QACxG,4BAA4B,EAAE,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,4BAA4B,CAAqD;QACrJ,aAAa,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,aAAa,CAAsC;QACzF,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAwC;QACjG,0BAA0B,EAAE,GAAG,CAAC,4BAA4B,EAAE,CAAC,CAAC,0BAA0B,CAAmD;QAC7I,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,qBAAqB,CAAC;QAC7E,mCAAmC,EAAE,GAAG,CAAC,qCAAqC,EAAE,CAAC,CAAC,mCAAmC,CAAC;QAEtH,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,oBAAoB,CAAC;QAC1E,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,qBAAqB,CAAC;QAC7E,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,CAAC;QAElD,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,CAAqC;QACrF,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,uBAAuB,CAAC;QACnF,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,CAAC;QAEjD,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC;QAC/C,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,qBAAqB,CAAC;QAE7E,0BAA0B,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC,0BAA0B,CAAC;QAC5F,4BAA4B,EAAE,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,4BAA4B,CAAC;QAClG,qBAAqB,EAAE,CAAC,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,WAAW;gBAAE,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,EAAE;QACJ,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,sBAAsB,CAAC;QAEhF,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,CAA0C;QACzG,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC;QACrD,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,cAAc,CAAC;QAExD,cAAc,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,cAAc,CAAuC;QAC7F,mBAAmB,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,mBAAmB,CAA4C;QAEjH,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,CAA0C;QACzG,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,CAAqC;QACrF,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,CAAC;QAC9D,sBAAsB,EAAE,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,sBAAsB,CAA+C;QAE7H,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,CAAC;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aaThreshold.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/aaThreshold.ts"],"names":[],"mappings":"AAAsD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CAKnG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aaThresholdPass = aaThresholdPass;
|
|
4
|
+
function aaThresholdPass(threshold) {
|
|
5
|
+
if (threshold <= 0)
|
|
6
|
+
return () => [];
|
|
7
|
+
return (_root, _source) => {
|
|
8
|
+
return [];
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=aaThreshold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aaThreshold.js","sourceRoot":"","sources":["../../../src/cst-passes/aaThreshold.ts"],"names":[],"mappings":";;AAGA,0CAKC;AALD,SAAgB,eAAe,CAAC,SAAiB;IAC/C,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;IACpC,OAAO,CAAC,KAAiB,EAAE,OAAe,EAAc,EAAE;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SyntaxNode } from 'kopytko-brightscript-parser';
|
|
2
|
+
import { TextEdit } from './infrastructure';
|
|
3
|
+
export declare function alignAssignmentsPass(enabled: boolean): (root: SyntaxNode, source: string) => TextEdit[];
|
|
4
|
+
//# sourceMappingURL=alignAssignments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignAssignments.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/alignAssignments.ts"],"names":[],"mappings":"AAAsD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CAKvG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.alignAssignmentsPass = alignAssignmentsPass;
|
|
4
|
+
function alignAssignmentsPass(enabled) {
|
|
5
|
+
if (!enabled)
|
|
6
|
+
return () => [];
|
|
7
|
+
return (_root, _source) => {
|
|
8
|
+
return [];
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=alignAssignments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignAssignments.js","sourceRoot":"","sources":["../../../src/cst-passes/alignAssignments.ts"],"names":[],"mappings":";;AAGA,oDAKC;AALD,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,KAAiB,EAAE,OAAe,EAAc,EAAE;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CST Pass: Blank line normalization.
|
|
3
|
+
*
|
|
4
|
+
* Controls maximum consecutive blank lines and blank lines between functions.
|
|
5
|
+
* Works by finding sequences of LineBreak trivia and trimming excess.
|
|
6
|
+
*/
|
|
7
|
+
import { SyntaxNode } from 'kopytko-brightscript-parser';
|
|
8
|
+
import { TextEdit } from './infrastructure';
|
|
9
|
+
interface BlankLineConfig {
|
|
10
|
+
maxEmptyLines: number;
|
|
11
|
+
emptyLinesBetweenFunctions: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Creates a blank-line-normalization pass.
|
|
15
|
+
* Removes excess blank lines based on maxEmptyLines setting.
|
|
16
|
+
*/
|
|
17
|
+
export declare function blankLinePass(config: BlankLineConfig): (root: SyntaxNode, source: string) => TextEdit[];
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=blankLines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blankLines.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/blankLines.ts"],"names":[],"mappings":"CAAsD;;;;;GAKnD;AAEH,OAAO,EAAE,UAAU,EAA2C,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,UAAU,eAAe;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B,EAAE,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CA6BvG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */ /**
|
|
3
|
+
* CST Pass: Blank line normalization.
|
|
4
|
+
*
|
|
5
|
+
* Controls maximum consecutive blank lines and blank lines between functions.
|
|
6
|
+
* Works by finding sequences of LineBreak trivia and trimming excess.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.blankLinePass = blankLinePass;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a blank-line-normalization pass.
|
|
12
|
+
* Removes excess blank lines based on maxEmptyLines setting.
|
|
13
|
+
*/
|
|
14
|
+
function blankLinePass(config) {
|
|
15
|
+
if (config.maxEmptyLines === 0 && config.emptyLinesBetweenFunctions === 0)
|
|
16
|
+
return () => [];
|
|
17
|
+
return (_root, source) => {
|
|
18
|
+
if (config.maxEmptyLines === 0)
|
|
19
|
+
return [];
|
|
20
|
+
const edits = [];
|
|
21
|
+
const maxAllowed = config.maxEmptyLines;
|
|
22
|
+
// Find runs of blank lines (3+ consecutive newlines = 2+ blank lines)
|
|
23
|
+
// A "blank line" is a newline followed by optional whitespace and another newline
|
|
24
|
+
const blankRunRe = /(\r?\n)((?:[ \t]*\r?\n){2,})/g;
|
|
25
|
+
let match;
|
|
26
|
+
while ((match = blankRunRe.exec(source)) !== null) {
|
|
27
|
+
const fullRun = match[2];
|
|
28
|
+
const lineBreaks = fullRun.split(/\r?\n/).length - 1;
|
|
29
|
+
if (lineBreaks > maxAllowed) {
|
|
30
|
+
// Keep only maxAllowed blank lines
|
|
31
|
+
const lineEnding = source.includes('\r\n') ? '\r\n' : '\n';
|
|
32
|
+
const replacement = (lineEnding).repeat(maxAllowed);
|
|
33
|
+
const startPos = match.index + match[1].length;
|
|
34
|
+
edits.push({ pos: startPos, end: startPos + fullRun.length, newText: replacement });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return edits;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=blankLines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blankLines.js","sourceRoot":"","sources":["../../../src/cst-passes/blankLines.ts"],"names":[],"mappings":";AAAA,sDAAsD,CAAA;;;;;GAKnD;;AAcH,sCA6BC;AAjCD;;;GAGG;AACH,SAAgB,aAAa,CAAC,MAAuB;IACnD,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,0BAA0B,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;IAE3F,OAAO,CAAC,KAAiB,EAAE,MAAc,EAAc,EAAE;QACvD,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1C,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC;QAExC,sEAAsE;QACtE,kFAAkF;QAClF,MAAM,UAAU,GAAG,+BAA+B,CAAC;QACnD,IAAI,KAA6B,CAAC;QAElC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAErD,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;gBAC5B,mCAAmC;gBACnC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3D,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CST Pass: Keyword and identifier casing.
|
|
3
|
+
*
|
|
4
|
+
* Applies casing normalization to keywords, builtins, and user functions.
|
|
5
|
+
* Handles edge cases: callable keywords (CreateObject), dot access exclusion,
|
|
6
|
+
* type annotation keywords, and AA keys.
|
|
7
|
+
*/
|
|
8
|
+
import { SyntaxNode } from 'kopytko-brightscript-parser';
|
|
9
|
+
import { TextEdit } from './infrastructure';
|
|
10
|
+
import { CasingConfig } from 'kopytko-brightscript-parser';
|
|
11
|
+
export declare function casingPass(casingConfig: CasingConfig, userFunctions?: Map<string, string>): (root: SyntaxNode, source: string) => TextEdit[];
|
|
12
|
+
//# sourceMappingURL=casingPass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"casingPass.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/casingPass.ts"],"names":[],"mappings":"CAAsD;;;;;;GAMnD;AAEH,OAAO,EAAE,UAAU,EAAqD,MAAM,6BAA6B,CAAC;AAE5G,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAEL,YAAY,EACb,MAAM,6BAA6B,CAAC;AAarC,wBAAgB,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,aAAa,GAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,GAC7C,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CA8BlD"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */ /**
|
|
3
|
+
* CST Pass: Keyword and identifier casing.
|
|
4
|
+
*
|
|
5
|
+
* Applies casing normalization to keywords, builtins, and user functions.
|
|
6
|
+
* Handles edge cases: callable keywords (CreateObject), dot access exclusion,
|
|
7
|
+
* type annotation keywords, and AA keys.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.casingPass = casingPass;
|
|
11
|
+
const kopytko_brightscript_parser_1 = require("kopytko-brightscript-parser");
|
|
12
|
+
const kopytko_brightscript_parser_2 = require("kopytko-brightscript-parser");
|
|
13
|
+
const builtinMap = new Map(kopytko_brightscript_parser_2.BRIGHTSCRIPT_BUILTINS.map(b => [b.name.toLowerCase(), b.name]));
|
|
14
|
+
// Keywords that are also callable as functions — apply builtin casing to these
|
|
15
|
+
const CALLABLE_KEYWORDS = new Set([
|
|
16
|
+
kopytko_brightscript_parser_1.TokenKind.CreateObject, kopytko_brightscript_parser_1.TokenKind.Type, kopytko_brightscript_parser_1.TokenKind.GetGlobalAA,
|
|
17
|
+
kopytko_brightscript_parser_1.TokenKind.Box, kopytko_brightscript_parser_1.TokenKind.Eval, kopytko_brightscript_parser_1.TokenKind.Run,
|
|
18
|
+
kopytko_brightscript_parser_1.TokenKind.GetLastRunCompileError, kopytko_brightscript_parser_1.TokenKind.GetLastRunRunTimeError,
|
|
19
|
+
]);
|
|
20
|
+
function casingPass(casingConfig, userFunctions = new Map()) {
|
|
21
|
+
return (root, _source) => {
|
|
22
|
+
const edits = [];
|
|
23
|
+
function visit(node, afterDot) {
|
|
24
|
+
let afterAs = false;
|
|
25
|
+
for (let i = 0; i < node.children.length; i++) {
|
|
26
|
+
const child = node.children[i];
|
|
27
|
+
if ((0, kopytko_brightscript_parser_1.isToken)(child)) {
|
|
28
|
+
processToken(child, afterDot, afterAs, node, edits, casingConfig, userFunctions);
|
|
29
|
+
// Track context for next token
|
|
30
|
+
afterDot = child.kind === kopytko_brightscript_parser_1.TokenKind.Dot;
|
|
31
|
+
afterAs = child.kind === kopytko_brightscript_parser_1.TokenKind.As;
|
|
32
|
+
}
|
|
33
|
+
else if ((0, kopytko_brightscript_parser_1.isNode)(child)) {
|
|
34
|
+
// Don't apply user function casing inside AA field keys
|
|
35
|
+
if (child.kind === kopytko_brightscript_parser_1.SyntaxKind.AAField) {
|
|
36
|
+
visitAAField(child, edits, casingConfig);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Pass afterDot=true if this node follows a dot token
|
|
40
|
+
visit(child, afterDot);
|
|
41
|
+
}
|
|
42
|
+
afterDot = false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
visit(root, false);
|
|
47
|
+
return edits;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function processToken(token, afterDot, afterAs, parent, edits, config, userFunctions) {
|
|
51
|
+
if (token.kind === kopytko_brightscript_parser_1.TokenKind.StringLiteral || token.kind === kopytko_brightscript_parser_1.TokenKind.Eof)
|
|
52
|
+
return;
|
|
53
|
+
const lower = token.text.toLowerCase();
|
|
54
|
+
// Exact overrides
|
|
55
|
+
if (config.exact && config.exact[lower]) {
|
|
56
|
+
const desired = config.exact[lower];
|
|
57
|
+
if (desired !== token.text) {
|
|
58
|
+
edits.push({ pos: token.pos, end: token.end, newText: desired });
|
|
59
|
+
}
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Callable keywords (CreateObject, Type, etc.) — always normalize to catalog casing
|
|
63
|
+
// BUT skip if after dot (it's a property name, not a function call)
|
|
64
|
+
if (CALLABLE_KEYWORDS.has(token.kind)) {
|
|
65
|
+
if (afterDot)
|
|
66
|
+
return; // e.g., m.input.type — 'type' is just a field name
|
|
67
|
+
const canonical = builtinMap.get(lower) ?? token.text;
|
|
68
|
+
const newText = config.builtin && config.builtin !== 'preserve'
|
|
69
|
+
? (0, kopytko_brightscript_parser_2.applyCasing)(canonical, config.builtin)
|
|
70
|
+
: canonical; // preserve = use catalog casing
|
|
71
|
+
if (newText !== token.text) {
|
|
72
|
+
edits.push({ pos: token.pos, end: token.end, newText });
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Regular keywords — skip if after dot (field name)
|
|
77
|
+
if ((0, kopytko_brightscript_parser_1.isKeyword)(token.kind)) {
|
|
78
|
+
if (afterDot)
|
|
79
|
+
return; // e.g., obj.end, node.next — keywords used as field names
|
|
80
|
+
if (afterAs) {
|
|
81
|
+
// 'as Function', 'as Sub' etc. — use type casing
|
|
82
|
+
const typeOption = (0, kopytko_brightscript_parser_2.resolveKeywordCasing)('type', config);
|
|
83
|
+
if (typeOption && typeOption !== 'preserve') {
|
|
84
|
+
const newText = (0, kopytko_brightscript_parser_2.applyCasing)(token.text, typeOption);
|
|
85
|
+
if (newText !== token.text) {
|
|
86
|
+
edits.push({ pos: token.pos, end: token.end, newText });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const category = (0, kopytko_brightscript_parser_2.getKeywordCategory)(lower);
|
|
92
|
+
const option = (0, kopytko_brightscript_parser_2.resolveKeywordCasing)(category, config);
|
|
93
|
+
if (option && option !== 'preserve') {
|
|
94
|
+
const newText = (0, kopytko_brightscript_parser_2.applyCasing)(token.text, option);
|
|
95
|
+
if (newText !== token.text) {
|
|
96
|
+
edits.push({ pos: token.pos, end: token.end, newText });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Identifiers
|
|
103
|
+
if (token.kind === kopytko_brightscript_parser_1.TokenKind.Identifier) {
|
|
104
|
+
// After dot — don't apply user function casing (it's a property access)
|
|
105
|
+
if (afterDot)
|
|
106
|
+
return;
|
|
107
|
+
// After 'as' — this is a type name, apply type casing
|
|
108
|
+
if (afterAs) {
|
|
109
|
+
const typeOption = (0, kopytko_brightscript_parser_2.resolveKeywordCasing)('type', config);
|
|
110
|
+
if (typeOption && typeOption !== 'preserve') {
|
|
111
|
+
const newText = (0, kopytko_brightscript_parser_2.applyCasing)(token.text, typeOption);
|
|
112
|
+
if (newText !== token.text) {
|
|
113
|
+
edits.push({ pos: token.pos, end: token.end, newText });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Builtin functions — only normalize when used as a call (followed by `(`)
|
|
119
|
+
// Don't normalize parameters/variables that share a builtin name
|
|
120
|
+
const canonical = builtinMap.get(lower);
|
|
121
|
+
if (canonical) {
|
|
122
|
+
// Check if this is being used as a function call by looking ahead
|
|
123
|
+
// in the parent node for a LeftParen or being inside a CallExpression
|
|
124
|
+
const isCall = isBuiltinCall(token, parent);
|
|
125
|
+
if (isCall) {
|
|
126
|
+
const newText = config.builtin && config.builtin !== 'preserve'
|
|
127
|
+
? (0, kopytko_brightscript_parser_2.applyCasing)(canonical, config.builtin)
|
|
128
|
+
: canonical;
|
|
129
|
+
if (newText !== token.text) {
|
|
130
|
+
edits.push({ pos: token.pos, end: token.end, newText });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// User-defined functions (only for standalone calls, not after dot)
|
|
136
|
+
// Always normalize to canonical casing from the definition
|
|
137
|
+
const userCanonical = userFunctions.get(lower);
|
|
138
|
+
if (userCanonical) {
|
|
139
|
+
const newText = config.userFunction && config.userFunction !== 'preserve'
|
|
140
|
+
? (0, kopytko_brightscript_parser_2.applyCasing)(userCanonical, config.userFunction)
|
|
141
|
+
: userCanonical; // preserve = use definition casing
|
|
142
|
+
if (newText !== token.text) {
|
|
143
|
+
edits.push({ pos: token.pos, end: token.end, newText });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** Don't apply casing to AA field key names. */
|
|
149
|
+
function visitAAField(node, edits, config) {
|
|
150
|
+
let isKey = true;
|
|
151
|
+
for (const child of node.children) {
|
|
152
|
+
if ((0, kopytko_brightscript_parser_1.isToken)(child) && child.kind === kopytko_brightscript_parser_1.TokenKind.Colon) {
|
|
153
|
+
isKey = false;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (isKey)
|
|
157
|
+
continue; // skip the key
|
|
158
|
+
if ((0, kopytko_brightscript_parser_1.isNode)(child)) {
|
|
159
|
+
// Process value side normally
|
|
160
|
+
visitNormal(child, edits, config, new Map());
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/** For DotExpression: apply casing to the object but not the member after dot. */
|
|
165
|
+
function visitDotExpression(node, edits, config, userFunctions) {
|
|
166
|
+
let afterDot = false;
|
|
167
|
+
for (const child of node.children) {
|
|
168
|
+
if ((0, kopytko_brightscript_parser_1.isToken)(child)) {
|
|
169
|
+
if (!afterDot) {
|
|
170
|
+
processToken(child, false, false, node, edits, config, userFunctions);
|
|
171
|
+
}
|
|
172
|
+
afterDot = child.kind === kopytko_brightscript_parser_1.TokenKind.Dot;
|
|
173
|
+
}
|
|
174
|
+
else if ((0, kopytko_brightscript_parser_1.isNode)(child)) {
|
|
175
|
+
if (!afterDot) {
|
|
176
|
+
visitNormal(child, edits, config, userFunctions);
|
|
177
|
+
}
|
|
178
|
+
afterDot = false;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function visitNormal(node, edits, config, userFunctions) {
|
|
183
|
+
let afterDot = false;
|
|
184
|
+
let afterAs = false;
|
|
185
|
+
for (const child of node.children) {
|
|
186
|
+
if ((0, kopytko_brightscript_parser_1.isToken)(child)) {
|
|
187
|
+
processToken(child, afterDot, afterAs, node, edits, config, userFunctions);
|
|
188
|
+
afterDot = child.kind === kopytko_brightscript_parser_1.TokenKind.Dot;
|
|
189
|
+
afterAs = child.kind === kopytko_brightscript_parser_1.TokenKind.As;
|
|
190
|
+
}
|
|
191
|
+
else if ((0, kopytko_brightscript_parser_1.isNode)(child)) {
|
|
192
|
+
if (child.kind === kopytko_brightscript_parser_1.SyntaxKind.AAField) {
|
|
193
|
+
visitAAField(child, edits, config);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
visitNormal(child, edits, config, userFunctions);
|
|
197
|
+
}
|
|
198
|
+
afterDot = false;
|
|
199
|
+
afterAs = false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** Checks if a builtin-named token is used as a function call (parent is CallExpression or IdentifierExpression inside CallExpression). */
|
|
204
|
+
function isBuiltinCall(token, parent) {
|
|
205
|
+
// If the parent is an IdentifierExpression inside a CallExpression, it's a call
|
|
206
|
+
if (parent.kind === kopytko_brightscript_parser_1.SyntaxKind.CallExpression)
|
|
207
|
+
return true;
|
|
208
|
+
// If the parent is an IdentifierExpression, check its parent
|
|
209
|
+
if (parent.kind === kopytko_brightscript_parser_1.SyntaxKind.IdentifierExpression && parent.parent?.kind === kopytko_brightscript_parser_1.SyntaxKind.CallExpression)
|
|
210
|
+
return true;
|
|
211
|
+
// Check if token is directly inside an expression that's the callee of a call
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=casingPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"casingPass.js","sourceRoot":"","sources":["../../../src/cst-passes/casingPass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CST Pass: Comment normalization.
|
|
3
|
+
*
|
|
4
|
+
* - Convert between `'` and `rem` comment styles
|
|
5
|
+
* - Ensure a space after the comment marker
|
|
6
|
+
*
|
|
7
|
+
* Unlike the regex version, this pass operates on trivia (comments are trivia
|
|
8
|
+
* in the CST, not tokens), so it cannot accidentally modify code that looks
|
|
9
|
+
* like a comment inside a string literal.
|
|
10
|
+
*/
|
|
11
|
+
import { SyntaxNode } from 'kopytko-brightscript-parser';
|
|
12
|
+
import { TextEdit } from './infrastructure';
|
|
13
|
+
type CommentStyle = "'" | 'rem' | 'preserve';
|
|
14
|
+
interface CommentNormConfig {
|
|
15
|
+
commentStyle: CommentStyle;
|
|
16
|
+
spaceAfterCommentMarker: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a comment normalization CST pass.
|
|
20
|
+
* Works on trivia attached to tokens — never touches code or string content.
|
|
21
|
+
*/
|
|
22
|
+
export declare function commentNormalizationPass(config: CommentNormConfig): (root: SyntaxNode, source: string) => TextEdit[];
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=commentNormalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentNormalization.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/commentNormalization.ts"],"names":[],"mappings":"CAAsD;;;;;;;;;GASnD;AAEH,OAAO,EAAE,UAAU,EAA+B,MAAM,6BAA6B,CAAC;AAEtF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,YAAY,GAAG,GAAG,GAAG,KAAK,GAAG,UAAU,CAAC;AAE7C,UAAU,iBAAiB;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CA6DpH"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */ /**
|
|
3
|
+
* CST Pass: Comment normalization.
|
|
4
|
+
*
|
|
5
|
+
* - Convert between `'` and `rem` comment styles
|
|
6
|
+
* - Ensure a space after the comment marker
|
|
7
|
+
*
|
|
8
|
+
* Unlike the regex version, this pass operates on trivia (comments are trivia
|
|
9
|
+
* in the CST, not tokens), so it cannot accidentally modify code that looks
|
|
10
|
+
* like a comment inside a string literal.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.commentNormalizationPass = commentNormalizationPass;
|
|
14
|
+
const kopytko_brightscript_parser_1 = require("kopytko-brightscript-parser");
|
|
15
|
+
/**
|
|
16
|
+
* Creates a comment normalization CST pass.
|
|
17
|
+
* Works on trivia attached to tokens — never touches code or string content.
|
|
18
|
+
*/
|
|
19
|
+
function commentNormalizationPass(config) {
|
|
20
|
+
if (config.commentStyle === 'preserve' && !config.spaceAfterCommentMarker) {
|
|
21
|
+
return () => [];
|
|
22
|
+
}
|
|
23
|
+
return (root, _source) => {
|
|
24
|
+
const edits = [];
|
|
25
|
+
function processTrivia(trivia) {
|
|
26
|
+
if (trivia.kind !== kopytko_brightscript_parser_1.TriviaKind.Comment && trivia.kind !== kopytko_brightscript_parser_1.TriviaKind.RemComment)
|
|
27
|
+
return;
|
|
28
|
+
// Skip @import / @mock annotations
|
|
29
|
+
if (/^\s*'\s*@(?:import|mock)\s+/.test(trivia.text))
|
|
30
|
+
return;
|
|
31
|
+
const isTickComment = trivia.kind === kopytko_brightscript_parser_1.TriviaKind.Comment;
|
|
32
|
+
const originalText = trivia.text;
|
|
33
|
+
let marker;
|
|
34
|
+
let content;
|
|
35
|
+
if (isTickComment) {
|
|
36
|
+
marker = "'";
|
|
37
|
+
content = originalText.slice(1); // after '
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
marker = originalText.slice(0, 3); // 'rem' or 'REM' etc.
|
|
41
|
+
content = originalText.slice(3);
|
|
42
|
+
}
|
|
43
|
+
// Determine target marker
|
|
44
|
+
let targetMarker = marker;
|
|
45
|
+
if (config.commentStyle !== 'preserve') {
|
|
46
|
+
targetMarker = config.commentStyle === "'" ? "'" : 'rem';
|
|
47
|
+
}
|
|
48
|
+
// Determine target content (space after marker)
|
|
49
|
+
let targetContent = content;
|
|
50
|
+
if (config.spaceAfterCommentMarker && targetContent.length > 0 && !targetContent.startsWith(' ')) {
|
|
51
|
+
targetContent = ' ' + targetContent;
|
|
52
|
+
}
|
|
53
|
+
const newText = targetMarker + targetContent;
|
|
54
|
+
if (newText !== originalText) {
|
|
55
|
+
edits.push({ pos: trivia.pos, end: trivia.end, newText });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Walk all tokens and process their trivia
|
|
59
|
+
function walkAllTrivia(node) {
|
|
60
|
+
for (const child of node.children) {
|
|
61
|
+
if ((0, kopytko_brightscript_parser_1.isToken)(child)) {
|
|
62
|
+
for (const t of child.leadingTrivia)
|
|
63
|
+
processTrivia(t);
|
|
64
|
+
for (const t of child.trailingTrivia)
|
|
65
|
+
processTrivia(t);
|
|
66
|
+
}
|
|
67
|
+
else if ((0, kopytko_brightscript_parser_1.isNode)(child)) {
|
|
68
|
+
walkAllTrivia(child);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
walkAllTrivia(root);
|
|
73
|
+
return edits;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=commentNormalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentNormalization.js","sourceRoot":"","sources":["../../../src/cst-passes/commentNormalization.ts"],"names":[],"mappings":";AAAA,sDAAsD,CAAA;;;;;;;;;GASnD;;AAiBH,4DA6DC;AA5ED,6EAAsF;AAWtF;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,MAAyB;IAChE,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QAC1E,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,IAAgB,EAAE,OAAe,EAAc,EAAE;QACvD,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,SAAS,aAAa,CAAC,MAAc;YACnC,IAAI,MAAM,CAAC,IAAI,KAAK,wCAAU,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,wCAAU,CAAC,UAAU;gBAAE,OAAO;YAExF,mCAAmC;YACnC,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO;YAE5D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,KAAK,wCAAU,CAAC,OAAO,CAAC;YACzD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;YAEjC,IAAI,MAAc,CAAC;YACnB,IAAI,OAAe,CAAC;YAEpB,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC;gBACb,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;gBACzD,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,0BAA0B;YAC1B,IAAI,YAAY,GAAG,MAAM,CAAC;YAC1B,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvC,YAAY,GAAG,MAAM,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3D,CAAC;YAED,gDAAgD;YAChD,IAAI,aAAa,GAAG,OAAO,CAAC;YAC5B,IAAI,MAAM,CAAC,uBAAuB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjG,aAAa,GAAG,GAAG,GAAG,aAAa,CAAC;YACtC,CAAC;YAED,MAAM,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC;YAC7C,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,SAAS,aAAa,CAAC,IAAgB;YACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAA,qCAAO,EAAC,KAAK,CAAC,EAAE,CAAC;oBACnB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa;wBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;oBACtD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc;wBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC;qBAAM,IAAI,IAAA,oCAAM,EAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentWidth.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/commentWidth.ts"],"names":[],"mappings":"AAAsD,OAAO,EAAE,UAAU,EAA+B,MAAM,6BAA6B,CAAC;AAE5I,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CAenG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.commentWidthPass = commentWidthPass;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */ const kopytko_brightscript_parser_1 = require("kopytko-brightscript-parser");
|
|
5
|
+
function commentWidthPass(maxWidth) {
|
|
6
|
+
if (maxWidth <= 0)
|
|
7
|
+
return () => [];
|
|
8
|
+
return (root, _source) => {
|
|
9
|
+
const edits = [];
|
|
10
|
+
function walkTrivia(node) {
|
|
11
|
+
for (const child of node.children) {
|
|
12
|
+
if ((0, kopytko_brightscript_parser_1.isToken)(child)) {
|
|
13
|
+
for (const t of child.leadingTrivia)
|
|
14
|
+
processComment(t, edits, maxWidth);
|
|
15
|
+
for (const t of child.trailingTrivia)
|
|
16
|
+
processComment(t, edits, maxWidth);
|
|
17
|
+
}
|
|
18
|
+
else if ((0, kopytko_brightscript_parser_1.isNode)(child)) {
|
|
19
|
+
walkTrivia(child);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
walkTrivia(root);
|
|
24
|
+
return edits;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function processComment(trivia, edits, maxWidth) {
|
|
28
|
+
if (trivia.kind !== kopytko_brightscript_parser_1.TriviaKind.Comment)
|
|
29
|
+
return;
|
|
30
|
+
if (trivia.text.length <= maxWidth)
|
|
31
|
+
return;
|
|
32
|
+
const content = trivia.text.slice(2);
|
|
33
|
+
const words = content.split(/\s+/);
|
|
34
|
+
const lines = [];
|
|
35
|
+
let current = "'";
|
|
36
|
+
for (const word of words) {
|
|
37
|
+
if (current.length + 1 + word.length > maxWidth && current !== "'") {
|
|
38
|
+
lines.push(current);
|
|
39
|
+
current = "' " + word;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
current += (current === "'" ? ' ' : ' ') + word;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
lines.push(current);
|
|
46
|
+
if (lines.length > 1) {
|
|
47
|
+
edits.push({ pos: trivia.pos, end: trivia.end, newText: lines.join('\n') });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=commentWidth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentWidth.js","sourceRoot":"","sources":["../../../src/cst-passes/commentWidth.ts"],"names":[],"mappings":";;AAIA,4CAeC;AAnBD,sDAAsD,CAAA,6EAAsF;AAI5I,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;IACnC,OAAO,CAAC,IAAgB,EAAE,OAAe,EAAc,EAAE;QACvD,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,SAAS,UAAU,CAAC,IAAgB;YAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAA,qCAAO,EAAC,KAAK,CAAC,EAAE,CAAC;oBACnB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa;wBAAE,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACxE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc;wBAAE,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC3E,CAAC;qBAAM,IAAI,IAAA,oCAAM,EAAC,KAAK,CAAC,EAAE,CAAC;oBAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AACD,SAAS,cAAc,CAAC,MAAc,EAAE,KAAiB,EAAE,QAAgB;IACzE,IAAI,MAAM,CAAC,IAAI,KAAK,wCAAU,CAAC,OAAO;QAAE,OAAO;IAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAClD,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SyntaxNode } from 'kopytko-brightscript-parser';
|
|
2
|
+
import { TextEdit } from './infrastructure';
|
|
3
|
+
export declare function elseOnNewLinePass(keepOnNewLine: boolean): (root: SyntaxNode, source: string) => TextEdit[];
|
|
4
|
+
//# sourceMappingURL=elseOnNewLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elseOnNewLine.d.ts","sourceRoot":"","sources":["../../../src/cst-passes/elseOnNewLine.ts"],"names":[],"mappings":"AAAsD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CAK1G"}
|