A szerződés
A művelet definiálja a transform(text) függvényt. Amit visszaad, szöveggé alakul, és oda kerül be, ahol éppen írsz.
def transform(text):
return text.upper()Adj vissza None értéket, ha semmit nem akarsz beszúrni. Gyors próbához függvény helyett rendelj értéket egy felső szintű result változónak.
Honnan jön a szöveg
| Bemenet | Mit kap a művelet |
|---|---|
| Semmi | Szöveget hoz létre a semmiből. transform(""). |
| Aktuális szó | Átadja az éppen gépelt szót a transform(text) függvénynek. |
| Kijelölés | A kijelölt szöveget adja át, vagy semmit, ha nincs kijelölés. |
| Aktuális sor | Azt a sort adja át, amelyben a kurzor áll. |
| Aktuális mondat | Azt a mondatot adja át, amelyben a kurzor áll. |
| A kurzor előtti szöveg | Átad mindent a kurzor előtt. |
| Szöveg a kurzor után | Mindent átad, ami a kurzor után áll. |
| Teljes mező | A teljes mezőt átadja, a kurzor mindkét oldaláról. |
| Vágólap | Átadja a vágólap szövegét. Teljes hozzáférés kell hozzá. |
A Bemenet cseréje dönti el, hogy a kimenet a bemenet helyére kerül-e. Minden olyan forrásra vonatkozik, amely a mezőt olvassa. A Semmi és a Vágólap esetén nincs mit cserélni a dokumentumban, így az ő kimenetük mindig beszúrásra kerül.
def transform(text):
words = len(text.split())
return f"{words} words"Kérés a billentyűzethez
Egy művelet ugyanazokat a parancsokat használhatja, mint egy panel, ahelyett hogy egyetlen sztringet adna vissza. Így végez egy művelet több szerkesztést, vagy hagyja a kurzort egy adott helyen.
def transform(text):
replace(len(text), "(" + text + ")")
move_cursor(-1)A toast() és a close() a paneleké: egy műveletnek nincs saját felülete, ahol üzenetet mutathatna. A konzolon írás közben azért mindkettő megjelenik.
A nyelv
A szkriptek a Clink saját értelmezőjén futnak, nem CPythonon. Az a Python egy használható részhalmazát olvassa: listakifejezéseket, lambdákat, rendezett n-eseket, halmazokat, f-string formátumokat, try és except szerkezeteket. A többit olyan üzenettel utasítja vissza, amely megnevezi a sort.
Típusok
intfloatstrboolNonelisttupledictset
Kulcsszavak
ifelifelsewhileforindefreturnbreakcontinuepassTrueFalseNoneandornotlambdatryexceptfinallyraiseimportfromasisdelglobal
Beépített függvények
lenstrreprprintintfloatboolabsroundminmaxsumrangesortedreversedlistdictsettupleenumeratezipordchranyalltypemapfilterdivmodpowhexbinoctformatisinstancecallable
Karakterlánc-metódusok
upperlowercasefoldtitlecapitalizeswapcasestriplstriprstripreplacesplitrsplitsplitlinesjoinstartswithendswithfindrfindindexrindexcountpartitionrpartitionzfillljustrjustcenterisdigitisnumericisalphaisalnumisspaceisupperisloweristitleremoveprefixremovesuffixformat
Listametódusok
appendextendpopinsertremoveindexcountsortreverseclearcopy
Szótármetódusok
keysvaluesitemsgetpoppopitemsetdefaultupdateclearcopy
Halmazmetódusok
adddiscardremovepopclearcopyupdateunionintersectiondifferencesymmetric_differenceissubsetissupersetisdisjoint
Tuple-metódusok
countindex
Regex-találat metódusai
groupgroupsgroupdictstartendspan
Kivételek
ExceptionValueErrorTypeErrorKeyErrorIndexErrorNameErrorZeroDivisionErrorAttributeErrorRuntimeErrorStopIteration
Elutasítva
classwithnonlocalassertyieldasyncawaitmatch
Névterek
Ezek a névterek importálhatók, más semmi. Mindegyik csak számol: nincs fájlrendszer, nincs hálózat és nincs folyamat, amelyet egy szkript elérhetne.
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()A reguláriskifejezés-motor a Clink sajátja, és ugyanabból a lépéskeretből gazdálkodik, mint a szkript többi része, így az a minta, amely különben a végtelenségig futna, hibával áll meg, nem pedig egy billentyűzettel, amely nem válaszol. Visszahivatkozás és környezetvizsgálat nincs.
Miért nem CPython
A billentyűzetbővítménynek kemény memóriaplafonja van, és az iOS figyelmeztetés nélkül leállítja, amint átlépi. Egy teljes Python-futtatókörnyezet nem férne el a billentyűzet mellett, ezért a Clink egy kicsi, erre a feladatra írt értelmezőt hoz magával: import, fájlok és hálózat nélkül, olyan lépéskerettel, amely az elszabadult szkriptnek vet véget, nem a billentyűzetnek.
A print a szerkesztő konzoljára megy, sosem abba, amit éppen írsz.