Le contrat

Une action définit transform(text). Ce qu'elle renvoie est converti en texte et inséré là où vous écrivez.

def transform(text):
    return text.upper()

Renvoyez None pour n'insérer rien du tout. Pour un essai rapide, affectez une variable result au niveau supérieur au lieu de définir une fonction.

D'où vient le texte

EntréeCe que reçoit l’action
RienGénère du texte à partir de rien. transform("").
Mot actuelTransmet le mot que tu écris à transform(text).
SélectionTransmet le texte sélectionné, ou rien si rien n'est sélectionné.
Ligne actuelleTransmet la ligne où se trouve le curseur.
Phrase actuelleTransmet la phrase où se trouve le curseur.
Texte avant le curseurTransmet tout ce qui se trouve avant le curseur.
Texte après le curseurTransmet tout ce qui suit le curseur.
Tout le champTransmet le champ entier, des deux côtés du curseur.
Presse-papiersTransmet le texte du presse-papiers. Nécessite l'accès complet.

Remplacer l'entrée décide si la sortie prend la place de ce qui est entré. Cela vaut pour toute source qui lit le champ. Rien et Presse-papiers n'ont rien à remplacer dans le document : leur sortie est donc toujours insérée.

def transform(text):
    words = len(text.split())
    return f"{words} words"
En lisant le texte avant le curseur avec Remplacer la saisie désactivé, ceci ajoute un décompte.

Demander au clavier

Une action peut utiliser les mêmes commandes qu'un panneau au lieu de renvoyer une seule chaîne. C'est ainsi qu'une action fait plusieurs modifications, ou laisse le curseur à un endroit précis.

def transform(text):
    replace(len(text), "(" + text + ")")
    move_cursor(-1)
Mettre le mot entre parenthèses, puis revenir à l'intérieur.

toast() et close() appartiennent aux panneaux : une action n'a pas de surface à elle pour afficher un message. Les deux apparaissent tout de même dans la console pendant que vous l'écrivez.

Le langage

Les scripts tournent sur l'interpréteur de Clink, pas sur CPython. Il lit un sous-ensemble utile de Python : compréhensions, lambdas, tuples, ensembles, formats de f-string, try et except. Il refuse le reste avec un message qui nomme la ligne.

Types

  • int
  • float
  • str
  • bool
  • None
  • list
  • tuple
  • dict
  • set

Mots-clés

  • if
  • elif
  • else
  • while
  • for
  • in
  • def
  • return
  • break
  • continue
  • pass
  • True
  • False
  • None
  • and
  • or
  • not
  • lambda
  • try
  • except
  • finally
  • raise
  • import
  • from
  • as
  • is
  • del
  • global

Fonctions natives

  • len
  • str
  • repr
  • print
  • int
  • float
  • bool
  • abs
  • round
  • min
  • max
  • sum
  • range
  • sorted
  • reversed
  • list
  • dict
  • set
  • tuple
  • enumerate
  • zip
  • ord
  • chr
  • any
  • all
  • type
  • map
  • filter
  • divmod
  • pow
  • hex
  • bin
  • oct
  • format
  • isinstance
  • callable

Méthodes de chaîne

  • upper
  • lower
  • casefold
  • title
  • capitalize
  • swapcase
  • strip
  • lstrip
  • rstrip
  • replace
  • split
  • rsplit
  • splitlines
  • join
  • startswith
  • endswith
  • find
  • rfind
  • index
  • rindex
  • count
  • partition
  • rpartition
  • zfill
  • ljust
  • rjust
  • center
  • isdigit
  • isnumeric
  • isalpha
  • isalnum
  • isspace
  • isupper
  • islower
  • istitle
  • removeprefix
  • removesuffix
  • format

Méthodes de liste

  • append
  • extend
  • pop
  • insert
  • remove
  • index
  • count
  • sort
  • reverse
  • clear
  • copy

Méthodes de dictionnaire

  • keys
  • values
  • items
  • get
  • pop
  • popitem
  • setdefault
  • update
  • clear
  • copy

Méthodes d'ensemble

  • add
  • discard
  • remove
  • pop
  • clear
  • copy
  • update
  • union
  • intersection
  • difference
  • symmetric_difference
  • issubset
  • issuperset
  • isdisjoint

Méthodes de tuple

  • count
  • index

Méthodes d’une correspondance regex

  • group
  • groups
  • groupdict
  • start
  • end
  • span

Types d'exception

  • Exception
  • ValueError
  • TypeError
  • KeyError
  • IndexError
  • NameError
  • ZeroDivisionError
  • AttributeError
  • RuntimeError
  • StopIteration

Refusé

  • class
  • with
  • nonlocal
  • assert
  • yield
  • async
  • await
  • match

Espaces de noms

Ces espaces de noms peuvent être importés, et rien d'autre. Chacun ne fait que calculer : aucun système de fichiers, aucun réseau, aucun processus n'est accessible depuis un script.

import json

  • dumps
  • loads

import math

  • acos
  • asin
  • atan
  • atan2
  • ceil
  • comb
  • copysign
  • cos
  • degrees
  • e
  • exp
  • fabs
  • factorial
  • floor
  • fmod
  • gcd
  • hypot
  • inf
  • isfinite
  • isinf
  • isnan
  • lcm
  • log
  • log10
  • log2
  • nan
  • pi
  • pow
  • prod
  • radians
  • sin
  • sqrt
  • tan
  • tau
  • trunc

import random

  • choice
  • choices
  • randint
  • random
  • randrange
  • sample
  • seed
  • shuffle
  • uniform

import re

  • DOTALL
  • I
  • IGNORECASE
  • M
  • MULTILINE
  • S
  • escape
  • findall
  • finditer
  • fullmatch
  • match
  • search
  • split
  • sub
  • subn

import sys

  • version

import time

  • format
  • monotonic
  • parts
  • time
import re

def transform(text):
    return re.sub(r"\s+", " ", text).strip()
Réduire les suites d'espaces avec une expression régulière.

Le moteur d'expressions régulières est celui de Clink, et il dépense le même budget de pas que le reste de votre script : un motif qui tournerait sinon indéfiniment se termine par une erreur, pas par un clavier qui ne répond plus. Les références arrière et les assertions de contexte ne sont pas prises en charge.

Pourquoi pas CPython

Une extension de clavier a un plafond de mémoire strict, et iOS y met fin sans prévenir dès qu'il est dépassé. Un runtime Python complet ne tiendrait pas à côté du clavier : Clink embarque donc un petit interpréteur écrit pour la tâche, sans imports, sans fichiers, sans réseau, avec un budget de pas qui met fin au script emballé plutôt qu'au clavier.

print va vers la console de l'éditeur, jamais dans ce que vous écrivez.

Partage

Action de partage écrit un fichier .clinkext, et Importer une action le récupère avec un nouvel identifiant. Une action reste sous 48 000 octets et doit définir def transform(.

Créateur ›
Télécharger dans l’App Store