From 6ee79a7a6b81df93c510ff684de0b434e883bb46 Mon Sep 17 00:00:00 2001 From: Stephen Kaplan Date: Tue, 26 Dec 2023 23:27:06 -0500 Subject: [PATCH] Lint, regenerate docs --- .eslintrc.json | 4 + CHANGELOG.md | 3 +- README.md | 8 ++ docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/enums/PlaceholderCategory.html | 6 +- docs/enums/PlaceholderType.html | 14 +-- ...LApplicator.applyToObjectValueWithKey.html | 4 +- ...pplicator.applyToObjectValuesWithKeys.html | 4 +- .../functions/PLApplicator.applyToString.html | 4 +- .../PLApplicator.applyToStrings.html | 4 +- docs/functions/PLApplicator.bulkApply.html | 4 +- .../PLApplicator.checkForPlaceholders.html | 5 +- .../PLChecker.checkForPlaceholders.html | 9 ++ ...PLChecker.checkForPlaceholdersInRange.html | 10 +++ .../PLChecker.getPlaceholderRanges.html | 9 ++ ...PLCreator.buildPlaceholdersFromFnDict.html | 4 +- ...reator.buildPlaceholdersFromValueDict.html | 4 +- .../functions/PLCreator.dummyPlaceholder.html | 4 +- docs/functions/PLCreator.newPlaceholder.html | 4 +- ...LLoader.loadPlaceholderFromJSONString.html | 4 +- .../PLLoader.loadPlaceholdersFromFile.html | 4 +- ...Loader.loadPlaceholdersFromJSONString.html | 4 +- docs/functions/PLMatcher.Bool.html | 4 +- docs/functions/PLMatcher.Braced.html | 4 +- docs/functions/PLMatcher.Container.html | 4 +- docs/functions/PLMatcher.EmailAddress.html | 4 +- docs/functions/PLMatcher.Float.html | 4 +- docs/functions/PLMatcher.HTTPURL.html | 4 +- docs/functions/PLMatcher.InnerText.html | 4 +- docs/functions/PLMatcher.Integer.html | 4 +- docs/functions/PLMatcher.List.html | 4 +- docs/functions/PLMatcher.QuotedParameter.html | 4 +- docs/functions/PLMatcher.RawParameter.html | 4 +- docs/functions/PLMatcher.URI.html | 4 +- .../PLRule.RequireActiveBrowser.html | 4 +- docs/functions/PLRule.RequireContainedIn.html | 4 +- docs/functions/PLRule.RequireContains.html | 4 +- docs/functions/PLRule.RequireEquals.html | 4 +- docs/functions/PLRule.RequireNotEquals.html | 4 +- docs/functions/PLRule.RequireValue.html | 4 +- docs/functions/utils.getActiveBrowser.html | 4 +- docs/functions/utils.getExtensions.html | 4 +- docs/functions/utils.getJSONResponse.html | 4 +- .../utils.getMatchingYouTubeVideoID.html | 4 +- docs/functions/utils.getTextOfWebpage.html | 4 +- docs/functions/utils.getURLHTML.html | 4 +- docs/functions/utils.getWeatherData.html | 4 +- .../utils.getYouTubeVideoTranscriptById.html | 4 +- .../utils.getYouTubeVideoTranscriptByURL.html | 4 +- docs/functions/utils.runJSInActiveTab.html | 4 +- docs/index.html | 6 +- docs/modules.html | 6 +- docs/modules/PLApplicator.html | 8 +- docs/modules/PLChecker.html | 5 ++ docs/modules/PLCreator.html | 6 +- docs/modules/PLLoader.html | 6 +- docs/modules/PLMatcher.html | 6 +- docs/modules/PLRule.html | 6 +- docs/modules/Placeholders.html | 7 +- docs/modules/utils.html | 6 +- docs/types/CustomPlaceholder.html | 4 +- docs/types/PLMatcher.braceType.html | 4 +- docs/types/PLRange.html | 4 + docs/types/Placeholder.html | 4 +- docs/variables/DefaultPlaceholders.html | 4 +- .../Placeholders.AlertDirective.html | 4 +- .../Placeholders.AppleScriptPlaceholder.html | 4 +- .../Placeholders.AudioDirectives.html | 4 +- .../Placeholders.AudioFlowDirective.html | 4 +- ...aceholders.ChooseApplicationDirective.html | 4 +- .../Placeholders.ChooseFileDirective.html | 4 +- .../Placeholders.ChooseFolderDirective.html | 4 +- ...Placeholders.ClipboardTextPlaceholder.html | 7 +- .../Placeholders.CommandPlaceholder.html | 4 +- .../Placeholders.ComputerNamePlaceholder.html | 4 +- .../variables/Placeholders.CopyDirective.html | 4 +- ...holders.CurrentAppBundleIDPlaceholder.html | 4 +- ...laceholders.CurrentAppNamePlaceholder.html | 4 +- ...laceholders.CurrentAppPathPlaceholder.html | 4 +- ...ceholders.CurrentDirectoryPlaceholder.html | 4 +- ...laceholders.CurrentTabTextPlaceholder.html | 4 +- .../Placeholders.CurrentTrackPlaceholder.html | 4 +- .../Placeholders.CurrentURLPlaceholder.html | 4 +- .../Placeholders.CutoffDirective.html | 4 +- .../Placeholders.DatePlaceholder.html | 4 +- .../Placeholders.DayPlaceholder.html | 4 +- ...ecrementPersistentVariablePlaceholder.html | 4 +- ...s.DeletePersistentVariablePlaceholder.html | 4 +- .../Placeholders.DialogDirective.html | 4 +- .../Placeholders.ElementHTMLPlaceholder.html | 4 +- .../Placeholders.ElementTextPlaceholder.html | 4 +- .../Placeholders.FileMetadataPlaceholder.html | 4 +- .../Placeholders.FileNamesPlaceholder.html | 4 +- .../Placeholders.FilePlaceholder.html | 4 +- ...laceholders.FocusedElementPlaceholder.html | 4 +- ...ders.GetPersistentVariablePlaceholder.html | 4 +- .../Placeholders.HomeDirPlaceholder.html | 4 +- .../Placeholders.HostnamePlaceholder.html | 4 +- .../Placeholders.IgnoreDirective.html | 4 +- .../Placeholders.ImageDirectives.html | 4 +- .../Placeholders.ImageFlowDirective.html | 4 +- ...ncrementPersistentVariablePlaceholder.html | 4 +- ...ders.InstalledApplicationsPlaceholder.html | 4 +- .../Placeholders.JXAPlaceholder.html | 4 +- .../Placeholders.JavaScriptPlaceholder.html | 4 +- .../Placeholders.LastEmailPlaceholder.html | 4 +- .../Placeholders.LastNotePlaceholder.html | 4 +- .../Placeholders.LocationPlaceholder.html | 4 +- .../Placeholders.MonthEventsPlaceholder.html | 4 +- ...laceholders.MonthRemindersPlaceholder.html | 4 +- .../Placeholders.MusicTracksPlaceholder.html | 4 +- ...aceholders.NearbyLocationsPlaceholder.html | 4 +- .../Placeholders.PDFFlowDirective.html | 4 +- .../Placeholders.PasteDirective.html | 4 +- ...rs.ResetPersistentVariablePlaceholder.html | 4 +- ...olders.RunningApplicationsPlaceholder.html | 4 +- ...aceholders.SafariBookmarksPlaceholder.html | 4 +- ...laceholders.SafariTopSitesPlaceholder.html | 4 +- docs/variables/Placeholders.SayDirective.html | 4 +- .../Placeholders.SelectFileDirective.html | 4 +- ...lders.SelectedFileContentsPlaceholder.html | 3 + ...Placeholders.SelectedFilesPlaceholder.html | 4 +- .../Placeholders.SelectedTextPlaceholder.html | 4 +- ...ders.SetPersistentVariablePlaceholder.html | 4 +- .../Placeholders.ShellScriptPlaceholder.html | 4 +- .../Placeholders.ShortcutPlaceholder.html | 4 +- .../Placeholders.ShortcutsPlaceholder.html | 4 +- ...laceholders.SystemLanguagePlaceholder.html | 4 +- .../Placeholders.TextFileDirectives.html | 4 +- .../Placeholders.TextFileFlowDirective.html | 4 +- .../Placeholders.TimePlaceholder.html | 4 +- .../Placeholders.TimezonePlaceholder.html | 4 +- .../Placeholders.ToastDirective.html | 4 +- .../Placeholders.TodayEventsPlaceholder.html | 4 +- ...laceholders.TodayRemindersPlaceholder.html | 4 +- .../Placeholders.TodayWeatherPlaceholder.html | 4 +- .../variables/Placeholders.TypeDirective.html | 4 +- .../Placeholders.URLPlaceholder.html | 4 +- .../Placeholders.UUIDPlaceholder.html | 4 +- .../Placeholders.UsedUUIDsPlaceholder.html | 4 +- .../Placeholders.UserPlaceholder.html | 4 +- .../Placeholders.VarsPlaceholder.html | 4 +- .../Placeholders.VideoDirectives.html | 4 +- .../Placeholders.VideoFlowDirective.html | 4 +- .../Placeholders.WeekEventsPlaceholder.html | 4 +- ...Placeholders.WeekRemindersPlaceholder.html | 4 +- .../Placeholders.WeekWeatherPlaceholder.html | 4 +- .../Placeholders.WriteFileDirective.html | 4 +- .../Placeholders.YearEventsPlaceholder.html | 4 +- ...Placeholders.YearRemindersPlaceholder.html | 4 +- ...eholders.YouTubeTranscriptPlaceholder.html | 4 +- docs/variables/utils.SupportedBrowsers.html | 4 +- lib/directives/selectFile.ts | 2 +- lib/directives/write.ts | 1 - lib/info-placeholders/clipboardText.ts | 62 ++++++++++--- lib/info-placeholders/currentURL.ts | 3 +- lib/load.ts | 41 +++------ lib/match.ts | 30 +++---- lib/new.ts | 19 ++-- lib/placeholders.ts | 2 - lib/rules.ts | 24 ++--- lib/scripts/ImageFeatureExtractor.ts | 4 +- lib/scripts/system.ts | 2 +- lib/utils.ts | 1 - package.json | 3 + tests/bulkApply_customPlaceholders.spec.ts | 2 +- tests/each_placeholder.spec.ts | 90 ++++++++++--------- tests/loadPlaceholders.spec.ts | 2 +- tests/rules.spec.ts | 10 +-- 170 files changed, 518 insertions(+), 444 deletions(-) create mode 100644 .eslintrc.json create mode 100644 docs/functions/PLChecker.checkForPlaceholders.html create mode 100644 docs/functions/PLChecker.checkForPlaceholdersInRange.html create mode 100644 docs/functions/PLChecker.getPlaceholderRanges.html create mode 100644 docs/modules/PLChecker.html create mode 100644 docs/types/PLRange.html create mode 100644 docs/variables/Placeholders.SelectedFileContentsPlaceholder.html diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..e6258e1 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["@raycast"] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index dd38cad..ea6cc64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ # Placeholders Toolkit Changelog -## [0.1.3] - 2023-11-15? +## [0.1.3] - 2023-12-26 - Re-added the `{{selectedFileContents}}` (or just `{{contents}}`) placeholder. - Deprecated `PLApplicator.checkForPlaceholders()` in favor of `PLChecker.checkForPlaceholders()`. - Added `PLChecker.checkForPlaceholdersInRange()` and `PLChecker.getPlaceholderRanges()`. +- Added optional `offsets` parameter to `{{clipboardText}}`, allowing users to specify one or more previous clipboard items to return. - Fixed bug where `{{fileNames}}` would only return the last file name. ## [0.1.2] - 2023-11-11 diff --git a/README.md b/README.md index 94e82ad..6eb8535 100644 --- a/README.md +++ b/README.md @@ -248,3 +248,11 @@ m4: /{{url(\s*?(raw=(true|false))?):((?:(?:(?:https?):)\/\/)(?:\S+(?::\S*)?@)?(? ``` Although these regexes match *mostly* the same strings, the latter two aim to match the URL standard (i.e. RFC 3986) more closely. You might not need the extra precision for your use case, so it's up to you to decide which style to use. + +## Contributing + +Contributions are welcome! Feel free to open an issue or submit a pull request. + +## License + +This project is licensed under the MIT License. diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 88aee7a..96f6638 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 46da2e6..ced0ec8 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/enums/PlaceholderCategory.html b/docs/enums/PlaceholderCategory.html index 8ee1419..c3ccd8e 100644 --- a/docs/enums/PlaceholderCategory.html +++ b/docs/enums/PlaceholderCategory.html @@ -1,5 +1,5 @@ -PlaceholderCategory | placeholders-toolkit - v0.1.2

Enumeration PlaceholderCategory

Mid-level categories of placeholders.

-

Enumeration Members

API +PlaceholderCategory | placeholders-toolkit - v0.1.3

Enumeration PlaceholderCategory

Mid-level categories of placeholders.

+

Enumeration Members

Enumeration Members

API: 11
Alert: 5
Applications: 10
Calendar: 1
Custom: 13
Device: 4
Files: 7
Internet: 6
Location: 3
Logic: 9
Memory: 0
Meta: 8
Other: 12
Weather: 2

Generated using TypeDoc

\ No newline at end of file +

Enumeration Members

API: 11
Alert: 5
Applications: 10
Calendar: 1
Custom: 13
Device: 4
Files: 7
Internet: 6
Location: 3
Logic: 9
Memory: 0
Meta: 8
Other: 12
Weather: 2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/PlaceholderType.html b/docs/enums/PlaceholderType.html index 4119fe5..b1ee0af 100644 --- a/docs/enums/PlaceholderType.html +++ b/docs/enums/PlaceholderType.html @@ -1,12 +1,12 @@ -PlaceholderType | placeholders-toolkit - v0.1.2

Enumeration PlaceholderType

High-level placeholder types.

-

Enumeration Members

Custom +PlaceholderType | placeholders-toolkit - v0.1.3

Enumeration PlaceholderType

High-level placeholder types.

+

Enumeration Members

Custom: 4

A user-defined placeholder.

-
Informational: 0

A placeholder that quickly evaluates to a consistently formatted value.

-
InteractiveDirective: 2

A placeholder that requires user input or a long-running action to evaluate.

-
Script: 3

A placeholder that executes a script and evaluates to an arbitrary value.

-
StaticDirective: 1

A placeholder that completes a brief action, then evaluates to a short or empty value.

-

Generated using TypeDoc

\ No newline at end of file +
Informational: 0

A placeholder that quickly evaluates to a consistently formatted value.

+
InteractiveDirective: 2

A placeholder that requires user input or a long-running action to evaluate.

+
Script: 3

A placeholder that executes a script and evaluates to an arbitrary value.

+
StaticDirective: 1

