PopClip är ett bra verktygsprogram som, när du är van vid det, är mycket svårt att leva utan. Denna handledning kommer att visa hur man skriver en skriptförlängning genom att göra ett exemplarförlängning.
I denna handledning kommer jag att visa dig hur du skapar en PopClip-förlängning genom att bygga en förlängning som kommer att söka efter en bibelreferens som ska väljas, leta upp referensen på engelska eller thailändska med hjälp av ett Web API och klistra in de korrekta verserna på plats . Du kommer att lära dig att skapa en PopClip-förlängning som använder ett PHP-skript, regelbundet uttryck för aktivering, inställningsinställningar som användaren kan redigera och använder snabbtangenter för att åsidosätta inställningarna.
Det första som bör göras är att bestämma vad förlängningen ska göra. Du bör alltid skapa varje tillägg med en enda funktionalitet i åtanke. Sedan jag är missionär skriver jag hela tiden noter om bibelverser. Jag skulle vilja ha en förlängning som kommer att ta en bibelreferens och klistra in den versen eller versen i mitt dokument på både thailändska och engelska. Därför kommer förlängningen att göra just det!
Men ibland kanske jag bara behöver ett eller annat språk. Förlängningen behöver därför ha en preferenspanel och snabbtangenter för att åsidosätta inställningarna. Det kan låta som mycket arbete, men PopClip gör det enkelt.
Jag hittade en bra hemsida, Efesierbrevet 4:14, som tillåter nedladdning av vers från både King James Bibeln på engelska och den thailändska kungen James Bibeln. Eftersom jag arbetar med det thailändska språket är det bara de bibeln jag behöver. De har också många andra språk. Därför kan du lägga till vilket språk som helst kan intressera dig.
Om du nyligen installerat PopClip, läs PopClip användarhandbok först. Handledningen, Skapa din egen anpassade förlängning för PopClip, ger en bra introduktion till PopClip och hur man gör tillägg som inte kräver någon programmering. Denna handledning kommer att fokusera på skriptprogrammeringstillägg för PopClip.
Pilotmoon ger en komplett lista över alternativ för plistkonfigurationsfil. Hänvisa alltid till det här för uppdaterad dokumentation av utvidgningsgränssnittet för PopClip.
Utvidgningen kommer att skrivas i PHP. Om du inte vet hur du programmerar i PHP, kan du hitta en utmärkt videokurs på Tuts +: PHP Fundamentals.
Oavsett var du ska arbeta på din dator, skapa en katalog som heter popclipBible.popclipext. Den katalogen kommer att se ut som en vanlig fil, men när du högerklickar på den och väljer popupmenyn Visa paketinnehåll, Det kommer att visa innehållet i den katalogen. Du måste skapa filerna Config.plist, bible.php, och bible.png in i den här katalogen.
Config.plist är plistfilen som beskrivs i nästa avsnitt. bible.php kommer att innehålla PHP-skriptet som ska utföras. bible.png är den grafiska filen för förlängningen. Alla dessa finns i hämtningsfilen längst upp.
Alla tillägg för PopClip börjar med en plistfil som heter Config.plist. Den här filen berättar PopClip hur tillägget passar in i PopClips värld. Den fullständiga plistan för denna förlängning är:
Åtgärder Efter pasta resultat Bildfil bible.png Script Interpreter / Usr / bin / php Shell Script File bible.php Titel bibel alternativ Alternatividentifierare biblekjv Alternativtyp boolean Alternativetikett KJB Alternatividentifierare biblethaikjv Alternativtyp boolean Alternativetikett Thailändska KJV Förlängningsbeskrivning Lookup bibelvers i Popclip. Extension Identifier com.customct.popclip.extension.bible Förlängningsnamn bibel Lång körning Vanligt uttryck (* \ D + \:. \ D + (\ - \ d +) *) Nödvändig programvaruversion 701
Som det kan ses är det en XML-formaterad datafil. Den här datafilen berättar PopClip allt som behövs för att kunna köra filtillägget.
Det här är den enda benbenen som behövs för denna förlängning. Huvudordlistan har nycklarna Åtgärder och alternativ. Dessa är de viktigaste posterna för att tillhandahålla funktionaliteten för förlängningen. Jag kommer att beskriva dem mer detaljerat nedan. De andra nycklarna är:
Förlängningsbeskrivning
Denna nyckel ger en beskrivning av vad förlängningen ska göra. Detta måste vara kort men beskrivande.
Extension Identifier
Denna nyckel ger en unik identifierare för din förlängning. Jag baserade den på min hemsida för fullständig unikhet. Det kan med vilken alfanumerisk sekvens, men någonting läsbar alltid är bra.
Förlängningsnamn
Denna nyckel är namnet på förlängningen. Jag kallar bara det bibel.
Lång körning
Den här nyckeln är satt till sann eftersom det kommer att göra ett webb API-samtal som tar ett tag att slutföra på grund av nätets hastighet. Detta har helt enkelt PopClip visa en väntanikon när du utför åtgärden.
Om förlängningen inte tar lång tid ska det vara felaktigt.
Vanligt uttryck
Denna nyckels värde är ett regelbundet uttryck som tillåter lanseringen av förlängningen endast om den hävdar sant för den aktuella valda texten. Genom att skriva ett regelbundet uttryck som bara kommer att matcha en bibelreferens, kommer det inte att visa bibelförlängningen på något textval.
Om du är lite rostig om du skriver ordinarie uttryck, bör du läsa den här artikeln på Net Tuts+.
Nödvändig programvaruversion
Den här nyckeln specificerar versionen av PopClip som den här utvidgningen behöver.
Åtgärdstangenterna är för att definiera åtgärden som förlängningen ska utföra. Det finns många möjligheter, men denna handledning kommer bara att fokusera på de föremål som behövs. De är som följer:
Efter
Detta anger åtgärden som ska vidtas efter att skriptet körts. pasta resultat kommer att klistra in i de flesta applikationer oavsett vilken text skriptet echos ut.
Bildfil
Den här tangenten anger ikonen som används för den här utvidgningen. Eftersom ikonen i samma område som förlängningen kan du helt enkelt referera till filen: bible.png. Om du vill behålla ikonerna i en underkatalog i tillägget, skulle du använda en relativ referens till den filen.
Script Interpreter
Denna nyckel definierar tolken som ska användas för att bearbeta manuset. Eftersom jag gör detta program i PHP, behöver det referera till standard PHP tolk på alla Mac: / Usr / bin / php. Du kan placera hela sökvägen till vilken tolk du vill använda för att skriva tillägg.
Shell Script File
Den här nyckeln definierar filen i katalogen för förlängningen för att köra. Filnamnet är: bible.php.
Titel
Den här nyckeln är titeln på tillägget: bibel.
De alternativ nyckeln innehåller en rad ordböcker. En ordlista för varje alternativ i preferenspanelen för förlängningen. För denna förlängning bör användaren ha möjlighet att klistra in från KJV-bibeln eller den thailändska KJV-bibeln. Eftersom jag har två alternativ för denna förlängning kommer jag att beskriva varje nyckel i alternativ ordboken och berätta vad jag använde för varje alternativ.
Alternatividentifierare
Den här nyckeln ger PopClip ett unikt namn för det alternativ du behöver för din förlängning. Detta används i miljövariabeln som skickas till ditt program. För de två alternativen kommer dessa ids att användas: biblekjv och biblethaikjv.
Alternativtyp
Denna nyckel definierar vilken typ av alternativ det är. Det kan vara heller boolean (Ja eller nej), sträng (någon sträng), eller flera olika (Du ger en lista över alternativ och användaren kan välja från dem). De boolean typ är vad som behövs för denna förlängning.
Alternativetikett
Den här tangenten definierar texten som ska användas i alternativpanelen för förlängningen. För denna förlängning, etiketterna KJB och Thailändska KJV kommer att funka.
Med de här alternativen definierade i plåten kommer en preferenspanel att skapas för att redigera inställningarna. Så här kommer det att se ut:
BibelförlängningsinställningarNu måste man skriva skriptet. Det fullständiga skriptet är:
$ url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 4); $ ch = curl_init (); curl_setopt_array ($ ch, ($ options + $ default)); om (! $ result = curl_exec ($ ch)) trigger_error (curl_error ($ ch)); curl_close ($ ch); returnera $ resultat; // // Funktion: getBibleVerse // // Beskrivning: Den här funktionen är för att hämta en bibel // vers från api.preachingcentral.com // webbplatsen. // // Ingångar: // $ vers De verses som ska sökas efter. // $ version Den version av bibeln som ska användas. // funktion getBibleVerse ($ vers, $ version) global $ book; $ result = ""; $ 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) om ($ quote == 0) $ result = $ resultat. $ xml_elem ['value']; $ quote = 1; annat $ result = $ result. "". $ xml_elem ['värde']; om (strcmp ($ xml_elem ['tag'] , = RESULTAT) === 0) if ($ first == 0) if (strcmp ($ version, "thai") === 0) // // Sidan returnerar bara boknamn på engelska. Översätt dem // till Thai. // $ blist = explodera ("", $ xml_elem ['value']); $ bname = "; $ bver = "; if (count ($ blist) == 3) $ bname = $ blist [0]. $ blist [1]; $ bver = $ blist [2]; elseif $ 4 $ $ bname = $ blist [0]. $ Blist [1]. $ Blist [2]; $ bver = $ blist [3]; annat $ bname = $ blist [0]; $ bver = $ blist [1]; $ result = $ bok [$ bname]. "". $ bver; else // // engelska är bra här. // $ result = $ xml_elem ['value']; $ först = 1; annat $ result = $ result. '"'. "\ n \ n". $ Xml_elem [ 'värde']; $ quote = 0; returnera $ resultat. '' '; // // Hämta PopClip Environment variablerna för // extension. // $ vers = trim (getenv (' POPCLIP_TEXT ')); $ qKJV = getenv (' POPCLIP_OPTION_BIBLEKJV '); $ qThaiKJV = getenv "POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = ""; // // Om preferensen är inställd på KJV eller kommandotangenten // trycks, får du versen från Engelska KJV // och lägg till resultatet. Om både kommandotangenten // och kontrolltangenten trycks, får du KJV också. // om (($ qKJV [0] == '1') || ( $ keycode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ vers, "kjv"). "\ n"; // // Om preferensen är inställd på den thailändska KJV eller // kontrollknappen trycker på får du versen från // Thai KJV och lägger till resultatet. Om både // kommandotangenten och kontrolltangenten trycks, // får du den thailändska versionen också. // $ results. = getBibleVerse ($ vers, "thai"). "\ n" n "; // // Any En sak som hämtats från skriptet kommer att klistras in // till toppen av PopClip. Om resultatet // är inget, returnera du versen. // om (strcmp ($ results, "") === 0) echo $ vers; annars echo $ results; ?>
Det första i skriptet är en uppsättning av namnen på böckerna i Bibeln. Denna array är för att översätta de engelska boknamnen till deras thailändska motsvarighet. Webben api som förlängningsanvändningen endast ger referenser på engelska. Så, de engelska bibelns boknamn måste översättas till thailändska.
Den första funktionen är en hjälpfunktion. Det är en PHP-rutin för att begära information från en webbplats som använder curl och returnerar resultaten till anropsprogrammet. Inmatningen är adressens url.
Den andra funktionen är huvudfunktionen för bearbetning av bibelversen. Den kommer att begära bibelversen och bearbeta den resulterande XML till ett mer läsbart format för att klistra in i textredigeraren eller vad som helst program är för närvarande aktivt. Parametrarna är den faktiska bibelversen och designatorn för vilken bibel att begära. För King James Bibeln är det kjv. För den thailändska bibeln är det thai. Du kan få andra koder från länken ovan.
PopClip skickar information till skriptet genom miljövariabler. Det är ett enkelt sätt att kommunicera. Så här får du tillgång till den informationen.
// // Hämta PopClip Environment-variablerna för // förlängningen. // $ vers = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ("POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = "";
PHP-funktionen getenv ()
hämtar miljövariabeln som anges i strängen för funktionssamtalet. Alla miljövariablerna är strängar och måste användas som sådana. De olika miljövariablerna är:
POPCLIP_TEXT
Denna variabel är valet när PopClip åberopades. Eftersom användaren av förlängningen skulle kunna välja extra vitt utrymme, gillar jag alltid att använda trimma()
funktion för att ta bort eventuellt extra vitt utrymme.
POPCLIP_OPTION_BIBLEKJV
Denna variabel är alternativet om att få versen från King James-versionen. Det är en sträng som innehåller tecknet 1 Om det är sant, annars innehåller det karaktären 0.
POPCLIP_OPTION_BIBLETHAIKJV
Denna variabel är alternativet om att få versen från den thailändska kung James versionen. Det är en sträng som innehåller tecknet 1 Om det är sant, annars innehåller det karaktären 0.
POPCLIP_MODIFIER_FLAGS
Detta berättar att använda vilka tangenter som trycktes medan PopClip-åtgärden valdes. Allt som passerat i en miljövariabel är en sträng. Därför måste strängarna översättas till ett lättanvänt format också. Jag använder intval ()
funktionen för att konvertera strängen till ett heltal.
Alla olika nyckelkodsvärden visas i GitHub PopClip Extensions.
Såsom kan ses, har varje alternativ i inställningarna för förlängningen sin egen motsvarande miljövariabel.
$ Resultat variabeln är också inställd på en tom sträng för de följande två sektionerna för att fylla på.
Huvuddelen av någon popclip-förlängning är att ta variablerna passerade i miljön och göra något användbart med det.
// // Om preferensen är inställd på KJV eller kommandotangenten // trycks, får du versen från den engelska KJV // och lägger till den i resultatet. // if (($ qKJV [0] == '1') || ($ keycode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ vers, "kjv"). "\ n";
Detta avsnitt av kod hämtar versen från King James-versionen om den ställdes in i inställningarna (variabeln $ qKJV) eller kommandotangenten pressades medan du valde PopClip-åtgärden ($ nyckelkoden är 1048576). Det kommer också att begära om både kontroll- och kommandotangenterna trycks ($ nyckelkod är 1310720). Eftersom variabeln $ qKJV är en sträng som är 1 eller 0 kan du kontrollera att den första karaktären är en karaktär 1. På så sätt behöver den inte behandlas till ett nummer. Det kan spara lite tid!
Om villkoret är sant, hämtas verserna med hjälp av getBibleVerse ()
funktionen och bifogas till resultatsträngen $.
// // Om inställningen är inställd på den thailändska KJV eller // kontrollknappen trycker på får du versen från // Thai KJV och lägger den till resultatet. // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ resultat. = getBibleVerse ($ vers, "thai"). "\ N";
Här är det liknande. Om den thailändska kung James-versionen valdes i preferenser ($ qThaiKJV) eller kontrolltangenten trycktes medan du valde PopClip-åtgärden ($ nyckelkod är 262144), kommer den thailändska King James-versionen att begäras. Den kommer också att begära om både kontroll- och kommandotangenterna trycks ($ nyckelkod är 1310720).
Om villkoret är sant, hämtas verserna med hjälp av getBibleVerse ()
funktionen och bifogas till resultatsträngen $.
// // Allt som hämtats från skriptet kommer att klistras in // till toppen av PopClip. Om resultatet // är inget, returnera du versen. // om (strcmp ($ results, "") === 0) echo $ vers; annars echo $ results;
Här måste resultaten återges. Men, om resultaten bufferten är tom, bör versen echoas. Om en tom sträng echoas, raderar den effektivt det som valdes. Eftersom allt är ett alternativ, är det möjligt att komma hit med $ resultat
variabel tom. Bra programmeringspraxis säger att vi alltid tar hänsyn till varje möjlighet.
När förlängningen är laddad till PopClip och inställningarna är inställda, är förlängningen lätt att använda. Välj bara lite text som är en bibelreferens.
Välja en versNär PopClip-fältet visas, välj den vita bibeln och valet kommer att ändras till versen. Här ställdes in preferenser för både KJV- och ThaiKJV-versioner som ska skrivas ut.
Ersätt VersOm texten inte stämmer överens med det vanliga uttrycket för en bibelreferens, kommer inte Bibelns ikon att visas.
Urvalet är inte en versDetta hjälper till att spara fastigheter på PopClip-fältet. När du skapar en förlängning, tänk på hur du minimerar onödiga framträdanden av din förlängning.
Nu har du en snygg liten PopClip-förlängning för att få vers från en webbplats och klistra in dem i din ansökan. Ännu bättre än det, du vet nu hur man skapar en preferenspanel för din förlängning, ta fram den informationen från din förlängning, manipulera den markerade texten och klistra in den i den översta applikationen. Du kan ta den här koden och expandera den eller använda den som ett skelett för din egen PopClip-förlängning. Låt alla veta hur du använder det i kommentarerna!