PopClip Extensii de scripting

PopClip este un program utilitar care, odată ce te obișnuiești cu asta, este foarte greu să trăiești fără. Acest tutorial va arăta cum să scrieți o extensie de scripting făcând o extensie de exemplu.

În acest tutorial vă voi arăta cum să creați o extensie PopClip prin construirea unei extensii care să caute o referință biblică care să fie selectată, căutarea referinței în limba engleză sau thailandeză folosind un API Web și lipirea corespunzătoare a versurilor . Veți învăța să creați o extensie PopClip care utilizează un script PHP, expresie regulată pentru activare, setarea preferințelor pe care utilizatorul le poate edita și utilizarea tastelor rapide pentru a suprascrie preferințele.


Definirea extensiei dvs.

Primul lucru pe care trebuie să-l faceți este să decideți ce va face extinderea. Ar trebui să creați întotdeauna fiecare extensie cu o singură funcționalitate în minte. De vreme ce sunt misionar, scriu tot timpul note despre versetele biblice. Aș dori să am o extensie care va lua o referință biblică și va lipi acest verset sau versuri în documentul meu, atât în ​​limba thailandeză, cât și în engleză. Prin urmare, extensia va face exact asta!

Dar câteodată aș putea avea nevoie de una sau de cealaltă limbă. Prin urmare, extinderea trebuie să aibă un panou de preferințe și taste rapide pentru a suprascrie preferințele. Acest lucru ar putea părea o mulțime de muncă, dar PopClip face mai ușor.

Am găsit un mare site web, Efeseni 4:14, care permite descărcarea versetelor atât din Biblia regelui James în limba engleză, cât și din biblia Thai din regatul James. De când lucrez cu limba thailandeză, acestea sunt singurele Biblii de care am nevoie. Ei au, de asemenea, multe alte limbi. Prin urmare, puteți adăuga orice limbă ar putea să vă intereseze.


Resurse Popclip

Dacă ați instalat recent PopClip, citiți mai întâi Ghidul utilizatorului PopClip. Tutorialul "Creare propria extensie personalizata pentru PopClip" ofera o introducere minunata in PopClip si cum se fac extensii care nu necesita programare. Acest tutorial se va concentra pe extensiile de programare a script-urilor pentru PopClip.

Pilotmoon oferă o listă completă a opțiunilor fișierului de configurare plist. Consultați întotdeauna acest lucru pentru o documentație actualizată a interfeței de extensii pentru PopClip.

Extensia va fi scrisă în PHP. Dacă nu știți cum să programați în PHP, un curs video excelent poate fi găsit pe Tuts +: Fundamente PHP.


Structura fișierului

Oriunde lucrați pe calculatorul dvs., creați un director numit popclipBible.popclipext. Acest director va arăta ca un fișier normal, dar când faceți clic dreapta pe el și selectați meniul pop-up Afișați conținutul pachetului, va afișa conținutul acelui director. Trebuie să creați fișierele Config.plist, bible.php, și bible.png în acest director.

Config.plist este fișierul plist descris în secțiunea următoare. bible.php va conține scriptul PHP care va fi executat. bible.png este fișierul grafic pentru extensie. Toate acestea sunt în fișierul de descărcare din partea de sus.


Plistul

Toate extensiile pentru PopClip încep cu un fișier plist numit Config.plist. Acest fișier le spune PopClip modul în care extensia se încadrează în lumea PopClip. Plistul complet pentru această extensie este:

     acţiuni   După paste rezultate Fișier imagine bible.png Scriitor Interpret / Usr / bin / php Shell Script File bible.php Titlu Biblie   Opțiuni   Identificator de opțiuni biblekjv Tip de opțiune boolean Etichetă de opțiuni KJB   Identificator de opțiuni biblethaikjv Tip de opțiune boolean Etichetă de opțiuni Thai KJV   Extensie Descriere Căutați versuri biblice în Popclip. Cod de extensie com.customct.popclip.extension.bible Nume prelungire Biblie Lungă  Expresie uzuala (* \ D + \:. \ D + (\ - \ d +) *) Versiunea software necesară 701  

După cum se poate observa, este un fișier de date format XML. Acest fișier de date îi spune PopClip tot ce trebuie să știe pentru a rula extensia.

Acesta este plistul oaselor goale necesare pentru această extensie. Dicționarul principal are tastele acţiuni și Opțiuni. Acestea sunt principalele intrări pentru furnizarea funcționalității extensiei. Le voi descrie în detaliu mai jos. Celelalte chei sunt:

Extensie Descriere
Această cheie oferă o descriere a ceea ce va face extensia. Acest lucru trebuie să fie scurt, dar descriptiv.

