hledger-lsp 0.1.2 → 0.1.5

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.
Files changed (57) hide show
  1. package/README.md +11 -8
  2. package/out/features/codeActions.d.ts +20 -0
  3. package/out/features/codeActions.d.ts.map +1 -1
  4. package/out/features/codeActions.js +145 -0
  5. package/out/features/codeActions.js.map +1 -1
  6. package/out/features/completion.d.ts +16 -4
  7. package/out/features/completion.d.ts.map +1 -1
  8. package/out/features/completion.js +4 -4
  9. package/out/features/completion.js.map +1 -1
  10. package/out/features/definition.js +4 -4
  11. package/out/features/definition.js.map +1 -1
  12. package/out/features/formatter.d.ts +4 -20
  13. package/out/features/formatter.d.ts.map +1 -1
  14. package/out/features/formatter.js +271 -223
  15. package/out/features/formatter.js.map +1 -1
  16. package/out/features/hover.js +4 -4
  17. package/out/features/hover.js.map +1 -1
  18. package/out/features/inlayHints.d.ts +7 -2
  19. package/out/features/inlayHints.d.ts.map +1 -1
  20. package/out/features/inlayHints.js +65 -17
  21. package/out/features/inlayHints.js.map +1 -1
  22. package/out/features/semanticTokens.d.ts.map +1 -1
  23. package/out/features/semanticTokens.js +17 -14
  24. package/out/features/semanticTokens.js.map +1 -1
  25. package/out/features/symbols.js +4 -4
  26. package/out/features/symbols.js.map +1 -1
  27. package/out/features/validator.d.ts +5 -0
  28. package/out/features/validator.d.ts.map +1 -1
  29. package/out/features/validator.js +45 -13
  30. package/out/features/validator.js.map +1 -1
  31. package/out/parser/ast.d.ts +48 -7
  32. package/out/parser/ast.d.ts.map +1 -1
  33. package/out/parser/ast.js +547 -363
  34. package/out/parser/ast.js.map +1 -1
  35. package/out/parser/document.d.ts +7 -0
  36. package/out/parser/document.d.ts.map +1 -0
  37. package/out/parser/document.js +70 -0
  38. package/out/parser/document.js.map +1 -0
  39. package/out/parser/includes.d.ts.map +1 -1
  40. package/out/parser/includes.js +21 -33
  41. package/out/parser/includes.js.map +1 -1
  42. package/out/parser/index.d.ts.map +1 -1
  43. package/out/parser/index.js +39 -7
  44. package/out/parser/index.js.map +1 -1
  45. package/out/server/settings.d.ts +5 -0
  46. package/out/server/settings.d.ts.map +1 -1
  47. package/out/server/settings.js +5 -3
  48. package/out/server/settings.js.map +1 -1
  49. package/out/server.js +4 -4
  50. package/out/server.js.map +1 -1
  51. package/out/types.d.ts +16 -12
  52. package/out/types.d.ts.map +1 -1
  53. package/out/types.js +1 -0
  54. package/out/types.js.map +1 -1
  55. package/out/utils/index.js +1 -1
  56. package/out/utils/index.js.map +1 -1
  57. package/package.json +1 -1
