hledger-lsp 0.1.6 → 0.1.8

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 (62) hide show
  1. package/README.md +172 -99
  2. package/out/features/codeActions.d.ts.map +1 -1
  3. package/out/features/codeActions.js +4 -2
  4. package/out/features/codeActions.js.map +1 -1
  5. package/out/features/codeLens.d.ts.map +1 -1
  6. package/out/features/codeLens.js +4 -1
  7. package/out/features/codeLens.js.map +1 -1
  8. package/out/features/completion.d.ts.map +1 -1
  9. package/out/features/completion.js +2 -3
  10. package/out/features/completion.js.map +1 -1
  11. package/out/features/foldingRanges.d.ts.map +1 -1
  12. package/out/features/foldingRanges.js +4 -1
  13. package/out/features/foldingRanges.js.map +1 -1
  14. package/out/features/formatter.d.ts +2 -0
  15. package/out/features/formatter.d.ts.map +1 -1
  16. package/out/features/formatter.js +36 -7
  17. package/out/features/formatter.js.map +1 -1
  18. package/out/features/hover.d.ts +2 -1
  19. package/out/features/hover.d.ts.map +1 -1
  20. package/out/features/hover.js +54 -21
  21. package/out/features/hover.js.map +1 -1
  22. package/out/features/inlayHints.d.ts +2 -1
  23. package/out/features/inlayHints.d.ts.map +1 -1
  24. package/out/features/inlayHints.js +15 -12
  25. package/out/features/inlayHints.js.map +1 -1
  26. package/out/features/semanticTokens.d.ts.map +1 -1
  27. package/out/features/semanticTokens.js +22 -1
  28. package/out/features/semanticTokens.js.map +1 -1
  29. package/out/features/symbols.d.ts.map +1 -1
  30. package/out/features/symbols.js +5 -2
  31. package/out/features/symbols.js.map +1 -1
  32. package/out/features/validator.d.ts +0 -4
  33. package/out/features/validator.d.ts.map +1 -1
  34. package/out/features/validator.js +269 -81
  35. package/out/features/validator.js.map +1 -1
  36. package/out/parser/ast.js +2 -2
  37. package/out/parser/ast.js.map +1 -1
  38. package/out/server/settings.d.ts +1 -0
  39. package/out/server/settings.d.ts.map +1 -1
  40. package/out/server/settings.js +4 -3
  41. package/out/server/settings.js.map +1 -1
  42. package/out/server/workspace.d.ts.map +1 -1
  43. package/out/server/workspace.js +12 -6
  44. package/out/server/workspace.js.map +1 -1
  45. package/out/server.js +7 -6
  46. package/out/server.js.map +1 -1
  47. package/out/utils/amountFormatter.d.ts +13 -1
  48. package/out/utils/amountFormatter.d.ts.map +1 -1
  49. package/out/utils/amountFormatter.js +39 -3
  50. package/out/utils/amountFormatter.js.map +1 -1
  51. package/out/utils/index.d.ts.map +1 -1
  52. package/out/utils/index.js +2 -1
  53. package/out/utils/index.js.map +1 -1
  54. package/package.json +1 -1
  55. package/out/features/formattingUtils.d.ts +0 -38
  56. package/out/features/formattingUtils.d.ts.map +0 -1
  57. package/out/features/formattingUtils.js +0 -107
  58. package/out/features/formattingUtils.js.map +0 -1
  59. package/out/parser/document.d.ts +0 -7
  60. package/out/parser/document.d.ts.map +0 -1
  61. package/out/parser/document.js +0 -70
  62. package/out/parser/document.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"amountFormatter.js","sourceRoot":"","sources":["../../src/utils/amountFormatter.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAYH,oCAwCC;AAhDD;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,QAAgB,EAAE,SAAiB,EAAE,MAAsB;IACtF,iDAAiD;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAErC,qCAAqC;IACrC,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAExD,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC;QAC1B,gCAAgC;QAChC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;QAClD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtC,6CAA6C;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,eAAe,EAAE,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,GAAG,eAAe,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,4CAA4C;QAC5C,4EAA4E;QAC5E,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,GAAG,SAAS,GAAG,eAAe,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,GAAG,eAAe,GAAG,GAAG,GAAG,SAAS,CAAC;QAClD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,eAAe;QACf,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"amountFormatter.js","sourceRoot":"","sources":["../../src/utils/amountFormatter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D"}
@@ -57,7 +57,8 @@ function isDirective(line) {
57
57
  function extractAccountFromPosting(line) {
58
58
  const trimmed = line.trim();
59
59
  // Account name is the first token after indentation
60
- const match = trimmed.match(/^([^;\s]+(?:\s+[^;\s]+)*?)(?:\s{2,}|\s+\$|\s+[0-9-]|$)/);
60
+ // Must be followed by 2+ spaces, a tab, or end of line (possibly with currency/amount)
61
+ const match = trimmed.match(/^([^;\s]+(?:\s+[^;\s]+)*?)(?:\s{2,}|\t|\s+\$|\s+[0-9-]|$)/);
61
62
  return match ? match[1].trim() : null;
62
63
  }
63
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hledger-lsp",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Language Server Protocol implementation for hledger plain text accounting",
5
5
  "main": "./out/server.js",
6
6
  "bin": {
@@ -1,38 +0,0 @@
1
- /**
2
- * Shared formatting utilities
3
- */
4
- import { Amount, ParsedDocument, Commodity, Format } from '../types';
5
- export interface FormattingOptions {
6
- /** Number of spaces for posting indentation (default: 4) */
7
- indentation?: number;
8
- /** Maximum width for account names (default: 42) */
9
- maxAccountWidth?: number;
10
- /** Maximum width for commodity symbols (default: 4) */
11
- maxCommodityWidth?: number;
12
- /** Maximum width for amount numbers (default: 12) */
13
- maxAmountWidth?: number;
14
- /** Minimum spaces between account and amount (default: 2) */
15
- minSpacing?: number;
16
- /** Target column for decimal alignment (default: 52) */
17
- decimalAlignColumn?: number;
18
- /** Target column for assertion decimal alignment (default: 70) */
19
- assertionDecimalAlignColumn?: number;
20
- }
21
- export interface AmountLayout {
22
- commodityBefore: string;
23
- isNegative: boolean;
24
- amountIntegerString: string;
25
- amountDecimalString: string;
26
- demicalMark: string;
27
- commodityAfter: string;
28
- spaceBetweenCommodityAndAmount: boolean;
29
- }
30
- export declare const DEFAULT_OPTIONS: Required<FormattingOptions>;
31
- /**
32
- * Find the commodity format from parsed document
33
- */
34
- export declare function findCommodity(commodityName: string, parsed: ParsedDocument): Commodity | undefined;
35
- export declare function formatIntegerAmount(amount: Amount, format: Format): string;
36
- export declare function formatDecimalAmount(amount: Amount, format: Format, targetPrecision?: number): string;
37
- export declare function layoutAmount(amount: Amount, parsed: ParsedDocument, options: Required<FormattingOptions>): AmountLayout;
38
- //# sourceMappingURL=formattingUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formattingUtils.d.ts","sourceRoot":"","sources":["../../src/features/formattingUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAC9B,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B,EAAE,OAAO,CAAC;CAC3C;AAED,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAQvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,SAAS,CAElG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAa1E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAYpG;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAsDvH"}
@@ -1,107 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shared formatting utilities
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DEFAULT_OPTIONS = void 0;
7
- exports.findCommodity = findCommodity;
8
- exports.formatIntegerAmount = formatIntegerAmount;
9
- exports.formatDecimalAmount = formatDecimalAmount;
10
- exports.layoutAmount = layoutAmount;
11
- exports.DEFAULT_OPTIONS = {
12
- indentation: 4,
13
- maxAccountWidth: 42,
14
- maxCommodityWidth: 4,
15
- maxAmountWidth: 12,
16
- minSpacing: 2,
17
- decimalAlignColumn: 52,
18
- assertionDecimalAlignColumn: 70
19
- };
20
- /**
21
- * Find the commodity format from parsed document
22
- */
23
- function findCommodity(commodityName, parsed) {
24
- return parsed.commodities.get(commodityName);
25
- }
26
- function formatIntegerAmount(amount, format) {
27
- const integerPart = Math.floor(Math.abs(amount.quantity)).toString();
28
- // Format integer part with grouping if specified
29
- let integerString = '';
30
- if (format.thousandsSeparator) {
31
- const regex = /\B(?=(\d{3})+(?!\d))/g;
32
- integerString = integerPart.replace(regex, format.thousandsSeparator);
33
- }
34
- else {
35
- integerString = integerPart;
36
- }
37
- return integerString;
38
- }
39
- function formatDecimalAmount(amount, format, targetPrecision) {
40
- const decimalPart = Math.abs(amount.quantity) % 1;
41
- // Format decimal part based on target precision
42
- let decimalString = '';
43
- if (targetPrecision !== undefined && targetPrecision > 0) {
44
- decimalString = decimalPart.toFixed(targetPrecision).substring(2); // Skip "0."
45
- }
46
- else if (decimalPart > 0) {
47
- decimalString = decimalPart.toString().substring(2); // Skip "0."
48
- }
49
- return decimalString;
50
- }
51
- function layoutAmount(amount, parsed, options) {
52
- const commodity = findCommodity(amount.commodity, parsed);
53
- let format = {};
54
- let declaredPrecision = undefined;
55
- if (commodity && commodity.format) {
56
- format = commodity.format;
57
- declaredPrecision = commodity.format.precision ?? undefined;
58
- }
59
- else if (amount.format) {
60
- format = amount.format;
61
- }
62
- else {
63
- // Default heuristic: common currencies go on left
64
- const leftSymbols = ['$', '€', '£', '¥'];
65
- if (leftSymbols.includes(amount.commodity)) {
66
- format = { symbolOnLeft: true, symbol: amount.commodity, decimalMark: '.' };
67
- }
68
- else {
69
- // For other commodities, default to right with space if not empty
70
- format = {
71
- symbolOnLeft: false,
72
- symbol: amount.commodity,
73
- spaceBetween: !!amount.commodity,
74
- decimalMark: '.'
75
- };
76
- }
77
- }
78
- // Determine the actual precision to use based on the rules:
79
- // 1. Never reduce precision if posting has higher precision than declared
80
- // 2. Add zeros to match declared precision when actual < declared
81
- // 3. Don't change formatting when commodity is not declared
82
- const actualPrecision = amount.format?.precision ?? undefined;
83
- let targetPrecision = undefined;
84
- if (declaredPrecision !== undefined) {
85
- // Commodity is declared - use max of actual and declared precision
86
- if (actualPrecision !== undefined) {
87
- targetPrecision = Math.max(actualPrecision, declaredPrecision);
88
- }
89
- else {
90
- targetPrecision = declaredPrecision;
91
- }
92
- }
93
- else {
94
- // Commodity is not declared - preserve original precision
95
- targetPrecision = actualPrecision;
96
- }
97
- return {
98
- commodityBefore: format.symbolOnLeft ? format.symbol || '' : '',
99
- isNegative: amount.quantity < 0,
100
- amountIntegerString: formatIntegerAmount(amount, format),
101
- amountDecimalString: formatDecimalAmount(amount, format, targetPrecision),
102
- demicalMark: targetPrecision && targetPrecision > 0 ? (format.decimalMark || '.') : '',
103
- spaceBetweenCommodityAndAmount: format.spaceBetween || false,
104
- commodityAfter: !format.symbolOnLeft ? format.symbol || '' : ''
105
- };
106
- }
107
- //# sourceMappingURL=formattingUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formattingUtils.js","sourceRoot":"","sources":["../../src/features/formattingUtils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { ParsedDocument, Commodity, Account, Payee, Tag, Transaction } from "../types";
2
- export declare function addCommodity(parsedDocument: ParsedDocument, commodity: Commodity): void;
3
- export declare function addAccount(parsedDocument: ParsedDocument, account: Account): void;
4
- export declare function addPayee(parsedDocument: ParsedDocument, payee: Payee): void;
5
- export declare function addTag(parsedDocument: ParsedDocument, tag: Tag): void;
6
- export declare function addTransaction(parsedDocument: ParsedDocument, transaction: Transaction): void;
7
- //# sourceMappingURL=document.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/parser/document.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvF,wBAAgB,YAAY,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAYvF;AAED,wBAAgB,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAajF;AAED,wBAAgB,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAY3E;AAED,wBAAgB,MAAM,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAYrE;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAE7F"}
@@ -1,70 +0,0 @@
1
- "use strict";
2
- /*
3
- Parsed Document helper functions
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.addCommodity = addCommodity;
7
- exports.addAccount = addAccount;
8
- exports.addPayee = addPayee;
9
- exports.addTag = addTag;
10
- exports.addTransaction = addTransaction;
11
- function addCommodity(parsedDocument, commodity) {
12
- const existingCommodity = parsedDocument.commodities.get(commodity.name);
13
- if (existingCommodity) {
14
- if (!existingCommodity.declared && commodity.declared) {
15
- // If the commodity is not declared, we want to override it with the declared one
16
- parsedDocument.commodities.set(commodity.name, commodity);
17
- return;
18
- }
19
- else {
20
- return;
21
- }
22
- }
23
- parsedDocument.commodities.set(commodity.name, commodity);
24
- }
25
- function addAccount(parsedDocument, account) {
26
- const existingAccount = parsedDocument.accounts.get(account.name);
27
- if (existingAccount) {
28
- if (!existingAccount.declared && account.declared) {
29
- // If the account is not declared, we want to override it with the declared one
30
- parsedDocument.accounts.set(account.name, account);
31
- return;
32
- }
33
- else {
34
- return;
35
- }
36
- }
37
- parsedDocument.accounts.set(account.name, account);
38
- }
39
- function addPayee(parsedDocument, payee) {
40
- const existingPayee = parsedDocument.payees.get(payee.name);
41
- if (existingPayee) {
42
- if (!existingPayee.declared && payee.declared) {
43
- // If the payee is not declared, we want to override it with the declared one
44
- parsedDocument.payees.set(payee.name, payee);
45
- return;
46
- }
47
- else {
48
- return;
49
- }
50
- }
51
- parsedDocument.payees.set(payee.name, payee);
52
- }
53
- function addTag(parsedDocument, tag) {
54
- const existingTag = parsedDocument.tags.get(tag.name);
55
- if (existingTag) {
56
- if (!existingTag.declared && tag.declared) {
57
- // If the tag is not declared, we want to override it with the declared one
58
- parsedDocument.tags.set(tag.name, tag);
59
- return;
60
- }
61
- else {
62
- return;
63
- }
64
- }
65
- parsedDocument.tags.set(tag.name, tag);
66
- }
67
- function addTransaction(parsedDocument, transaction) {
68
- parsedDocument.transactions.push(transaction);
69
- }
70
- //# sourceMappingURL=document.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/parser/document.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,oCAYC;AAED,gCAaC;AAED,4BAYC;AAED,wBAYC;AAED,wCAEC;AA3DD,SAAgB,YAAY,CAAC,cAA8B,EAAE,SAAoB;IAC7E,MAAM,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,iBAAiB,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACpD,iFAAiF;YACjF,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1D,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,OAAO;QACX,CAAC;IACL,CAAC;IACD,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,UAAU,CAAC,cAA8B,EAAE,OAAgB;IACvE,MAAM,eAAe,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE,IAAI,eAAe,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChD,+EAA+E;YAC/E,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,OAAO;QACX,CAAC;IACL,CAAC;IACD,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,QAAQ,CAAC,cAA8B,EAAE,KAAY;IACjE,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,aAAa,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC5C,6EAA6E;YAC7E,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,OAAO;QACX,CAAC;IACL,CAAC;IACD,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,MAAM,CAAC,cAA8B,EAAE,GAAQ;IAC3D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,WAAW,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,2EAA2E;YAC3E,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,OAAO;QACX,CAAC;IACL,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,cAAc,CAAC,cAA8B,EAAE,WAAwB;IACnF,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC"}