Cod de extensie
Această cheie oferă un identificator unic pentru extensia dvs. M-am bazat pe site-ul meu pentru unicitatea completă. Poate prin orice secvență alfa-numerică, dar ceva ușor de citit este întotdeauna frumos.

Nume prelungire
Această cheie este numele extensiei. Numesc pur și simplu Biblie.

Lungă
Această cheie este setată la adevărată, deoarece va face un apel pe Web API care durează un timp pentru a termina din cauza vitezei nete. Acest lucru are pur și simplu PopClip afișând o pictogramă de așteptare în timp ce efectuați acțiunea.

Dacă extensia nu durează mult, ar trebui să fie falsă.

Expresie uzuala
Valoarea acestei chei este o expresie regulată care va permite lansarea extensiei numai dacă afirmă că este adevărată pentru textul selectat în prezent. Prin scrierea unei expresii regulate care se va potrivi doar cu o referință biblică, nu va afișa extensia Bibliei doar pe baza oricărei selecții de text.

Utilizați bine această caracteristică. Afișarea cu orice selecție de text face mai dificilă utilizatorul extensiei. Gândiți-vă cum cineva ar dori să folosească extensia și să creeze o expresie regulată bună pentru acel caz.

Dacă sunteți puțin ruginit când scrieți expresii regulate, atunci ar trebui să citiți acest articol pe Net Tuts+.

Versiunea software necesară
Această cheie specifică versiunea PopClip pe care această extensie are nevoie.


acţiuni

Tastele Acțiune sunt pentru definirea acțiunii pe care o va efectua extensia. Există o mulțime de posibilități, dar acest tutorial se va concentra doar pe elementele necesare. Ele sunt după cum urmează:

După
Aceasta specifică acțiunea pe care trebuie să o faceți după executarea scriptului. paste rezultate va lipi în cea mai mare aplicație de top orice text textul script-ul ecou out.

Fișier imagine
Această cheie specifică pictograma utilizată pentru această extensie. Deoarece pictograma din aceeași zonă ca extensia, puteți să vă referiți pur și simplu la fișier: bible.png. Dacă doriți să păstrați pictogramele într-un sub-director al extensiei, ați folosi o referință relativă la acel fișier.

Scriitor Interpret
Această cheie definește că interpretul va fi utilizat pentru procesarea scriptului. Din moment ce fac acest program în PHP, trebuie să fac referire la interpretul implicit PHP pe toate Mac-urile: / Usr / bin / php. Puteți plasa calea completă la orice interpret pe care doriți să îl utilizați pentru a scrie extensii.

Shell Script File
Această cheie definește fișierul din directorul extinderii pentru a rula. Numele fișierului este: bible.php.

Titlu
Această cheie este titlul extensiei: Biblie.


Opțiuni

Opțiuni cheia conține o serie de dicționare. Un dicționar pentru fiecare opțiune din panoul de preferințe pentru extensie. Pentru această extensie, utilizatorul ar trebui să aibă opțiunea de a lipi din Biblia KJV sau Biblia Thai KJV. Deoarece am două opțiuni pentru această extensie, voi descrie fiecare cheie din Opțiuni dicționar și spuneți ce am folosit pentru fiecare opțiune.

Identificator de opțiuni
Această tastă oferă PopClip un nume unic pentru opțiunea de care aveți nevoie pentru extensia dvs. Aceasta este folosită în variabila de mediu care este trecută în programul dvs. Pentru cele două opțiuni, aceste ID-uri vor fi utilizate: biblekjv și biblethaikjv.

Tip de opțiune
Această cheie definește ce tip de opțiune este. Poate fi și ea boolean (da sau nu), şir (orice șir) sau multiplu (Oferiți o listă de opțiuni și utilizatorul le poate alege). boolean tip este ceea ce este necesar pentru această extensie.

Etichetă de opțiuni
Această cheie definește textul de utilizat în panoul cu opțiuni pentru extensie. Pentru această extensie, etichetele KJB și Thai KJV va functiona.

Cu aceste opțiuni definite în plist, va fi creat un panou de preferințe pentru editarea preferințelor. Aspectul va arata astfel:

Biblia preferințelor de extindere

Scriptul

