PopClip Scripting Extensions

PopClip er et flott verktøy program som, når du blir vant til det, er veldig vanskelig å leve uten. Denne opplæringen skal vise hvordan man skriver en skriptutvidelse ved å lage et eksempelutvidelse.

I denne opplæringen vil jeg vise deg hvordan du lager en PopClip-utvidelse ved å bygge en utvidelse som vil se etter en bibelreferanse som skal velges, oppsøke referansen på engelsk eller thai ved hjelp av en web-API, og lim inn det aktuelle verset (e) på plass . Du lærer å lage en PopClip-utvidelse som bruker et PHP-skript, vanlig uttrykk for aktivering, innstillingspreferanser som brukeren kan redigere, og ved hjelp av hurtigtaster for å overstyre innstillingene.


Definere utvidelsen din

Det første som skal gjøres er å bestemme hva utvidelsen skal gjøre. Du bør alltid opprette hver utvidelse med en enkelt funksjonalitet i tankene. Siden jeg er misjonær, skriver jeg notater om bibelvers hele tiden. Jeg vil gjerne ha en utvidelse som vil ta en bibelreferanse og lime det verset eller versene inn i dokumentet mitt både på thai og engelsk. Derfor vil utvidelsen bare gjøre det!

Men noen ganger kan jeg bare trenge ett eller annet språk. Derfor må utvidelsen ha et preferansepanel og hurtigtaster for å overstyre innstillingene. Det høres kanskje ut som mye arbeid, men PopClip gjør det enkelt.

Jeg fant en flott nettside, Efeserne 4:14, som gjør det mulig å laste ned vers fra både King James Bible på engelsk og den thailandske King James Bible. Siden jeg jobber med det thailandske språket, er disse de eneste biblene jeg trenger. De har også mange andre språk. Derfor kan du legge til hvilket språk som interesserer deg.


Popclip Resources

Hvis du nylig installerte PopClip, vennligst les PopClip brukerhåndboken først. Opplæringen, Lag din egen tilpassede utvidelse for PopClip, gir en flott introduksjon til PopClip og hvordan du lager utvidelser som ikke kaller for programmering. Denne opplæringen vil fokusere på skriptprogrammeringsutvidelser for PopClip.

Pilotmoon gir en komplett liste over alternativer for plistkonfigurasjonsfil. Se alltid dette for oppdatert dokumentasjon av utvidelsesgrensesnittet for PopClip.

Utvidelsen vil bli skrevet i PHP. Hvis du ikke vet hvordan du skal programmere i PHP, kan du finne et utmerket videokurs på Tuts +: PHP Fundamentals.


Filstrukturen

Uansett hvor du skal jobbe på datamaskinen, opprett en katalog som heter popclipBible.popclipext. Den katalogen vil se ut som en vanlig fil, men når du høyreklikker på den og velger popup-menyen Vis pakkeinnhold, det vil vise innholdet i den katalogen. Du må opprette filene Config.plist, bible.php, og bible.png inn i denne katalogen.

Config.plist er plistfilen beskrevet i neste avsnitt. bible.php vil inneholde PHP-skriptet som skal utføres. bible.png er grafikkfilen for utvidelsen. Alle disse er i nedlastingsfilen øverst.


Plist

Alle utvidelser for PopClip starter med en plistfil som heter Config.plist. Denne filen forteller PopClip hvordan utvidelsen passer inn i PopClip-verdenen. Den fulle plissen for denne utvidelsen er:

     handlinger   Etter lim-resultat Bildefil bible.png Script Tolk / Usr / bin / php Shell Script File bible.php Tittel bibel   alternativer   Alternatividentifikator biblekjv Alternativ Type boolean Alternativetikett KJB   Alternatividentifikator biblethaikjv Alternativ Type boolean Alternativetikett Thai KJV   Utvidelsesbeskrivelse Oppsøk bibelvers i Popclip. Extension Identifier com.customct.popclip.extension.bible Forlengelsesnavn bibel Lang kjøring  Vanlig uttrykk (* \ D + \:. \ D + (\ - \ d +) *) Nødvendig programvareversjon 701  

Som det kan ses, er det en XML-formatert datafil. Denne datafilen forteller PopClip alt den trenger å vite for å kjøre utvidelsen.

Dette er den bare beinplist som trengs for denne utvidelsen. Hovedordlisten har nøklene handlinger og alternativer. Dette er de viktigste oppføringene for å gi funksjonaliteten til utvidelsen. Jeg vil beskrive dem mer detaljert nedenfor. De andre nøklene er:

Utvidelsesbeskrivelse
Denne nøkkelen gir en beskrivelse av hva utvidelsen vil gjøre. Dette må være kort, men beskrivende.

