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.
- package/README.md +172 -99
- package/out/features/codeActions.d.ts.map +1 -1
- package/out/features/codeActions.js +4 -2
- package/out/features/codeActions.js.map +1 -1
- package/out/features/codeLens.d.ts.map +1 -1
- package/out/features/codeLens.js +4 -1
- package/out/features/codeLens.js.map +1 -1
- package/out/features/completion.d.ts.map +1 -1
- package/out/features/completion.js +2 -3
- package/out/features/completion.js.map +1 -1
- package/out/features/foldingRanges.d.ts.map +1 -1
- package/out/features/foldingRanges.js +4 -1
- package/out/features/foldingRanges.js.map +1 -1
- package/out/features/formatter.d.ts +2 -0
- package/out/features/formatter.d.ts.map +1 -1
- package/out/features/formatter.js +36 -7
- package/out/features/formatter.js.map +1 -1
- package/out/features/hover.d.ts +2 -1
- package/out/features/hover.d.ts.map +1 -1
- package/out/features/hover.js +54 -21
- package/out/features/hover.js.map +1 -1
- package/out/features/inlayHints.d.ts +2 -1
- package/out/features/inlayHints.d.ts.map +1 -1
- package/out/features/inlayHints.js +15 -12
- package/out/features/inlayHints.js.map +1 -1
- package/out/features/semanticTokens.d.ts.map +1 -1
- package/out/features/semanticTokens.js +22 -1
- package/out/features/semanticTokens.js.map +1 -1
- package/out/features/symbols.d.ts.map +1 -1
- package/out/features/symbols.js +5 -2
- package/out/features/symbols.js.map +1 -1
- package/out/features/validator.d.ts +0 -4
- package/out/features/validator.d.ts.map +1 -1
- package/out/features/validator.js +269 -81
- package/out/features/validator.js.map +1 -1
- package/out/parser/ast.js +2 -2
- package/out/parser/ast.js.map +1 -1
- package/out/server/settings.d.ts +1 -0
- package/out/server/settings.d.ts.map +1 -1
- package/out/server/settings.js +4 -3
- package/out/server/settings.js.map +1 -1
- package/out/server/workspace.d.ts.map +1 -1
- package/out/server/workspace.js +12 -6
- package/out/server/workspace.js.map +1 -1
- package/out/server.js +7 -6
- package/out/server.js.map +1 -1
- package/out/utils/amountFormatter.d.ts +13 -1
- package/out/utils/amountFormatter.d.ts.map +1 -1
- package/out/utils/amountFormatter.js +39 -3
- package/out/utils/amountFormatter.js.map +1 -1
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +2 -1
- package/out/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/out/features/formattingUtils.d.ts +0 -38
- package/out/features/formattingUtils.d.ts.map +0 -1
- package/out/features/formattingUtils.js +0 -107
- package/out/features/formattingUtils.js.map +0 -1
- package/out/parser/document.d.ts +0 -7
- package/out/parser/document.d.ts.map +0 -1
- package/out/parser/document.js +0 -70
- 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;;
|
|
1
|
+
{"version":3,"file":"amountFormatter.js","sourceRoot":"","sources":["../../src/utils/amountFormatter.ts"],"names":[],"mappings":"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"}
|
package/out/utils/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/out/utils/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
/**
|
package/out/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,kDAOC;AAKD,8BAGC;AAKD,8BAGC;AAKD,kCAUC;AAKD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -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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"}
|
package/out/parser/document.d.ts
DELETED
|
@@ -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"}
|
package/out/parser/document.js
DELETED
|
@@ -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"}
|