Acum, scenariul trebuie scris. Scriptul complet este:

  $ url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 4); $ ch = curl_init (); curl_setopt_array ($ ch, ($ opțiuni + $ implicite)); dacă ! result = curl_exec ($ ch)) trigger_error (curl_error ($ ch));  curl_close ($ ch); returneaza rezultatul $;  // // Funcție: getBibleVerse // // Descriere: Această funcție vizează recuperarea unui verset Biblic din site-ul api.preachingcentral.com //. // // Inputs: // $ verse Versetele care trebuie căutate. // $ version Versiunea bibliei de utilizat. // funcția getBibleVerse ($ verse, $ version) carte globală $; $ rezultat = ""; $ raw = codul url ($ verse); $ 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); $ first = 0; $ quote = 0; foreach ($ vals ca $ xml_elem) if (strcmp ($ xml_elem ['tag'], "TEXT") === 0) if ($ quote == 0) $ rezultat = $ rezultat. '$ xml_elem [' value ']; if ($ xml_elem [' value ']; $ quote = 1; else $ result = $ result. , "RESULT") === 0) if ($ first == 0) if (strcmp ($ version, "thai") === 0) // // Site-ul returnează numai numele cărților în limba engleză. Traduceți-le // în limba thailandeză. // $ blist = explode ("", $ xml_elem ['value']); $ bname = "; $ bver = "; if (count ($ blist) == 3) $ bname = $ blist [0]. $ blist [1]; $ bver = $ blist [ = 4) $ bname = $ blist [0]. $ Blist [1]. $ Blist [2]; $ bver = $ blist [3]; [$] $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ = 1; altceva $ result = $ result. '' '. "\ n \ n". $ Xml_elem [ 'valoare'];  quote = 0;  returnează rezultatul $. '' '; // // Obțineți variabilele PopClip Environment pentru extensia // // $ verse = trim (getenv (' POPCLIP_TEXT ')); $ qKJV = getenv (' POPCLIP_OPTION_BIBLEKJV '); $ qThaiKJV = getenv "POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = ""; // // Dacă preferința este setată la KJV sau tasta de comandă // este apăsată, English KJV // și adăugați-l la rezultat Dacă se apasă atât tasta de comandă //, cât și tasta de comandă, atunci obțineți și KJV // if (($ qKJV [0] == '1') || ( $ keycode == 1048576) || ($ keycode == 1310720)) $ results = = getBibleVerse ($ verse, "kjv"). \ n "; // // Dacă preferința este setată la Thai KJV sau cheia de control // este apăsată apoi obțineți versul din // Thai KJV și adăugați-o la rezultatul. Dacă se apasă atât tasta de comandă //, cât și tasta de control, apoi obțineți și versiunea thailandeză. dacă ($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "thai" n "; // // Orice lucru care a reieșit din script-ul va fi inserat în // la cea mai mare aplicație de top de PopClip. Dacă rezultatele // nu sunt nimic, întoarceți versul. // dacă (strcmp ($ results, "") === 0) echo $ verse;  altceva echo $ results; ?>

Primul lucru din script este o serie de nume ale cărților din Biblie. Această matrice este pentru traducerea numelor de cărți în limba engleză în echivalentul lor în Thailanda. Api-ul pe care extensia folosește numai trimite referințe în limba engleză. Deci, numele cărților biblice în limba engleză trebuie traduse în limba thailandeză.

Prima funcție este o funcție de ajutor. Este o rutină PHP pentru solicitarea de informații de pe un site web folosind curl și returnarea rezultatelor la programul de asteptare. Intrarea este urlul cererii.

A doua funcție este funcția principală pentru procesarea versetului Bibliei. Va cere versetul Bibliei și va procesa XML-ul rezultat într-un format mai ușor de citit pentru inserarea în editorul de text sau ce program vreodată este activ. Parametrii sunt versetul biblic actual și indicativul pe care Biblia îl cere. Pentru Biblia regelui James, este KJV. Pentru Biblia Thai, este tailandez. Puteți obține alte coduri de la link-ul site-ului de mai sus.


Obținerea de informații din mediul înconjurător

PopClip trimite informații către script prin intermediul variabilelor de mediu. Este o modalitate simplă de a comunica. Acesta este modul în care accesați aceste informații.

 // // Obțineți variabilele PopClip Environment pentru extensia //. // $ verse = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ("POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = "";

Funcția PHP getenv () va prelua variabila de mediu dată în șir pentru apelul funcției. Toate variabilele de mediu sunt șiruri de caractere și trebuie utilizate ca atare. Diferitele variabile de mediu sunt:

POPCLIP_TEXT
Această variabilă este selecția când a fost invocat PopClip. Deoarece utilizatorul extensiei ar putea selecta un spațiu alb suplimentar, îmi place să folosesc întotdeauna tunde() pentru a elimina orice spațiu alb suplimentar.

POPCLIP_OPTION_BIBLEKJV
Această variabilă este opțiunea despre obținerea versului din versiunea King James. Este un șir care conține caracterul 1 dacă este adevărat, altfel acesta conține caracterul 0.

POPCLIP_OPTION_BIBLETHAIKJV
Această variabilă este opțiunea despre obținerea versului din versiunea thailandeză King James. Este un șir care conține caracterul 1 dacă este adevărat, altfel acesta conține caracterul 0.

