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ée | Ce que reçoit l’action |
|---|---|
| Rien | Génère du texte à partir de rien. transform(""). |
| Mot actuel | Transmet le mot que tu écris à transform(text). |
| Sélection | Transmet le texte sélectionné, ou rien si rien n'est sélectionné. |
| Ligne actuelle | Transmet la ligne où se trouve le curseur. |
| Phrase actuelle | Transmet la phrase où se trouve le curseur. |
| Texte avant le curseur | Transmet tout ce qui se trouve avant le curseur. |
| Texte après le curseur | Transmet tout ce qui suit le curseur. |
| Tout le champ | Transmet le champ entier, des deux côtés du curseur. |
| Presse-papiers | Transmet 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"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)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
intfloatstrboolNonelisttupledictset
Mots-clés
ifelifelsewhileforindefreturnbreakcontinuepassTrueFalseNoneandornotlambdatryexceptfinallyraiseimportfromasisdelglobal
Fonctions natives
lenstrreprprintintfloatboolabsroundminmaxsumrangesortedreversedlistdictsettupleenumeratezipordchranyalltypemapfilterdivmodpowhexbinoctformatisinstancecallable
Méthodes de chaîne
upperlowercasefoldtitlecapitalizeswapcasestriplstriprstripreplacesplitrsplitsplitlinesjoinstartswithendswithfindrfindindexrindexcountpartitionrpartitionzfillljustrjustcenterisdigitisnumericisalphaisalnumisspaceisupperisloweristitleremoveprefixremovesuffixformat
Méthodes de liste
appendextendpopinsertremoveindexcountsortreverseclearcopy
Méthodes de dictionnaire
keysvaluesitemsgetpoppopitemsetdefaultupdateclearcopy
Méthodes d'ensemble
adddiscardremovepopclearcopyupdateunionintersectiondifferencesymmetric_differenceissubsetissupersetisdisjoint
Méthodes de tuple
countindex
Méthodes d’une correspondance regex
groupgroupsgroupdictstartendspan
Types d'exception
ExceptionValueErrorTypeErrorKeyErrorIndexErrorNameErrorZeroDivisionErrorAttributeErrorRuntimeErrorStopIteration
Refusé
classwithnonlocalassertyieldasyncawaitmatch
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
dumpsloads
import math
acosasinatanatan2ceilcombcopysigncosdegreeseexpfabsfactorialfloorfmodgcdhypotinfisfiniteisinfisnanlcmloglog10log2nanpipowprodradianssinsqrttantautrunc
import random
choicechoicesrandintrandomrandrangesampleseedshuffleuniform
import re
DOTALLIIGNORECASEMMULTILINESescapefindallfinditerfullmatchmatchsearchsplitsubsubn
import sys
version
import time
formatmonotonicpartstime
import re
def transform(text):
return re.sub(r"\s+", " ", text).strip()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.