From ad658c301fbf0e79beff975a56ee721c664e53c9 Mon Sep 17 00:00:00 2001 From: mProjectsCode Date: Thu, 2 Nov 2023 21:05:41 +0100 Subject: [PATCH] fix #136 --- .../PF2e Encounter Calculator.md | 3 +- exampleVault/View Fields/View Field.md | 9 +++++- src/api/InputFieldAPI.ts | 2 +- .../AbstractInputFieldArgument.ts | 2 +- .../InputFieldArgumentContainer.ts | 2 +- .../arguments/AddLabelsInputFieldArgument.ts | 2 +- .../arguments/ClassInputFieldArgument.ts | 2 +- .../DefaultValueInputFieldArgument.ts | 4 +-- .../arguments/LimitInputFieldArgument.ts | 2 +- .../arguments/MaxValueInputFieldArgument.ts | 2 +- .../arguments/MinValueInputFieldArgument.ts | 2 +- .../arguments/OffValueInputFieldArgument.ts | 4 +-- .../arguments/OnValueInputFieldArgument.ts | 4 +-- .../arguments/OptionInputFieldArgument.ts | 4 +-- .../OptionQueryInputFieldArgument.ts | 2 +- .../PlaceholderInputFieldArgument.ts | 2 +- .../arguments/ShowcaseInputFieldArgument.ts | 2 +- .../StepSizeValueInputFieldArgument.ts | 2 +- .../arguments/TitleInputFieldArgument.ts | 2 +- .../arguments/UseLinksInputFieldArgument.ts | 2 +- .../AbstractViewFieldArgument.ts | 2 +- .../ViewFieldArgumentContainer.ts | 2 +- .../argumnets/HiddenViewFieldArgument.ts | 2 +- .../RenderMarkdownViewFieldArgument.ts | 2 +- src/inputFields/InputFieldFactory.ts | 2 +- .../ImageSuggester/ImageSuggesterIPF.ts | 2 +- .../fields/InlineSelect/InlineSelectIPF.ts | 2 +- src/inputFields/fields/List/ListIPF.ts | 2 +- .../fields/ListSuggester/ListSuggesterIPF.ts | 2 +- .../fields/MultiSelect/MultiSelectIPF.ts | 2 +- src/inputFields/fields/Select/SelectIPF.ts | 2 +- .../fields/Suggester/SuggesterHelper.ts | 2 +- .../fields/Suggester/SuggesterIPF.ts | 2 +- .../fields/Suggester/SuggesterInputModal.ts | 2 +- src/inputFields/fields/Toggle/ToggleIPF.ts | 2 +- src/metaBindTable/MetaBindTable.ts | 2 +- .../inputFieldParser/InputFieldDeclaration.ts | 2 +- src/parsers/nomParsers/GeneralParsers.ts | 11 +++---- src/parsers/nomParsers/ViewFieldParsers.ts | 30 +++++++++++++++++-- .../viewFieldParser/ViewFieldDeclaration.ts | 2 +- src/renderChildren/ViewFieldMDRC.ts | 2 +- src/utils/Literal.ts | 2 +- 42 files changed, 83 insertions(+), 54 deletions(-) diff --git a/exampleVault/Advanced Examples/PF2e Encounter Calculator.md b/exampleVault/Advanced Examples/PF2e Encounter Calculator.md index 06d79205..23968546 100644 --- a/exampleVault/Advanced Examples/PF2e Encounter Calculator.md +++ b/exampleVault/Advanced Examples/PF2e Encounter Calculator.md @@ -33,7 +33,8 @@ Player Level: `INPUT[number:playerLevel]` ### Enemies -%% | Name | Level | Count | +%% +| Name | Level | Count | | --------------------------- | ---------------------------- | ---------------------------- | | `INPUT[text:enemy[0].name]` | `INPUT[number:enemy[0].level]` | `INPUT[number:enemy[0].count]` | | `INPUT[text:enemy[1].name]` | `INPUT[number:enemy[1].level]` | `INPUT[number:enemy[1].count]` | diff --git a/exampleVault/View Fields/View Field.md b/exampleVault/View Fields/View Field.md index f588a0df..fc90e468 100644 --- a/exampleVault/View Fields/View Field.md +++ b/exampleVault/View Fields/View Field.md @@ -10,6 +10,8 @@ list: - 3 object: key: value +file: Example Note with Embeds +image: Other/Images/img_frozen_branch.jpg --- `INPUT[number:number1]` @@ -43,8 +45,13 @@ Display Computed as Markdown: `VIEW[{computed}][text(renderMarkdown)]` Loop Error: `VIEW[**{computed}**][text():distance]` Self Loop Error: `VIEW[**{computed}**][text():computed]` +## Links -`VIEW['[[{file}|link]]'][text(renderMarkdown)]` +`INPUT[suggester(optionQuery(#example-note), useLinks(false)):file]` +`VIEW[\[\[{file}|link\]\]][text(renderMarkdown)]` + +`INPUT[imageSuggester(optionQuery("Other/Images")):image]` +`VIEW[!\[\[{image}\]\]][text(renderMarkdown)]` ## Arrays and Objects diff --git a/src/api/InputFieldAPI.ts b/src/api/InputFieldAPI.ts index 9f283557..f3d319de 100644 --- a/src/api/InputFieldAPI.ts +++ b/src/api/InputFieldAPI.ts @@ -6,7 +6,7 @@ import { type UnvalidatedFieldArgument, type UnvalidatedInputFieldDeclaration, } from '../parsers/inputFieldParser/InputFieldDeclaration'; -import { InputFieldArgumentType, InputFieldType } from '../parsers/GeneralConfigs'; +import { type InputFieldArgumentType, type InputFieldType } from '../parsers/GeneralConfigs'; export class InputFieldAPI { private readonly api: IAPI; diff --git a/src/fieldArguments/inputFieldArguments/AbstractInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/AbstractInputFieldArgument.ts index 12b2ce18..74cbc6c3 100644 --- a/src/fieldArguments/inputFieldArguments/AbstractInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/AbstractInputFieldArgument.ts @@ -1,4 +1,4 @@ import { AbstractFieldArgument } from '../AbstractFieldArgument'; -import { InputFieldArgumentConfig, InputFieldArgumentType, InputFieldType } from '../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, type InputFieldArgumentType, type InputFieldType } from '../../parsers/GeneralConfigs'; export abstract class AbstractInputFieldArgument extends AbstractFieldArgument {} diff --git a/src/fieldArguments/inputFieldArguments/InputFieldArgumentContainer.ts b/src/fieldArguments/inputFieldArguments/InputFieldArgumentContainer.ts index 087aabf6..7af90193 100644 --- a/src/fieldArguments/inputFieldArguments/InputFieldArgumentContainer.ts +++ b/src/fieldArguments/inputFieldArguments/InputFieldArgumentContainer.ts @@ -1,6 +1,6 @@ import { AbstractFieldArgumentContainer } from '../AbstractFieldArgumentContainer'; import { type InputFieldArgumentMapType } from './InputFieldArgumentFactory'; -import { InputFieldArgumentConfig, InputFieldArgumentType, InputFieldType } from '../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, type InputFieldArgumentType, type InputFieldType } from '../../parsers/GeneralConfigs'; export class InputFieldArgumentContainer extends AbstractFieldArgumentContainer { getAll(name: T): NonNullable>[] { diff --git a/src/fieldArguments/inputFieldArguments/arguments/AddLabelsInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/AddLabelsInputFieldArgument.ts index 685b31da..7d260635 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/AddLabelsInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/AddLabelsInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class AddLabelsInputFieldArgument extends AbstractInputFieldArgument { value: boolean = true; diff --git a/src/fieldArguments/inputFieldArguments/arguments/ClassInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/ClassInputFieldArgument.ts index 8204f399..6ca6b511 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/ClassInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/ClassInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class ClassInputFieldArgument extends AbstractInputFieldArgument { value: string[] = []; diff --git a/src/fieldArguments/inputFieldArguments/arguments/DefaultValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/DefaultValueInputFieldArgument.ts index 4e9fa4fe..3092adb8 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/DefaultValueInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/DefaultValueInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; -import { MBExtendedLiteral, parseLiteral } from '../../../utils/Literal'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type MBExtendedLiteral, parseLiteral } from '../../../utils/Literal'; export class DefaultValueInputFieldArgument extends AbstractInputFieldArgument { value: MBExtendedLiteral = ''; diff --git a/src/fieldArguments/inputFieldArguments/arguments/LimitInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/LimitInputFieldArgument.ts index 07ce005a..363b3d9a 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/LimitInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/LimitInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; import { ErrorLevel, MetaBindParsingError } from '../../../utils/errors/MetaBindErrors'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class LimitInputFieldArgument extends AbstractInputFieldArgument { value: number | undefined = undefined; diff --git a/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts index 7caec11e..262250a2 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/MaxValueInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { ErrorLevel, MetaBindParsingError } from '../../../utils/errors/MetaBindErrors'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class MaxValueInputFieldArgument extends AbstractInputFieldArgument { value: number = 100; diff --git a/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts index b5981c42..9869c9c5 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/MinValueInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { ErrorLevel, MetaBindParsingError } from '../../../utils/errors/MetaBindErrors'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class MinValueInputFieldArgument extends AbstractInputFieldArgument { value: number = 0; diff --git a/src/fieldArguments/inputFieldArguments/arguments/OffValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/OffValueInputFieldArgument.ts index d126feb4..5e2fd9c0 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/OffValueInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/OffValueInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseLiteral } from '../../../utils/Literal'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type MBLiteral, parseLiteral } from '../../../utils/Literal'; export class OffValueInputFieldArgument extends AbstractInputFieldArgument { value: MBLiteral = false; diff --git a/src/fieldArguments/inputFieldArguments/arguments/OnValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/OnValueInputFieldArgument.ts index 7ad28910..27e8277a 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/OnValueInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/OnValueInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseLiteral } from '../../../utils/Literal'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type MBLiteral, parseLiteral } from '../../../utils/Literal'; export class OnValueInputFieldArgument extends AbstractInputFieldArgument { value: MBLiteral = true; diff --git a/src/fieldArguments/inputFieldArguments/arguments/OptionInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/OptionInputFieldArgument.ts index b8442da7..516ec3ad 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/OptionInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/OptionInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseLiteral } from '../../../utils/Literal'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type MBLiteral, parseLiteral } from '../../../utils/Literal'; export class OptionInputFieldArgument extends AbstractInputFieldArgument { value: MBLiteral = ''; diff --git a/src/fieldArguments/inputFieldArguments/arguments/OptionQueryInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/OptionQueryInputFieldArgument.ts index af8e0103..6ea6e0b0 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/OptionQueryInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/OptionQueryInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class OptionQueryInputFieldArgument extends AbstractInputFieldArgument { value: string = ''; diff --git a/src/fieldArguments/inputFieldArguments/arguments/PlaceholderInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/PlaceholderInputFieldArgument.ts index 1617daa1..aaa1fd6d 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/PlaceholderInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/PlaceholderInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class PlaceholderInputFieldArgument extends AbstractInputFieldArgument { value: string = ''; diff --git a/src/fieldArguments/inputFieldArguments/arguments/ShowcaseInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/ShowcaseInputFieldArgument.ts index 6f71d7bc..6c142028 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/ShowcaseInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/ShowcaseInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class ShowcaseInputFieldArgument extends AbstractInputFieldArgument { value: boolean = true; diff --git a/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts index 27b70a92..77584710 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/StepSizeValueInputFieldArgument.ts @@ -1,7 +1,7 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { ErrorLevel, MetaBindParsingError } from '../../../utils/errors/MetaBindErrors'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class StepSizeValueInputFieldArgument extends AbstractInputFieldArgument { value: number = 0; diff --git a/src/fieldArguments/inputFieldArguments/arguments/TitleInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/TitleInputFieldArgument.ts index 999df8ea..022e6569 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/TitleInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/TitleInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class TitleInputFieldArgument extends AbstractInputFieldArgument { value: string = ''; diff --git a/src/fieldArguments/inputFieldArguments/arguments/UseLinksInputFieldArgument.ts b/src/fieldArguments/inputFieldArguments/arguments/UseLinksInputFieldArgument.ts index 79b55e9c..a5cc9cfd 100644 --- a/src/fieldArguments/inputFieldArguments/arguments/UseLinksInputFieldArgument.ts +++ b/src/fieldArguments/inputFieldArguments/arguments/UseLinksInputFieldArgument.ts @@ -1,6 +1,6 @@ import { AbstractInputFieldArgument } from '../AbstractInputFieldArgument'; import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; -import { InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type InputFieldArgumentConfig, InputFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class UseLinksInputFieldArgument extends AbstractInputFieldArgument { value: boolean = true; diff --git a/src/fieldArguments/viewFieldArguments/AbstractViewFieldArgument.ts b/src/fieldArguments/viewFieldArguments/AbstractViewFieldArgument.ts index c9ec8953..0aa22abc 100644 --- a/src/fieldArguments/viewFieldArguments/AbstractViewFieldArgument.ts +++ b/src/fieldArguments/viewFieldArguments/AbstractViewFieldArgument.ts @@ -1,4 +1,4 @@ import { AbstractFieldArgument } from '../AbstractFieldArgument'; -import { ViewFieldArgumentConfig, ViewFieldArgumentType, ViewFieldType } from '../../parsers/GeneralConfigs'; +import { type ViewFieldArgumentConfig, type ViewFieldArgumentType, type ViewFieldType } from '../../parsers/GeneralConfigs'; export abstract class AbstractViewFieldArgument extends AbstractFieldArgument {} diff --git a/src/fieldArguments/viewFieldArguments/ViewFieldArgumentContainer.ts b/src/fieldArguments/viewFieldArguments/ViewFieldArgumentContainer.ts index 598ee8d7..66e7fcda 100644 --- a/src/fieldArguments/viewFieldArguments/ViewFieldArgumentContainer.ts +++ b/src/fieldArguments/viewFieldArguments/ViewFieldArgumentContainer.ts @@ -1,6 +1,6 @@ import { AbstractFieldArgumentContainer } from '../AbstractFieldArgumentContainer'; import { type ViewFieldArgumentMapType } from './ViewFieldArgumentFactory'; -import { ViewFieldArgumentConfig, ViewFieldArgumentType, ViewFieldType } from '../../parsers/GeneralConfigs'; +import { type ViewFieldArgumentConfig, type ViewFieldArgumentType, type ViewFieldType } from '../../parsers/GeneralConfigs'; export class ViewFieldArgumentContainer extends AbstractFieldArgumentContainer { getAll(name: T): NonNullable>[] { diff --git a/src/fieldArguments/viewFieldArguments/argumnets/HiddenViewFieldArgument.ts b/src/fieldArguments/viewFieldArguments/argumnets/HiddenViewFieldArgument.ts index 526c0e97..be6253ee 100644 --- a/src/fieldArguments/viewFieldArguments/argumnets/HiddenViewFieldArgument.ts +++ b/src/fieldArguments/viewFieldArguments/argumnets/HiddenViewFieldArgument.ts @@ -1,6 +1,6 @@ import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; import { AbstractViewFieldArgument } from '../AbstractViewFieldArgument'; -import { ViewFieldArgumentConfig, ViewFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type ViewFieldArgumentConfig, ViewFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class HiddenViewFieldArgument extends AbstractViewFieldArgument { value: boolean = true; diff --git a/src/fieldArguments/viewFieldArguments/argumnets/RenderMarkdownViewFieldArgument.ts b/src/fieldArguments/viewFieldArguments/argumnets/RenderMarkdownViewFieldArgument.ts index 7f78c17c..44949626 100644 --- a/src/fieldArguments/viewFieldArguments/argumnets/RenderMarkdownViewFieldArgument.ts +++ b/src/fieldArguments/viewFieldArguments/argumnets/RenderMarkdownViewFieldArgument.ts @@ -1,6 +1,6 @@ import { type ParsingResultNode } from '../../../parsers/nomParsers/GeneralParsers'; import { AbstractViewFieldArgument } from '../AbstractViewFieldArgument'; -import { ViewFieldArgumentConfig, ViewFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; +import { type ViewFieldArgumentConfig, ViewFieldArgumentConfigs } from '../../../parsers/GeneralConfigs'; export class RenderMarkdownViewFieldArgument extends AbstractViewFieldArgument { value: boolean = true; diff --git a/src/inputFields/InputFieldFactory.ts b/src/inputFields/InputFieldFactory.ts index 4601c98c..49070dce 100644 --- a/src/inputFields/InputFieldFactory.ts +++ b/src/inputFields/InputFieldFactory.ts @@ -18,7 +18,7 @@ import { ListIPF } from './fields/List/ListIPF'; import { ListSuggesterIPF } from './fields/ListSuggester/ListSuggesterIPF'; import { DateIPF } from './fields/Date/DateIPF'; import { TimeIPF } from './fields/Time/TimeIPF'; -import { InputFieldConfig, InputFieldConfigs, InputFieldType } from '../parsers/GeneralConfigs'; +import { type InputFieldConfig, InputFieldConfigs, InputFieldType } from '../parsers/GeneralConfigs'; export type NewInputField = | ToggleIPF diff --git a/src/inputFields/fields/ImageSuggester/ImageSuggesterIPF.ts b/src/inputFields/fields/ImageSuggester/ImageSuggesterIPF.ts index 64e841f6..e7f9cbee 100644 --- a/src/inputFields/fields/ImageSuggester/ImageSuggesterIPF.ts +++ b/src/inputFields/fields/ImageSuggester/ImageSuggesterIPF.ts @@ -3,7 +3,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import ImageSuggesterComponent from './ImageSuggesterComponent.svelte'; import { openImageSuggesterModalForInputField } from './ImageSuggesterHelper'; -import { isLiteral, MBLiteral, stringifyLiteral } from '../../../utils/Literal'; +import { isLiteral, type MBLiteral, stringifyLiteral } from '../../../utils/Literal'; export class ImageSuggesterIPF extends AbstractInputField { constructor(renderChild: InputFieldMDRC) { diff --git a/src/inputFields/fields/InlineSelect/InlineSelectIPF.ts b/src/inputFields/fields/InlineSelect/InlineSelectIPF.ts index 1bdb0417..952daa11 100644 --- a/src/inputFields/fields/InlineSelect/InlineSelectIPF.ts +++ b/src/inputFields/fields/InlineSelect/InlineSelectIPF.ts @@ -4,7 +4,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import InlineSelectComponent from './InlineSelectComponent.svelte'; import { InputFieldArgumentType } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; export class InlineSelectIPF extends AbstractInputField { options: OptionInputFieldArgument[]; diff --git a/src/inputFields/fields/List/ListIPF.ts b/src/inputFields/fields/List/ListIPF.ts index 256e064f..81f75a63 100644 --- a/src/inputFields/fields/List/ListIPF.ts +++ b/src/inputFields/fields/List/ListIPF.ts @@ -3,7 +3,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import ListComponent from './ListComponent.svelte'; import { InputFieldArgumentType } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseUnknownToLiteralArray } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteralArray } from '../../../utils/Literal'; export class ListIPF extends AbstractInputField { constructor(renderChild: InputFieldMDRC) { diff --git a/src/inputFields/fields/ListSuggester/ListSuggesterIPF.ts b/src/inputFields/fields/ListSuggester/ListSuggesterIPF.ts index eaa4ffed..43b97fb3 100644 --- a/src/inputFields/fields/ListSuggester/ListSuggesterIPF.ts +++ b/src/inputFields/fields/ListSuggester/ListSuggesterIPF.ts @@ -3,7 +3,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import ListSuggesterComponent from './ListSuggesterComponent.svelte'; import { openSuggesterModalForInputField } from '../Suggester/SuggesterHelper'; -import { MBLiteral, parseUnknownToLiteralArray } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteralArray } from '../../../utils/Literal'; export class ListSuggesterIPF extends AbstractInputField { constructor(renderChild: InputFieldMDRC) { diff --git a/src/inputFields/fields/MultiSelect/MultiSelectIPF.ts b/src/inputFields/fields/MultiSelect/MultiSelectIPF.ts index a499bd52..cb897ac8 100644 --- a/src/inputFields/fields/MultiSelect/MultiSelectIPF.ts +++ b/src/inputFields/fields/MultiSelect/MultiSelectIPF.ts @@ -4,7 +4,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import MultiSelectComponent from './MultiSelectComponent.svelte'; import { InputFieldArgumentType } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseUnknownToLiteralArray } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteralArray } from '../../../utils/Literal'; export class MultiSelectIPF extends AbstractInputField { options: OptionInputFieldArgument[]; diff --git a/src/inputFields/fields/Select/SelectIPF.ts b/src/inputFields/fields/Select/SelectIPF.ts index 522baf18..37d4b97d 100644 --- a/src/inputFields/fields/Select/SelectIPF.ts +++ b/src/inputFields/fields/Select/SelectIPF.ts @@ -5,7 +5,7 @@ import SelectComponent from './SelectComponent.svelte'; import { type OptionInputFieldArgument } from '../../../fieldArguments/inputFieldArguments/arguments/OptionInputFieldArgument'; import { InputFieldArgumentType } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; export class SelectIPF extends AbstractInputField { options: OptionInputFieldArgument[]; diff --git a/src/inputFields/fields/Suggester/SuggesterHelper.ts b/src/inputFields/fields/Suggester/SuggesterHelper.ts index 1b870e4e..2ed686fb 100644 --- a/src/inputFields/fields/Suggester/SuggesterHelper.ts +++ b/src/inputFields/fields/Suggester/SuggesterHelper.ts @@ -6,7 +6,7 @@ import { SuggesterInputModal } from './SuggesterInputModal'; import { type SuggesterIPF } from './SuggesterIPF'; import { type ListSuggesterIPF } from '../ListSuggester/ListSuggesterIPF'; import { InputFieldArgumentType } from '../../../parsers/GeneralConfigs'; -import { MBLiteral } from '../../../utils/Literal'; +import { type MBLiteral } from '../../../utils/Literal'; export class SuggesterOption { value: T; diff --git a/src/inputFields/fields/Suggester/SuggesterIPF.ts b/src/inputFields/fields/Suggester/SuggesterIPF.ts index 77e54d28..0ba4d5df 100644 --- a/src/inputFields/fields/Suggester/SuggesterIPF.ts +++ b/src/inputFields/fields/Suggester/SuggesterIPF.ts @@ -3,7 +3,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import SuggesterComponent from './SuggesterComponent.svelte'; import { openSuggesterModalForInputField } from './SuggesterHelper'; -import { MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; export class SuggesterIPF extends AbstractInputField { constructor(renderChild: InputFieldMDRC) { diff --git a/src/inputFields/fields/Suggester/SuggesterInputModal.ts b/src/inputFields/fields/Suggester/SuggesterInputModal.ts index 25b48b3a..e2558c12 100644 --- a/src/inputFields/fields/Suggester/SuggesterInputModal.ts +++ b/src/inputFields/fields/Suggester/SuggesterInputModal.ts @@ -1,7 +1,7 @@ import { type App, FuzzySuggestModal } from 'obsidian'; import { type SuggesterOption } from './SuggesterHelper'; -import { MBLiteral } from '../../../utils/Literal'; +import { type MBLiteral } from '../../../utils/Literal'; export class SuggesterInputModal extends FuzzySuggestModal> { options: SuggesterOption[]; diff --git a/src/inputFields/fields/Toggle/ToggleIPF.ts b/src/inputFields/fields/Toggle/ToggleIPF.ts index a74fa7a1..4a9acc50 100644 --- a/src/inputFields/fields/Toggle/ToggleIPF.ts +++ b/src/inputFields/fields/Toggle/ToggleIPF.ts @@ -3,7 +3,7 @@ import { type InputFieldMDRC } from '../../../renderChildren/InputFieldMDRC'; import { type SvelteComponent } from 'svelte'; import ToggleComponent from './ToggleComponent.svelte'; import { InputFieldArgumentType } from '../../../parsers/GeneralConfigs'; -import { MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; +import { type MBLiteral, parseUnknownToLiteral } from '../../../utils/Literal'; export class ToggleIPF extends AbstractInputField { onValue: MBLiteral; diff --git a/src/metaBindTable/MetaBindTable.ts b/src/metaBindTable/MetaBindTable.ts index 65e03990..0173b34f 100644 --- a/src/metaBindTable/MetaBindTable.ts +++ b/src/metaBindTable/MetaBindTable.ts @@ -15,7 +15,7 @@ import { type Component } from 'obsidian'; import { type UnvalidatedViewFieldDeclaration, type ViewFieldDeclaration } from '../parsers/viewFieldParser/ViewFieldDeclaration'; import { type MetadataSubscription } from '../metadata/MetadataSubscription'; -import { MBExtendedLiteral } from '../utils/Literal'; +import { type MBExtendedLiteral } from '../utils/Literal'; export type MetaBindTableCell = InputFieldDeclaration | ViewFieldDeclaration; diff --git a/src/parsers/inputFieldParser/InputFieldDeclaration.ts b/src/parsers/inputFieldParser/InputFieldDeclaration.ts index 021077e4..496bd20d 100644 --- a/src/parsers/inputFieldParser/InputFieldDeclaration.ts +++ b/src/parsers/inputFieldParser/InputFieldDeclaration.ts @@ -1,7 +1,7 @@ import { type InputFieldArgumentContainer } from '../../fieldArguments/inputFieldArguments/InputFieldArgumentContainer'; import { type ErrorCollection } from '../../utils/errors/ErrorCollection'; import { type ParsingResultNode } from '../nomParsers/GeneralParsers'; -import { InputFieldType } from '../GeneralConfigs'; +import { type InputFieldType } from '../GeneralConfigs'; export interface InputFieldDeclaration { /** diff --git a/src/parsers/nomParsers/GeneralParsers.ts b/src/parsers/nomParsers/GeneralParsers.ts index 0bc9e1f5..3c5f87ee 100644 --- a/src/parsers/nomParsers/GeneralParsers.ts +++ b/src/parsers/nomParsers/GeneralParsers.ts @@ -32,13 +32,10 @@ export const escapeCharacter = P.string('\\') }); function stringFactory(quotes: string): Parser { - return P.string(quotes) - .then( - P.or(escapeCharacter, P.noneOf(quotes + '\\')) - .many() - .map(x => x.join('')), - ) - .skip(P.string(quotes)); + return P.or(escapeCharacter, P.noneOf(quotes + '\\')) + .many() + .map(x => x.join('')) + .trim(P.string(quotes)); } export const singleQuotedString = stringFactory("'"); diff --git a/src/parsers/nomParsers/ViewFieldParsers.ts b/src/parsers/nomParsers/ViewFieldParsers.ts index 48bac315..11956b39 100644 --- a/src/parsers/nomParsers/ViewFieldParsers.ts +++ b/src/parsers/nomParsers/ViewFieldParsers.ts @@ -10,14 +10,38 @@ import { type UnvalidatedJsViewFieldDeclaration, } from '../viewFieldParser/ViewFieldDeclaration'; -const viewFieldMathJS = P.manyNotOf('{}[]').describe('MathJS'); +export const viewFieldContentEscapeCharacter = P.string('\\') + .then(P_UTILS.any()) + .map(escaped => { + if (escaped === '[') { + return '['; + } else if (escaped === ']') { + return ']'; + } else if (escaped === '{') { + return '{'; + } else if (escaped === '}') { + return '}'; + } else if (escaped === '\\') { + return '\\'; + } else { + return '\\' + escaped; + } + }); + +const viewFieldContent: Parser = P.sequenceMap( + (first, other) => { + return first + other.flat().join(''); + }, + P.manyNotOf('{}[]\\'), + P.sequence(viewFieldContentEscapeCharacter, P.manyNotOf('{}[]\\')).many(), +).box('View Field Content'); export const VIEW_FIELD_DECLARATION: Parser<(string | UnvalidatedBindTargetDeclaration)[]> = P.sequenceMap( (first, other) => { return [first, ...other.flat()]; }, - viewFieldMathJS, - P.sequence(BIND_TARGET.wrap(P.string('{'), P.string('}')), viewFieldMathJS).many(), + viewFieldContent, + P.sequence(BIND_TARGET.wrap(P.string('{'), P.string('}')), viewFieldContent).many(), ); const viewFieldExtraDeclaration: Parser = P.sequenceMap( diff --git a/src/parsers/viewFieldParser/ViewFieldDeclaration.ts b/src/parsers/viewFieldParser/ViewFieldDeclaration.ts index 2b304f6f..77b867ac 100644 --- a/src/parsers/viewFieldParser/ViewFieldDeclaration.ts +++ b/src/parsers/viewFieldParser/ViewFieldDeclaration.ts @@ -2,7 +2,7 @@ import { type BindTargetDeclaration, type UnvalidatedBindTargetDeclaration, type import { type ErrorCollection } from '../../utils/errors/ErrorCollection'; import { type ParsingResultNode } from '../nomParsers/GeneralParsers'; import { type ViewFieldArgumentContainer } from '../../fieldArguments/viewFieldArguments/ViewFieldArgumentContainer'; -import { ViewFieldType } from '../GeneralConfigs'; +import { type ViewFieldType } from '../GeneralConfigs'; export interface PartialUnvalidatedViewFieldDeclaration { /** diff --git a/src/renderChildren/ViewFieldMDRC.ts b/src/renderChildren/ViewFieldMDRC.ts index 117b9211..7c95c144 100644 --- a/src/renderChildren/ViewFieldMDRC.ts +++ b/src/renderChildren/ViewFieldMDRC.ts @@ -9,7 +9,7 @@ import { type AbstractViewField } from '../viewFields/AbstractViewField'; import { ErrorLevel, MetaBindInternalError } from '../utils/errors/MetaBindErrors'; import { type ViewFieldArgumentMapType } from '../fieldArguments/viewFieldArguments/ViewFieldArgumentFactory'; import { type ComputedMetadataSubscription, type ComputedSubscriptionDependency } from '../metadata/ComputedMetadataSubscription'; -import { ViewFieldArgumentType } from '../parsers/GeneralConfigs'; +import { type ViewFieldArgumentType } from '../parsers/GeneralConfigs'; export interface ViewFieldVariable { bindTargetDeclaration: BindTargetDeclaration; diff --git a/src/utils/Literal.ts b/src/utils/Literal.ts index ca3dff8e..4b494d7f 100644 --- a/src/utils/Literal.ts +++ b/src/utils/Literal.ts @@ -1,4 +1,4 @@ -import { Parser } from '@lemons_dev/parsinom/lib/Parser'; +import { type Parser } from '@lemons_dev/parsinom/lib/Parser'; import { P } from '@lemons_dev/parsinom/lib/ParsiNOM'; import { P_UTILS } from '@lemons_dev/parsinom/lib/ParserUtils';