POPCLIP_MODIFIER_FLAGS
Acest lucru spune folosiți ce taste au fost apăsate în timp ce acțiunea PopClip a fost selectată. Tot ceea ce a trecut într-o variabilă de mediu este un șir. Prin urmare, șirurile trebuie să fie traduse într-un format ușor de utilizat, de asemenea. Eu folosesc intval () pentru a converti șirul la un număr întreg.

Toate valorile diferitelor coduri cheie sunt afișate în extensiile PopClip GitHub.

După cum se poate observa, fiecare opțiune din preferințele extensiei are propria variabilă de mediu corespunzătoare.

Variabila rezultat $ este, de asemenea, setată la un șir gol pentru următoarele două secțiuni pentru a se umple.


Procesarea variabilelor de mediu

Partea principală a oricărei extensii PopClip este de a lua variabilele transmise în mediul înconjurător și de a face ceva util cu acesta.

 // // Dacă preferința este setată la KJV sau tasta de comandă // este apăsată, obțineți versul din KJV Engleză // și adăugați-l la rezultat. // if ($ qKJV [0] == '1') || ($ keycode == 1048576) || ($ keycode == 1310720)) $ rezultate. = getBibleVerse ($ verse, "kjv"). "\ n"; 

Această secțiune de cod va prelua versul din versiunea King James, dacă a fost setat în preferințe (variabila $ qKJV) sau tasta de comandă a fost apăsată în timp ce selectați acțiunea PopClip (codul cheie este 1048576). Acesta va cere, de asemenea, dacă sunt apăsate atât tastele de control cât și comanda ($ keycode este 1310720). Deoarece variabila $ qKJV este un șir care este 1 sau 0, puteți verifica ca primul caracter să fie un caracter 1. În acest fel, nu trebuie să procesați un număr. Asta poate economisi ceva timp!

Dacă condiția este adevărată, atunci versurile sunt preluate folosind getBibleVerse () și adăugat la șirul de rezultate $.

 // // Dacă preferința este setată la KJV thailandez sau tasta de control // este apăsată apoi obțineți versul din // Thai KJV și adăugați-l la rezultat. // if ($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "thai"). "\ N"; 

Aici, este similar. Dacă versiunea thailandeză King James a fost selectată în preferințele ($ qThaiKJV) sau tasta de control a fost apăsată în timp ce se selectează acțiunea PopClip (codul chei $ este 262144), va fi solicitată versiunea Thai King James. Acesta va cere, de asemenea, dacă sunt apăsate atât tastele de control cât și comanda ($ keycode este 1310720).

Dacă condiția este adevărată, atunci versurile sunt preluate folosind getBibleVerse () și adăugat la șirul de rezultate $.

 // // Orice sondaj de pe script va fi inserat în / din topul aplicației PopClip. Dacă rezultatele // nu sunt nimic, întoarceți versul. // dacă (strcmp ($ results, "") === 0) echo $ verse;  altceva echo $ results; 

Aici, rezultatele trebuie să fie reluate. Dar, dacă tamponul de rezultate este gol, atunci versul ar trebui să fie reluat. Dacă un șir gol este echivalent, acesta șterge efectiv ceea ce a fost selectat. Deoarece totul este o opțiune, este posibil să ajungeți aici cu rezultate $ variabilă goală. Bunele practici de programare ne spun să luăm întotdeauna în considerare fiecare posibilitate.


folosire

Odată ce extensia este încărcată în PopClip și preferințele sunt setate, extensia este ușor de utilizat. Doar selectați un text care este o referință biblică.

Selectarea unui verset

Când apare bara PopClip, selectați biblia albă și selecția va fi modificată în versuri. Aici, preferințele au fost stabilite pentru versiunile KJV și ThaiKJV care urmează să fie tipărite.

Versiunea înlocuită

Dacă textul nu corespunde expresiei regulate pentru o referință biblică, atunci pictograma biblică nu va fi afișată.

Selecția nu este un verset

Acest lucru ajută la salvarea imobilelor pe bara PopClip. Ori de câte ori creați o extensie, gândiți-vă cum să minimalizați aparițiile inutile ale extensiei dvs..


rezumat

Acum, aveți o extensie de tip PopClip îngrijită pentru a obține versuri de pe un site web și pentru a le lipi în aplicația dvs. Chiar și mai bine, acum știți cum să creați un panou de preferințe pentru extensia dvs., să ajungeți la acele informații din extensia dvs., să manipulați textul selectat și să îl inserați în cea mai mare aplicație de top. Puteți lua acest cod și să îl extindeți sau să-l utilizați ca schelet pentru propria dvs. extensie PopClip. Permiteți tuturor să știe cum îl folosiți în comentarii!