Extension Identifier
Denne nøkkelen gir en unik identifikator for utvidelsen din. Jeg baserte den av nettstedet mitt for fullstendig unikhet. Det kan med noen alfanumerisk sekvens, men noe lesbar er alltid hyggelig.

Forlengelsesnavn
Denne nøkkelen er navnet på utvidelsen. Jeg kaller det bare bibel.

Lang kjøring
Denne nøkkelen er satt til sann siden det vil bli et web API-anrop som tar en stund å fullføre på grunn av netthastighet. Dette har bare PopClip vise et ventetegn mens du utfører handlingen.

Hvis forlengelsen ikke tar lang tid, bør den være feil.

Vanlig uttrykk
Denne nøkkelverdien er et vanlig uttrykk som bare tillater lanseringen av utvidelsen hvis den hevder sant for den valgte teksten. Ved å skrive et vanlig uttrykk som bare samsvarer med en bibelreferanse, vil det ikke vise bibellengjøring på bare noen tekstvalg.

Benytt deg av denne funksjonen. Viser opp med et hvilket som helst tekstvalg gjør det vanskeligere for brukeren av utvidelsen. Tenk på hvordan noen vil ønske å bruke forlengelsen og skape et godt regelmessig uttrykk for det aktuelle tilfellet.

Hvis du er litt rusten på å skrive ordinære uttrykk, bør du lese denne artikkelen på Net Tuts+.

Nødvendig programvareversjon
Denne nøkkelen spesifiserer versjonen av PopClip som denne utvidelsen trenger.


handlinger

Handlingstastene er for å definere handlingen som utvidelsen skal utføre. Det er mange muligheter, men denne opplæringen vil bare fokusere på elementene som trengs. De er som følger:

Etter
Dette spesifiserer handlingen som skal tas etter at man har kjørt skriptet. lim-resultat vil lime inn i det øverste programmet, uansett hvilken tekst skriptet ekkoer ut.

Bildefil
Denne nøkkelen angir ikonet som brukes for denne utvidelsen. Siden ikonet i samme område som utvidelsen, kan du bare henvise til filen: bible.png. Hvis du vil beholde ikonene i en underkatalog for utvidelsen, vil du bruke en relativ henvisning til den filen.

Script Tolk
Denne nøkkelen definerer tolken vil bli brukt til å behandle skriptet. Siden jeg gjør dette programmet i PHP, må det referere til standard PHP tolk på alle Macer: / Usr / bin / php. Du kan legge hele banen til en tolk du vil bruke til å skrive utvidelser.

Shell Script File
Denne nøkkelen definerer filen i katalogen av utvidelsen for å kjøre. Filnavnet er: bible.php.

Tittel
Denne nøkkelen er tittelen på utvidelsen: bibel.


alternativer

De alternativer nøkkelen inneholder en rekke ordbøker. En ordbok for hvert alternativ i preferansepanelet for utvidelsen. For denne utvidelsen bør brukeren ha mulighet til å lime fra KJV Bibelen eller den engelske KJV Bibelen. Siden jeg har to alternativer for denne utvidelsen, vil jeg beskrive hver nøkkel i alternativer ordbok og fortell hva jeg brukte for hvert alternativ.

Alternatividentifikator
Denne nøkkelen gir PopClip et unikt navn for alternativet du trenger for utvidelsen. Dette brukes i miljøvariabelen som sendes til programmet. For de to alternativene vil disse IDene bli brukt: biblekjv og biblethaikjv.

Alternativ Type
Denne nøkkelen definerer hvilken type alternativ det er. Det kan enten være boolean (Ja eller nei), string (hvilken som helst streng), eller flere (Du gir en liste over alternativer og brukeren kan velge mellom dem). De boolean type er det som trengs for denne utvidelsen.

Alternativetikett
Denne nøkkelen definerer teksten som skal brukes i alternativpanelet for utvidelsen. For denne utvidelsen, merker du KJB og Thai KJV skal jobbe.

Med disse alternativene definert i plist, vil et preferansepanel bli opprettet for å redigere innstillingene. Slik ser det ut:

Forlengelsesinnstillinger for bibel

Manuset