@@ -36,7 +36,7 @@ class FormattingProvider {
36
36
  // to get inferred costs and other parsing results
37
37
  const transaction = parsed.transactions.find(t => t.line === i);
38
38
  // Collect and format all postings in this transaction
39
- const postingLayouts = [];
39
+ const transactionLines = [];
40
40
  i++;
41
41
  while (i < lines.length) {
42
42
  const postingLine = lines[i];
@@ -45,31 +45,11 @@ class FormattingProvider {
45
45
  if (!postingTrimmed || (0, index_1.isTransactionHeader)(postingTrimmed) || (0, index_1.isDirective)(postingTrimmed)) {
46
46
  break;
47
47
  }
48
- if ((0, index_1.isComment)(postingTrimmed)) {
49
- // Preserve comments between postings as-is
50
- formattedLines.push(postingTrimmed);
51
- }
52
- else if ((0, index_1.isPosting)(postingLine)) { // Check with original line, not trimmed
53
- // Use the parsed transaction's postings if available (includes inferred costs)
54
- if (transaction && postingLayouts.length < transaction.postings.length) {
55
- const posting = transaction.postings[postingLayouts.length];
56
- const layout = this.parsePostingLayout(posting, parsed, options);
57
- postingLayouts.push(layout);
58
- }
59
- else {
60
- // Fallback to parsing from text if transaction not found
61
- const posting = (0, ast_1.parsePosting)(postingLine);
62
- if (posting) {
63
- const layout = this.parsePostingLayout(posting, parsed, options);
64
- postingLayouts.push(layout);
65
- }
66
- }
67
- }
48
+ transactionLines.push(postingLine);
68
49
  i++;
69
50
  }
70
51
  // Format all postings in the transaction together for alignment
71
- const formattedPostings = this.formatTransactionPostings(postingLayouts, options);
72
- formattedLines.push(...formattedPostings);
52
+ formattedLines.push(...this.formatTransactionLines(transactionLines, transaction, parsed, options));
73
53
  // Don't increment i here as we've already moved past the transaction
74
54
  continue;
75
55
  }
@@ -97,6 +77,273 @@ class FormattingProvider {
97
77
  newText: formattedText
98
78
  }];
99
79
  }
