A programming language that compiles to the iOS Visual Scripting tool, Shortcuts. Had a web editor and compiler, command line compiler, and vscode extension with diagnostics and autocomplete. ScPL is no longer maintained and is missing new actions that were added in recent iOS updates.

Made with Typescript, React, CodeMirror

Note that ScPL has not been updated to support the new iOS 13/14+ actions. If you are looking for a text shortcuts language, consider Jellycuts.

Project logo

ScPL

Build Status codecov discord


ScPL is a programming language for writing iOS Shortcuts in text.

ScPL is a programming language for Shortcuts that allows you to write shortcuts in text instead of dragging and dropping blocks. ScPL lets you work with large shortcuts easily by letting you copy and paste actions, view long shortcuts without scrolling, and type actions instead of dragging them in. Get Started

ShowResult "Hello ScPL"
ChooseFromMenu prompt="ScPL" items=["Getting Started", "View Documentation"]
Case "Getting Started"
    URL "https://docs.scpl.dev/gettingstarted"
Case "View Documentation"
    URL "https://docs.scpl.dev/"
End Menu
OpenURLs

See what your shortcut looks like in ScPL by uploading it in the ScPL Editor.

What is ScPL

ScPL lets you write shortcuts in text. Instead of dragging actions around on a small screen in a slow app, you can write text like ShowResult "My shortcut" to build long and complex shortcuts.

Editors

Web Editor

The ScPL Web Editor (editor.scpl.dev) is the easiest way to write ScPL.

Visual Studio Code

ScPL has a plugin for Visual Studio Code with autocompletion, error messages, and hover documentation. VSCode Extension.

To compile your ScPL code you can use the scpl-cli npm package. npm install --global scpl-cli. Then you can run scpl <filename.scpl> -o <outputfile.shortcut>

Usage (in other Javascript projects)

npm install --save scpl or yarn add scpl

const {parse, inverse} = require("scpl");
 
const {shortcutjson, shortcutplist} = parse("text 'hello scpl'", {make: ["shortcutjson", "shortcutplist"]});
// shortcutjson is a json object containing the shortcut file.
// shortcutplist is a buffer containing the shortcut file bplist.
 
const inverted = inverse(shortcutplist);
// text "hello scpl"

Contributing

Prerequisites

ScPL uses yarn for package management. Install Yarn

Installing

git clone https://github.com/pfgithub/scpl.git
cd scpl
yarn install

The ScPL repository does not have any tools for converting ScPL code to .shortcut files. That can be found in the scpl-editor or the scpl-cli projects.

Running tests

yarn test

ScPL tests using Jest and automatically generates coverage reports. You can use the coverage report lcov file in coverage/lcov.info to set your editor to show test coverage.

Before making a pull request

yarn prepublishOnly

prepublishOnly will automatically format your code using prettier and make sure tests pass.

Acknowledgements

  • xAlien95 for finding the actions plist file within the shortcuts ipa and manually making lists of all the variable types and aggrandizements.
  • Shortcuts JS for the complete shortcut glyph and color list.