A placeholder that completes a brief action, then evaluates to a short or empty value.

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLApplicator.applyToObjectValueWithKey.html b/docs/functions/PLApplicator.applyToObjectValueWithKey.html index a66d9f9..91ac145 100644 --- a/docs/functions/PLApplicator.applyToObjectValueWithKey.html +++ b/docs/functions/PLApplicator.applyToObjectValueWithKey.html @@ -1,4 +1,4 @@ -applyToObjectValueWithKey | placeholders-toolkit - v0.1.2
  • Applies placeholders to the value of a single key in an object.

    +applyToObjectValueWithKey | placeholders-toolkit - v0.1.3
    • Applies placeholders to the value of a single key in an object.

      Parameters

      • obj: {
            [key: string]: unknown;
        }

        The object to apply placeholders to.

        • [key: string]: unknown
      • key: string

        The key of the value to apply placeholders to.

      • Optional options: {
            allPlaceholders?: Placeholder[];
            checkRules?: boolean;
            context?: {
                [key: string]: unknown;
            };
            customPlaceholders?: Placeholder[];
            defaultPlaceholders?: Placeholder[];
        }

        The options for applying placeholders.

        @@ -8,4 +8,4 @@
        • [key: string]: unknown
      • Optional customPlaceholders?: Placeholder[]

        The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

      • Optional defaultPlaceholders?: Placeholder[]

        The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

    Returns Promise<string | string[] | {
        [key: string]: unknown;
    }>

    The object with placeholders applied.

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLApplicator.applyToObjectValuesWithKeys.html b/docs/functions/PLApplicator.applyToObjectValuesWithKeys.html index 1b8e3e8..5739f24 100644 --- a/docs/functions/PLApplicator.applyToObjectValuesWithKeys.html +++ b/docs/functions/PLApplicator.applyToObjectValuesWithKeys.html @@ -1,4 +1,4 @@ -applyToObjectValuesWithKeys | placeholders-toolkit - v0.1.2
  • Applies placeholders to an object's values, specified by keys.

    +applyToObjectValuesWithKeys | placeholders-toolkit - v0.1.3
    • Applies placeholders to an object's values, specified by keys.

      Parameters

      • obj: {
            [key: string]: unknown;
        }

        The object to apply placeholders to.

        • [key: string]: unknown
      • keys: string[]

        The keys of the object to apply placeholders to.

      • Optional options: {
            allPlaceholders?: Placeholder[];
            checkRules?: boolean;
            context?: {
                [key: string]: unknown;
            };
            customPlaceholders?: Placeholder[];
            defaultPlaceholders?: Placeholder[];
        }

        The options for applying placeholders.

        @@ -8,4 +8,4 @@
        • [key: string]: unknown
      • Optional customPlaceholders?: Placeholder[]

        The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

      • Optional defaultPlaceholders?: Placeholder[]

        The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

    Returns Promise<{
        [key: string]: unknown;
    }>

    The object with placeholders applied.

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLApplicator.applyToString.html b/docs/functions/PLApplicator.applyToString.html index 6f4f109..6e7e882 100644 --- a/docs/functions/PLApplicator.applyToString.html +++ b/docs/functions/PLApplicator.applyToString.html @@ -1,4 +1,4 @@ -applyToString | placeholders-toolkit - v0.1.2
  • Applies placeholders to a single string.

    +applyToString | placeholders-toolkit - v0.1.3
    • Applies placeholders to a single string.

      Parameters

      • str: string

        The string to apply placeholders to.

      • Optional options: {
            allPlaceholders?: Placeholder[];
            checkRules?: boolean;
            context?: {
                [key: string]: unknown;
            };
            customPlaceholders?: Placeholder[];
            defaultPlaceholders?: Placeholder[];
        }

        The options for applying placeholders.

        • Optional allPlaceholders?: Placeholder[]

          The list of all placeholders (custom and default). Provide this if you have a single list of all placeholders.

          @@ -7,4 +7,4 @@
          • [key: string]: unknown
        • Optional customPlaceholders?: Placeholder[]

          The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

        • Optional defaultPlaceholders?: Placeholder[]

          The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

      Returns Promise<string>

      The string with placeholders applied.

      -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLApplicator.applyToStrings.html b/docs/functions/PLApplicator.applyToStrings.html index dcf505a..83e3d95 100644 --- a/docs/functions/PLApplicator.applyToStrings.html +++ b/docs/functions/PLApplicator.applyToStrings.html @@ -1,4 +1,4 @@ -applyToStrings | placeholders-toolkit - v0.1.2
  • Applies placeholders to an array of strings.

    +applyToStrings | placeholders-toolkit - v0.1.3
    • Applies placeholders to an array of strings.

      Parameters

      • strs: string[]

        The array of strings to apply placeholders to.

      • Optional options: {
            allPlaceholders?: Placeholder[];
            checkRules?: boolean;
            context?: {
                [key: string]: unknown;
            };
            customPlaceholders?: Placeholder[];
            defaultPlaceholders?: Placeholder[];
        }

        The options for applying placeholders.

        • Optional allPlaceholders?: Placeholder[]

          The list of all placeholders (custom and default). Provide this if you have a single list of all placeholders.

          @@ -7,4 +7,4 @@
          • [key: string]: unknown
        • Optional customPlaceholders?: Placeholder[]

          The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

        • Optional defaultPlaceholders?: Placeholder[]

          The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

      Returns Promise<string[]>

      The array of strings with placeholders applied.

      -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLApplicator.bulkApply.html b/docs/functions/PLApplicator.bulkApply.html index 6f43045..289abf7 100644 --- a/docs/functions/PLApplicator.bulkApply.html +++ b/docs/functions/PLApplicator.bulkApply.html @@ -1,4 +1,4 @@ -bulkApply | placeholders-toolkit - v0.1.2
  • Applies placeholders to a string by memoizing the results of each placeholder.

    +bulkApply | placeholders-toolkit - v0.1.3
    • Applies placeholders to a string by memoizing the results of each placeholder.

      Parameters

      • str: string

        The string to apply placeholders to.

      • Optional options: {
            allPlaceholders?: Placeholder[];
            checkRules?: boolean;
            context?: {
                [key: string]: unknown;
            };
            customPlaceholders?: Placeholder[];
            defaultPlaceholders?: Placeholder[];
        }

        The options for applying placeholders.

        • Optional allPlaceholders?: Placeholder[]

          The list of all placeholders (custom and default). Provide this if you have a single list of all placeholders.

          @@ -7,4 +7,4 @@
          • [key: string]: unknown
        • Optional customPlaceholders?: Placeholder[]

          The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

        • Optional defaultPlaceholders?: Placeholder[]

          The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

      Returns Promise<string>

      The string with placeholders substituted.

      -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLApplicator.checkForPlaceholders.html b/docs/functions/PLApplicator.checkForPlaceholders.html index 8516b55..79d2907 100644 --- a/docs/functions/PLApplicator.checkForPlaceholders.html +++ b/docs/functions/PLApplicator.checkForPlaceholders.html @@ -1,8 +1,9 @@ -checkForPlaceholders | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLChecker.checkForPlaceholders.html b/docs/functions/PLChecker.checkForPlaceholders.html new file mode 100644 index 0000000..e5036c3 --- /dev/null +++ b/docs/functions/PLChecker.checkForPlaceholders.html @@ -0,0 +1,9 @@ +checkForPlaceholders | placeholders-toolkit - v0.1.3
  • Gets a list of placeholders that are included in a string.

    +

    Parameters

    • str: string

      The string to check.

      +
    • Optional options: {
          allPlaceholders?: Placeholder[];
          customPlaceholders?: Placeholder[];
          defaultPlaceholders?: Placeholder[];
          strict?: boolean;
      }

      The options for applying placeholders.

      +
      • Optional allPlaceholders?: Placeholder[]

        The list of all placeholders (custom and default). Provide this if you have a single list of all placeholders.

        +
      • Optional customPlaceholders?: Placeholder[]

        The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

        +
      • Optional defaultPlaceholders?: Placeholder[]

        The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

        +
      • Optional strict?: boolean

        Whether to only include placeholders that are surrounded by double curly braces and match the placeholder regex. Defaults to false (will include placeholders that are not surrounded by double curly braces).

        +

    Returns Promise<Placeholder[]>

    The list of Placeholder objects.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLChecker.checkForPlaceholdersInRange.html b/docs/functions/PLChecker.checkForPlaceholdersInRange.html new file mode 100644 index 0000000..e3aa988 --- /dev/null +++ b/docs/functions/PLChecker.checkForPlaceholdersInRange.html @@ -0,0 +1,10 @@ +checkForPlaceholdersInRange | placeholders-toolkit - v0.1.3
  • Checks if a string contains placeholders in a given range.

    +

    Parameters

    • str: string

      The string to check.

      +
    • range: PLRange

      The range to check.

      +
    • Optional options: {
          allPlaceholders?: Placeholder[];
          customPlaceholders?: Placeholder[];
          defaultPlaceholders?: Placeholder[];
          strict?: boolean;
      }

      The options for applying placeholders. Optional.

      +
      • Optional allPlaceholders?: Placeholder[]

        The list of all placeholders (custom and default). Provide this if you have a single list of all placeholders.

        +
      • Optional customPlaceholders?: Placeholder[]

        The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

        +
      • Optional defaultPlaceholders?: Placeholder[]

        The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

        +
      • Optional strict?: boolean

        Whether to only include placeholders that are surrounded by double curly braces and match the placeholder regex. Defaults to false (will include placeholders that are not surrounded by double curly braces).

        +

    Returns Promise<Placeholder[]>

    The list of placeholders contained within the range.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLChecker.getPlaceholderRanges.html b/docs/functions/PLChecker.getPlaceholderRanges.html new file mode 100644 index 0000000..ef473da --- /dev/null +++ b/docs/functions/PLChecker.getPlaceholderRanges.html @@ -0,0 +1,9 @@ +getPlaceholderRanges | placeholders-toolkit - v0.1.3
  • Gets a list of the ranges of placeholders that are included in a string.

    +

    Parameters

    • str: string

      The string to check.

      +
    • Optional options: {
          allPlaceholders?: Placeholder[];
          customPlaceholders?: Placeholder[];
          defaultPlaceholders?: Placeholder[];
          strict?: boolean;
      }

      The options for applying placeholders. Optional.

      +
      • Optional allPlaceholders?: Placeholder[]

        The list of all placeholders (custom and default). Provide this if you have a single list of all placeholders.

        +
      • Optional customPlaceholders?: Placeholder[]

        The list of custom (user-defined) placeholders. Provide this if you have a separate list of custom placeholders.

        +
      • Optional defaultPlaceholders?: Placeholder[]

        The list of default placeholders. Provide this if you have customized the order of default placeholders or added additional defaults.

        +
      • Optional strict?: boolean

        Whether to only include placeholders that are surrounded by double curly braces and match the placeholder regex. Defaults to false (will include placeholders that are not surrounded by double curly braces).

        +

    Returns Promise<{
        placeholder: Placeholder;
        range: PLRange;
    }[]>

    The list of placeholders and their ranges.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLCreator.buildPlaceholdersFromFnDict.html b/docs/functions/PLCreator.buildPlaceholdersFromFnDict.html index 2a31bbd..476c935 100644 --- a/docs/functions/PLCreator.buildPlaceholdersFromFnDict.html +++ b/docs/functions/PLCreator.buildPlaceholdersFromFnDict.html @@ -1,4 +1,4 @@ -buildPlaceholdersFromFnDict | placeholders-toolkit - v0.1.2
  • Builds a list of placeholders from a list of placeholder names and application functions.

    +buildPlaceholdersFromFnDict | placeholders-toolkit - v0.1.3
    • Builds a list of placeholders from a list of placeholder names and application functions.

      Parameters

      • fnDict: {
            [key: string]: ((str, context?) => Promise<{
                result: string;
                [key: string]: unknown;
            }>);
        }

        A dictionary of placeholder names and application functions.

        • [key: string]: ((str, context?) => Promise<{
              result: string;
              [key: string]: unknown;
          }>)
            • (str, context?): Promise<{
                  result: string;
                  [key: string]: unknown;
              }>
            • Parameters

              • str: string
              • Optional context: {
                    [key: string]: unknown;
                }
                • [key: string]: unknown

              Returns Promise<{
                  result: string;
                  [key: string]: unknown;
              }>

      Returns Placeholder[]

      A list of placeholders.

      -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLCreator.buildPlaceholdersFromValueDict.html b/docs/functions/PLCreator.buildPlaceholdersFromValueDict.html index 5eabbf5..f0f4a52 100644 --- a/docs/functions/PLCreator.buildPlaceholdersFromValueDict.html +++ b/docs/functions/PLCreator.buildPlaceholdersFromValueDict.html @@ -1,4 +1,4 @@ -buildPlaceholdersFromValueDict | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLCreator.dummyPlaceholder.html b/docs/functions/PLCreator.dummyPlaceholder.html index 7747ce0..453075c 100644 --- a/docs/functions/PLCreator.dummyPlaceholder.html +++ b/docs/functions/PLCreator.dummyPlaceholder.html @@ -1,3 +1,3 @@ -dummyPlaceholder | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLCreator.newPlaceholder.html b/docs/functions/PLCreator.newPlaceholder.html index b27acd2..f20ef5f 100644 --- a/docs/functions/PLCreator.newPlaceholder.html +++ b/docs/functions/PLCreator.newPlaceholder.html @@ -1,4 +1,4 @@ -newPlaceholder | placeholders-toolkit - v0.1.2
  • Creates a new placeholder.

    +newPlaceholder | placeholders-toolkit - v0.1.3
    • Creates a new placeholder.

      Parameters

      • name: string

        The name of the placeholder.

      • Optional options: {
            apply_fn?: ((str, context?) => Promise<{
                result: string;
                [key: string]: unknown;
            }>);
            categories?: PlaceholderCategory[];
            constant?: boolean;
            description?: string;
            example?: string;
            fullRepresentation?: string;
            hintRepresentation?: string;
            regex?: RegExp;
            replace_with?: string;
            rules?: ((str, context?) => Promise<boolean>)[];
            type?: PlaceholderType;
        }
        • Optional apply_fn?: ((str, context?) => Promise<{
              result: string;
              [key: string]: unknown;
          }>)
            • (str, context?): Promise<{
                  result: string;
                  [key: string]: unknown;
              }>
            • The function to apply to the placeholder. Specify either this or replace_with.

              Parameters

              • str: string

                The string to apply the placeholder to.

                @@ -18,4 +18,4 @@

                Param

                The context object to store & retrieve values from.

                Returns

                True if the placeholder should be replaced, false otherwise.

              • Optional type?: PlaceholderType

                The type of the placeholder.

      Returns Placeholder

      A placeholder object.

      -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLLoader.loadPlaceholderFromJSONString.html b/docs/functions/PLLoader.loadPlaceholderFromJSONString.html index bb0b975..8411950 100644 --- a/docs/functions/PLLoader.loadPlaceholderFromJSONString.html +++ b/docs/functions/PLLoader.loadPlaceholderFromJSONString.html @@ -1,5 +1,5 @@ -loadPlaceholderFromJSONString | placeholders-toolkit - v0.1.2

Function loadPlaceholderFromJSONString

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLLoader.loadPlaceholdersFromFile.html b/docs/functions/PLLoader.loadPlaceholdersFromFile.html index 3a96ac6..a26c177 100644 --- a/docs/functions/PLLoader.loadPlaceholdersFromFile.html +++ b/docs/functions/PLLoader.loadPlaceholdersFromFile.html @@ -1,3 +1,3 @@ -loadPlaceholdersFromFile | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLLoader.loadPlaceholdersFromJSONString.html b/docs/functions/PLLoader.loadPlaceholdersFromJSONString.html index 554d6e2..85f0c46 100644 --- a/docs/functions/PLLoader.loadPlaceholdersFromJSONString.html +++ b/docs/functions/PLLoader.loadPlaceholdersFromJSONString.html @@ -1,7 +1,7 @@ -loadPlaceholdersFromJSONString | placeholders-toolkit - v0.1.2

Function loadPlaceholdersFromJSONString

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.Bool.html b/docs/functions/PLMatcher.Bool.html index bb68ba2..f79a5cc 100644 --- a/docs/functions/PLMatcher.Bool.html +++ b/docs/functions/PLMatcher.Bool.html @@ -1,2 +1,2 @@ -Bool | placeholders-toolkit - v0.1.2
  • Matches true or false

    -

    Parameters

    • global: boolean = true

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file +Bool | placeholders-toolkit - v0.1.3
  • Matches true or false

    +

    Parameters

    • global: boolean = true

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.Braced.html b/docs/functions/PLMatcher.Braced.html index 6c38680..171f41a 100644 --- a/docs/functions/PLMatcher.Braced.html +++ b/docs/functions/PLMatcher.Braced.html @@ -1,2 +1,2 @@ -Braced | placeholders-toolkit - v0.1.2
  • Matches text surrounded by {{braces}}

    -

    Parameters

    • innerMatch: string | RegExp
    • Optional options: {
          braceType?: braceType;
          global?: boolean;
      }
      • Optional braceType?: braceType
      • Optional global?: boolean

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file +Braced | placeholders-toolkit - v0.1.3
  • Matches text surrounded by {{braces}}

    +

    Parameters

    • innerMatch: string | RegExp
    • Optional options: {
          braceType?: braceType;
          global?: boolean;
      }
      • Optional braceType?: braceType
      • Optional global?: boolean

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.Container.html b/docs/functions/PLMatcher.Container.html index 7863e3c..4a98018 100644 --- a/docs/functions/PLMatcher.Container.html +++ b/docs/functions/PLMatcher.Container.html @@ -1,4 +1,4 @@ -Container | placeholders-toolkit - v0.1.2
  • Constructs a regex for a placeholder container in the format {{name parameter1 parameter2 ... parameterN}}:value}}

    +Container | placeholders-toolkit - v0.1.3
    • Constructs a regex for a placeholder container in the format {{name parameter1 parameter2 ... parameterN}}:value}}

      Parameters

      • name: string

        The name of the placeholder

      • parameters: (string | RegExp)[]

        The parameters of the placeholder

      • valueType: string | RegExp

        The type of the placeholder's value

        @@ -9,4 +9,4 @@

        Example

        Using a container to match a placeholder and extract its value

        const placeholderRegex = Container("myPlaceholder", [], InnerText());
        const myPlaceholder = PLCreator.newPlaceholder("myPlaceholder", {
        regex: placeholderRegex,
        apply_fn: async (str, context) => {
        const matches = str.match(new RegExp(placeholderRegex.source));
        return { result: matches?.[3] || "" }
        }
        })
        const result = await PLApplicator.bulkApply("{{myPlaceholder:hello, world!}}", { customPlaceholders: [myPlaceholder] })
        console.log(result) // hello, world!
        -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.EmailAddress.html b/docs/functions/PLMatcher.EmailAddress.html index bd652ec..b16f290 100644 --- a/docs/functions/PLMatcher.EmailAddress.html +++ b/docs/functions/PLMatcher.EmailAddress.html @@ -1,8 +1,8 @@ -EmailAddress | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.Float.html b/docs/functions/PLMatcher.Float.html index b1d0de5..a4479f5 100644 --- a/docs/functions/PLMatcher.Float.html +++ b/docs/functions/PLMatcher.Float.html @@ -1,2 +1,2 @@ -Float | placeholders-toolkit - v0.1.2
  • Matches any decimal number, positive or negative

    -

    Parameters

    • global: boolean = true

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file +Float | placeholders-toolkit - v0.1.3
  • Matches any decimal number, positive or negative

    +

    Parameters

    • global: boolean = true

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.HTTPURL.html b/docs/functions/PLMatcher.HTTPURL.html index 3d8ff32..920a989 100644 --- a/docs/functions/PLMatcher.HTTPURL.html +++ b/docs/functions/PLMatcher.HTTPURL.html @@ -1,4 +1,4 @@ -HTTPURL | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.InnerText.html b/docs/functions/PLMatcher.InnerText.html index 83f073a..962cc96 100644 --- a/docs/functions/PLMatcher.InnerText.html +++ b/docs/functions/PLMatcher.InnerText.html @@ -1,2 +1,2 @@ -InnerText | placeholders-toolkit - v0.1.2
  • Matches inner text not including braces, unless they wrap a complete placeholder

    -

    Parameters

    • Optional options: {
          braceType?: braceType;
          global?: boolean;
      }
      • Optional braceType?: braceType
      • Optional global?: boolean

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file +InnerText | placeholders-toolkit - v0.1.3
  • Matches inner text not including braces, unless they wrap a complete placeholder

    +

    Parameters

    • Optional options: {
          braceType?: braceType;
          global?: boolean;
      }
      • Optional braceType?: braceType
      • Optional global?: boolean

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.Integer.html b/docs/functions/PLMatcher.Integer.html index 2e26a74..745c5c3 100644 --- a/docs/functions/PLMatcher.Integer.html +++ b/docs/functions/PLMatcher.Integer.html @@ -1,2 +1,2 @@ -Integer | placeholders-toolkit - v0.1.2
  • Matches any integer number, positive or negative

    -

    Parameters

    • global: boolean = true

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file +Integer | placeholders-toolkit - v0.1.3
  • Matches any integer number, positive or negative

    +

    Parameters

    • global: boolean = true

    Returns RegExp

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.List.html b/docs/functions/PLMatcher.List.html index 819a07e..9d74558 100644 --- a/docs/functions/PLMatcher.List.html +++ b/docs/functions/PLMatcher.List.html @@ -1,4 +1,4 @@ -List | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.QuotedParameter.html b/docs/functions/PLMatcher.QuotedParameter.html index 97b5efc..7905fd4 100644 --- a/docs/functions/PLMatcher.QuotedParameter.html +++ b/docs/functions/PLMatcher.QuotedParameter.html @@ -1,4 +1,4 @@ -QuotedParameter | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.RawParameter.html b/docs/functions/PLMatcher.RawParameter.html index a0489e0..5f47fc8 100644 --- a/docs/functions/PLMatcher.RawParameter.html +++ b/docs/functions/PLMatcher.RawParameter.html @@ -1,4 +1,4 @@ -RawParameter | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLMatcher.URI.html b/docs/functions/PLMatcher.URI.html index 3eda1ab..c39f831 100644 --- a/docs/functions/PLMatcher.URI.html +++ b/docs/functions/PLMatcher.URI.html @@ -1,4 +1,4 @@ -URI | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLRule.RequireActiveBrowser.html b/docs/functions/PLRule.RequireActiveBrowser.html index 89e4692..3092924 100644 --- a/docs/functions/PLRule.RequireActiveBrowser.html +++ b/docs/functions/PLRule.RequireActiveBrowser.html @@ -1,3 +1,3 @@ -RequireActiveBrowser | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLRule.RequireContainedIn.html b/docs/functions/PLRule.RequireContainedIn.html index 97c9950..278430a 100644 --- a/docs/functions/PLRule.RequireContainedIn.html +++ b/docs/functions/PLRule.RequireContainedIn.html @@ -1,6 +1,6 @@ -RequireContainedIn | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLRule.RequireContains.html b/docs/functions/PLRule.RequireContains.html index b3f2d3f..51df535 100644 --- a/docs/functions/PLRule.RequireContains.html +++ b/docs/functions/PLRule.RequireContains.html @@ -1,6 +1,6 @@ -RequireContains | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLRule.RequireEquals.html b/docs/functions/PLRule.RequireEquals.html index a82ab78..dcb91f1 100644 --- a/docs/functions/PLRule.RequireEquals.html +++ b/docs/functions/PLRule.RequireEquals.html @@ -1,6 +1,6 @@ -RequireEquals | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLRule.RequireNotEquals.html b/docs/functions/PLRule.RequireNotEquals.html index 533edb8..71aaf81 100644 --- a/docs/functions/PLRule.RequireNotEquals.html +++ b/docs/functions/PLRule.RequireNotEquals.html @@ -1,6 +1,6 @@ -RequireNotEquals | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/PLRule.RequireValue.html b/docs/functions/PLRule.RequireValue.html index 4ff250f..a017056 100644 --- a/docs/functions/PLRule.RequireValue.html +++ b/docs/functions/PLRule.RequireValue.html @@ -1,4 +1,4 @@ -RequireValue | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getActiveBrowser.html b/docs/functions/utils.getActiveBrowser.html index 948e788..63f3832 100644 --- a/docs/functions/utils.getActiveBrowser.html +++ b/docs/functions/utils.getActiveBrowser.html @@ -1,3 +1,3 @@ -getActiveBrowser | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getExtensions.html b/docs/functions/utils.getExtensions.html index defa01c..ee1bcff 100644 --- a/docs/functions/utils.getExtensions.html +++ b/docs/functions/utils.getExtensions.html @@ -1,3 +1,3 @@ -getExtensions | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getJSONResponse.html b/docs/functions/utils.getJSONResponse.html index 600b769..15a523f 100644 --- a/docs/functions/utils.getJSONResponse.html +++ b/docs/functions/utils.getJSONResponse.html @@ -1,4 +1,4 @@ -getJSONResponse | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getMatchingYouTubeVideoID.html b/docs/functions/utils.getMatchingYouTubeVideoID.html index d89da47..a48a7f4 100644 --- a/docs/functions/utils.getMatchingYouTubeVideoID.html +++ b/docs/functions/utils.getMatchingYouTubeVideoID.html @@ -1,4 +1,4 @@ -getMatchingYouTubeVideoID | placeholders-toolkit - v0.1.2

Function getMatchingYouTubeVideoID

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getTextOfWebpage.html b/docs/functions/utils.getTextOfWebpage.html index fcc035d..a5ed95c 100644 --- a/docs/functions/utils.getTextOfWebpage.html +++ b/docs/functions/utils.getTextOfWebpage.html @@ -1,4 +1,4 @@ -getTextOfWebpage | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getURLHTML.html b/docs/functions/utils.getURLHTML.html index d9aea6d..060ae42 100644 --- a/docs/functions/utils.getURLHTML.html +++ b/docs/functions/utils.getURLHTML.html @@ -1,4 +1,4 @@ -getURLHTML | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getWeatherData.html b/docs/functions/utils.getWeatherData.html index 20eccac..9fb3cce 100644 --- a/docs/functions/utils.getWeatherData.html +++ b/docs/functions/utils.getWeatherData.html @@ -1,4 +1,4 @@ -getWeatherData | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getYouTubeVideoTranscriptById.html b/docs/functions/utils.getYouTubeVideoTranscriptById.html index d3f5fed..d331157 100644 --- a/docs/functions/utils.getYouTubeVideoTranscriptById.html +++ b/docs/functions/utils.getYouTubeVideoTranscriptById.html @@ -1,4 +1,4 @@ -getYouTubeVideoTranscriptById | placeholders-toolkit - v0.1.2

Function getYouTubeVideoTranscriptById

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getYouTubeVideoTranscriptByURL.html b/docs/functions/utils.getYouTubeVideoTranscriptByURL.html index 132f7ed..ac87749 100644 --- a/docs/functions/utils.getYouTubeVideoTranscriptByURL.html +++ b/docs/functions/utils.getYouTubeVideoTranscriptByURL.html @@ -1,4 +1,4 @@ -getYouTubeVideoTranscriptByURL | placeholders-toolkit - v0.1.2