Nå må skriptet skrives. Det fulle skriptet er:

  $ url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 4); $ ch = curl_init (); curl_setopt_array ($ ch, ($ options + $ defaults)); hvis (! $ result = curl_exec ($ ch)) trigger_error (curl_error ($ ch));  curl_close ($ ch); returnere $ resultat;  // // Funksjon: getBibleVerse // // Beskrivelse: Denne funksjonen er for å hente en Bible // vers fra api.preachingcentral.com // websiden. // // Inputs: // $ vers Versene som skal søges etter. // $ versjon Versjonen av Bibelen som skal brukes. // funksjon getBibleVerse ($ vers, $ versjon) global $ book; $ resultat = ""; $ raw = urlencode ($ vers); $ xml = curl_get ("http://api.preachingcentral.com/bible.php?passage=$raw&version=$version"); $ xml_parser = xml_parser_create (); xml_parse_into_struct ($ xml_parser, $ xml, $ vals, $ index); xml_parser_free ($ xml_parser); $ først = 0; $ quote = 0; foreach ($ vals som $ xml_elem) if (strcmp ($ xml_elem ['tag'], "TEXT") === 0) hvis ($ quote == 0) $ resultat = $ resultat. $ xml_elem ['value']; $ quote = 1; else $ result = $ result. "". $ xml_elem ['verdi']; hvis (strcmp ($ xml_elem ['tag'] , = RESULTAT) === 0) hvis ($ først == 0) hvis (strcmp ($ versjon, "thai") === 0) // // Nettstedet returnerer bare boknavn på engelsk. Oversett dem // til thai. // $ blist = eksplodere ("", $ xml_elem ['value']); $ bname = "; $ bver = "; hvis (telle ($ blist) == 3) $ bname = $ blist [0]. $ blist [1]; $ bver = $ blist [2]; elseif (telle ($ blist) = $ 4 $ $ bname = $ blist [0]. $ Blist [1]. $ Blist [2]; $ bver = $ blist [3]; else $ bname = $ blist [0]; $ bver = $ blist [1]; $ result = $ bok [$ bname]. "". $ bver; else // // engelsk er bra her. // $ result = $ xml_elem ['value']; $ først = 1; else $ result = $ result. '"'. "\ n \ n". $ Xml_elem [ 'verdien'];  $ quote = 0;  returnere $ resultat. '' '; // // Få PopClip Environment-variablene for // forlengelsen. // $ vers = trim (getenv (' POPCLIP_TEXT ')); $ qKJV = getenv (' POPCLIP_OPTION_BIBLEKJV '); $ qThaiKJV = getenv "POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = ""; // // Hvis preferansen er satt til KJV eller kommandotasten // er trykket, så få verset fra Engelsk KJV // og legg det til resultatet. Hvis både kommandotasten // og kontrolltasten trykkes, så få KJV også. // hvis (($ qKJV [0] == '1') || ( $ keycode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ vers, "kjv"). "\ n"; // // Hvis preferansen er satt til Thai KJV eller // kontrollknappen er trykket, så hent verset fra // Thai KJV og legg det til resultatet. Hvis både // kommandotasten og kontrolltasten er trykket, //, så får du den thailandske versjonen også. // hvis ($ qThaiKJV [0] == '1') || ($ nøkkelkode == 262144) || ($ nøkkelkode == 1310720)) $ results. = getBibleVerse ($ vers, "thai"). n "; // // Enhver Ting som ekko fra skriptet, vil bli latt inn // til toppen mesteparten av programmet fra PopClip. Hvis resultatene // er ingenting, returner du verset. // hvis (strcmp ($ results, "") === 0) echo $ vers;  ellers echo $ results; ?>

Det første i skriptet er en rekke navn på bøkene i Bibelen. Denne rekkefølgen er for å oversette de engelske boknavnene til deres Thai-ekvivalent. Internett-api som utvidelsen bruker, gir bare referanser på engelsk. Så, de engelske bibelbokenavnene må oversettes til thai.

Den første funksjonen er en hjelperfunksjon. Det er en PHP-rutine for å be om informasjon fra et nettsted ved hjelp av krøll og returnerer resultatene til anropsprogrammet. Inngangen er adressen til forespørselen.

Den andre funksjonen er hovedfunksjonen for behandling av bibelverset. Den vil be om bibelverset og behandle den resulterende XML til et mer lesbart format for å lim inn i tekstredigeringsprogrammet eller hva som helst program for tiden er aktivt. Parametrene er det faktiske bibelverset og designatoren som Bibelen skal be om. For King James Bible, er det KJV. For den thailandske bibel er det thai. Du kan få andre koder fra siden koblingen ovenfor.


Få informasjon fra miljøet

PopClip sender informasjon til skriptet gjennom miljøvariabler. Det er en enkel måte å kommunisere på. Slik får du tilgang til denne informasjonen.

 // // Få PopClip Environment-variablene for // utvidelsen. // $ vers = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ("POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = "";

PHP-funksjonen getenv () vil hente miljøvariabelen gitt i strengen for funksjonssamtalen. Alle miljøvariablene er strenger og må brukes som sådan. De forskjellige miljøvariablene er:

POPCLIP_TEXT
Denne variabelen er valget når PopClip ble påkalt. Siden brukeren av utvidelsen kunne velge ekstra hvitt mellomrom, liker jeg alltid å bruke trim () funksjon for å fjerne ekstra hvitt mellomrom.