80
+ formatTransactionLines(lines, transaction, parsed, options) {
81
+ let formattedLines = [];
82
+ if (!transaction) {
83
+ // No transaction info, just trim lines
84
+ formattedLines = lines.map(line => line.trimEnd());
85
+ return formattedLines;
86
+ }
87
+ let indentColumnWidth = 0;
88
+ let accountColumnWidth = 0;
89
+ let commodityBeforeColumnWidth = 0;
90
+ let spaceBetweenCommodityBeforeAndAmount = 0;
91
+ let negativeSignColumnWidth = 0;
92
+ let amountIntegerColumnWidth = 0;
93
+ let amountDecimalMarkColumnWidth = 0;
94
+ let amountDecimalColumnWidth = 0;
95
+ let spaceBetweenAmountAndCommodityAfterColumnWidth = 0;
96
+ let commodityAfterColumnWidth = 0;
97
+ let costColumnWidth = 0;
98
+ let costCommodityBeforeColumnWidth = 0;
99
+ let spaceBetweenCostCommodityBeforeAndAmount = 0;
100
+ let costNegativeSignColumnWidth = 0;
101
+ let costAmountIntegerColumnWidth = 0;
102
+ let costAmountDecimalMarkColumnWidth = 0;
103
+ let costAmountDecimalColumnWidth = 0;
104
+ let spaceBetweenCostAmountAndCommodityAfterColumnWidth = 0;
105
+ let costCommodityAfterColumnWidth = 0;
106
+ let assertionColumnWidth = 0;
107
+ let assertionCommodityBeforeColumnWidth = 0;
108
+ let spaceBetweenAssertionCommodityBeforeAndAmount = 0;
109
+ let assertionNegativeSignColumnWidth = 0;
110
+ let assertionAmountIntegerColumnWidth = 0;
111
+ let assertionAmountDecimalMarkColumnWidth = 0;
112
+ let assertionAmountDecimalColumnWidth = 0;
113
+ let spaceBetweenAssertionAmountAndCommodityAfterColumnWidth = 0;
114
+ let assertionCommodityAfterColumnWidth = 0;
115
+ // First pass: determine column widths and cache layouts
116
+ const postingLayouts = [];
117
+ for (let posting of transaction.postings) {
118
+ let postingLayout = {};
119
+ indentColumnWidth = Math.max(indentColumnWidth, options.indentation);
120
+ accountColumnWidth = Math.max(accountColumnWidth, posting.account.length);
121
+ if (posting.amount) {
122
+ const layout = this.layoutAmount(posting.amount, parsed, options);
123
+ postingLayout.amountLayout = layout;
124
+ commodityBeforeColumnWidth = Math.max(commodityBeforeColumnWidth, layout.commodityBefore.length);
125
+ negativeSignColumnWidth = Math.max(negativeSignColumnWidth, layout.isNegative ? 1 : 0);
126
+ spaceBetweenCommodityBeforeAndAmount = Math.max(spaceBetweenCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
127
+ amountIntegerColumnWidth = Math.max(amountIntegerColumnWidth, layout.amountIntegerString.length);
128
+ amountDecimalMarkColumnWidth = Math.max(amountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
129
+ amountDecimalColumnWidth = Math.max(amountDecimalColumnWidth, layout.amountDecimalString.length);
130
+ spaceBetweenAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
131
+ commodityAfterColumnWidth = Math.max(commodityAfterColumnWidth, layout.commodityAfter.length);
132
+ }
133
+ if (posting.cost) {
134
+ const layout = this.layoutAmount(posting.cost.amount, parsed, options);
135
+ postingLayout.costLayout = layout;
136
+ costColumnWidth = Math.max(costColumnWidth, posting.cost.type === 'unit' ? 3 : 4);
137
+ costCommodityBeforeColumnWidth = Math.max(costCommodityBeforeColumnWidth, layout.commodityBefore.length);
138
+ costNegativeSignColumnWidth = Math.max(costNegativeSignColumnWidth, layout.isNegative ? 1 : 0);
139
+ spaceBetweenCostCommodityBeforeAndAmount = Math.max(spaceBetweenCostCommodityBeforeAndAmount, (layout.spaceBetweenCommodityAndAmount && layout.commodityBefore.length) ? 1 : 0);
140
+ costAmountIntegerColumnWidth = Math.max(costAmountIntegerColumnWidth, layout.amountIntegerString.length);
141
+ costAmountDecimalMarkColumnWidth = Math.max(costAmountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
142
+ costAmountDecimalColumnWidth = Math.max(costAmountDecimalColumnWidth, layout.amountDecimalString.length);
143
+ spaceBetweenCostAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenCostAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
144
+ costCommodityAfterColumnWidth = Math.max(costCommodityAfterColumnWidth, layout.commodityAfter.length);
145
+ }
146
+ if (posting.assertion) {
147
+ const layout = this.layoutAmount(posting.assertion, parsed, options);
148
+ postingLayout.assertionLayout = layout;
149
+ assertionColumnWidth = Math.max(assertionColumnWidth, 3); // for the assertion operator with spaces
150
+ assertionCommodityBeforeColumnWidth = Math.max(assertionCommodityBeforeColumnWidth, layout.commodityBefore.length);
151
+ assertionNegativeSignColumnWidth = Math.max(assertionNegativeSignColumnWidth, layout.isNegative ? 1 : 0);
152
+ spaceBetweenAssertionCommodityBeforeAndAmount = Math.max(spaceBetweenAssertionCommodityBeforeAndAmount, layout.isNegative ? 1 : 0);
153
+ assertionAmountIntegerColumnWidth = Math.max(assertionAmountIntegerColumnWidth, layout.amountIntegerString.length);
154
+ assertionAmountDecimalMarkColumnWidth = Math.max(assertionAmountDecimalMarkColumnWidth, layout.amountDecimalString ? 1 : 0);
155
+ assertionAmountDecimalColumnWidth = Math.max(assertionAmountDecimalColumnWidth, layout.amountDecimalString.length);
156
+ spaceBetweenAssertionAmountAndCommodityAfterColumnWidth = Math.max(spaceBetweenAssertionAmountAndCommodityAfterColumnWidth, (layout.spaceBetweenCommodityAndAmount && layout.commodityAfter.length) ? 1 : 0);
157
+ assertionCommodityAfterColumnWidth = Math.max(assertionCommodityAfterColumnWidth, layout.commodityAfter.length);
158
+ }
159
+ postingLayouts.push(postingLayout);
160
+ }
161
+ // Second pass: format each posting line
162
+ const formattedPostingLines = [];
163
+ for (let idx = 0; idx < transaction.postings.length; idx++) {
164
+ const posting = transaction.postings[idx];
165
+ const postingLayout = postingLayouts[idx];
166
+ let line = ' '.repeat(options.indentation);
167
+ line += posting.account.padEnd(accountColumnWidth, ' ');
168
+ line += ' '.repeat(options.minSpacing);
169
+ if (posting.amount) {
170
+ const lengthAtPaddingLocation = line.length;
171
+ const layout = postingLayout.amountLayout;
172
+ line += layout.commodityBefore.padStart(commodityBeforeColumnWidth, ' ');
173
+ line += ' '.repeat(spaceBetweenCommodityBeforeAndAmount);
174
+ line += layout.isNegative ? '-'.padStart(negativeSignColumnWidth, ' ') : ' '.repeat(negativeSignColumnWidth);
175
+ line += layout.amountIntegerString.padStart(amountIntegerColumnWidth, ' ');
176
+ const lengthAtDecimalLocation = line.length;
177
+ const targetDecimalColumn = options.decimalAlignColumn;
178
+ const linePrePadding = line.substring(0, lengthAtPaddingLocation);
179
+ const linePostPadding = line.substring(lengthAtPaddingLocation);
180
+ const currentDecimalColumn = lengthAtDecimalLocation;
181
+ const neededPadding = targetDecimalColumn - currentDecimalColumn;
182
+ line = linePrePadding + ' '.repeat(Math.max(0, neededPadding)) + linePostPadding;
183
+ if (layout.demicalMark) {
184
+ line += layout.demicalMark.padEnd(amountDecimalMarkColumnWidth, ' ');
185
+ line += layout.amountDecimalString.padEnd(amountDecimalColumnWidth, ' ');
186
+ }
187
+ else {
188
+ line += ' '.repeat(amountDecimalMarkColumnWidth + amountDecimalColumnWidth);
189
+ }
190
+ line += ' '.repeat(spaceBetweenAmountAndCommodityAfterColumnWidth);
191
+ line += layout.commodityAfter.padEnd(commodityAfterColumnWidth, ' ');
192
+ }
193
+ else {
194
+ const lengthAtPaddingLocation = line.length;
195
+ const neededPadding = options.decimalAlignColumn - lengthAtPaddingLocation;
196
+ line += ' '.repeat(Math.max(0, neededPadding));
197
+ line += ' '.repeat(amountDecimalMarkColumnWidth +
198
+ amountDecimalColumnWidth +
199
+ spaceBetweenAmountAndCommodityAfterColumnWidth +
200
+ commodityAfterColumnWidth); // space for missing amount
201
+ }
202
+ if (posting.cost) {
203
+ const layout = postingLayout.costLayout;
204
+ line += posting.cost.type === 'unit' ? ' @'.padEnd(costColumnWidth, ' ') : ' @@'.padEnd(costColumnWidth, ' ');
205
+ line += layout.commodityBefore.padStart(costCommodityBeforeColumnWidth, ' ');
206
+ line += ' '.repeat(spaceBetweenCostCommodityBeforeAndAmount);
207
+ line += layout.isNegative ? '-'.padStart(costNegativeSignColumnWidth, ' ') : ' '.repeat(costNegativeSignColumnWidth);
208
+ line += layout.amountIntegerString.padStart(costAmountIntegerColumnWidth, ' ');
209
+ if (layout.demicalMark) {
210
+ line += layout.demicalMark.padEnd(costAmountDecimalMarkColumnWidth, ' ');
211
+ line += layout.amountDecimalString.padEnd(costAmountDecimalColumnWidth, ' ');
212
+ }
213
+ else {
214
+ line += ' '.repeat(costAmountDecimalColumnWidth + costAmountDecimalMarkColumnWidth);
215
+ }
216
+ line += ' '.repeat(spaceBetweenCostAmountAndCommodityAfterColumnWidth);
217
+ line += layout.commodityAfter.padEnd(costCommodityAfterColumnWidth, ' ');
218
+ }
219
+ else {
220
+ line += ' '.repeat(costColumnWidth +
221
+ costCommodityBeforeColumnWidth +
222
+ spaceBetweenCostCommodityBeforeAndAmount +
223
+ costNegativeSignColumnWidth +
224
+ costAmountIntegerColumnWidth +
225
+ costAmountDecimalMarkColumnWidth +
226
+ costAmountDecimalColumnWidth +
227
+ spaceBetweenCostAmountAndCommodityAfterColumnWidth +
228
+ costCommodityAfterColumnWidth); // space for missing cost
229
+ }
230
+ if (posting.assertion) {
231
+ const layout = postingLayout.assertionLayout;
232
+ line += ' ='.padEnd(assertionColumnWidth, ' ');
233
+ line += layout.commodityBefore.padStart(assertionCommodityBeforeColumnWidth, ' ');
234
+ line += ' '.repeat(spaceBetweenAssertionCommodityBeforeAndAmount);
235
+ line += layout.isNegative ? '-'.padStart(assertionNegativeSignColumnWidth, ' ') : ' '.repeat(assertionNegativeSignColumnWidth);
236
+ line += layout.amountIntegerString.padStart(assertionAmountIntegerColumnWidth, ' ');
237
+ if (layout.demicalMark) {
238
+ line += layout.demicalMark.padEnd(assertionAmountDecimalMarkColumnWidth, ' ');
239
+ line += layout.amountDecimalString.padEnd(assertionAmountDecimalColumnWidth, ' ');
240
+ }
241
+ else {
242
+ line += ' '.repeat(assertionAmountDecimalColumnWidth + assertionAmountDecimalMarkColumnWidth);
243
+ }
244
+ line += ' '.repeat(spaceBetweenAssertionAmountAndCommodityAfterColumnWidth);
245
+ line += layout.commodityAfter.padEnd(assertionCommodityAfterColumnWidth, ' ');
246
+ }
247
+ else {
248
+ line += ' '.repeat(2 + // space for spaces around assertion indicator
249
+ assertionColumnWidth +
250
+ assertionCommodityBeforeColumnWidth +
251
+ spaceBetweenAssertionCommodityBeforeAndAmount +
252
+ assertionNegativeSignColumnWidth +
253
+ assertionAmountIntegerColumnWidth +
254
+ assertionAmountDecimalColumnWidth +
255
+ assertionAmountDecimalMarkColumnWidth +
256
+ spaceBetweenAssertionAmountAndCommodityAfterColumnWidth +
257
+ assertionCommodityAfterColumnWidth); // space for missing assertion
258
+ }
259
+ if (posting.comment) {
260
+ line = line.trimEnd();
261
+ line += ';' + posting.comment.trim();
262
+ }
263
+ formattedPostingLines.push(line);
264
+ }
265
+ // Third pass: Reintegrate with comments from original lines
266
+ let postingIndex = 0;
267
+ for (let line of lines) {
268
+ const trimmed = line.trim();
269
+ if ((0, index_1.isComment)(trimmed) || trimmed === '') {
270
+ formattedLines.push(line.trimEnd());
271
+ }
272
+ else {
273
+ formattedLines.push(formattedPostingLines[postingIndex].trimEnd());
274
+ postingIndex++;
275
+ }
276
+ }
277
+ return formattedLines;
278
+ }
279
+ layoutAmount(amount, parsed, options) {
280
+ const commodity = this.findCommodity(amount.commodity, parsed);
281
+ let format = {};
282
+ let declaredPrecision = undefined;
283
+ if (commodity && commodity.format) {
284
+ format = commodity.format;
285
+ declaredPrecision = commodity.format.precision ?? undefined;
286
+ }
287
+ else if (amount.format) {
288
+ format = amount.format;
289
+ }
290
+ else {
291
+ format = {};
292
+ }
293
+ // Determine the actual precision to use based on the rules:
294
+ // 1. Never reduce precision if posting has higher precision than declared
295
+ // 2. Add zeros to match declared precision when actual < declared
296
+ // 3. Don't change formatting when commodity is not declared
297
+ const actualPrecision = amount.format?.precision ?? undefined;
298
+ let targetPrecision = undefined;
299
+ if (declaredPrecision !== undefined) {
300
+ // Commodity is declared - use max of actual and declared precision
301
+ if (actualPrecision !== undefined) {
302
+ targetPrecision = Math.max(actualPrecision, declaredPrecision);
303
+ }
304
+ else {
305
+ targetPrecision = declaredPrecision;
306
+ }
307
+ }
308
+ else {
309
+ // Commodity is not declared - preserve original precision
310
+ targetPrecision = actualPrecision;
311
+ }
312
+ return {
313
+ commodityBefore: format.symbolOnLeft ? format.symbol || '' : '',
314
+ isNegative: amount.quantity < 0,
315
+ amountIntegerString: this.formatIntegerAmount(amount, format),
316
+ amountDecimalString: this.formatDecimalAmount(amount, format, targetPrecision),
317
+ demicalMark: targetPrecision && targetPrecision > 0 ? (format.decimalMark || '.') : '',
318
+ spaceBetweenCommodityAndAmount: format.spaceBetween || false,
319
+ commodityAfter: !format.symbolOnLeft ? format.symbol || '' : ''
320
+ };
321
+ }
322
+ formatIntegerAmount(amount, format) {
323
+ const integerPart = Math.floor(Math.abs(amount.quantity)).toString();
324
+ // Format integer part with grouping if specified
325
+ let integerString = '';
326
+ if (format.thousandsSeparator) {
327
+ const regex = /\B(?=(\d{3})+(?!\d))/g;
328
+ integerString = integerPart.replace(regex, format.thousandsSeparator);
329
+ }
330
+ else {
331
+ integerString = integerPart;
332
+ }
333
+ return integerString;
334
+ }
335
+ formatDecimalAmount(amount, format, targetPrecision) {
336
+ const decimalPart = Math.abs(amount.quantity) % 1;
337
+ // Format decimal part based on target precision
338
+ let decimalString = '';
339
+ if (targetPrecision !== undefined && targetPrecision > 0) {
340
+ decimalString = decimalPart.toFixed(targetPrecision).substring(2); // Skip "0."
341
+ }
342
+ else if (decimalPart > 0) {
343
+ decimalString = decimalPart.toString().substring(2); // Skip "0."
344
+ }
345
+ return decimalString;
346
+ }
100
347
  /**
101
348
  * Format a range of lines
102
349
  */
@@ -162,210 +409,11 @@ class FormattingProvider {
162
409
  }
163
410
  return result;
164
411
  }
165
- /**
166
- * Parse a posting into its layout components
167
- */
168
- parsePostingLayout(posting, parsed, options) {
169
- const indent = ' '.repeat(options.indentation);
170
- const account = posting.account;
171
- const parsedAmount = posting.amount
172
- ? this.parseAmount(posting.amount, parsed)
173
- : null;
174
- const parsedCost = posting.cost
175
- ? this.parseCost(posting.cost, parsed)
176
- : null;
177
- const parsedAssertion = posting.assertion
178
- ? this.parseAmount(posting.assertion, parsed)
179
- : null;
180
- const comment = posting.comment || '';
181
- return {
182
- posting,
183
- indent,
184
- account,
185
- parsedAmount,
186
- parsedCost,
187
- parsedAssertion,
188
- comment
189
- };
190
- }
191
- /**
192
- * Parse an amount into its components for column alignment
193
- */
194
- parseAmount(amount, parsed) {
195
- const commodity = this.findCommodity(amount.commodity, parsed);
196
- const absQuantity = Math.abs(amount.quantity);
197
- const isNegative = amount.quantity < 0;
198
- // Determine precision
199
- const actualPrecision = this.getDecimalPlaces(amount.quantity);
200
- const usePrecision = commodity?.format?.precision !== null && commodity?.format?.precision !== undefined
201
- ? Math.max(actualPrecision, commodity.format.precision)
202
- : actualPrecision;
203
- // Format the number
204
- const formattedNumber = absQuantity.toFixed(usePrecision);
205
- const decimalPos = formattedNumber.indexOf('.');
206
- const decimalPosition = decimalPos >= 0 ? decimalPos : formattedNumber.length;
207
- // Build amount string with negative sign
208
- const amountNumber = (isNegative ? '-' : '') + formattedNumber;
209
- // Determine commodity placement
210
- const commoditySymbol = commodity?.format?.symbol || amount.commodity || '';
211
- let commodityBefore = '';
212
- let commodityAfter = '';
213
- if (commodity?.format) {
214
- if (commodity.format.symbolOnLeft) {
215
- commodityBefore = commoditySymbol;
216
- }
217
- else {
218
- commodityAfter = commoditySymbol;
219
- }
220
- }
221
- else if (commoditySymbol) {
222
- // Default heuristic: currencies go on left
223
- const leftSymbols = ['$', '€', '£', '¥'];
224
- if (leftSymbols.includes(commoditySymbol)) {
225
- commodityBefore = commoditySymbol;
226
- }
227
- else {
228
- commodityAfter = commoditySymbol;
229
- }
230
- }
231
- return {
232
- commodityBefore,
233
- amountNumber,
234
- commodityAfter,
235
- decimalPosition: isNegative ? decimalPosition + 1 : decimalPosition // Adjust for minus sign
236
- };
237
- }
238
- /**
239
- * Parse a cost into its components for formatting
240
- */
241
- parseCost(cost, parsed) {
242
- const parsedAmount = this.parseAmount(cost.amount, parsed);
243
- return {
244
- type: cost.type,
245
- commodityBefore: parsedAmount.commodityBefore,
246
- amountNumber: parsedAmount.amountNumber,
247
- commodityAfter: parsedAmount.commodityAfter,
248
- decimalPosition: parsedAmount.decimalPosition
249
- };
250
- }
251
- /**
252
- * Format all postings in a transaction with column alignment
253
- */
254
- formatTransactionPostings(layouts, options) {
255
- if (layouts.length === 0) {
256
- return [];
257
- }
258
- // Calculate column widths for this transaction
259
- let maxAccountLen = 0;
260
- let maxCommodityBeforeLen = 0;
261
- let maxCommodityAfterLen = 0;
262
- let maxAssertionCommodityBeforeLen = 0;
263
- let maxAssertionCommodityAfterLen = 0;
264
- for (const layout of layouts) {
265
- maxAccountLen = Math.max(maxAccountLen, layout.account.length);
266
- if (layout.parsedAmount) {
267
- maxCommodityBeforeLen = Math.max(maxCommodityBeforeLen, layout.parsedAmount.commodityBefore.length);
268
- maxCommodityAfterLen = Math.max(maxCommodityAfterLen, layout.parsedAmount.commodityAfter.length);
269
- }
270
- if (layout.parsedAssertion) {
271
- maxAssertionCommodityBeforeLen = Math.max(maxAssertionCommodityBeforeLen, layout.parsedAssertion.commodityBefore.length);
272
- maxAssertionCommodityAfterLen = Math.max(maxAssertionCommodityAfterLen, layout.parsedAssertion.commodityAfter.length);
273
- }
274
- }
275
- // Apply maximum constraints
276
- maxAccountLen = Math.min(maxAccountLen, options.maxAccountWidth);
277
- maxCommodityBeforeLen = Math.min(maxCommodityBeforeLen, options.maxCommodityWidth);
278
- maxCommodityAfterLen = Math.min(maxCommodityAfterLen, options.maxCommodityWidth);
279
- maxAssertionCommodityBeforeLen = Math.min(maxAssertionCommodityBeforeLen, options.maxCommodityWidth);
280
- maxAssertionCommodityAfterLen = Math.min(maxAssertionCommodityAfterLen, options.maxCommodityWidth);
281
- // Format each posting
282
- return layouts.map(layout => {
283
- let result = layout.indent + layout.account;
284
- // If no amount, just return account with comment if any
285
- if (!layout.parsedAmount) {
286
- if (layout.comment) {
287
- result += ' ;' + layout.comment;
288
- }
289
- return result;
290
- }
291
- // Calculate spacing to reach decimal align column
292
- const accountEnd = layout.indent.length + layout.account.length;
293
- // Target position for the decimal point
294
- let decimalTargetCol = options.decimalAlignColumn;
295
- // Calculate where amount needs to start to align decimal at target
296
- const amountStartCol = decimalTargetCol - layout.parsedAmount.decimalPosition;
297
- // Calculate where commodity-before needs to start (right-aligned before amount)
298
- const commodityBeforeStartCol = amountStartCol - (layout.parsedAmount.commodityBefore.length > 0 ? layout.parsedAmount.commodityBefore.length : 0);
299
- // Calculate spacing needed after account
300
- let spacingAfterAccount = commodityBeforeStartCol - accountEnd;
301
- // Ensure minimum spacing
302
- if (spacingAfterAccount < options.minSpacing) {
303
- spacingAfterAccount = options.minSpacing;
304
- }
305
- // Add spacing
306
- result += ' '.repeat(spacingAfterAccount);
307
- // Add commodity-before (right-aligned in its column)
308
- if (layout.parsedAmount.commodityBefore) {
309
- result += layout.parsedAmount.commodityBefore;
310
- }
311
- // Add amount
312
- result += layout.parsedAmount.amountNumber;
313
- // Add commodity-after (left-aligned in its column)
314
- if (layout.parsedAmount.commodityAfter) {
315
- result += ' ' + layout.parsedAmount.commodityAfter;
316
- }
317
- // Add cost notation if present
318
- if (layout.parsedCost) {
319
- // Add @ or @@ operator
320
- result += layout.parsedCost.type === 'unit' ? ' @ ' : ' @@ ';
321
- // Add cost commodity-before
322
- if (layout.parsedCost.commodityBefore) {
323
- result += layout.parsedCost.commodityBefore;
324
- }
325
- // Add cost amount
326
- result += layout.parsedCost.amountNumber;
327
- // Add cost commodity-after
328
- if (layout.parsedCost.commodityAfter) {
329
- result += ' ' + layout.parsedCost.commodityAfter;
330
- }
331
- }
332
- // Add balance assertion if present
333
- if (layout.parsedAssertion) {
334
- result += ' = ';
335
- // Add assertion commodity-before
336
- if (layout.parsedAssertion.commodityBefore) {
337
- result += layout.parsedAssertion.commodityBefore;
338
- }
339
- // Add assertion amount
340
- result += layout.parsedAssertion.amountNumber;
341
- // Add assertion commodity-after
342
- if (layout.parsedAssertion.commodityAfter) {
343
- result += ' ' + layout.parsedAssertion.commodityAfter;
344
- }
345
- }
346
- // Add comment if present
347
- if (layout.comment) {
348
- result += ' ;' + layout.comment;
349
- }
350
- return result;
351
- });
352
- }
353
- /**
354
- * Get the number of decimal places in a number
355
- */
356
- getDecimalPlaces(value) {
357
- const str = value.toString();
358
- const decimalIndex = str.indexOf('.');
359
- if (decimalIndex === -1) {
360
- return 0;
361
- }
362
- return str.length - decimalIndex - 1;
363
- }
364
412
  /**
365
413
  * Find the commodity format from parsed document
366
414
  */
367
415
  findCommodity(commodityName, parsed) {
368
- return parsed.commodities.find(c => c.name === commodityName);
416
+ return parsed.commodities.get(commodityName);
369
417
  }
370
418
  }
371
419
  exports.FormattingProvider = FormattingProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/features/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/features/formatter.ts"],"names":[],"mappings":"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"}
@@ -59,12 +59,12 @@ class HoverProvider {
59
59
  return this.provideAccountHover(token, parsed);
60
60
  }
61
61
  // Check for commodity
62
- const commodity = parsed.commodities.find(c => c.name === token);
62
+ const commodity = parsed.commodities.get(token);
63
63
  if (commodity) {
64
64
  return this.provideCommodityHover(commodity);
65
65
  }
66
66
  // Check for payee - only if token is part of payee name
67
- const payee = parsed.payees.find(p => p.name.toLowerCase().includes(token.toLowerCase()));
67
+ const payee = parsed.payees.get(token) || Array.from(parsed.payees.values()).find(p => p.name.toLowerCase().includes(token.toLowerCase()));
68
68
  if (payee?.declared) {
69
69
  return this.providePayeeHover(payee, parsed);
70
70
  }
@@ -127,7 +127,7 @@ class HoverProvider {
127
127
  * Provide hover for accounts
128
128
  */
129
129
  provideAccountHover(accountName, parsed) {
130
- const account = parsed.accounts.find(a => a.name === accountName);
130
+ const account = parsed.accounts.get(accountName);
131
131
  if (!account) {
132
132
  return {
133
133
  contents: {
@@ -247,7 +247,7 @@ class HoverProvider {
247
247
  * Provide hover for tags
248
248
  */
249
249
  provideTagHover(tagName, parsed) {
250
- const tag = parsed.tags.find(t => t.name === tagName);
250
+ const tag = parsed.tags.get(tagName);
251
251
  if (!tag) {
252
252
  return {
253
253
  contents: {