Function getYouTubeVideoTranscriptByURL

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.runJSInActiveTab.html b/docs/functions/utils.runJSInActiveTab.html index ee5469d..f881110 100644 --- a/docs/functions/utils.runJSInActiveTab.html +++ b/docs/functions/utils.runJSInActiveTab.html @@ -1,5 +1,5 @@ -runJSInActiveTab | placeholders-toolkit - v0.1.2

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index c860997..6dbba77 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -placeholders-toolkit - v0.1.2

placeholders-toolkit - v0.1.2

Placeholders Toolkit

A placeholders system for supplying dynamic content to Raycast extensions.

+placeholders-toolkit - v0.1.3

placeholders-toolkit - v0.1.3

Placeholders Toolkit

A placeholders system for supplying dynamic content to Raycast extensions.

Overview

This package provides the core functionality for the placeholders system seen in Raycast extensions such as PromptLab and Pins. The Placeholders Toolkit helps you create, manage, and apply complex placeholders, compose them into more powerful structures, and ultimately use them to give your users a more dynamic experience.

The Placeholders Toolkit supports a wide array of built-in placeholders, including placeholders for getting the current date and time, the current user, the list of upcoming calendar events, custom scripts, and more. You can also create your own placeholders, either programmatically or by specifying them in JSON. Users of your extensions can then use these placeholders to input dynamic content into your extension's commands and input fields. For example, you could create a journal extension that allows users to insert various placeholders to give context to their entries; or you could add support for convenient placeholders to a GitHub/GitLab-esque "Create Issue" command—for example, allowing users to type {{osVersion}} to insert their macOS version on-the-fly.

To get started, follow the brief tutorial below, then check out the API Reference.