POPCLIP_OPTION_BIBLEKJV
Denne variabelen er muligheten for å få verset fra King James-versjonen. Det er en streng som inneholder tegnet 1 hvis sant, ellers inneholder det tegnet 0.

POPCLIP_OPTION_BIBLETHAIKJV
Denne variabelen er muligheten for å få verset fra den thailandske King James-versjonen. Det er en streng som inneholder tegnet 1 hvis sant, ellers inneholder det tegnet 0.

POPCLIP_MODIFIER_FLAGS
Dette forteller bruk hvilke taster som ble trykket mens PopClip-handlingen ble valgt. Alt passert i en miljøvariabel er en streng. Derfor må strengene oversettes til et brukervennlig format også. Jeg bruker intval () funksjonen til å konvertere strengen til et heltall.

Alle de forskjellige nøkkelkodverdiene vises i PopClip Extensions GitHub.

Som det kan ses, har alle valgmulighetene i utvidelsen sin egen tilsvarende miljøvariabel.

$ Resultat variabelen er også satt til en tom streng for de neste to seksjonene for å fylle opp.


Behandling av miljøvariablene

Hoveddelen av enhver popclip-utvidelse er å ta variablene passert i miljøet og gjøre noe nyttig med det.

 // // Hvis preferansen er satt til KJV eller kommandotasten // trykkes, så få verset fra engelsk KJV // og legg det til resultatet. // if (($ qKJV [0] == '1') || ($ nøkkelkode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ vers, "kjv"). "\ n"; 

Denne delen av koden henter verset fra King James-versjonen hvis den ble angitt i preferansene ($ qKJV-variabelen) eller kommandotasten ble trykket mens du valgte PopClip-handlingen ($ nøkkelkode er 1048576). Det vil også be om det hvis både kontroll- og kommandotaster trykkes ($ nøkkelkode er 1310720). Siden $ qKJV-variabelen er en streng som er 1 eller 0, kan du sjekke at det første tegnet er et tegn 1. På den måten behøver det ikke å behandles til et tall. Det kan spare litt tid!

Hvis tilstanden er sant, blir versene hentet ved hjelp av getBibleVerse () funksjon og legges til $ resultatstrengen.

 // // Hvis preferansen er satt til den thailandske KJV eller // kontrollknappen er trykket, så hent verset fra // Thai KJV og legg det til resultatet. // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ vers, "thai"). "\ N"; 

Her er det lik. Hvis den thailandske King James-versjonen ble valgt i preferansene ($ qThaiKJV) eller kontrolltasten ble trykket mens du valgte PopClip-handlingen ($ nøkkelkode er 262144), vil Thai King James-versjonen bli forespurt. Det vil også be om det hvis både kontroll- og kommandotaster trykkes ($ nøkkelkode er 1310720).

Hvis tilstanden er sant, blir versene hentet ved hjelp av getBibleVerse () funksjon og legges til $ resultatstrengen.

 // / Alt som ekko fra skriptet vil bli klistret inn // til toppen mesteparten av programmet fra PopClip. Hvis resultatene // er ingenting, returner du verset. // hvis (strcmp ($ results, "") === 0) echo $ vers;  ellers echo $ results; 

Her må resultatene bli ekkoet. Men hvis resultatbufferen er tom, må verset echoedes. Hvis en tom streng blir ekko, sletter den effektivt det som ble valgt. Siden alt er et alternativ, er det mulig å komme hit med $ resultater variabel tom. God programmeringspraksis forteller oss alltid å ta hensyn til hver mulighet.


bruk

Når utvidelsen er lastet inn i PopClip og innstillingene er angitt, er utvidelsen enkel å bruke. Bare velg litt tekst som er en bibelreferanse.

Velger et vers

Når PopClip-linjen vises, velg den hvite Bibelen, og valget blir endret til verset. Her ble preferansene satt opp for både KJV- og ThaiKJV-versjoner som skal skrives ut.

Erstatt Vers

Hvis teksten ikke samsvarer med det vanlige uttrykket for en bibelreferanse, vil ikke bibelikonet bli vist.

Utvalg ikke en vers

Dette bidrar til å spare fast eiendom på PopClip-feltet. Når du lager en utvidelse, tenk på hvordan du minimerer unødvendige utseendinger av utvidelsen din.


Sammendrag

Nå har du en fin liten PopClip-utvidelse for å få vers fra et nettsted og lime dem inn i søknaden din. Enda bedre enn det, nå vet du hvordan du oppretter et preferansepanel for utvidelsen, får til den informasjonen fra utvidelsen, manipulerer den valgte teksten og lim den inn i det øverste programmet. Du kan ta denne koden og utvide den eller bruke den som et skjelett for din egen PopClip-utvidelse. La alle vite hvordan du bruker det i kommentarene!