@@ -49,4 +49,6 @@
m1: /{{url( raw=(true|false))?:https?:\/\/[a-zA-Z0-9.\-#=?]+?}}/g

m2: /{{url( raw=(true|false))?:https?:\/\/[a-zA-Z0-9.\-#=?]+?}}/g

m3: /{{(url( raw=(true|false))?:((?:(?:(?:https?):)\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9][a-z0-9_-]{0,62})?[a-z0-9]\.)+(?:[a-z]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?))}}/g

m4: /{{url(\s*?(raw=(true|false))?):((?:(?:(?:https?):)\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9][a-z0-9_-]{0,62})?[a-z0-9]\.)+(?:[a-z]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?)}}/g

Although these regexes match mostly the same strings, the latter two aim to match the URL standard (i.e. RFC 3986) more closely. You might not need the extra precision for your use case, so it's up to you to decide which style to use.

-

Generated using TypeDoc

\ No newline at end of file +

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

+

License

This project is licensed under the MIT License.

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index fcd02f6..742ec33 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,4 +1,5 @@ -placeholders-toolkit - v0.1.2

placeholders-toolkit - v0.1.2

Index

Namespaces

PLApplicator +placeholders-toolkit - v0.1.3

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/PLApplicator.html b/docs/modules/PLApplicator.html index dd2fe3f..d826762 100644 --- a/docs/modules/PLApplicator.html +++ b/docs/modules/PLApplicator.html @@ -1,8 +1,8 @@ -PLApplicator | placeholders-toolkit - v0.1.2

Namespace PLApplicator

Functions for applying placeholders to strings.

-

Index

Functions

applyToObjectValueWithKey +PLApplicator | placeholders-toolkit - v0.1.3

Generated using TypeDoc

\ No newline at end of file +checkForPlaceholders +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/PLChecker.html b/docs/modules/PLChecker.html new file mode 100644 index 0000000..b5b7887 --- /dev/null +++ b/docs/modules/PLChecker.html @@ -0,0 +1,5 @@ +PLChecker | placeholders-toolkit - v0.1.3

Functions for checking if a string contains placeholders.

+

Index

Functions

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/PLCreator.html b/docs/modules/PLCreator.html index 9453ce5..81387e9 100644 --- a/docs/modules/PLCreator.html +++ b/docs/modules/PLCreator.html @@ -1,6 +1,6 @@ -PLCreator | placeholders-toolkit - v0.1.2

Functions for creating new placeholders.

-

Index

Functions

buildPlaceholdersFromFnDict +PLCreator | placeholders-toolkit - v0.1.3

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/PLLoader.html b/docs/modules/PLLoader.html index 7e51da6..b2f4224 100644 --- a/docs/modules/PLLoader.html +++ b/docs/modules/PLLoader.html @@ -1,5 +1,5 @@ -PLLoader | placeholders-toolkit - v0.1.2

Functions for loading placeholders from files or strings.

-

Index

Functions

loadPlaceholderFromJSONString +PLLoader | placeholders-toolkit - v0.1.3

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/PLMatcher.html b/docs/modules/PLMatcher.html index 4f72e3a..c9c8f45 100644 --- a/docs/modules/PLMatcher.html +++ b/docs/modules/PLMatcher.html @@ -1,5 +1,5 @@ -PLMatcher | placeholders-toolkit - v0.1.2

Functions for matching placeholders, parameters, and internal values.

-

Index

Type Aliases

braceType +PLMatcher | placeholders-toolkit - v0.1.3

Functions for matching placeholders, parameters, and internal values.

+

Index

Type Aliases

Functions

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/PLRule.html b/docs/modules/PLRule.html index afc7909..fe6b76b 100644 --- a/docs/modules/PLRule.html +++ b/docs/modules/PLRule.html @@ -1,11 +1,11 @@ -PLRule | placeholders-toolkit - v0.1.2

Rules for determining whether or not a placeholder is relevant in a given context.

+PLRule | placeholders-toolkit - v0.1.3

Rules for determining whether or not a placeholder is relevant in a given context.

Rules are functions that take in a string and a context object and return a boolean. If the boolean is true, the placeholder is relevant and should be applied, otherwise it is not relevant. Rule checking is ignored by default for all PLApplicator functions. To enable rule checking, pass true for the checkRules argument.

Example

const newPlaceholder = PLCreator.newPlaceholder("myPlaceholder", {
rules: [PLRule.RequireActiveBrowser()],
apply_fn: async (str, context) => {
return { result: "myValue", myPlaceholder: "myValue" };
},
})
const stringToReplace = "Hello, I am {{myPlaceholder}}.";
const result = await PLApplicator.applyToString(stringToReplace, { customPlaceholders: [newPlaceholder], checkRules: true })
console.log(result) // "Hello, I am myValue." only if a browser is the frontmost application, otherwise "Hello, I am {{myPlaceholder}}."
-

Index

Functions

Index

Functions

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/Placeholders.html b/docs/modules/Placeholders.html index 31e9537..5d83556 100644 --- a/docs/modules/Placeholders.html +++ b/docs/modules/Placeholders.html @@ -1,5 +1,5 @@ -Placeholders | placeholders-toolkit - v0.1.2

Namespace Placeholders

All of the default placeholder variables.

-

Index

Variables

AlertDirective +Placeholders | placeholders-toolkit - v0.1.3

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils.html b/docs/modules/utils.html index a6ca21b..8b80fdc 100644 --- a/docs/modules/utils.html +++ b/docs/modules/utils.html @@ -1,5 +1,5 @@ -utils | placeholders-toolkit - v0.1.2

Utility functions supplying common placeholder functionality.

-

Index

Variables

SupportedBrowsers +utils | placeholders-toolkit - v0.1.3

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/CustomPlaceholder.html b/docs/types/CustomPlaceholder.html index c222b30..d6a1189 100644 --- a/docs/types/CustomPlaceholder.html +++ b/docs/types/CustomPlaceholder.html @@ -1,4 +1,4 @@ -CustomPlaceholder | placeholders-toolkit - v0.1.2

Type alias CustomPlaceholder

CustomPlaceholder: {
    categories: number[];
    description: string;
    example: string;
    hintRepresentation: string;
    name: string;
    type: number;
    value: string;
}

A custom placeholder stored in custom_placeholders.json.

+CustomPlaceholder | placeholders-toolkit - v0.1.3

Type alias CustomPlaceholder

CustomPlaceholder: {
    categories: number[];
    description: string;
    example: string;
    hintRepresentation: string;
    name: string;
    type: number;
    value: string;
}

A custom placeholder stored in custom_placeholders.json.

Type declaration

  • categories: number[]

    The category of the placeholder, used to inform design decisions.

  • description: string

    A description of the placeholder shown when the placeholder is detected in a prompt.

  • example: string

    An example usage of the placeholder, shown when the placeholder is detected in a prompt.

    @@ -6,4 +6,4 @@
  • name: string

    The name of the placeholder, used as a REGEX pattern to detect the placeholder.

  • type: number

    The type of the placeholder, used to inform design decisions.

  • value: string

    The text to replace the placeholder with. Can include other placeholders, which will be replaced before the custom placeholder is applied.

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/PLMatcher.braceType.html b/docs/types/PLMatcher.braceType.html index 299647d..b47a296 100644 --- a/docs/types/PLMatcher.braceType.html +++ b/docs/types/PLMatcher.braceType.html @@ -1,2 +1,2 @@ -braceType | placeholders-toolkit - v0.1.2
braceType: "curly" | "square" | "round" | "angle"

The type of brace surrounding a placeholder.

-

Generated using TypeDoc

\ No newline at end of file +braceType | placeholders-toolkit - v0.1.3
braceType: "curly" | "square" | "round" | "angle"

The type of brace surrounding a placeholder.

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/PLRange.html b/docs/types/PLRange.html new file mode 100644 index 0000000..ee736a0 --- /dev/null +++ b/docs/types/PLRange.html @@ -0,0 +1,4 @@ +PLRange | placeholders-toolkit - v0.1.3

Type alias PLRange

PLRange: {
    endIndex: number;
    startIndex: number;
}

A placeholder range.

+

Type declaration

  • endIndex: number

    The end index of the placeholder in a string, non-inclusive.

    +
  • startIndex: number

    The start index of the placeholder in a string, inclusive.

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/Placeholder.html b/docs/types/Placeholder.html index 42bef2f..9d2c864 100644 --- a/docs/types/Placeholder.html +++ b/docs/types/Placeholder.html @@ -1,4 +1,4 @@ -Placeholder | placeholders-toolkit - v0.1.2

Type alias Placeholder

Placeholder: {
    apply: ((str, context?) => Promise<{
        result: string;
        [key: string]: unknown;
    }>);
    categories: PlaceholderCategory[];
    constant: boolean;
    dependencies?: string[];
    description: string;
    example: string;
    fn: ((...args) => Promise<string>);
    fullRepresentation: string;
    hintRepresentation: string;
    name: string;
    regex: RegExp;
    result_keys?: string[];
    rules?: ((str, context?) => Promise<boolean>)[];
    type: PlaceholderType;
}

Type declaration

  • apply: ((str, context?) => Promise<{
        result: string;
        [key: string]: unknown;
    }>)
      • (str, context?): Promise<{
            result: string;
            [key: string]: unknown;
        }>
      • The function that applies the placeholder to a string.

        +Placeholder | placeholders-toolkit - v0.1.3

        Type alias Placeholder

        Placeholder: {
            apply: ((str, context?) => Promise<{
                result: string;
                [key: string]: unknown;
            }>);
            categories: PlaceholderCategory[];
            constant: boolean;
            dependencies?: string[];
            description: string;
            example: string;
            fn: ((...args) => Promise<string>);
            fullRepresentation: string;
            hintRepresentation: string;
            name: string;
            regex: RegExp;
            result_keys?: string[];
            rules?: ((str, context?) => Promise<boolean>)[];
            type: PlaceholderType;
        }

        Type declaration

        • apply: ((str, context?) => Promise<{
              result: string;
              [key: string]: unknown;
          }>)
            • (str, context?): Promise<{
                  result: string;
                  [key: string]: unknown;
              }>
            • The function that applies the placeholder to a string.

              Parameters

              • str: string

                The string to apply the placeholder to.

              • Optional context: {
                    [key: string]: unknown;
                }
                • [key: string]: unknown

              Returns Promise<{
                  result: string;
                  [key: string]: unknown;
              }>

              The string with the placeholder applied.

        • categories: PlaceholderCategory[]

          The category of the placeholder, used to inform design decisions.

          @@ -14,4 +14,4 @@
        • Optional result_keys?: string[]

          The keys of the result object relevant to the placeholder. When placeholders are applied in bulk, this list is used to determine which keys to return as well as to make optimizations when determining which placeholders to apply. The first key in the list is the key for the placeholder's value.

        • Optional rules?: ((str, context?) => Promise<boolean>)[]

          Rules that determine whether or not a placeholder is relevant in a given context.

        • type: PlaceholderType

          The type of the placeholder, used to inform design decisions.

          -

        Generated using TypeDoc

        \ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/DefaultPlaceholders.html b/docs/variables/DefaultPlaceholders.html index 373b43d..7cfb04a 100644 --- a/docs/variables/DefaultPlaceholders.html +++ b/docs/variables/DefaultPlaceholders.html @@ -1,2 +1,2 @@ -DefaultPlaceholders | placeholders-toolkit - v0.1.2

Variable DefaultPlaceholdersConst

DefaultPlaceholders: {
    AlertDirective: Placeholder;
    AppleScriptPlaceholder: Placeholder;
    AudioFlowDirective: Placeholder;
    ChooseApplicationDirective: Placeholder;
    ChooseFileDirective: Placeholder;
    ChooseFolderDirective: Placeholder;
    ClipboardTextPlaceholder: Placeholder;
    CommandPlaceholder: Placeholder;
    ComputerNamePlaceholder: Placeholder;
    CopyDirective: Placeholder;
    CurrentAppBundleIDPlaceholder: Placeholder;
    CurrentAppNamePlaceholder: Placeholder;
    CurrentAppPathPlaceholder: Placeholder;
    CurrentDirectoryPlaceholder: Placeholder;
    CurrentTabTextPlaceholder: Placeholder;
    CurrentTrackPlaceholder: Placeholder;
    CurrentURLPlaceholder: Placeholder;
    CutoffDirective: Placeholder;
    DatePlaceholder: Placeholder;
    DayPlaceholder: Placeholder;
    DecrementPersistentVariablePlaceholder: Placeholder;
    DeletePersistentVariablePlaceholder: Placeholder;
    DialogDirective: Placeholder;
    ElementHTMLPlaceholder: Placeholder;
    ElementTextPlaceholder: Placeholder;
    FileMetadataPlaceholder: Placeholder;
    FileNamesPlaceholder: Placeholder;
    FilePlaceholder: Placeholder;
    FocusedElementPlaceholder: Placeholder;
    GetPersistentVariablePlaceholder: Placeholder;
    HomeDirPlaceholder: Placeholder;
    HostnamePlaceholder: Placeholder;
    IgnoreDirective: Placeholder;
    ImageFlowDirective: Placeholder;
    IncrementPersistentVariablePlaceholder: Placeholder;
    InstalledApplicationsPlaceholder: Placeholder;
    JXAPlaceholder: Placeholder;
    JavaScriptPlaceholder: Placeholder;
    LastEmailPlaceholder: Placeholder;
    LastNotePlaceholder: Placeholder;
    LocationPlaceholder: Placeholder;
    MonthEventsPlaceholder: Placeholder;
    MonthRemindersPlaceholder: Placeholder;
    MusicTracksPlaceholder: Placeholder;
    NearbyLocationsPlaceholder: Placeholder;
    PDFFlowDirective: Placeholder;
    PasteDirective: Placeholder;
    ResetPersistentVariablePlaceholder: Placeholder;
    RunningApplicationsPlaceholder: Placeholder;
    SafariBookmarksPlaceholder: Placeholder;
    SafariTopSitesPlaceholder: Placeholder;
    SayDirective: Placeholder;
    SelectFileDirective: Placeholder;
    SelectedFilesPlaceholder: Placeholder;
    SelectedTextPlaceholder: Placeholder;
    SetPersistentVariablePlaceholder: Placeholder;
    ShellScriptPlaceholder: Placeholder;
    ShortcutPlaceholder: Placeholder;
    ShortcutsPlaceholder: Placeholder;
    SystemLanguagePlaceholder: Placeholder;
    TextFileFlowDirective: Placeholder;
    TimePlaceholder: Placeholder;
    TimezonePlaceholder: Placeholder;
    ToastDirective: Placeholder;
    TodayEventsPlaceholder: Placeholder;
    TodayRemindersPlaceholder: Placeholder;
    TodayWeatherPlaceholder: Placeholder;
    TypeDirective: Placeholder;
    URLPlaceholder: Placeholder;
    UUIDPlaceholder: Placeholder;
    UsedUUIDsPlaceholder: Placeholder;
    UserPlaceholder: Placeholder;
    VarsPlaceholder: Placeholder;
    VideoFlowDirective: Placeholder;
    WeekEventsPlaceholder: Placeholder;
    WeekRemindersPlaceholder: Placeholder;
    WeekWeatherPlaceholder: Placeholder;
    WriteFileDirective: Placeholder;
    YearEventsPlaceholder: Placeholder;
    YearRemindersPlaceholder: Placeholder;
    YouTubeTranscriptPlaceholder: Placeholder;
} & {
    [key: string]: Placeholder;
} = ...

The list of default placeholders. This is a map of each placeholder's full name to its placeholder object. For example, the placeholder with the name "clipboardText" would be accessible as DefaultPlaceholders.ClipboardTextPlaceholder. Some placeholders, mainly file-extension-specific flow directives, can only be accessed using their string index, e.g. DefaultPlaceholders["TextfileMdPlaceholder"].

-

Type declaration

Type declaration

Generated using TypeDoc

\ No newline at end of file +DefaultPlaceholders | placeholders-toolkit - v0.1.3

Variable DefaultPlaceholdersConst

DefaultPlaceholders: {
    AlertDirective: Placeholder;
    AppleScriptPlaceholder: Placeholder;
    AudioFlowDirective: Placeholder;
    ChooseApplicationDirective: Placeholder;
    ChooseFileDirective: Placeholder;
    ChooseFolderDirective: Placeholder;
    ClipboardTextPlaceholder: Placeholder;
    CommandPlaceholder: Placeholder;
    ComputerNamePlaceholder: Placeholder;
    CopyDirective: Placeholder;
    CurrentAppBundleIDPlaceholder: Placeholder;
    CurrentAppNamePlaceholder: Placeholder;
    CurrentAppPathPlaceholder: Placeholder;
    CurrentDirectoryPlaceholder: Placeholder;
    CurrentTabTextPlaceholder: Placeholder;
    CurrentTrackPlaceholder: Placeholder;
    CurrentURLPlaceholder: Placeholder;
    CutoffDirective: Placeholder;
    DatePlaceholder: Placeholder;
    DayPlaceholder: Placeholder;
    DecrementPersistentVariablePlaceholder: Placeholder;
    DeletePersistentVariablePlaceholder: Placeholder;
    DialogDirective: Placeholder;
    ElementHTMLPlaceholder: Placeholder;
    ElementTextPlaceholder: Placeholder;
    FileMetadataPlaceholder: Placeholder;
    FileNamesPlaceholder: Placeholder;
    FilePlaceholder: Placeholder;
    FocusedElementPlaceholder: Placeholder;
    GetPersistentVariablePlaceholder: Placeholder;
    HomeDirPlaceholder: Placeholder;
    HostnamePlaceholder: Placeholder;
    IgnoreDirective: Placeholder;
    ImageFlowDirective: Placeholder;
    IncrementPersistentVariablePlaceholder: Placeholder;
    InstalledApplicationsPlaceholder: Placeholder;
    JXAPlaceholder: Placeholder;
    JavaScriptPlaceholder: Placeholder;
    LastEmailPlaceholder: Placeholder;
    LastNotePlaceholder: Placeholder;
    LocationPlaceholder: Placeholder;
    MonthEventsPlaceholder: Placeholder;
    MonthRemindersPlaceholder: Placeholder;
    MusicTracksPlaceholder: Placeholder;
    NearbyLocationsPlaceholder: Placeholder;
    PDFFlowDirective: Placeholder;
    PasteDirective: Placeholder;
    ResetPersistentVariablePlaceholder: Placeholder;
    RunningApplicationsPlaceholder: Placeholder;
    SafariBookmarksPlaceholder: Placeholder;
    SafariTopSitesPlaceholder: Placeholder;
    SayDirective: Placeholder;
    SelectFileDirective: Placeholder;
    SelectedFileContentsPlaceholder: Placeholder;
    SelectedFilesPlaceholder: Placeholder;
    SelectedTextPlaceholder: Placeholder;
    SetPersistentVariablePlaceholder: Placeholder;
    ShellScriptPlaceholder: Placeholder;
    ShortcutPlaceholder: Placeholder;
    ShortcutsPlaceholder: Placeholder;
    SystemLanguagePlaceholder: Placeholder;
    TextFileFlowDirective: Placeholder;
    TimePlaceholder: Placeholder;
    TimezonePlaceholder: Placeholder;
    ToastDirective: Placeholder;
    TodayEventsPlaceholder: Placeholder;
    TodayRemindersPlaceholder: Placeholder;
    TodayWeatherPlaceholder: Placeholder;
    TypeDirective: Placeholder;
    URLPlaceholder: Placeholder;
    UUIDPlaceholder: Placeholder;
    UsedUUIDsPlaceholder: Placeholder;
    UserPlaceholder: Placeholder;
    VarsPlaceholder: Placeholder;
    VideoFlowDirective: Placeholder;
    WeekEventsPlaceholder: Placeholder;
    WeekRemindersPlaceholder: Placeholder;
    WeekWeatherPlaceholder: Placeholder;
    WriteFileDirective: Placeholder;
    YearEventsPlaceholder: Placeholder;
    YearRemindersPlaceholder: Placeholder;
    YouTubeTranscriptPlaceholder: Placeholder;
} & {
    [key: string]: Placeholder;
} = ...

The list of default placeholders. This is a map of each placeholder's full name to its placeholder object. For example, the placeholder with the name "clipboardText" would be accessible as DefaultPlaceholders.ClipboardTextPlaceholder. Some placeholders, mainly file-extension-specific flow directives, can only be accessed using their string index, e.g. DefaultPlaceholders["TextfileMdPlaceholder"].

+

Type declaration

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.AlertDirective.html b/docs/variables/Placeholders.AlertDirective.html index f11d2c9..c81173a 100644 --- a/docs/variables/Placeholders.AlertDirective.html +++ b/docs/variables/Placeholders.AlertDirective.html @@ -1,4 +1,4 @@ -AlertDirective | placeholders-toolkit - v0.1.2
AlertDirective: Placeholder = ...

Directive to display an alert with the provided text. The placeholder will always be replaced with an empty string.

+AlertDirective | placeholders-toolkit - v0.1.3
AlertDirective: Placeholder = ...

Directive to display an alert with the provided text. The placeholder will always be replaced with an empty string.

Syntax: {{alert title="...":Message}} or {{alert timeout=[number] title="...":Message}}

The timeout and title are optional. If no timeout is provided, the alert will timeout after 10 seconds. The default title is "Pins". You must provide a message.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.AppleScriptPlaceholder.html b/docs/variables/Placeholders.AppleScriptPlaceholder.html index f896b01..a7bcdf0 100644 --- a/docs/variables/Placeholders.AppleScriptPlaceholder.html +++ b/docs/variables/Placeholders.AppleScriptPlaceholder.html @@ -1,3 +1,3 @@ -AppleScriptPlaceholder | placeholders-toolkit - v0.1.2

Variable AppleScriptPlaceholderConst

AppleScriptPlaceholder: Placeholder = ...

Placeholder for output of an AppleScript script. If the script fails, this placeholder will be replaced with an empty string. No sanitization is done in the script input; the expectation is that users will only use this placeholder with trusted scripts.

+AppleScriptPlaceholder | placeholders-toolkit - v0.1.3

Variable AppleScriptPlaceholderConst

AppleScriptPlaceholder: Placeholder = ...

Placeholder for output of an AppleScript script. If the script fails, this placeholder will be replaced with an empty string. No sanitization is done in the script input; the expectation is that users will only use this placeholder with trusted scripts.

Syntax: {{as:...}}, where ... is the AppleScript script to run.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.AudioDirectives.html b/docs/variables/Placeholders.AudioDirectives.html index b6004f1..d8e217f 100644 --- a/docs/variables/Placeholders.AudioDirectives.html +++ b/docs/variables/Placeholders.AudioDirectives.html @@ -1,4 +1,4 @@ -AudioDirectives | placeholders-toolkit - v0.1.2
AudioDirectives: Placeholder[] = ...

Flow control directives for each audio file extension.

+AudioDirectives | placeholders-toolkit - v0.1.3
AudioDirectives: Placeholder[] = ...

Flow control directives for each audio file extension.

Each audio directive follows the same syntax: {{ext:content if true}} or {{ext:[content if true]:[content if false]}}, where ext is the audio file extension, e.g. mp3, wav, aiff, etc.

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.AudioFlowDirective.html b/docs/variables/Placeholders.AudioFlowDirective.html index 69904c1..7237d47 100644 --- a/docs/variables/Placeholders.AudioFlowDirective.html +++ b/docs/variables/Placeholders.AudioFlowDirective.html @@ -1,4 +1,4 @@ -AudioFlowDirective | placeholders-toolkit - v0.1.2
AudioFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any audio files are selected.

+AudioFlowDirective | placeholders-toolkit - v0.1.3
AudioFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any audio files are selected.

Syntax: {{audio:content if true}} or {{audio:[content if true]:[content if false]}}

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ChooseApplicationDirective.html b/docs/variables/Placeholders.ChooseApplicationDirective.html index f17858d..76d4d0b 100644 --- a/docs/variables/Placeholders.ChooseApplicationDirective.html +++ b/docs/variables/Placeholders.ChooseApplicationDirective.html @@ -1,3 +1,3 @@ -ChooseApplicationDirective | placeholders-toolkit - v0.1.2

Variable ChooseApplicationDirectiveConst

ChooseApplicationDirective: Placeholder = ...

Directive to prompt the user to choose one or more applications. The placeholder will be replaced with the space-separated list of quoted application bundle paths.

+ChooseApplicationDirective | placeholders-toolkit - v0.1.3

Variable ChooseApplicationDirectiveConst

ChooseApplicationDirective: Placeholder = ...

Directive to prompt the user to choose one or more applications. The placeholder will be replaced with the space-separated list of quoted application bundle paths.

Syntax: {{chooseApplication multiple=[true/false]}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ChooseFileDirective.html b/docs/variables/Placeholders.ChooseFileDirective.html index 5cf290d..f861ca6 100644 --- a/docs/variables/Placeholders.ChooseFileDirective.html +++ b/docs/variables/Placeholders.ChooseFileDirective.html @@ -1,3 +1,3 @@ -ChooseFileDirective | placeholders-toolkit - v0.1.2

Variable ChooseFileDirectiveConst

ChooseFileDirective: Placeholder = ...

Directive to prompt the user to choose one or more files. The placeholder will be replaced with the space-separated list of quoted file paths.

+ChooseFileDirective | placeholders-toolkit - v0.1.3

Variable ChooseFileDirectiveConst

ChooseFileDirective: Placeholder = ...

Directive to prompt the user to choose one or more files. The placeholder will be replaced with the space-separated list of quoted file paths.

Syntax: {{chooseFile multiple=[true/false]}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ChooseFolderDirective.html b/docs/variables/Placeholders.ChooseFolderDirective.html index d6cf62f..8ad9e69 100644 --- a/docs/variables/Placeholders.ChooseFolderDirective.html +++ b/docs/variables/Placeholders.ChooseFolderDirective.html @@ -1,3 +1,3 @@ -ChooseFolderDirective | placeholders-toolkit - v0.1.2

Variable ChooseFolderDirectiveConst

ChooseFolderDirective: Placeholder = ...

Directive to prompt the user to choose one or more folders. The placeholder will be replaced with the space-separated list of quoted folder paths.

+ChooseFolderDirective | placeholders-toolkit - v0.1.3

Variable ChooseFolderDirectiveConst

ChooseFolderDirective: Placeholder = ...

Directive to prompt the user to choose one or more folders. The placeholder will be replaced with the space-separated list of quoted folder paths.

Syntax: {{chooseFolder multiple=[true/false]}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ClipboardTextPlaceholder.html b/docs/variables/Placeholders.ClipboardTextPlaceholder.html index b19327d..9d05db1 100644 --- a/docs/variables/Placeholders.ClipboardTextPlaceholder.html +++ b/docs/variables/Placeholders.ClipboardTextPlaceholder.html @@ -1,3 +1,4 @@ -ClipboardTextPlaceholder | placeholders-toolkit - v0.1.2

Variable ClipboardTextPlaceholderConst

ClipboardTextPlaceholder: Placeholder = ...

Placeholder for the text currently stored in the clipboard. If the clipboard is empty, this will be replaced with an empty string. Most clipboard content supplies a string format, such as file names when copying files in Finder.

-

Syntax: {{clipboardText}}

-

Generated using TypeDoc

\ No newline at end of file +ClipboardTextPlaceholder | placeholders-toolkit - v0.1.3

Variable ClipboardTextPlaceholderConst

ClipboardTextPlaceholder: Placeholder = ...

Placeholder for the text currently stored in the clipboard. If the clipboard is empty, this will be replaced with an empty string. Most clipboard content supplies a string format, such as file names when copying files in Finder.

+

If the offsets parameter is provided, the placeholder will be replaced with a list of one or more previous clipboard text entries separated by newlines. The offsets parameter can be a list of numbers or a range of numbers, e.g. 1, 2, 3, 1-3, and 1..3 are all treated equally. If the offsets parameter is not provided, the placeholder will be replaced with the text currently stored in the clipboard. To include the current clipboard text in addition to previous entries, begin the list with 0.

+

Syntax: {{clipboardText}} or {{clipboardText offsets=[1, 2, 3]}} or {{clipboardText offsets=[1..3]}}

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CommandPlaceholder.html b/docs/variables/Placeholders.CommandPlaceholder.html index 0063d7b..02f2577 100644 --- a/docs/variables/Placeholders.CommandPlaceholder.html +++ b/docs/variables/Placeholders.CommandPlaceholder.html @@ -1,3 +1,3 @@ -CommandPlaceholder | placeholders-toolkit - v0.1.2
CommandPlaceholder: Placeholder = ...

Directive to run a Raycast command. The placeholder will always be replaced with an empty string. Commands are specified in the format {{command:commandName:extensionName}}.

+CommandPlaceholder | placeholders-toolkit - v0.1.3
CommandPlaceholder: Placeholder = ...

Directive to run a Raycast command. The placeholder will always be replaced with an empty string. Commands are specified in the format {{command:commandName:extensionName}}.

Syntax: {{command:[commandName]:[extensionName]:[input]}}, where commandName is the name of the command to run, extensionName is the name of the extension to run the command from (optional), and input is the input to supply to the command (optional).

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ComputerNamePlaceholder.html b/docs/variables/Placeholders.ComputerNamePlaceholder.html index b69a486..ac94b84 100644 --- a/docs/variables/Placeholders.ComputerNamePlaceholder.html +++ b/docs/variables/Placeholders.ComputerNamePlaceholder.html @@ -1,3 +1,3 @@ -ComputerNamePlaceholder | placeholders-toolkit - v0.1.2

Variable ComputerNamePlaceholderConst

ComputerNamePlaceholder: Placeholder = ...

Placeholder for the 'pretty' hostname of the current machine. Barring any issues, this should always be replaced.

+ComputerNamePlaceholder | placeholders-toolkit - v0.1.3

Variable ComputerNamePlaceholderConst

ComputerNamePlaceholder: Placeholder = ...

Placeholder for the 'pretty' hostname of the current machine. Barring any issues, this should always be replaced.

Syntax: {{computerName}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CopyDirective.html b/docs/variables/Placeholders.CopyDirective.html index 370dc6f..ee44d8c 100644 --- a/docs/variables/Placeholders.CopyDirective.html +++ b/docs/variables/Placeholders.CopyDirective.html @@ -1,3 +1,3 @@ -CopyDirective | placeholders-toolkit - v0.1.2
CopyDirective: Placeholder = ...

Directive to copy the provided text to the clipboard. The placeholder will always be replaced with an empty string.

+CopyDirective | placeholders-toolkit - v0.1.3
CopyDirective: Placeholder = ...

Directive to copy the provided text to the clipboard. The placeholder will always be replaced with an empty string.

Syntax: {{copy:...}}, where ... is the text to copy to the clipboard.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentAppBundleIDPlaceholder.html b/docs/variables/Placeholders.CurrentAppBundleIDPlaceholder.html index d7c6fa4..093b872 100644 --- a/docs/variables/Placeholders.CurrentAppBundleIDPlaceholder.html +++ b/docs/variables/Placeholders.CurrentAppBundleIDPlaceholder.html @@ -1,3 +1,3 @@ -CurrentAppBundleIDPlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentAppBundleIDPlaceholderConst

CurrentAppBundleIDPlaceholder: Placeholder = ...

Placeholder for the bundle ID of the current application.

+CurrentAppBundleIDPlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentAppBundleIDPlaceholderConst

CurrentAppBundleIDPlaceholder: Placeholder = ...

Placeholder for the bundle ID of the current application.

Syntax: {{currentAppBundleID}} or {{currentApplicationBundleID}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentAppNamePlaceholder.html b/docs/variables/Placeholders.CurrentAppNamePlaceholder.html index 816e5b0..a5b11e2 100644 --- a/docs/variables/Placeholders.CurrentAppNamePlaceholder.html +++ b/docs/variables/Placeholders.CurrentAppNamePlaceholder.html @@ -1,3 +1,3 @@ -CurrentAppNamePlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentAppNamePlaceholderConst

CurrentAppNamePlaceholder: Placeholder = ...

Placeholder for the name of the current application. Barring any issues, this should always be replaced.

+CurrentAppNamePlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentAppNamePlaceholderConst

CurrentAppNamePlaceholder: Placeholder = ...

Placeholder for the name of the current application. Barring any issues, this should always be replaced.

Syntax: {{currentAppName}} or {{currentApp}} or {{currentApplication}} or {{currentApplicationName}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentAppPathPlaceholder.html b/docs/variables/Placeholders.CurrentAppPathPlaceholder.html index ab40cb9..860df6f 100644 --- a/docs/variables/Placeholders.CurrentAppPathPlaceholder.html +++ b/docs/variables/Placeholders.CurrentAppPathPlaceholder.html @@ -1,3 +1,3 @@ -CurrentAppPathPlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentAppPathPlaceholderConst

CurrentAppPathPlaceholder: Placeholder = ...

Placeholder for the path of the current application. Barring any issues, this should always be replaced.

+CurrentAppPathPlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentAppPathPlaceholderConst

CurrentAppPathPlaceholder: Placeholder = ...

Placeholder for the path of the current application. Barring any issues, this should always be replaced.

Syntax: {{currentAppPath}} or {{currentApplicationPath}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentDirectoryPlaceholder.html b/docs/variables/Placeholders.CurrentDirectoryPlaceholder.html index 5c98786..c0b253c 100644 --- a/docs/variables/Placeholders.CurrentDirectoryPlaceholder.html +++ b/docs/variables/Placeholders.CurrentDirectoryPlaceholder.html @@ -1,3 +1,3 @@ -CurrentDirectoryPlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentDirectoryPlaceholderConst

CurrentDirectoryPlaceholder: Placeholder = ...

Placeholder for the current working directory. If the current application is not Finder, this placeholder will not be replaced.

+CurrentDirectoryPlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentDirectoryPlaceholderConst

CurrentDirectoryPlaceholder: Placeholder = ...

Placeholder for the current working directory. If the current application is not Finder, this placeholder will not be replaced.

Syntax: {{currentDirectory}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentTabTextPlaceholder.html b/docs/variables/Placeholders.CurrentTabTextPlaceholder.html index 3c260e1..ab76ea7 100644 --- a/docs/variables/Placeholders.CurrentTabTextPlaceholder.html +++ b/docs/variables/Placeholders.CurrentTabTextPlaceholder.html @@ -1,3 +1,3 @@ -CurrentTabTextPlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentTabTextPlaceholderConst

CurrentTabTextPlaceholder: Placeholder = ...

Placeholder for the visible text of the current tab in any supported browser. If the current application is not a supported browser, this placeholder will not be replaced.

+CurrentTabTextPlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentTabTextPlaceholderConst

CurrentTabTextPlaceholder: Placeholder = ...

Placeholder for the visible text of the current tab in any supported browser. If the current application is not a supported browser, this placeholder will not be replaced.

Syntax: {{currentTabText}} or {{tabText}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentTrackPlaceholder.html b/docs/variables/Placeholders.CurrentTrackPlaceholder.html index 4c42693..2891c3f 100644 --- a/docs/variables/Placeholders.CurrentTrackPlaceholder.html +++ b/docs/variables/Placeholders.CurrentTrackPlaceholder.html @@ -1,3 +1,3 @@ -CurrentTrackPlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentTrackPlaceholderConst

CurrentTrackPlaceholder: Placeholder = ...

Placeholder for the name of the currently playing track in Music.app.

+CurrentTrackPlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentTrackPlaceholderConst

CurrentTrackPlaceholder: Placeholder = ...

Placeholder for the name of the currently playing track in Music.app.

Syntax: {{currentTrack}} or {{currentSong}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CurrentURLPlaceholder.html b/docs/variables/Placeholders.CurrentURLPlaceholder.html index 4af432a..48fc1f6 100644 --- a/docs/variables/Placeholders.CurrentURLPlaceholder.html +++ b/docs/variables/Placeholders.CurrentURLPlaceholder.html @@ -1,3 +1,3 @@ -CurrentURLPlaceholder | placeholders-toolkit - v0.1.2

Variable CurrentURLPlaceholderConst

CurrentURLPlaceholder: Placeholder = ...

Placeholder for the current URL in any supported browser. If the current application is not a supported browser, this placeholder will not be replaced.

+CurrentURLPlaceholder | placeholders-toolkit - v0.1.3

Variable CurrentURLPlaceholderConst

CurrentURLPlaceholder: Placeholder = ...

Placeholder for the current URL in any supported browser. If the current application is not a supported browser, this placeholder will not be replaced.

Syntax: {{currentURL}} or {{currentTabURL}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.CutoffDirective.html b/docs/variables/Placeholders.CutoffDirective.html index e5cb86a..57de08b 100644 --- a/docs/variables/Placeholders.CutoffDirective.html +++ b/docs/variables/Placeholders.CutoffDirective.html @@ -1,3 +1,3 @@ -CutoffDirective | placeholders-toolkit - v0.1.2
CutoffDirective: Placeholder = ...

Directive to cut off the provided content after the specified number of characters.

+CutoffDirective | placeholders-toolkit - v0.1.3
CutoffDirective: Placeholder = ...

Directive to cut off the provided content after the specified number of characters.

Syntax: {{cutoff [number]:...}}, where [number] is the number of characters to cut off after, and ... is the content to trim.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.DatePlaceholder.html b/docs/variables/Placeholders.DatePlaceholder.html index e7358df..848d6e0 100644 --- a/docs/variables/Placeholders.DatePlaceholder.html +++ b/docs/variables/Placeholders.DatePlaceholder.html @@ -1,3 +1,3 @@ -DatePlaceholder | placeholders-toolkit - v0.1.2
DatePlaceholder: Placeholder = ...

Placeholder for the current date supporting an optional format argument. Defaults to "Month Day, Year". Barring any issues, this should always be replaced.

+DatePlaceholder | placeholders-toolkit - v0.1.3
DatePlaceholder: Placeholder = ...

Placeholder for the current date supporting an optional format argument. Defaults to "Month Day, Year". Barring any issues, this should always be replaced.

Syntax: {{date format="..."}} or {{currentDate format="..."}}, where ... specifies a valid Unicode date format string. The format argument is optional; if not provided, the default is "MMMM d, yyyy" (e.g. "January 1, 2024").

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.DayPlaceholder.html b/docs/variables/Placeholders.DayPlaceholder.html index bdad870..7fa42a6 100644 --- a/docs/variables/Placeholders.DayPlaceholder.html +++ b/docs/variables/Placeholders.DayPlaceholder.html @@ -1,3 +1,3 @@ -DayPlaceholder | placeholders-toolkit - v0.1.2
DayPlaceholder: Placeholder = ...

Placeholder for the current day of the week, e.g. "Monday", using en-US as the default locale. Supports an optional locale argument. Barring any issues, this should always be replaced.

+DayPlaceholder | placeholders-toolkit - v0.1.3
DayPlaceholder: Placeholder = ...

Placeholder for the current day of the week, e.g. "Monday", using en-US as the default locale. Supports an optional locale argument. Barring any issues, this should always be replaced.

Syntax: {{day locale="..."}} or {{dayName locale="..."}} or {{currentDay locale="..."}} or {{currentDayName locale="..."}}, where ... specifies a valid Unicode locale string. The locale argument is optional; if not provided, the default is "en-US".

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.DecrementPersistentVariablePlaceholder.html b/docs/variables/Placeholders.DecrementPersistentVariablePlaceholder.html index 3e8388a..c1c204e 100644 --- a/docs/variables/Placeholders.DecrementPersistentVariablePlaceholder.html +++ b/docs/variables/Placeholders.DecrementPersistentVariablePlaceholder.html @@ -1,3 +1,3 @@ -DecrementPersistentVariablePlaceholder | placeholders-toolkit - v0.1.2

Variable DecrementPersistentVariablePlaceholderConst

DecrementPersistentVariablePlaceholder: Placeholder = ...

Directive to decrement a persistent counter variable by 1. Replaced with the new value of the counter.

+DecrementPersistentVariablePlaceholder | placeholders-toolkit - v0.1.3

Variable DecrementPersistentVariablePlaceholderConst

DecrementPersistentVariablePlaceholder: Placeholder = ...

Directive to decrement a persistent counter variable by 1. Replaced with the new value of the counter.

Syntax: {{decrement:x}}, where x is the name of the counter variable.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.DeletePersistentVariablePlaceholder.html b/docs/variables/Placeholders.DeletePersistentVariablePlaceholder.html index 86f6c2e..a52358c 100644 --- a/docs/variables/Placeholders.DeletePersistentVariablePlaceholder.html +++ b/docs/variables/Placeholders.DeletePersistentVariablePlaceholder.html @@ -1,3 +1,3 @@ -DeletePersistentVariablePlaceholder | placeholders-toolkit - v0.1.2

Variable DeletePersistentVariablePlaceholderConst

DeletePersistentVariablePlaceholder: Placeholder = ...

Directive to delete a persistent variable. If the variable does not exist, nothing will happen. The placeholder will always be replaced with an empty string.

+DeletePersistentVariablePlaceholder | placeholders-toolkit - v0.1.3

Variable DeletePersistentVariablePlaceholderConst

DeletePersistentVariablePlaceholder: Placeholder = ...

Directive to delete a persistent variable. If the variable does not exist, nothing will happen. The placeholder will always be replaced with an empty string.

Syntax: {{delete x}}, where x is the name of the variable to delete.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.DialogDirective.html b/docs/variables/Placeholders.DialogDirective.html index 05c0b3a..afc77d0 100644 --- a/docs/variables/Placeholders.DialogDirective.html +++ b/docs/variables/Placeholders.DialogDirective.html @@ -1,4 +1,4 @@ -DialogDirective | placeholders-toolkit - v0.1.2
DialogDirective: Placeholder = ...

Directive to display a dialog with the provided text. The placeholder will be replaced with an empty string unless input=true is provided, in which case the placeholder will be replaced with the user's input. If the user cancels the dialog, the placeholder will be replaced with an empty string.

+DialogDirective | placeholders-toolkit - v0.1.3
DialogDirective: Placeholder = ...

Directive to display a dialog with the provided text. The placeholder will be replaced with an empty string unless input=true is provided, in which case the placeholder will be replaced with the user's input. If the user cancels the dialog, the placeholder will be replaced with an empty string.

Syntax: {{dialog input=[true/false] timeout=[number] title="...":Message}}

The input setting, timeout, and title are optional. If no timeout is provided, the dialog will timeout after 30 seconds. If no title is provided, the title will be "Pins". The default input setting is false. You must provide a message.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ElementHTMLPlaceholder.html b/docs/variables/Placeholders.ElementHTMLPlaceholder.html index 2697086..f00e68a 100644 --- a/docs/variables/Placeholders.ElementHTMLPlaceholder.html +++ b/docs/variables/Placeholders.ElementHTMLPlaceholder.html @@ -1,3 +1,3 @@ -ElementHTMLPlaceholder | placeholders-toolkit - v0.1.2

Variable ElementHTMLPlaceholderConst

ElementHTMLPlaceholder: Placeholder = ...

Placeholder for the raw HTML of the first element matching the given selector in the active tab of a supported browser.

+ElementHTMLPlaceholder | placeholders-toolkit - v0.1.3

Variable ElementHTMLPlaceholderConst

ElementHTMLPlaceholder: Placeholder = ...

Placeholder for the raw HTML of the first element matching the given selector in the active tab of a supported browser.

Syntax: {{elementHTML:<selector>}}, where <selector> is a valid CSS selector.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ElementTextPlaceholder.html b/docs/variables/Placeholders.ElementTextPlaceholder.html index 77a3888..073b03a 100644 --- a/docs/variables/Placeholders.ElementTextPlaceholder.html +++ b/docs/variables/Placeholders.ElementTextPlaceholder.html @@ -1,3 +1,3 @@ -ElementTextPlaceholder | placeholders-toolkit - v0.1.2

Variable ElementTextPlaceholderConst

ElementTextPlaceholder: Placeholder = ...

Placeholder for the text of the first element matching the given selector in the frontmost window of a supported browser.

+ElementTextPlaceholder | placeholders-toolkit - v0.1.3

Variable ElementTextPlaceholderConst

ElementTextPlaceholder: Placeholder = ...

Placeholder for the text of the first element matching the given selector in the frontmost window of a supported browser.

Syntax: {{elementText:<selector>}}, where <selector> is a valid CSS selector.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.FileMetadataPlaceholder.html b/docs/variables/Placeholders.FileMetadataPlaceholder.html index 1814b8b..c412512 100644 --- a/docs/variables/Placeholders.FileMetadataPlaceholder.html +++ b/docs/variables/Placeholders.FileMetadataPlaceholder.html @@ -1,3 +1,3 @@ -FileMetadataPlaceholder | placeholders-toolkit - v0.1.2

Variable FileMetadataPlaceholderConst

FileMetadataPlaceholder: Placeholder = ...

Placeholder for metadata of the currently selected files in Finder as a comma-separated list.

+FileMetadataPlaceholder | placeholders-toolkit - v0.1.3

Variable FileMetadataPlaceholderConst

FileMetadataPlaceholder: Placeholder = ...

Placeholder for metadata of the currently selected files in Finder as a comma-separated list.

Syntax: {{metadata}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.FileNamesPlaceholder.html b/docs/variables/Placeholders.FileNamesPlaceholder.html index dbf1db3..41c5c70 100644 --- a/docs/variables/Placeholders.FileNamesPlaceholder.html +++ b/docs/variables/Placeholders.FileNamesPlaceholder.html @@ -1,3 +1,3 @@ -FileNamesPlaceholder | placeholders-toolkit - v0.1.2

Variable FileNamesPlaceholderConst

FileNamesPlaceholder: Placeholder = ...

Place holder for the names of the currently selected files in Finder as a comma-separated list.

+FileNamesPlaceholder | placeholders-toolkit - v0.1.3

Variable FileNamesPlaceholderConst

FileNamesPlaceholder: Placeholder = ...

Place holder for the names of the currently selected files in Finder as a comma-separated list.

Syntax: {{fileNames}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.FilePlaceholder.html b/docs/variables/Placeholders.FilePlaceholder.html index 3107ecf..b258a16 100644 --- a/docs/variables/Placeholders.FilePlaceholder.html +++ b/docs/variables/Placeholders.FilePlaceholder.html @@ -1,3 +1,3 @@ -FilePlaceholder | placeholders-toolkit - v0.1.2
FilePlaceholder: Placeholder = ...

Placeholder for the raw text of a file at the given path. The path can be absolute or relative to the user's home directory (e.g. ~/Desktop/file.txt). The file must be readable as UTF-8 text, or the placeholder will be replaced with an empty string.

+FilePlaceholder | placeholders-toolkit - v0.1.3
FilePlaceholder: Placeholder = ...

Placeholder for the raw text of a file at the given path. The path can be absolute or relative to the user's home directory (e.g. ~/Desktop/file.txt). The file must be readable as UTF-8 text, or the placeholder will be replaced with an empty string.

Syntax: {{file:[path]}}, where [path] is the POSIX path to the file.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.FocusedElementPlaceholder.html b/docs/variables/Placeholders.FocusedElementPlaceholder.html index 2264c45..5a7382e 100644 --- a/docs/variables/Placeholders.FocusedElementPlaceholder.html +++ b/docs/variables/Placeholders.FocusedElementPlaceholder.html @@ -1,3 +1,3 @@ -FocusedElementPlaceholder | placeholders-toolkit - v0.1.2

Variable FocusedElementPlaceholderConst

FocusedElementPlaceholder: Placeholder = ...

Placeholder for the text of the currently focused element in the frontmost window of a supported browser.

+FocusedElementPlaceholder | placeholders-toolkit - v0.1.3

Variable FocusedElementPlaceholderConst

FocusedElementPlaceholder: Placeholder = ...

Placeholder for the text of the currently focused element in the frontmost window of a supported browser.

Syntax: {{focusedElement}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.GetPersistentVariablePlaceholder.html b/docs/variables/Placeholders.GetPersistentVariablePlaceholder.html index f7206ab..8ae0918 100644 --- a/docs/variables/Placeholders.GetPersistentVariablePlaceholder.html +++ b/docs/variables/Placeholders.GetPersistentVariablePlaceholder.html @@ -1,3 +1,3 @@ -GetPersistentVariablePlaceholder | placeholders-toolkit - v0.1.2

Variable GetPersistentVariablePlaceholderConst

GetPersistentVariablePlaceholder: Placeholder = ...

Directive to get the value of a persistent variable. If the variable does not exist, the placeholder will be replaced with an empty string.

+GetPersistentVariablePlaceholder | placeholders-toolkit - v0.1.3

Variable GetPersistentVariablePlaceholderConst

GetPersistentVariablePlaceholder: Placeholder = ...

Directive to get the value of a persistent variable. If the variable does not exist, the placeholder will be replaced with an empty string.

Syntax: {{get x}}, where x is the name of the variable to get.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.HomeDirPlaceholder.html b/docs/variables/Placeholders.HomeDirPlaceholder.html index 1f36fd5..e2a4343 100644 --- a/docs/variables/Placeholders.HomeDirPlaceholder.html +++ b/docs/variables/Placeholders.HomeDirPlaceholder.html @@ -1,3 +1,3 @@ -HomeDirPlaceholder | placeholders-toolkit - v0.1.2
HomeDirPlaceholder: Placeholder = ...

Placeholder for the home directory of the currently logged-in user. Barring any issues, this should always be replaced.

+HomeDirPlaceholder | placeholders-toolkit - v0.1.3
HomeDirPlaceholder: Placeholder = ...

Placeholder for the home directory of the currently logged-in user. Barring any issues, this should always be replaced.

Syntax: {{homedir}} or {{homeDirectory}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.HostnamePlaceholder.html b/docs/variables/Placeholders.HostnamePlaceholder.html index 58b0b45..e0eddcc 100644 --- a/docs/variables/Placeholders.HostnamePlaceholder.html +++ b/docs/variables/Placeholders.HostnamePlaceholder.html @@ -1,3 +1,3 @@ -HostnamePlaceholder | placeholders-toolkit - v0.1.2

Variable HostnamePlaceholderConst

HostnamePlaceholder: Placeholder = ...

Placeholder for the hostname of the current machine. Barring any issues, this should always be replaced.

+HostnamePlaceholder | placeholders-toolkit - v0.1.3

Variable HostnamePlaceholderConst

HostnamePlaceholder: Placeholder = ...

Placeholder for the hostname of the current machine. Barring any issues, this should always be replaced.

Syntax: {{hostname}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.IgnoreDirective.html b/docs/variables/Placeholders.IgnoreDirective.html index c4d266a..f2c7eba 100644 --- a/docs/variables/Placeholders.IgnoreDirective.html +++ b/docs/variables/Placeholders.IgnoreDirective.html @@ -1,3 +1,3 @@ -IgnoreDirective | placeholders-toolkit - v0.1.2
IgnoreDirective: Placeholder = ...

Directive to ignore all content within the directive. Allows placeholders and directives to run without influencing the output.

+IgnoreDirective | placeholders-toolkit - v0.1.3
IgnoreDirective: Placeholder = ...

Directive to ignore all content within the directive. Allows placeholders and directives to run without influencing the output.

Syntax: {{ignore:...}}, where ... is the content to ignore.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ImageDirectives.html b/docs/variables/Placeholders.ImageDirectives.html index cdc21b0..69d57d1 100644 --- a/docs/variables/Placeholders.ImageDirectives.html +++ b/docs/variables/Placeholders.ImageDirectives.html @@ -1,4 +1,4 @@ -ImageDirectives | placeholders-toolkit - v0.1.2
ImageDirectives: Placeholder[] = ...

Flow control directives for each image file extension.

+ImageDirectives | placeholders-toolkit - v0.1.3
ImageDirectives: Placeholder[] = ...

Flow control directives for each image file extension.

Each image directive follows the same syntax: {{ext:content if true}} or {{ext:[content if true]:[content if false]}}, where ext is the image file extension, e.g. png, jpg, gif, etc.

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ImageFlowDirective.html b/docs/variables/Placeholders.ImageFlowDirective.html index 05bbca1..08557e9 100644 --- a/docs/variables/Placeholders.ImageFlowDirective.html +++ b/docs/variables/Placeholders.ImageFlowDirective.html @@ -1,4 +1,4 @@ -ImageFlowDirective | placeholders-toolkit - v0.1.2
ImageFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any image files are selected.

+ImageFlowDirective | placeholders-toolkit - v0.1.3
ImageFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any image files are selected.

Syntax: {{images:content if true}} or {{images:[content if true]:[content if false]}}

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.IncrementPersistentVariablePlaceholder.html b/docs/variables/Placeholders.IncrementPersistentVariablePlaceholder.html index 90617e7..66238ce 100644 --- a/docs/variables/Placeholders.IncrementPersistentVariablePlaceholder.html +++ b/docs/variables/Placeholders.IncrementPersistentVariablePlaceholder.html @@ -1,3 +1,3 @@ -IncrementPersistentVariablePlaceholder | placeholders-toolkit - v0.1.2

Variable IncrementPersistentVariablePlaceholderConst

IncrementPersistentVariablePlaceholder: Placeholder = ...

Directive to increment a persistent counter variable by 1. Replaced with the new value of the counter.

+IncrementPersistentVariablePlaceholder | placeholders-toolkit - v0.1.3

Variable IncrementPersistentVariablePlaceholderConst

IncrementPersistentVariablePlaceholder: Placeholder = ...

Directive to increment a persistent counter variable by 1. Replaced with the new value of the counter.

Syntax: {{increment:x}}, where x is the name of the counter variable. If the variable does not exist, it will be created with a value of 1.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.InstalledApplicationsPlaceholder.html b/docs/variables/Placeholders.InstalledApplicationsPlaceholder.html index 9cc2b3e..13dbccc 100644 --- a/docs/variables/Placeholders.InstalledApplicationsPlaceholder.html +++ b/docs/variables/Placeholders.InstalledApplicationsPlaceholder.html @@ -1,3 +1,3 @@ -InstalledApplicationsPlaceholder | placeholders-toolkit - v0.1.2

Variable InstalledApplicationsPlaceholderConst

InstalledApplicationsPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of application names installed on the system.

+InstalledApplicationsPlaceholder | placeholders-toolkit - v0.1.3

Variable InstalledApplicationsPlaceholderConst

InstalledApplicationsPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of application names installed on the system.

Syntax: {{installedApps}} or {{apps}} or {{installedApplications}} or {{applications}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.JXAPlaceholder.html b/docs/variables/Placeholders.JXAPlaceholder.html index e2db3d6..ec56128 100644 --- a/docs/variables/Placeholders.JXAPlaceholder.html +++ b/docs/variables/Placeholders.JXAPlaceholder.html @@ -1,3 +1,3 @@ -JXAPlaceholder | placeholders-toolkit - v0.1.2
JXAPlaceholder: Placeholder = ...

Placeholder for output of a JavaScript for Automation script. If the script fails, this placeholder will be replaced with an empty string. No sanitization is done in the script input; the expectation is that users will only use this placeholder with trusted scripts.

+JXAPlaceholder | placeholders-toolkit - v0.1.3
JXAPlaceholder: Placeholder = ...

Placeholder for output of a JavaScript for Automation script. If the script fails, this placeholder will be replaced with an empty string. No sanitization is done in the script input; the expectation is that users will only use this placeholder with trusted scripts.

Syntax: {{jxa:...}}, where ... is the JavaScript for Automation script to run.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.JavaScriptPlaceholder.html b/docs/variables/Placeholders.JavaScriptPlaceholder.html index 80b3a1a..0577dd3 100644 --- a/docs/variables/Placeholders.JavaScriptPlaceholder.html +++ b/docs/variables/Placeholders.JavaScriptPlaceholder.html @@ -1,3 +1,3 @@ -JavaScriptPlaceholder | placeholders-toolkit - v0.1.2

Variable JavaScriptPlaceholderConst

JavaScriptPlaceholder: Placeholder = ...

Placeholder for output of a JavaScript script. If the script fails, this placeholder will be replaced with an empty string. The script is run in a sandboxed environment.

+JavaScriptPlaceholder | placeholders-toolkit - v0.1.3

Variable JavaScriptPlaceholderConst

JavaScriptPlaceholder: Placeholder = ...

Placeholder for output of a JavaScript script. If the script fails, this placeholder will be replaced with an empty string. The script is run in a sandboxed environment.

Syntax: {{js target="[browser]":...}}, where ... is the JavaScript script to run and [browser] is the name of the browser to run the script in. The target parameter is optional; if not provided, the script will be run in a Node.js environment.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.LastEmailPlaceholder.html b/docs/variables/Placeholders.LastEmailPlaceholder.html index 49dbffd..e74342d 100644 --- a/docs/variables/Placeholders.LastEmailPlaceholder.html +++ b/docs/variables/Placeholders.LastEmailPlaceholder.html @@ -1,3 +1,3 @@ -LastEmailPlaceholder | placeholders-toolkit - v0.1.2

Variable LastEmailPlaceholderConst

LastEmailPlaceholder: Placeholder = ...

Placeholder for the text of the most recently received email in Mail.app.

+LastEmailPlaceholder | placeholders-toolkit - v0.1.3

Variable LastEmailPlaceholderConst

LastEmailPlaceholder: Placeholder = ...

Placeholder for the text of the most recently received email in Mail.app.

Syntax: {{lastEmail}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.LastNotePlaceholder.html b/docs/variables/Placeholders.LastNotePlaceholder.html index 00c947f..e37b5cd 100644 --- a/docs/variables/Placeholders.LastNotePlaceholder.html +++ b/docs/variables/Placeholders.LastNotePlaceholder.html @@ -1,3 +1,3 @@ -LastNotePlaceholder | placeholders-toolkit - v0.1.2

Variable LastNotePlaceholderConst

LastNotePlaceholder: Placeholder = ...

Placeholder for the HTML text of the most recently edited note in Notes.app.

+LastNotePlaceholder | placeholders-toolkit - v0.1.3

Variable LastNotePlaceholderConst

LastNotePlaceholder: Placeholder = ...

Placeholder for the HTML text of the most recently edited note in Notes.app.

Syntax: {{lastNote}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.LocationPlaceholder.html b/docs/variables/Placeholders.LocationPlaceholder.html index d6f6932..2f6b871 100644 --- a/docs/variables/Placeholders.LocationPlaceholder.html +++ b/docs/variables/Placeholders.LocationPlaceholder.html @@ -1,4 +1,4 @@ -LocationPlaceholder | placeholders-toolkit - v0.1.2

Variable LocationPlaceholderConst

LocationPlaceholder: Placeholder = ...

Placeholder for the user's current location in the format "city, region, country".

+LocationPlaceholder | placeholders-toolkit - v0.1.3

Variable LocationPlaceholderConst

LocationPlaceholder: Placeholder = ...

Placeholder for the user's current location in the format "city, region, country".

Syntax: {{location}} or {{currentLocation}}

The location is determined by the user's IP address. In some case, such as when using IPv6, the location may be inaccurate or incomplete.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.MonthEventsPlaceholder.html b/docs/variables/Placeholders.MonthEventsPlaceholder.html index 53f9b80..7cfa1f5 100644 --- a/docs/variables/Placeholders.MonthEventsPlaceholder.html +++ b/docs/variables/Placeholders.MonthEventsPlaceholder.html @@ -1,3 +1,3 @@ -MonthEventsPlaceholder | placeholders-toolkit - v0.1.2

Variable MonthEventsPlaceholderConst

MonthEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 30 days.

+MonthEventsPlaceholder | placeholders-toolkit - v0.1.3

Variable MonthEventsPlaceholderConst

MonthEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 30 days.

Syntax: {{monthEvents}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.MonthRemindersPlaceholder.html b/docs/variables/Placeholders.MonthRemindersPlaceholder.html index 90f29f6..422f712 100644 --- a/docs/variables/Placeholders.MonthRemindersPlaceholder.html +++ b/docs/variables/Placeholders.MonthRemindersPlaceholder.html @@ -1,3 +1,3 @@ -MonthRemindersPlaceholder | placeholders-toolkit - v0.1.2

Variable MonthRemindersPlaceholderConst

MonthRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 30 days.

+MonthRemindersPlaceholder | placeholders-toolkit - v0.1.3

Variable MonthRemindersPlaceholderConst

MonthRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 30 days.

Syntax: {{monthReminders}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.MusicTracksPlaceholder.html b/docs/variables/Placeholders.MusicTracksPlaceholder.html index 6fb8c0a..2c2324e 100644 --- a/docs/variables/Placeholders.MusicTracksPlaceholder.html +++ b/docs/variables/Placeholders.MusicTracksPlaceholder.html @@ -1,3 +1,3 @@ -MusicTracksPlaceholder | placeholders-toolkit - v0.1.2

Variable MusicTracksPlaceholderConst

MusicTracksPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of track names in Music.app.

+MusicTracksPlaceholder | placeholders-toolkit - v0.1.3

Variable MusicTracksPlaceholderConst

MusicTracksPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of track names in Music.app.

Syntax: {{musicTracks}} or {{tracks}} or {{songs}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.NearbyLocationsPlaceholder.html b/docs/variables/Placeholders.NearbyLocationsPlaceholder.html index 9753e42..8145011 100644 --- a/docs/variables/Placeholders.NearbyLocationsPlaceholder.html +++ b/docs/variables/Placeholders.NearbyLocationsPlaceholder.html @@ -1,3 +1,3 @@ -NearbyLocationsPlaceholder | placeholders-toolkit - v0.1.2

Variable NearbyLocationsPlaceholderConst

NearbyLocationsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of nearby locations based on the given search query.

+NearbyLocationsPlaceholder | placeholders-toolkit - v0.1.3

Variable NearbyLocationsPlaceholderConst

NearbyLocationsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of nearby locations based on the given search query.

Syntax: {{nearbyLocations:<query>}}, where <query> is the search query.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.PDFFlowDirective.html b/docs/variables/Placeholders.PDFFlowDirective.html index a7ce725..8d13a11 100644 --- a/docs/variables/Placeholders.PDFFlowDirective.html +++ b/docs/variables/Placeholders.PDFFlowDirective.html @@ -1,4 +1,4 @@ -PDFFlowDirective | placeholders-toolkit - v0.1.2
PDFFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any PDF files are selected.

+PDFFlowDirective | placeholders-toolkit - v0.1.3
PDFFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any PDF files are selected.

Syntax: {{pdf:content if true}} or {{pdf:[content if true]:[content if false]}}

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.PasteDirective.html b/docs/variables/Placeholders.PasteDirective.html index 50dfefc..4820550 100644 --- a/docs/variables/Placeholders.PasteDirective.html +++ b/docs/variables/Placeholders.PasteDirective.html @@ -1,3 +1,3 @@ -PasteDirective | placeholders-toolkit - v0.1.2
PasteDirective: Placeholder = ...

Directive to paste the provided text in the frontmost application. The placeholder will always be replaced with an empty string.

+PasteDirective | placeholders-toolkit - v0.1.3
PasteDirective: Placeholder = ...

Directive to paste the provided text in the frontmost application. The placeholder will always be replaced with an empty string.

Syntax: {{paste:...}}, where ... is the text to paste.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ResetPersistentVariablePlaceholder.html b/docs/variables/Placeholders.ResetPersistentVariablePlaceholder.html index d861f20..95be629 100644 --- a/docs/variables/Placeholders.ResetPersistentVariablePlaceholder.html +++ b/docs/variables/Placeholders.ResetPersistentVariablePlaceholder.html @@ -1,3 +1,3 @@ -ResetPersistentVariablePlaceholder | placeholders-toolkit - v0.1.2

Variable ResetPersistentVariablePlaceholderConst

ResetPersistentVariablePlaceholder: Placeholder = ...

Directive to reset the value of a persistent variable to its initial value. If the variable does not exist, nothing will happen. The placeholder will always be replaced with an empty string.

+ResetPersistentVariablePlaceholder | placeholders-toolkit - v0.1.3

Variable ResetPersistentVariablePlaceholderConst

ResetPersistentVariablePlaceholder: Placeholder = ...

Directive to reset the value of a persistent variable to its initial value. If the variable does not exist, nothing will happen. The placeholder will always be replaced with an empty string.

Syntax: {{reset x}}, where x is the name of the variable to reset.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.RunningApplicationsPlaceholder.html b/docs/variables/Placeholders.RunningApplicationsPlaceholder.html index 2b03da8..7176af0 100644 --- a/docs/variables/Placeholders.RunningApplicationsPlaceholder.html +++ b/docs/variables/Placeholders.RunningApplicationsPlaceholder.html @@ -1,3 +1,3 @@ -RunningApplicationsPlaceholder | placeholders-toolkit - v0.1.2

Variable RunningApplicationsPlaceholderConst

RunningApplicationsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the names of all running applications that are visible to the user.

+RunningApplicationsPlaceholder | placeholders-toolkit - v0.1.3

Variable RunningApplicationsPlaceholderConst

RunningApplicationsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the names of all running applications that are visible to the user.

Syntax: {{runningApplications}} or {{runningApps}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SafariBookmarksPlaceholder.html b/docs/variables/Placeholders.SafariBookmarksPlaceholder.html index f50a3e7..2a25aa3 100644 --- a/docs/variables/Placeholders.SafariBookmarksPlaceholder.html +++ b/docs/variables/Placeholders.SafariBookmarksPlaceholder.html @@ -1,3 +1,3 @@ -SafariBookmarksPlaceholder | placeholders-toolkit - v0.1.2

Variable SafariBookmarksPlaceholderConst

SafariBookmarksPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of titles and URLs of all bookmarks in Safari, obtained via plist.

+SafariBookmarksPlaceholder | placeholders-toolkit - v0.1.3

Variable SafariBookmarksPlaceholderConst

SafariBookmarksPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of titles and URLs of all bookmarks in Safari, obtained via plist.

Syntax: {{safariBookmarks}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SafariTopSitesPlaceholder.html b/docs/variables/Placeholders.SafariTopSitesPlaceholder.html index c0991cf..fe85b0b 100644 --- a/docs/variables/Placeholders.SafariTopSitesPlaceholder.html +++ b/docs/variables/Placeholders.SafariTopSitesPlaceholder.html @@ -1,3 +1,3 @@ -SafariTopSitesPlaceholder | placeholders-toolkit - v0.1.2

Variable SafariTopSitesPlaceholderConst

SafariTopSitesPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of titles and URLs of the most frequently visited websites in Safari, obtained via plist.

+SafariTopSitesPlaceholder | placeholders-toolkit - v0.1.3

Variable SafariTopSitesPlaceholderConst

SafariTopSitesPlaceholder: Placeholder = ...

Placeholder for the comma-separated list of titles and URLs of the most frequently visited websites in Safari, obtained via plist.

Syntax: {{safariTopSites}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SayDirective.html b/docs/variables/Placeholders.SayDirective.html index 98d1e2c..7ff91b7 100644 --- a/docs/variables/Placeholders.SayDirective.html +++ b/docs/variables/Placeholders.SayDirective.html @@ -1,4 +1,4 @@ -SayDirective | placeholders-toolkit - v0.1.2
SayDirective: Placeholder = ...

Directive to speak the provided text. The placeholder will always be replaced with an empty string.

+SayDirective | placeholders-toolkit - v0.1.3
SayDirective: Placeholder = ...

Directive to speak the provided text. The placeholder will always be replaced with an empty string.

Syntax: {{say voice="[voice]" speed=[number] pitch=[number] volume=[number]:Message}}

All arguments are optional. If no voice, speed, pitch, or volume are provided, the system defaults will be used.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SelectFileDirective.html b/docs/variables/Placeholders.SelectFileDirective.html index fbb969c..e92b3ac 100644 --- a/docs/variables/Placeholders.SelectFileDirective.html +++ b/docs/variables/Placeholders.SelectFileDirective.html @@ -1,3 +1,3 @@ -SelectFileDirective | placeholders-toolkit - v0.1.2

Variable SelectFileDirectiveConst

SelectFileDirective: Placeholder = ...

Directive to select a file. The placeholder will always be replaced with an empty string.

+SelectFileDirective | placeholders-toolkit - v0.1.3

Variable SelectFileDirectiveConst

SelectFileDirective: Placeholder = ...

Directive to select a file. The placeholder will always be replaced with an empty string.

Syntax: {{selectFile:...}}, where ... is the POSIX path to the file to select.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SelectedFileContentsPlaceholder.html b/docs/variables/Placeholders.SelectedFileContentsPlaceholder.html new file mode 100644 index 0000000..e64a200 --- /dev/null +++ b/docs/variables/Placeholders.SelectedFileContentsPlaceholder.html @@ -0,0 +1,3 @@ +SelectedFileContentsPlaceholder | placeholders-toolkit - v0.1.3

Variable SelectedFileContentsPlaceholderConst

SelectedFileContentsPlaceholder: Placeholder = ...

Placeholder for the contents of the currently selected files in Finder as a newline-separated list. If no files are selected, this placeholder will not be replaced.

+

Syntax: {{selectedFileContents}} or {{selectedFilesContents}} or {{selectedFileContent}} or {{selectedFilesContent}} or {{selectedFileText}} or {{selectedFilesText}} or {{contents}}

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SelectedFilesPlaceholder.html b/docs/variables/Placeholders.SelectedFilesPlaceholder.html index b37d4f5..80c8340 100644 --- a/docs/variables/Placeholders.SelectedFilesPlaceholder.html +++ b/docs/variables/Placeholders.SelectedFilesPlaceholder.html @@ -1,3 +1,3 @@ -SelectedFilesPlaceholder | placeholders-toolkit - v0.1.2

Variable SelectedFilesPlaceholderConst

SelectedFilesPlaceholder: Placeholder = ...

Placeholder for the paths of the currently selected files in Finder as a comma-separated list. If no files are selected, this will be replaced with an empty string.

+SelectedFilesPlaceholder | placeholders-toolkit - v0.1.3

Variable SelectedFilesPlaceholderConst

SelectedFilesPlaceholder: Placeholder = ...

Placeholder for the paths of the currently selected files in Finder as a comma-separated list. If no files are selected, this will be replaced with an empty string.

Syntax: {{selectedFiles}} or {{selectedFile}} or {{files}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SelectedTextPlaceholder.html b/docs/variables/Placeholders.SelectedTextPlaceholder.html index a2e4d43..bc67e46 100644 --- a/docs/variables/Placeholders.SelectedTextPlaceholder.html +++ b/docs/variables/Placeholders.SelectedTextPlaceholder.html @@ -1,3 +1,3 @@ -SelectedTextPlaceholder | placeholders-toolkit - v0.1.2

Variable SelectedTextPlaceholderConst

SelectedTextPlaceholder: Placeholder = ...

Placeholder for the currently selected text. If no text is selected, this will be replaced with an empty string.

+SelectedTextPlaceholder | placeholders-toolkit - v0.1.3

Variable SelectedTextPlaceholderConst

SelectedTextPlaceholder: Placeholder = ...

Placeholder for the currently selected text. If no text is selected, this will be replaced with an empty string.

Syntax: {{selectedText}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SetPersistentVariablePlaceholder.html b/docs/variables/Placeholders.SetPersistentVariablePlaceholder.html index b76f3ba..eef5fa9 100644 --- a/docs/variables/Placeholders.SetPersistentVariablePlaceholder.html +++ b/docs/variables/Placeholders.SetPersistentVariablePlaceholder.html @@ -1,3 +1,3 @@ -SetPersistentVariablePlaceholder | placeholders-toolkit - v0.1.2

Variable SetPersistentVariablePlaceholderConst

SetPersistentVariablePlaceholder: Placeholder = ...

Directive to set the value of a persistent variable. If the variable does not exist, it will be created. The placeholder will always be replaced with an empty string.

+SetPersistentVariablePlaceholder | placeholders-toolkit - v0.1.3

Variable SetPersistentVariablePlaceholderConst

SetPersistentVariablePlaceholder: Placeholder = ...

Directive to set the value of a persistent variable. If the variable does not exist, it will be created. The placeholder will always be replaced with an empty string.

Syntax: {{set x:y}}, where x is the name of the variable to set and y is the value to set it to.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ShellScriptPlaceholder.html b/docs/variables/Placeholders.ShellScriptPlaceholder.html index 1b4762d..81f70e9 100644 --- a/docs/variables/Placeholders.ShellScriptPlaceholder.html +++ b/docs/variables/Placeholders.ShellScriptPlaceholder.html @@ -1,3 +1,3 @@ -ShellScriptPlaceholder | placeholders-toolkit - v0.1.2

Variable ShellScriptPlaceholderConst

ShellScriptPlaceholder: Placeholder = ...

Placeholder for output of a shell script. If the script fails, this placeholder will be replaced with an empty string. No sanitization is done on the script input; the expectation is that users will only use this placeholder with trusted scripts.

+ShellScriptPlaceholder | placeholders-toolkit - v0.1.3

Variable ShellScriptPlaceholderConst

ShellScriptPlaceholder: Placeholder = ...

Placeholder for output of a shell script. If the script fails, this placeholder will be replaced with an empty string. No sanitization is done on the script input; the expectation is that users will only use this placeholder with trusted scripts.

Syntax: {{shell [bin]:...}}, where ... is the shell script to run and [bin] is the path to the shell to run the script in. The bin parameter is optional; if not provided, the script will be run using /bin/zsh.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ShortcutPlaceholder.html b/docs/variables/Placeholders.ShortcutPlaceholder.html index fdb9579..36a5392 100644 --- a/docs/variables/Placeholders.ShortcutPlaceholder.html +++ b/docs/variables/Placeholders.ShortcutPlaceholder.html @@ -1,3 +1,3 @@ -ShortcutPlaceholder | placeholders-toolkit - v0.1.2

Variable ShortcutPlaceholderConst

ShortcutPlaceholder: Placeholder = ...

Directive/placeholder to execute a Siri Shortcut by name, optionally supplying input, and insert the result. If the result is null, the placeholder will be replaced with an empty string.

+ShortcutPlaceholder | placeholders-toolkit - v0.1.3

Variable ShortcutPlaceholderConst

ShortcutPlaceholder: Placeholder = ...

Directive/placeholder to execute a Siri Shortcut by name, optionally supplying input, and insert the result. If the result is null, the placeholder will be replaced with an empty string.

Syntax: {{shortcut:[name]:[input]}}, where [name] is the name of the shortcut to run and [input] is the input to supply to the shortcut. The input is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ShortcutsPlaceholder.html b/docs/variables/Placeholders.ShortcutsPlaceholder.html index 9c9804e..deb3d14 100644 --- a/docs/variables/Placeholders.ShortcutsPlaceholder.html +++ b/docs/variables/Placeholders.ShortcutsPlaceholder.html @@ -1,3 +1,3 @@ -ShortcutsPlaceholder | placeholders-toolkit - v0.1.2

Variable ShortcutsPlaceholderConst

ShortcutsPlaceholder: Placeholder = ...

Placeholder for the list of names of all Siri Shortcuts on the current machine. The list is comma-separated.

+ShortcutsPlaceholder | placeholders-toolkit - v0.1.3

Variable ShortcutsPlaceholderConst

ShortcutsPlaceholder: Placeholder = ...

Placeholder for the list of names of all Siri Shortcuts on the current machine. The list is comma-separated.

Syntax: {{shortcuts}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.SystemLanguagePlaceholder.html b/docs/variables/Placeholders.SystemLanguagePlaceholder.html index 4d8d869..03f4fcb 100644 --- a/docs/variables/Placeholders.SystemLanguagePlaceholder.html +++ b/docs/variables/Placeholders.SystemLanguagePlaceholder.html @@ -1,3 +1,3 @@ -SystemLanguagePlaceholder | placeholders-toolkit - v0.1.2

Variable SystemLanguagePlaceholderConst

SystemLanguagePlaceholder: Placeholder = ...

Placeholder for the default language for the current user. Barring any issues, this should always be replaced.

+SystemLanguagePlaceholder | placeholders-toolkit - v0.1.3

Variable SystemLanguagePlaceholderConst

SystemLanguagePlaceholder: Placeholder = ...

Placeholder for the default language for the current user. Barring any issues, this should always be replaced.

Syntax: {{systemLanguage}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TextFileDirectives.html b/docs/variables/Placeholders.TextFileDirectives.html index d136df3..f9beb81 100644 --- a/docs/variables/Placeholders.TextFileDirectives.html +++ b/docs/variables/Placeholders.TextFileDirectives.html @@ -1,4 +1,4 @@ -TextFileDirectives | placeholders-toolkit - v0.1.2
TextFileDirectives: Placeholder[] = ...

Flow control directives for each text file extension.

+TextFileDirectives | placeholders-toolkit - v0.1.3
TextFileDirectives: Placeholder[] = ...

Flow control directives for each text file extension.

Each text file directive follows the same syntax: {{ext:content if true}} or {{ext:[content if true]:[content if false]}}, where ext is the text file extension, e.g. txt, md, js, etc.

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TextFileFlowDirective.html b/docs/variables/Placeholders.TextFileFlowDirective.html index 219bca4..00e67ba 100644 --- a/docs/variables/Placeholders.TextFileFlowDirective.html +++ b/docs/variables/Placeholders.TextFileFlowDirective.html @@ -1,4 +1,4 @@ -TextFileFlowDirective | placeholders-toolkit - v0.1.2

Variable TextFileFlowDirectiveConst

TextFileFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any image files are selected.

+TextFileFlowDirective | placeholders-toolkit - v0.1.3

Variable TextFileFlowDirectiveConst

TextFileFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any image files are selected.

Syntax: {{textfiles:content if true}} or {{textfiles:[content if true]:[content if false]}}

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TimePlaceholder.html b/docs/variables/Placeholders.TimePlaceholder.html index a38eac8..bff5ff9 100644 --- a/docs/variables/Placeholders.TimePlaceholder.html +++ b/docs/variables/Placeholders.TimePlaceholder.html @@ -1,3 +1,3 @@ -TimePlaceholder | placeholders-toolkit - v0.1.2
TimePlaceholder: Placeholder = ...

Placeholder for the current time supporting an optional format argument. Defaults to "Hour:Minute:Second AM/PM". Barring any issues, this should always be replaced.

+TimePlaceholder | placeholders-toolkit - v0.1.3
TimePlaceholder: Placeholder = ...

Placeholder for the current time supporting an optional format argument. Defaults to "Hour:Minute:Second AM/PM". Barring any issues, this should always be replaced.

Syntax: {{time format="..."}} or {{currentTime format="..."}}, where ... specifies a valid Unicode time format string. The format argument is optional and defaults to "HH:mm:s a" (e.g. "12:00:00 PM").

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TimezonePlaceholder.html b/docs/variables/Placeholders.TimezonePlaceholder.html index 0b7d341..5ee54a0 100644 --- a/docs/variables/Placeholders.TimezonePlaceholder.html +++ b/docs/variables/Placeholders.TimezonePlaceholder.html @@ -1,3 +1,3 @@ -TimezonePlaceholder | placeholders-toolkit - v0.1.2

Variable TimezonePlaceholderConst

TimezonePlaceholder: Placeholder = ...

Placeholder for the long name of the current timezone. Barring any issues, this should always be replaced.

+TimezonePlaceholder | placeholders-toolkit - v0.1.3

Variable TimezonePlaceholderConst

TimezonePlaceholder: Placeholder = ...

Placeholder for the long name of the current timezone. Barring any issues, this should always be replaced.

Syntax: {{timezone}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.ToastDirective.html b/docs/variables/Placeholders.ToastDirective.html index c4d4cc6..db32b10 100644 --- a/docs/variables/Placeholders.ToastDirective.html +++ b/docs/variables/Placeholders.ToastDirective.html @@ -1,4 +1,4 @@ -ToastDirective | placeholders-toolkit - v0.1.2
ToastDirective: Placeholder = ...

Directive to display a toast or HUD with the provided text. The placeholder will always be replaced with an empty string. Whether a toast or HUD is displayed depends on the context (e.g. if the Raycast window is focused, a toast will be displayed; otherwise, a HUD will be displayed).

+ToastDirective | placeholders-toolkit - v0.1.3
ToastDirective: Placeholder = ...

Directive to display a toast or HUD with the provided text. The placeholder will always be replaced with an empty string. Whether a toast or HUD is displayed depends on the context (e.g. if the Raycast window is focused, a toast will be displayed; otherwise, a HUD will be displayed).

Syntax: {{toast style="[success/failure/fail]" title="...":Message}} or {{hud style="[success/failure/fail]" title="...":Message}}

The style and message are optional. If no style is provided, the style will be "success". If no message is provided, the message will be empty.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TodayEventsPlaceholder.html b/docs/variables/Placeholders.TodayEventsPlaceholder.html index 9146993..f9c8b91 100644 --- a/docs/variables/Placeholders.TodayEventsPlaceholder.html +++ b/docs/variables/Placeholders.TodayEventsPlaceholder.html @@ -1,3 +1,3 @@ -TodayEventsPlaceholder | placeholders-toolkit - v0.1.2

Variable TodayEventsPlaceholderConst

TodayEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 24 hours.

+TodayEventsPlaceholder | placeholders-toolkit - v0.1.3

Variable TodayEventsPlaceholderConst

TodayEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 24 hours.

Syntax: {{todayEvents}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TodayRemindersPlaceholder.html b/docs/variables/Placeholders.TodayRemindersPlaceholder.html index 652eeca..448cf2e 100644 --- a/docs/variables/Placeholders.TodayRemindersPlaceholder.html +++ b/docs/variables/Placeholders.TodayRemindersPlaceholder.html @@ -1,3 +1,3 @@ -TodayRemindersPlaceholder | placeholders-toolkit - v0.1.2

Variable TodayRemindersPlaceholderConst

TodayRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 24 hours.

+TodayRemindersPlaceholder | placeholders-toolkit - v0.1.3

Variable TodayRemindersPlaceholderConst

TodayRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 24 hours.

Syntax: {{todayReminders}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TodayWeatherPlaceholder.html b/docs/variables/Placeholders.TodayWeatherPlaceholder.html index 125a078..b4bb7c3 100644 --- a/docs/variables/Placeholders.TodayWeatherPlaceholder.html +++ b/docs/variables/Placeholders.TodayWeatherPlaceholder.html @@ -1,3 +1,3 @@ -TodayWeatherPlaceholder | placeholders-toolkit - v0.1.2

Variable TodayWeatherPlaceholderConst

TodayWeatherPlaceholder: Placeholder = ...

Placeholder for 24-hour weather forecast data at the user's current location, in JSON format.

+TodayWeatherPlaceholder | placeholders-toolkit - v0.1.3

Variable TodayWeatherPlaceholderConst

TodayWeatherPlaceholder: Placeholder = ...

Placeholder for 24-hour weather forecast data at the user's current location, in JSON format.

Syntax: {{todayWeather}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.TypeDirective.html b/docs/variables/Placeholders.TypeDirective.html index 5f24104..8dc9e92 100644 --- a/docs/variables/Placeholders.TypeDirective.html +++ b/docs/variables/Placeholders.TypeDirective.html @@ -1,3 +1,3 @@ -TypeDirective | placeholders-toolkit - v0.1.2
TypeDirective: Placeholder = ...

Directive to type the provided text in the frontmost application. The placeholder will always be replaced with an empty string.

+TypeDirective | placeholders-toolkit - v0.1.3
TypeDirective: Placeholder = ...

Directive to type the provided text in the frontmost application. The placeholder will always be replaced with an empty string.

Syntax: {{type:...}}, where ... is the text to type.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.URLPlaceholder.html b/docs/variables/Placeholders.URLPlaceholder.html index 94915bd..87fd1d4 100644 --- a/docs/variables/Placeholders.URLPlaceholder.html +++ b/docs/variables/Placeholders.URLPlaceholder.html @@ -1,3 +1,3 @@ -URLPlaceholder | placeholders-toolkit - v0.1.2
URLPlaceholder: Placeholder = ...

Placeholder for the visible text content at a given URL.

+URLPlaceholder | placeholders-toolkit - v0.1.3
URLPlaceholder: Placeholder = ...

Placeholder for the visible text content at a given URL.

Syntax: {{url:[url]}}, where [url] is the URL to get the text content of.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.UUIDPlaceholder.html b/docs/variables/Placeholders.UUIDPlaceholder.html index 7329be8..b44fd29 100644 --- a/docs/variables/Placeholders.UUIDPlaceholder.html +++ b/docs/variables/Placeholders.UUIDPlaceholder.html @@ -1,3 +1,3 @@ -UUIDPlaceholder | placeholders-toolkit - v0.1.2
UUIDPlaceholder: Placeholder = ...

Placeholder for a unique UUID. The UUID will be unique for each use of the placeholder (but there is no guarantee that it will be unique across different instances of the extension, e.g. on different computers).

+UUIDPlaceholder | placeholders-toolkit - v0.1.3
UUIDPlaceholder: Placeholder = ...

Placeholder for a unique UUID. The UUID will be unique for each use of the placeholder (but there is no guarantee that it will be unique across different instances of the extension, e.g. on different computers).

Syntax: {{uuid}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.UsedUUIDsPlaceholder.html b/docs/variables/Placeholders.UsedUUIDsPlaceholder.html index 2661880..4dbcd1f 100644 --- a/docs/variables/Placeholders.UsedUUIDsPlaceholder.html +++ b/docs/variables/Placeholders.UsedUUIDsPlaceholder.html @@ -1,3 +1,3 @@ -UsedUUIDsPlaceholder | placeholders-toolkit - v0.1.2

Variable UsedUUIDsPlaceholderConst

UsedUUIDsPlaceholder: Placeholder = ...

Placeholder for a list of all previously used UUIDs since PromptLab's LocalStorage was last reset.

+UsedUUIDsPlaceholder | placeholders-toolkit - v0.1.3

Variable UsedUUIDsPlaceholderConst

UsedUUIDsPlaceholder: Placeholder = ...

Placeholder for a list of all previously used UUIDs since PromptLab's LocalStorage was last reset.

Syntax: {{usedUUIDs}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.UserPlaceholder.html b/docs/variables/Placeholders.UserPlaceholder.html index 5c20ba4..6bc61b6 100644 --- a/docs/variables/Placeholders.UserPlaceholder.html +++ b/docs/variables/Placeholders.UserPlaceholder.html @@ -1,3 +1,3 @@ -UserPlaceholder | placeholders-toolkit - v0.1.2
UserPlaceholder: Placeholder = ...

Placeholder for the username of the currently logged-in user. Barring any issues, this should always be replaced.

+UserPlaceholder | placeholders-toolkit - v0.1.3
UserPlaceholder: Placeholder = ...

Placeholder for the username of the currently logged-in user. Barring any issues, this should always be replaced.

Syntax: {{user}} or {{username}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.VarsPlaceholder.html b/docs/variables/Placeholders.VarsPlaceholder.html index e314424..381d768 100644 --- a/docs/variables/Placeholders.VarsPlaceholder.html +++ b/docs/variables/Placeholders.VarsPlaceholder.html @@ -1,3 +1,3 @@ -VarsPlaceholder | placeholders-toolkit - v0.1.2
VarsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of all persistent variables. If no persistent variables have been set, this placeholder will be replaced with an empty string.

+VarsPlaceholder | placeholders-toolkit - v0.1.3
VarsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of all persistent variables. If no persistent variables have been set, this placeholder will be replaced with an empty string.

Syntax: {{vars}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.VideoDirectives.html b/docs/variables/Placeholders.VideoDirectives.html index 25a3ae0..7ae6e7e 100644 --- a/docs/variables/Placeholders.VideoDirectives.html +++ b/docs/variables/Placeholders.VideoDirectives.html @@ -1,4 +1,4 @@ -VideoDirectives | placeholders-toolkit - v0.1.2
VideoDirectives: Placeholder[] = ...

Flow control directives for each video file extension.

+VideoDirectives | placeholders-toolkit - v0.1.3
VideoDirectives: Placeholder[] = ...

Flow control directives for each video file extension.

Each video directive follows the same syntax: {{ext:content if true}} or {{ext:[content if true]:[content if false]}}, where ext is the video file extension, e.g. mp4, mov, avi, etc.

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.VideoFlowDirective.html b/docs/variables/Placeholders.VideoFlowDirective.html index c6d00cb..540de1c 100644 --- a/docs/variables/Placeholders.VideoFlowDirective.html +++ b/docs/variables/Placeholders.VideoFlowDirective.html @@ -1,4 +1,4 @@ -VideoFlowDirective | placeholders-toolkit - v0.1.2
VideoFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any video files are selected.

+VideoFlowDirective | placeholders-toolkit - v0.1.3
VideoFlowDirective: Placeholder = ...

Directive for directions that will only be included in the prompt if any video files are selected.

Syntax: {{videos:content if true}} or {{videos:[content if true]:[content if false]}}

The content if false is optional.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.WeekEventsPlaceholder.html b/docs/variables/Placeholders.WeekEventsPlaceholder.html index 55d89ca..8bfa5b0 100644 --- a/docs/variables/Placeholders.WeekEventsPlaceholder.html +++ b/docs/variables/Placeholders.WeekEventsPlaceholder.html @@ -1,3 +1,3 @@ -WeekEventsPlaceholder | placeholders-toolkit - v0.1.2

Variable WeekEventsPlaceholderConst

WeekEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 7 days.

+WeekEventsPlaceholder | placeholders-toolkit - v0.1.3

Variable WeekEventsPlaceholderConst

WeekEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 7 days.

Syntax: {{weekEvents}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.WeekRemindersPlaceholder.html b/docs/variables/Placeholders.WeekRemindersPlaceholder.html index 694ef8d..d4ef08b 100644 --- a/docs/variables/Placeholders.WeekRemindersPlaceholder.html +++ b/docs/variables/Placeholders.WeekRemindersPlaceholder.html @@ -1,3 +1,3 @@ -WeekRemindersPlaceholder | placeholders-toolkit - v0.1.2

Variable WeekRemindersPlaceholderConst

WeekRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 7 days.

+WeekRemindersPlaceholder | placeholders-toolkit - v0.1.3

Variable WeekRemindersPlaceholderConst

WeekRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 7 days.

Syntax: {{weekReminders}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.WeekWeatherPlaceholder.html b/docs/variables/Placeholders.WeekWeatherPlaceholder.html index 3ca7b9f..3cc1d46 100644 --- a/docs/variables/Placeholders.WeekWeatherPlaceholder.html +++ b/docs/variables/Placeholders.WeekWeatherPlaceholder.html @@ -1,3 +1,3 @@ -WeekWeatherPlaceholder | placeholders-toolkit - v0.1.2

Variable WeekWeatherPlaceholderConst

WeekWeatherPlaceholder: Placeholder = ...

Placeholder for 7-day weather forecast data at the user's current location, in JSON format.

+WeekWeatherPlaceholder | placeholders-toolkit - v0.1.3

Variable WeekWeatherPlaceholderConst

WeekWeatherPlaceholder: Placeholder = ...

Placeholder for 7-day weather forecast data at the user's current location, in JSON format.

Syntax: {{weekWeather}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.WriteFileDirective.html b/docs/variables/Placeholders.WriteFileDirective.html index aba5de1..b20dffd 100644 --- a/docs/variables/Placeholders.WriteFileDirective.html +++ b/docs/variables/Placeholders.WriteFileDirective.html @@ -1,4 +1,4 @@ -WriteFileDirective | placeholders-toolkit - v0.1.2
WriteFileDirective: Placeholder = ...

Directive to write the provided text to a file. The placeholder will always be replaced with an empty string.

+WriteFileDirective | placeholders-toolkit - v0.1.3
WriteFileDirective: Placeholder = ...

Directive to write the provided text to a file. The placeholder will always be replaced with an empty string.

Syntax: {{write to="[path]" append=(true|false) end="[token]" :...}}, where ... is the text to write, [path] is the path to the file to write to, and [token] is a token to append to the end of the file (defaults to \n\n). If append is true, the text will be appended to the end of the file instead of overwriting it.

The append and end settings are optional. If no end token is provided, the default token is \n\n. The default append setting is false. You must provide a path and text.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.YearEventsPlaceholder.html b/docs/variables/Placeholders.YearEventsPlaceholder.html index d8c029f..3bf3ca9 100644 --- a/docs/variables/Placeholders.YearEventsPlaceholder.html +++ b/docs/variables/Placeholders.YearEventsPlaceholder.html @@ -1,3 +1,3 @@ -YearEventsPlaceholder | placeholders-toolkit - v0.1.2

Variable YearEventsPlaceholderConst

YearEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 365 days.

+YearEventsPlaceholder | placeholders-toolkit - v0.1.3

Variable YearEventsPlaceholderConst

YearEventsPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name, start time, and end time of all calendar events that are scheduled over the next 365 days.

Syntax: {{yearEvents}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.YearRemindersPlaceholder.html b/docs/variables/Placeholders.YearRemindersPlaceholder.html index 30715c5..234383d 100644 --- a/docs/variables/Placeholders.YearRemindersPlaceholder.html +++ b/docs/variables/Placeholders.YearRemindersPlaceholder.html @@ -1,3 +1,3 @@ -YearRemindersPlaceholder | placeholders-toolkit - v0.1.2

Variable YearRemindersPlaceholderConst

YearRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 365 days.

+YearRemindersPlaceholder | placeholders-toolkit - v0.1.3

Variable YearRemindersPlaceholderConst

YearRemindersPlaceholder: Placeholder = ...

Placeholder for a comma-separated list of the name and due date/time of all reminders that are scheduled over the next 365 days.

Syntax: {{yearReminders}}

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Placeholders.YouTubeTranscriptPlaceholder.html b/docs/variables/Placeholders.YouTubeTranscriptPlaceholder.html index 4f56d14..f3421d5 100644 --- a/docs/variables/Placeholders.YouTubeTranscriptPlaceholder.html +++ b/docs/variables/Placeholders.YouTubeTranscriptPlaceholder.html @@ -1,3 +1,3 @@ -YouTubeTranscriptPlaceholder | placeholders-toolkit - v0.1.2

Variable YouTubeTranscriptPlaceholderConst

YouTubeTranscriptPlaceholder: Placeholder = ...

Replaces YouTube placeholders with the transcript of the corresponding YouTube video.

+YouTubeTranscriptPlaceholder | placeholders-toolkit - v0.1.3

Variable YouTubeTranscriptPlaceholderConst

YouTubeTranscriptPlaceholder: Placeholder = ...

Replaces YouTube placeholders with the transcript of the corresponding YouTube video.

Syntax: {{youtube:[id or URL]}}, where [id or URL] is the ID or URL of the YouTube video.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/utils.SupportedBrowsers.html b/docs/variables/utils.SupportedBrowsers.html index e21dd16..3046b9b 100644 --- a/docs/variables/utils.SupportedBrowsers.html +++ b/docs/variables/utils.SupportedBrowsers.html @@ -1,2 +1,2 @@ -SupportedBrowsers | placeholders-toolkit - v0.1.2

Variable SupportedBrowsersConst

SupportedBrowsers: Browser[] = ...

The browsers from which the current URL can be obtained.

-

Generated using TypeDoc

\ No newline at end of file +SupportedBrowsers | placeholders-toolkit - v0.1.3

Variable SupportedBrowsersConst

SupportedBrowsers: Browser[] = ...

The browsers from which the current URL can be obtained.

+

Generated using TypeDoc

\ No newline at end of file diff --git a/lib/directives/selectFile.ts b/lib/directives/selectFile.ts index 5b917e8..ddc26e9 100644 --- a/lib/directives/selectFile.ts +++ b/lib/directives/selectFile.ts @@ -10,7 +10,7 @@ const SelectFileDirective: Placeholder = { name: "selectFile", regex: /{{(selectFile)(:[\s\S]*?)?}}/g, apply: async (str: string) => { - const file = str.match(/(?<=(selectFiles:))[\s\S]*?(?=}})/)?.[0]; + const file = str.match(/(?<=(selectFile:))[\s\S]*?(?=}})/)?.[0]; if (!file) return { result: "" }; await addFileToSelection(file); return { result: "" }; diff --git a/lib/directives/write.ts b/lib/directives/write.ts index 9a5b7cc..30fca19 100644 --- a/lib/directives/write.ts +++ b/lib/directives/write.ts @@ -3,7 +3,6 @@ import { Placeholder, PlaceholderCategory, PlaceholderType } from "../types"; import * as fs from "fs"; import os from "os"; import path from "path"; -import { AlertDirective } from "../placeholders"; /** * Directive to write the provided text to a file. The placeholder will always be replaced with an empty string. diff --git a/lib/info-placeholders/clipboardText.ts b/lib/info-placeholders/clipboardText.ts index 380a60c..3a92b15 100644 --- a/lib/info-placeholders/clipboardText.ts +++ b/lib/info-placeholders/clipboardText.ts @@ -2,32 +2,68 @@ import { Clipboard } from "@raycast/api"; import { Placeholder, PlaceholderCategory, PlaceholderType } from "../types"; import { RequireValue } from "../rules"; +enum EntriesSpecifierType { + Range = "range", + List = "list", +} + /** * Placeholder for the text currently stored in the clipboard. If the clipboard is empty, this will be replaced with an empty string. Most clipboard content supplies a string format, such as file names when copying files in Finder. * - * Syntax: `{{clipboardText}}` + * If the `offsets` parameter is provided, the placeholder will be replaced with a list of one or more previous clipboard text entries separated by newlines. The `offsets` parameter can be a list of numbers or a range of numbers, e.g. `1, 2, 3`, `1-3`, and `1..3` are all treated equally. If the `offsets` parameter is not provided, the placeholder will be replaced with the text currently stored in the clipboard. To include the current clipboard text in addition to previous entries, begin the list with `0`. + * + * Syntax: `{{clipboardText}}` or `{{clipboardText offsets=[1, 2, 3]}}` or `{{clipboardText offsets=[1..3]}}` */ const ClipboardTextPlaceholder: Placeholder = { name: "clipboardText", - regex: /{{(clipboardText|clipboard)}}/g, - apply: async (_, context?: { [key: string]: unknown }) => { - if (context?.["clipboardText"]?.toString().length) { - return { - result: context["clipboardText"] as string, - clipboardText: context["clipboardText"], - }; + regex: + /{{(clipboardText|clipboard)( offsets=((([0-9])((-|\.\.)([0-9]*)|(, ?[0-9]+)*))|\[(([0-9])((-|\.\.)([0-9]*)|(, ?[0-9]+)*))\]))?}}/g, + apply: async (str: string) => { + const matches = str.match( + /{{(clipboardText|clipboard)( offsets=((([0-9])((-|\.\.)([0-9]*)|(, ?[0-9]+)*))|\[(([0-9])((-|\.\.)([0-9]*)|(, ?[0-9]+)*))\]))?}}/ + ); + if (!matches) { + return { result: "" }; + } + + const entries = matches[3]; + const offsets = []; + + if (entries) { + const specifierType = entries.includes("-") || entries.includes("..") + ? EntriesSpecifierType.Range + : EntriesSpecifierType.List; + if (specifierType === EntriesSpecifierType.Range) { + const range = entries.replaceAll(/(\[|\])/g, "").split(/(-|\.\.)/) + const start = parseInt(range[0]); + const end = parseInt(range[2]); + for (let i = start; i <= end; i++) { + offsets.push(i); + } + } else { + const list = entries.replaceAll(/(\[|\])/g, "").split(","); + for (const entry of list) { + offsets.push(parseInt(entry.trim())); + } + } + } + + if (offsets.length === 0) { + offsets.push(0); } try { - const text = (await Clipboard.readText()) || ""; - return { result: text, clipboardText: text }; + let text = ""; + for (const offset of offsets) { + text += `\n${(await Clipboard.readText({ offset })) || ""}`; + } + return { result: text.trim() }; } catch (e) { - return { result: "", clipboardText: "" }; + return { result: "" }; } }, rules: [RequireValue(Clipboard.readText)], - result_keys: ["clipboardText"], - constant: true, + constant: false, fn: async () => (await ClipboardTextPlaceholder.apply("{{clipboardText}}")).result, example: "Summarize this: {{clipboardText}}", diff --git a/lib/info-placeholders/currentURL.ts b/lib/info-placeholders/currentURL.ts index 1322b32..ebda3b7 100644 --- a/lib/info-placeholders/currentURL.ts +++ b/lib/info-placeholders/currentURL.ts @@ -1,6 +1,5 @@ -import { getFrontmostApplication } from "@raycast/api"; import { Placeholder, PlaceholderCategory, PlaceholderType } from "../types"; -import { SupportedBrowsers, getActiveBrowser } from "../utils"; +import { getActiveBrowser } from "../utils"; import { RequireActiveBrowser } from "../rules"; /** diff --git a/lib/load.ts b/lib/load.ts index a91b9f0..6695ffd 100644 --- a/lib/load.ts +++ b/lib/load.ts @@ -14,9 +14,9 @@ import { const validatePlaceholderJSON = (jsonObject: JSONObject): [boolean, string] => { if (typeof jsonObject !== "object") return [false, "Placeholder is not an object."]; - if (!jsonObject.hasOwnProperty("name")) + if ("name" in jsonObject === false) return [false, "Placeholder is missing name field."]; - if (!jsonObject.hasOwnProperty("value")) + if ("value" in jsonObject === false) return [false, "Placeholder is missing value field."]; if (typeof jsonObject.name !== "string") @@ -24,40 +24,28 @@ const validatePlaceholderJSON = (jsonObject: JSONObject): [boolean, string] => { if (typeof jsonObject.value !== "string") return [false, "Placeholder value is not a string."]; - if ( - jsonObject.hasOwnProperty("regex") && - typeof jsonObject.regex !== "string" - ) + if ("regex" in jsonObject && typeof jsonObject.regex !== "string") return [false, "Placeholder regex is not a string."]; - if ( - jsonObject.hasOwnProperty("description") && - typeof jsonObject.description !== "string" - ) + if ("description" in jsonObject && typeof jsonObject.description !== "string") return [false, "Placeholder description is not a string."]; - if ( - jsonObject.hasOwnProperty("example") && - typeof jsonObject.example !== "string" - ) + if ("example" in jsonObject && typeof jsonObject.example !== "string") return [false, "Placeholder example is not a string."]; if ( - jsonObject.hasOwnProperty("hintRepresentation") && + "hintRepresentation" in jsonObject && typeof jsonObject.hintRepresentation !== "string" ) return [false, "Placeholder hintRepresentation is not a string."]; if ( - jsonObject.hasOwnProperty("fullRepresentation") && + "fullRepresentation" in jsonObject && typeof jsonObject.fullRepresentation !== "string" ) return [false, "Placeholder fullRepresentation is not a string."]; - if (jsonObject.hasOwnProperty("type") && typeof jsonObject.type !== "number") + if ("type" in jsonObject && typeof jsonObject.type !== "number") return [false, "Placeholder type is not a number."]; - if ( - jsonObject.hasOwnProperty("categories") && - !Array.isArray(jsonObject.categories) - ) + if ("categories" in jsonObject && !Array.isArray(jsonObject.categories)) return [false, "Placeholder categories is not an array."]; if ( - jsonObject.hasOwnProperty("categories") && + "categories" in jsonObject && (jsonObject.categories as unknown[]).some( (category) => typeof category !== "number" ) @@ -89,7 +77,7 @@ export const loadPlaceholderFromJSONString = ( newPlaceholderData.regex || `{{${newPlaceholderData.name}}}` ), rules: [], - apply: async (str: string, context?: { [key: string]: unknown }) => { + apply: async (str: string) => { const match = str.match(new RegExp(`${newPlaceholderData.regex}`)); let value = newPlaceholderData.value; (match || []).forEach((m, index) => { @@ -106,7 +94,7 @@ export const loadPlaceholderFromJSONString = ( }, result_keys: [newPlaceholderData.name], constant: true, - fn: async (content: string) => + fn: async () => (await newPlaceholder.apply(`{{${newPlaceholderData.name}}}`)).result, description: newPlaceholderData.description || "", example: newPlaceholderData.example || "", @@ -161,7 +149,7 @@ export const loadPlaceholdersFromJSONString = ( name: placeholder.name, regex: new RegExp(`${key}`), rules: [], - apply: async (str: string, context?: { [key: string]: unknown }) => { + apply: async (str: string) => { const match = str.match(new RegExp(`${key}`)); let value = placeholder.value; (match || []).forEach((m, index) => { @@ -178,8 +166,7 @@ export const loadPlaceholdersFromJSONString = ( }, result_keys: [placeholder.name], constant: true, - fn: async (content: string) => - (await newPlaceholder.apply(`{{${key}}}`)).result, + fn: async () => (await newPlaceholder.apply(`{{${key}}}`)).result, description: placeholder.description, example: placeholder.example, hintRepresentation: placeholder.hintRepresentation, diff --git a/lib/match.ts b/lib/match.ts index 10eae25..805a147 100644 --- a/lib/match.ts +++ b/lib/match.ts @@ -8,19 +8,19 @@ export const InnerText = (options?: { }) => { const global = options?.global ?? true; if (options?.braceType == undefined || options?.braceType === "curly") - return new RegExp(`(([^{]|{(?!{)|{{[\s\S]*?}})*?)`, global ? "g" : ""); + return new RegExp(`(([^{]|{(?!{)|{{[\\s\\S]*?}})*?)`, global ? "g" : ""); else if (options?.braceType == "square") return new RegExp( - `(([^\[]|\[(?!\[)|\[\[\s\S]*?\]\])*?)`, + `(([^\\[]|\\[(?!\\[)|\\[\\[\\s\\S]*?\\]\\])*?)`, global ? "g" : "" ); else if (options?.braceType == "round") return new RegExp( - `(([^(]|\((?!\()|\(\([\s\S]*?\)\))*?)`, + `(([^(]|\\((?!\\()|\\(\\([\\s\\S]*?\\)\\))*?)`, global ? "g" : "" ); else if (options?.braceType == "angle") - return new RegExp(`(([^<]|<(?!<)|<<[\s\S]*?>>)*?)`, global ? "g" : ""); + return new RegExp(`(([^<]|<(?!<)|<<[\\s\\S]*?>>)*?)`, global ? "g" : ""); else throw new Error(`Unknown brace type ${options.braceType}`); }; @@ -161,16 +161,16 @@ export const Braced = ( ); else if (options?.braceType == "square") return new RegExp( - `\[\[(${ + `\\[\\[(${ innerMatch instanceof RegExp ? innerMatch.source : innerMatch - })\]\]`, + })\\]\\]`, global ? "g" : "" ); else if (options?.braceType == "round") return new RegExp( - `\(\((${ + `\\(\\((${ innerMatch instanceof RegExp ? innerMatch.source : innerMatch - })\)\)`, + })\\)\\)`, global ? "g" : "" ); else if (options?.braceType == "angle") @@ -223,20 +223,20 @@ export const Container = ( ); else if (options?.braceType == "square") return new RegExp( - `\[\[${name}(\\s*?${parameters + `\\[\\[${name}(\\s*?${parameters .map((p) => (p instanceof RegExp ? p.source : p)) .join("\\s*?")}):(${ valueType instanceof RegExp ? valueType.source : valueType - })\]\]`, + })\\]\\]`, global ? "g" : "" ); else if (options?.braceType == "round") return new RegExp( - `\(\(${name}(\\s*?${parameters + `\\(\\(${name}(\\s*?${parameters .map((p) => (p instanceof RegExp ? p.source : p)) .join("\\s*?")}):(${ valueType instanceof RegExp ? valueType.source : valueType - })\)\)`, + })\\)\\)`, global ? "g" : "" ); else if (options?.braceType == "angle") @@ -267,7 +267,7 @@ export const Container = ( */ export const EmailAddress = (global = true) => new RegExp( - /(?=[a-z0-9@.!#$%&'*+\/=?^_`{|}~-]{6,254})(?=[a-z0-9.!#$%&'*+\/=?^_`{|}~-]{1,64}@)[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:(?=[a-z0-9-]{1,63}\.)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?=[a-z0-9-]{1,63})[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/, + /(?=[a-z0-9@.!#$%&'*+\\/=?^_`{|}~-]{6,254})(?=[a-z0-9.!#$%&'*+\\/=?^_`{|}~-]{1,64}@)[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:(?=[a-z0-9-]{1,63}\.)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?=[a-z0-9-]{1,63})[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/, global ? "g" : "" ); @@ -288,7 +288,7 @@ export const EmailAddress = (global = true) => */ export const URI = (global = true) => new RegExp( - /(?:(?:([a-zA-Z0-9]+):)\/?\/?)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9][a-z0-9_-]{0,62})?[a-z0-9]\.)+(?:[a-z]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?/, + /(?:(?:([a-zA-Z0-9]+):)\/?\/?)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9][a-z0-9_-]{0,62})?[a-z0-9]\.)+(?:[a-z]{2,}\.?))(?::\d{2,5})?(?:[\\/?#]\S*)?/, global ? "g" : "" ); @@ -309,6 +309,6 @@ export const URI = (global = true) => */ export const HTTPURL = (global = true) => new RegExp( - /(?:(?:(?:https?):)\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9][a-z0-9_-]{0,62})?[a-z0-9]\.)+(?:[a-z]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?/, + /(?:(?:(?:https?):)\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9][a-z0-9_-]{0,62})?[a-z0-9]\.)+(?:[a-z]{2,}\.?))(?::\d{2,5})?(?:[\\/?#]\S*)?/, global ? "g" : "" ); diff --git a/lib/new.ts b/lib/new.ts index b0d75b6..3f73c7b 100644 --- a/lib/new.ts +++ b/lib/new.ts @@ -9,11 +9,11 @@ export const dummyPlaceholder = (): Placeholder => { name: "New Placeholder", regex: /{{newPlaceholder}}/g, rules: [], - apply: async (str: string, context?: { [key: string]: unknown }) => ({ + apply: async () => ({ result: "", }), constant: true, - fn: async (content: string) => + fn: async () => (await dummyPlaceholder().apply("{{newPlaceholder}}")).result, description: "A dummy placeholder.", example: "This is an example of a dummy placeholder: {{newPlaceholder}}", @@ -115,18 +115,12 @@ export const newPlaceholder = ( if (options?.replace_with != undefined) { if (options.constant) { - options.apply_fn = async ( - str: string, - context?: { [key: string]: unknown } - ) => ({ + options.apply_fn = async () => ({ result: options.replace_with || "", [name]: options.replace_with || "", }); } else { - options.apply_fn = async ( - str: string, - context?: { [key: string]: unknown } - ) => ({ + options.apply_fn = async () => ({ result: options.replace_with || "", [name]: options.replace_with || "", }); @@ -139,13 +133,12 @@ export const newPlaceholder = ( rules: options?.rules || [], apply: options?.apply_fn || - (async (str: string, context?: { [key: string]: unknown }) => ({ + (async () => ({ result: "", })), result_keys: [name], constant: options?.constant || false, - fn: async (content: string) => - (await newPlaceholder.apply(`{{${name}}}`)).result, + fn: async () => (await newPlaceholder.apply(`{{${name}}}`)).result, description: options?.description || "", example: options?.example || "", hintRepresentation: options?.hintRepresentation || `{{${name}}}`, diff --git a/lib/placeholders.ts b/lib/placeholders.ts index 33e53ce..ed06b31 100644 --- a/lib/placeholders.ts +++ b/lib/placeholders.ts @@ -1,5 +1,3 @@ -import * as vm from "vm"; - import TimezonePlaceholder from "./info-placeholders/timezone"; import LocationPlaceholder from "./info-placeholders/location"; import TodayWeatherPlaceholder from "./info-placeholders/todayWeather"; diff --git a/lib/rules.ts b/lib/rules.ts index 5a9345f..8ebbb5a 100644 --- a/lib/rules.ts +++ b/lib/rules.ts @@ -24,10 +24,10 @@ export const RequireValue = ( str: string, context?: { [key: string]: unknown } ) => Promise) => { - return async (_str, _context) => { + return async () => { try { if (value === undefined || value === null) return false; - let val = await resolveValue(value); + const val = await resolveValue(value); if (Array.isArray(val)) return val.length > 0 && val.every((v) => !!v); return val !== undefined && val !== null && val !== ""; } catch (e) { @@ -51,9 +51,9 @@ export const RequireEquals = ( str: string, context?: { [key: string]: unknown } ) => Promise) => { - return async (_str, _context) => { + return async () => { try { - let val = await resolveValue(value); + const val = await resolveValue(value); return val === target; } catch (e) { return false; @@ -76,9 +76,9 @@ export const RequireNotEquals = ( str: string, context?: { [key: string]: unknown } ) => Promise) => { - return async (_str, _context) => { + return async () => { try { - let val = await resolveValue(value); + const val = await resolveValue(value); return val !== target; } catch (e) { return false; @@ -101,9 +101,9 @@ export const RequireContains = ( str: string, context?: { [key: string]: unknown } ) => Promise) => { - return async (_str, _context) => { + return async () => { try { - let val = await resolveValue(value); + const val = await resolveValue(value); if (!Array.isArray(val)) return false; return val.some((v) => v === target); } catch (e) { @@ -127,10 +127,10 @@ export const RequireContainedIn = ( str: string, context?: { [key: string]: unknown } ) => Promise) => { - return async (_str, _context) => { + return async () => { try { - let val = await resolveValue(value); - let tg = await resolveValue(target); + const val = await resolveValue(value); + const tg = await resolveValue(target); if (!Array.isArray(tg)) return false; return tg.some((t) => t === val); } catch (e) { @@ -147,7 +147,7 @@ export const RequireActiveBrowser = (): (( str: string, context?: { [key: string]: unknown } ) => Promise) => { - return async (_str, _context) => { + return async () => { try { const currentAppName = (await getFrontmostApplication()).name || ""; return ( diff --git a/lib/scripts/ImageFeatureExtractor.ts b/lib/scripts/ImageFeatureExtractor.ts index 83dd2e9..832bf06 100644 --- a/lib/scripts/ImageFeatureExtractor.ts +++ b/lib/scripts/ImageFeatureExtractor.ts @@ -1,4 +1,4 @@ -const imageFeatureExtractorScript = `use framework "Vision" +export const imageFeatureExtractorScript = `use framework "Vision" use scripting additions on trim(theText) @@ -132,7 +132,7 @@ on run (argv) if theText is not "" then imageData's setValue:theText forKey:"imageText" - set promptText to "" + set promptText to "" end if if useSaliencyAnalysis then diff --git a/lib/scripts/system.ts b/lib/scripts/system.ts index 42fb4bc..8597145 100644 --- a/lib/scripts/system.ts +++ b/lib/scripts/system.ts @@ -243,7 +243,7 @@ export const chooseApplication = async (allowMultiple = false): Promise { it("should successfully apply custom placeholder with apply_fn specified", async () => { const customPlaceholder = newPlaceholder("test", { regex: undefined, - apply_fn: async (str, context) => ({ result: "my result" }), + apply_fn: async () => ({ result: "my result" }), }); expect( await bulkApply("{{test}}", { customPlaceholders: [customPlaceholder] }) diff --git a/tests/each_placeholder.spec.ts b/tests/each_placeholder.spec.ts index f0b464b..8a945af 100644 --- a/tests/each_placeholder.spec.ts +++ b/tests/each_placeholder.spec.ts @@ -7,10 +7,9 @@ jest.mock("@raycast/utils", () => ({ jest.mock("@raycast/api", () => ({ Clipboard: { readText: () => execScript("return the clipboard", []).data, - }, getFrontmostApplication: async () => { - const result = await (execScript( + const result = await execScript( `use framework "AppKit" tell application "System Events" set frontApp to first application process whose frontmost is true @@ -21,15 +20,15 @@ jest.mock("@raycast/api", () => ({ return jsonString as text end tell`, [] - ).data); + ).data; return JSON.parse(result) as { name: string; bundleId: string; path: string; - } + }; }, getSelectedText: async () => { - const result = await (execScript( + const result = await execScript( `tell application "System Events" set currentClipboardContent to the clipboard keystroke "c" using {command down} @@ -40,24 +39,31 @@ jest.mock("@raycast/api", () => ({ return theSelection end tell`, [] - ).data); + ).data; return result; - } + }, })); import os from "os"; -import { execScript, getSelectedFiles } from "../lib/scripts"; +import { execScript } from "../lib/scripts"; import path from "path"; describe("Information Placeholder Tests", () => { it("should replace {{clipboardText}} with correct clipboard text", async () => { - await (execScript(`set the clipboard to "test" - delay 0.5`, []).data); + await (execScript( + `set the clipboard to "test" + delay 0.5`, + [] + ).data); + await (new Promise((resolve) => setTimeout(resolve, 1000))); expect(await bulkApply("{{clipboardText}}")).toBe("test"); }); it("should replace {{computerName}} with the correct computer name", async () => { - const computerName = (await execScript(`return computer name of ((system info) as record)`, []).data); + const computerName = await execScript( + `return computer name of ((system info) as record)`, + [] + ).data; expect(await bulkApply("{{computerName}}")).toBe(computerName); }); @@ -76,36 +82,39 @@ describe("Information Placeholder Tests", () => { }); it("should replace {{currentDirectory}} with the correct directory", async () => { - const directory = path.join(os.homedir(), "Desktop/"); - expect(await bulkApply("{{currentDirectory}}")).toBe(directory); + const libraryDirectory = path.join(os.homedir(), "Library/"); + const fontDirectory = path.join(libraryDirectory, "Fonts/"); + await bulkApply(`{{selectFile:${fontDirectory}}}`); + await (new Promise((resolve) => setTimeout(resolve, 1000))); + expect(await bulkApply("{{currentDirectory}}")).toBe(libraryDirectory); }); // it("should replace {{currentTabText}} with the correct text", async () => { - // console.log(await bulkApply("{{date}}")); - // console.log(await bulkApply("{{time}}")); - // console.log(await bulkApply("{{day}}")); - // console.log(await bulkApply("{{homedir}}")); - // console.log(await bulkApply("{{hostname}}")); - // console.log(await bulkApply("{{user}}")); - // console.log(await bulkApply("{{installedApps}}")); - // console.log(await bulkApply("{{lastNote}}")); - // console.log(await bulkApply("{{lastEmail}}")); - // console.log(await bulkApply("{{runningApplications}}")); - // console.log(await bulkApply("{{musicTracks}}")); - // console.log(await bulkApply("{{location}}")); - // console.log(await bulkApply("{{timezone}}")); - // console.log(await bulkApply("{{safariTopSites}}")); - // console.log(await bulkApply("{{safariBookmarks}}")); - // console.log(await bulkApply("{{shortcuts}}")); - // console.log(await bulkApply("{{todayWeather}}")); - // console.log(await bulkApply("{{weekWeather}}")); - // console.log(await bulkApply("{{systemLanguage}}")); - // console.log(await bulkApply("{{selectedFiles}}")); - // console.log(await bulkApply("{{fileNames}}")); - // console.log(await bulkApply("{{selectedFileContents}}")); - // console.log(await bulkApply("{{selectedText}}")); - // console.log(await bulkApply("{{monthEvents}}")); - // console.log(await bulkApply("{{monthReminders}}")); + // console.log(await bulkApply("{{date}}")); + // console.log(await bulkApply("{{time}}")); + // console.log(await bulkApply("{{day}}")); + // console.log(await bulkApply("{{homedir}}")); + // console.log(await bulkApply("{{hostname}}")); + // console.log(await bulkApply("{{user}}")); + // console.log(await bulkApply("{{installedApps}}")); + // console.log(await bulkApply("{{lastNote}}")); + // console.log(await bulkApply("{{lastEmail}}")); + // console.log(await bulkApply("{{runningApplications}}")); + // console.log(await bulkApply("{{musicTracks}}")); + // console.log(await bulkApply("{{location}}")); + // console.log(await bulkApply("{{timezone}}")); + // console.log(await bulkApply("{{safariTopSites}}")); + // console.log(await bulkApply("{{safariBookmarks}}")); + // console.log(await bulkApply("{{shortcuts}}")); + // console.log(await bulkApply("{{todayWeather}}")); + // console.log(await bulkApply("{{weekWeather}}")); + // console.log(await bulkApply("{{systemLanguage}}")); + // console.log(await bulkApply("{{selectedFiles}}")); + // console.log(await bulkApply("{{fileNames}}")); + // console.log(await bulkApply("{{selectedFileContents}}")); + // console.log(await bulkApply("{{selectedText}}")); + // console.log(await bulkApply("{{monthEvents}}")); + // console.log(await bulkApply("{{monthReminders}}")); // }); it("should replace {{user}} with correct user name", async () => { @@ -114,11 +123,6 @@ describe("Information Placeholder Tests", () => { }); it("should replace {{time}} with correct time", async () => { - const time = new Date().toLocaleTimeString([], { - hour: "2-digit", - minute: "2-digit", - second: "numeric", - }); expect(await bulkApply("The time is {{time}}")).toMatch( /The time is [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} (AM|PM)/g ); diff --git a/tests/loadPlaceholders.spec.ts b/tests/loadPlaceholders.spec.ts index 190d15a..8f6c25d 100644 --- a/tests/loadPlaceholders.spec.ts +++ b/tests/loadPlaceholders.spec.ts @@ -17,7 +17,7 @@ describe("Creating New Placeholders", () => { expect(() => newPlaceholder("test", { regex: undefined, - apply_fn: async (str, context) => ({ result: "null" }), + apply_fn: async () => ({ result: "null" }), replace_with: "test", }) ).toThrow("Cannot specify both apply_fn and replace_with"); diff --git a/tests/rules.spec.ts b/tests/rules.spec.ts index d95a88e..a21fb0d 100644 --- a/tests/rules.spec.ts +++ b/tests/rules.spec.ts @@ -1,5 +1,3 @@ -import { PLApplicator } from "../lib"; - jest.mock("node-fetch", () => ({ fetch: console.log("mocked fetch") })); jest.mock("@raycast/utils", () => ({ runAppleScript: (script: string) => execScript(script, []).data, @@ -20,13 +18,11 @@ jest.mock("@raycast/api", () => ({ import { execScript } from "../lib/scripts"; import ClipboardTextPlaceholder from "../lib/info-placeholders/clipboardText"; import SelectedFilesPlaceholder from "../lib/info-placeholders/selectedFiles"; -import CurrentDirectoryPlaceholder from "../lib/info-placeholders/currentDirectory"; -import CurrentTabTextPlaceholder from "../lib/info-placeholders/currentTabText"; -import { RequireContainedIn, RequireContains } from "../lib/rules"; describe("RequireValue Tests", () => { it("should be false when the clipboard is empty", async () => { - await execScript(`set the clipboard to ""`, []).data; + await (execScript(`set the clipboard to ""`, []).data); + await (new Promise((resolve) => setTimeout(resolve, 1000))); const result = await ClipboardTextPlaceholder.rules?.[0]( "{{clipboardText}}" ); @@ -47,7 +43,7 @@ describe("RequireValue Tests", () => { delay 1`, [] ).data; - + await (new Promise((resolve) => setTimeout(resolve, 1000))); let result = await SelectedFilesPlaceholder.rules?.[0]("{{selectedFiles}}"); expect(result).toBe(false);