PopClip Skripterweiterungen

PopClip ist ein großartiges Hilfsprogramm, das, wenn man sich erst einmal daran gewöhnt hat, sehr schwer zu leben ist. Dieses Tutorial zeigt, wie Sie eine Skripterweiterung schreiben, indem Sie eine Beispielerweiterung erstellen.

In diesem Tutorial zeige ich Ihnen, wie Sie eine PopClip-Erweiterung erstellen, indem Sie eine Erweiterung erstellen, die nach einer zu wählenden Bibelreferenz sucht, die Referenz in Englisch oder Thai mit einer Web-API nachschlagen und die entsprechenden Verse einfügen . Sie werden lernen, eine PopClip-Erweiterung zu erstellen, die ein PHP-Skript, einen regulären Ausdruck zur Aktivierung, das Festlegen von Voreinstellungen, die der Benutzer bearbeiten kann, und die Verwendung von Tastenkombinationen zum Überschreiben der Voreinstellungen verwendet.


Erweiterung definieren

Als erstes sollten Sie entscheiden, was die Erweiterung tun soll. Sie sollten jede Erweiterung immer mit einer einzigen Funktionalität erstellen. Da ich Missionar bin, schreibe ich ständig Notizen zu Bibelstellen. Ich hätte gerne eine Erweiterung, die eine biblische Referenz enthält und diesen oder meine Verse in thailändischer und englischer Sprache in mein Dokument einfügt. Deshalb wird die Erweiterung genau das tun!

Aber manchmal brauche ich vielleicht nur die eine oder andere Sprache. Daher muss die Erweiterung über ein Voreinstellungsfeld und Hotkeys verfügen, um die Voreinstellungen zu überschreiben. Das hört sich nach viel Arbeit an, aber PopClip macht es einfach.

Ich fand eine großartige Website, Epheser 4:14, die das Herunterladen von Versen aus der King James Bible in Englisch und der Thai King James Bible ermöglicht. Da ich mit der thailändischen Sprache arbeite, sind dies die einzigen Bibeln, die ich brauche. Sie haben auch viele andere Sprachen. Daher können Sie die Sprache hinzufügen, die Sie interessieren könnte.


Popclip-Ressourcen

Wenn Sie PopClip erst kürzlich installiert haben, lesen Sie zuerst das PopClip-Benutzerhandbuch. Das Lernprogramm zum Erstellen einer eigenen benutzerdefinierten Erweiterung für PopClip bietet eine großartige Einführung in PopClip und die Erstellung von Erweiterungen, für die keine Programmierung erforderlich ist. Dieses Tutorial konzentriert sich auf Skriptprogrammierungserweiterungen für PopClip.

Pilotmoon bietet eine vollständige Liste der Konfigurationsoptionen für Plist. Beachten Sie immer die aktuelle Dokumentation der Erweiterungsschnittstelle für PopClip.

Die Erweiterung wird in PHP geschrieben. Wenn Sie nicht wissen, wie Sie in PHP programmieren, finden Sie auf Tuts +: PHP Fundamentals einen hervorragenden Videokurs.


Die Dateistruktur

Erstellen Sie ein Verzeichnis, in dem Sie an Ihrem Computer arbeiten werden popclipBible.popclipext. Dieses Verzeichnis sieht wie eine normale Datei aus, wenn Sie jedoch mit der rechten Maustaste darauf klicken und das Popup-Menü auswählen Paketinhalt anzeigen, Es wird der Inhalt dieses Verzeichnisses angezeigt. Sie müssen die Dateien erstellen Config.plist, bible.php, und bible.png in diesem Verzeichnis.

Config.plist ist die plist-Datei, die im nächsten Abschnitt beschrieben wird. bible.php enthält das auszuführende PHP-Skript. bible.png ist die Grafikdatei für die Erweiterung. Alle diese befinden sich oben in der Download-Datei.


Der Plist

Alle Erweiterungen für PopClip beginnen mit einer plist-Datei namens Config.plist. Diese Datei teilt PopClip mit, wie die Erweiterung in die Welt von PopClip passt. Die vollständige Liste dieser Erweiterung lautet:

     Aktionen   Nach dem Einfügen-Ergebnis Bilddatei bible.png Skript-Interpreter / usr / bin / php Shell-Skriptdatei bible.php Titel Bibel   Optionen   Optionskennung Bibelkjv Optionstyp boolean Optionsbezeichnung KJB   Optionskennung biblethaikjv Optionstyp boolean Optionsbezeichnung Thai KJV   Erweiterungsbeschreibung Nachschlagen von Bibelversen in Popclip. Erweiterungskennung com.customct.popclip.extension.bible Erweiterungsname Bibel Langes Laufen  Regulären Ausdruck (. * \ d + \: \ d + (\ - \ d +) *) Erforderliche Softwareversion 701  

Wie zu sehen ist, handelt es sich um eine XML-formatierte Datendatei. Diese Datendatei teilt PopClip mit, was es zum Ausführen der Erweiterung wissen muss.

Dies ist der nackte Knochen, der für diese Erweiterung benötigt wird. Das Hauptwörterbuch enthält die Schlüssel Aktionen und Optionen. Dies sind die wichtigsten Einträge, um die Funktionalität der Erweiterung bereitzustellen. Ich werde sie im Folgenden genauer beschreiben. Die anderen Schlüssel sind:

Erweiterungsbeschreibung
Dieser Schlüssel enthält eine Beschreibung der Funktion der Erweiterung. Dies muss kurz sein, aber beschreibend.

Erweiterungskennung
Dieser Schlüssel gibt eine eindeutige Kennung für Ihre Erweiterung an. Ich habe es für meine Einzigartigkeit von meiner Website entfernt. Es kann durch eine beliebige alphanumerische Sequenz erfolgen, aber etwas Lesbares ist immer schön.

Erweiterungsname
Dieser Schlüssel ist der Name der Erweiterung. Ich nenne es einfach Bibel.

Langes Laufen
Dieser Schlüssel ist auf true festgelegt, da er einen Web-API-Aufruf durchführt, der aufgrund der Nettogeschwindigkeit eine Weile dauern kann. PopClip zeigt während der Aktion einfach ein Wartesymbol an.

Wenn die Erweiterung nicht lange dauert, sollte sie falsch sein.

Regulären Ausdruck
Der Wert dieses Schlüssels ist ein regulärer Ausdruck, der das Starten der Erweiterung nur zulässt, wenn für den aktuell ausgewählten Text "true" festgelegt wird. Wenn Sie einen regulären Ausdruck schreiben, der nur mit einer Bibelreferenz übereinstimmt, wird die Bibelerweiterung nicht nur bei der Textauswahl angezeigt.

Nutzen Sie diese Funktion gut. Wenn Sie eine beliebige Textauswahl anzeigen, wird es für den Benutzer der Erweiterung schwieriger. Überlegen Sie, wie jemand die Erweiterung verwenden und einen guten regulären Ausdruck für diesen Fall erstellen möchte.

Wenn Sie beim Schreiben regulärer Ausdrücke ein wenig verrostet sind, sollten Sie diesen Artikel über Net Tuts lesen+.

Erforderliche Softwareversion
Dieser Schlüssel gibt die Version von PopClip an, die diese Erweiterung benötigt.


Aktionen

Die Aktionstasten definieren die Aktion, die die Erweiterung ausführt. Es gibt viele Möglichkeiten, aber dieses Tutorial konzentriert sich nur auf die benötigten Elemente. Sie sind wie folgt:

Nach dem
Dies gibt die Aktion an, die nach dem Ausführen des Skripts ausgeführt werden soll. Einfügen-Ergebnis fügt in der obersten Anwendung den Text ein, den das Skript ausgibt.

Bilddatei
Dieser Schlüssel gibt das Symbol an, das für diese Erweiterung verwendet wird. Da sich das Symbol im selben Bereich wie die Erweiterung befindet, können Sie einfach auf die Datei verweisen: bible.png. Wenn Sie die Symbole in einem Unterverzeichnis der Erweiterung behalten möchten, verwenden Sie einen relativen Verweis auf diese Datei.

Skript-Interpreter
Diese Taste legt fest, dass der Interpreter zur Verarbeitung des Skripts verwendet wird. Da ich dieses Programm in PHP mache, muss es auf allen Macs auf den Standard-PHP-Interpreter verweisen: / usr / bin / php. Sie können den vollständigen Pfad zu jedem Interpreter angeben, den Sie zum Schreiben von Erweiterungen verwenden möchten.

Shell-Skriptdatei
Dieser Schlüssel definiert die Datei im Verzeichnis der auszuführenden Erweiterung. Der Dateiname lautet: bible.php.

Titel
Dieser Schlüssel ist der Titel der Erweiterung: Bibel.


Optionen

Das Optionen Schlüssel enthält ein Array von Wörterbüchern. Ein Wörterbuch für jede Option im Einstellungsbereich für die Erweiterung. Für diese Erweiterung sollte der Benutzer die Möglichkeit haben, die KJV-Bibel oder die thailändische KJV-Bibel einzufügen. Da ich zwei Optionen für diese Erweiterung habe, werde ich jeden Schlüssel in der Optionen Wörterbuch und sagen Sie, was ich für jede Option verwendet habe.

Optionskennung
Dieser Schlüssel gibt PopClip einen eindeutigen Namen für die Option, die Sie für Ihre Erweiterung benötigen. Dies wird in der Umgebungsvariablen verwendet, die an Ihr Programm übergeben wird. Für die beiden Optionen werden diese IDs verwendet: Bibelkjv und biblethaikjv.

Optionstyp
Dieser Schlüssel definiert, um welche Art von Option es sich handelt. Es kann entweder sein boolean (ja oder Nein), Schnur (beliebige Zeichenfolge) oder mehrere (Sie geben eine Liste von Optionen an und der Benutzer kann aus ihnen auswählen). Das boolean Typ ist, was für diese Erweiterung benötigt wird.

Optionsbezeichnung
Dieser Schlüssel definiert den Text, der im Optionsbereich für die Erweiterung verwendet werden soll. Für diese Erweiterung die Etiketten KJB und Thai KJV wird funktionieren.

Wenn diese Optionen in der Liste definiert sind, wird ein Voreinstellungsfenster zum Bearbeiten der Voreinstellungen erstellt. So wird es aussehen:

Einstellungen für die Erweiterung der Bibel

Das Skript

Nun muss das Skript geschrieben werden. Das vollständige Skript lautet:

  $ url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 4); $ ch = curl_init (); curl_setopt_array ($ ch, ($ options + $ defaults)); if (! $ result = curl_exec ($ ch)) trigger_error (curl_error ($ ch));  curl_close ($ ch); $ Ergebnis zurückgeben;  // // Funktion: getBibleVerse // // Beschreibung: Diese Funktion dient zum Abrufen eines // Bibelvers von der Website // api.preachingcentral.com. // // Eingaben: // $ verse Die Verse, nach denen gesucht werden soll. // $ version Die Version der zu verwendenden Bibel. // function getBibleVerse ($ verse, $ version) global $ book; $ result = ""; $ raw = Urlencode ($ 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 als $ xml_elem) if (strcmp ($ xml_elem ['tag'], "TEXT") === 0) if ($ quote == 0) $ result = $ result. '' '. $ xml_elem [' value ']; $ quote = 1; else $ result = $ result. "". $ xml_elem [' value ']; if (strcmp ($ xml_elem [' tag '] , "RESULT") === 0) if ($ first == 0) if (strcmp ($ version, "thai") === 0) // // Die Site gibt nur Buchnamen in Englisch zurück. // Übersetzen Sie sie in Thai. // $ blist = explode ("", $ xml_elem ['value']); $ bname = "; $ bver = "; if (count ($ blist) == 3) $ bname = $ blist [0]. $ blist [1]; $ bver = $ blist [2]; elseif (count ($ blist) =) = 4) $ bname = $ blist [0]. $ Blist [1]. $ Blist [2]; $ bver = $ blist [3]; else $ bname = $ blist [0]; $ bver = $ blist [1]; $ result = $ book [$ bname]. "". $ bver; else // // Englisch ist hier in Ordnung. // $ result = $ xml_elem ['value']; $ first = 1; else $ result = $ result. '"'. "\ n \ n". $ xml_elem ['value'];  $ quote = 0;  $ Ergebnis zurückgeben. '"'; // // Ruft die PopClip-Umgebungsvariablen für die // Erweiterung ab. // $ verse = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ( "POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = ""; // // Wenn die Einstellung auf KJV oder die Befehlstaste // gesetzt ist, rufen Sie den Vers auf English KJV // und fügen Sie es dem Ergebnis hinzu. Wenn sowohl die Befehlstaste // als auch die Steuertaste gedrückt werden, erhalten Sie auch die KJV. // if (($ qKJV [0] == '1') || ( $ keycode == 1048576) || ($ keycode == 1310720)) $ result. = getBibleVerse ($ verse, "kjv"). "\ n"; // // Wenn die Einstellung auf die thailändische KJV eingestellt ist oder die // Steuertaste wird gedrückt, dann wird der Vers vom // Thai KJV abgerufen und zum Ergebnis hinzugefügt. Wenn sowohl die // Befehlstaste als auch die Steuertaste gedrückt wird, //, dann auch die thailändische Version. // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ result. = getBibleVerse ($ verse, "thai"). "\ n "; // // Any Was vom Skript wiederholt wird, wird von PopClip in // der obersten Anwendung eingefügt. Wenn die Ergebnisse // nichts sind, dann geben Sie den Vers zurück. // if (strcmp ($ resultiert, "") === 0) echo $ verse;  else echo $ results; ?>

Das erste, was im Skript steht, ist eine Reihe von Namen der Bücher in der Bibel. Dieses Array dient zum Übersetzen der englischen Buchnamen in ihre thailändische Entsprechung. Die Web-API, die die Erweiterung verwendet, enthält nur Verweise auf Englisch. Die englischen Bibelbuchnamen müssen also ins Thailändische übersetzt werden.

Die erste Funktion ist eine Hilfsfunktion. Es ist eine PHP-Routine, um Informationen von einer Website mit curl anzufordern und die Ergebnisse an das aufrufende Programm zurückzugeben. Die Eingabe ist die URL der Anfrage.

Die zweite Funktion ist die Hauptfunktion für die Verarbeitung des Bibelvers. Es wird den Bibelvers anfordern und das resultierende XML in ein besser lesbares Format für das Einfügen in den Texteditor oder das aktuell aktive Programm verarbeiten. Die Parameter sind der tatsächliche Bibelvers und der Bezeichner, für den die Bibel angefordert werden soll. Für die King James Bible ist es das kjv. Für die thailändische Bibel ist es das thai. Sie können andere Codes von der Website-Verknüpfung oben erhalten.


Informationen aus der Umgebung abrufen

PopClip sendet Informationen über Umgebungsvariablen an das Skript. Es ist eine einfache Art zu kommunizieren. So greifen Sie auf diese Informationen zu.

 // // Ruft die PopClip-Umgebungsvariablen für die // Erweiterung ab. // $ verse = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ("POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = "";

Die PHP-Funktion getenv () ruft die in der Zeichenfolge angegebene Umgebungsvariable für den Funktionsaufruf ab. Alle Umgebungsvariablen sind Zeichenfolgen und müssen als solche verwendet werden. Die verschiedenen Umgebungsvariablen sind:

POPCLIP_TEXT
Diese Variable ist die Auswahl, wenn PopClip aufgerufen wurde. Da der Benutzer der Erweiterung zusätzliche Leerzeichen auswählen konnte, benutze ich immer gerne die trimmen() Funktion, um zusätzliche Leerzeichen zu entfernen.

POPCLIP_OPTION_BIBLEKJV
Diese Variable ist die Option, die Vers von der King James-Version zu erhalten. Es ist eine Zeichenfolge, die das Zeichen enthält 1 Wenn ja, enthält es sonst das Zeichen 0.

POPCLIP_OPTION_BIBLETHAIKJV
Diese Variable ist die Option, den Vers von der thailändischen King James-Version abzurufen. Es ist eine Zeichenfolge, die das Zeichen enthält 1 Wenn ja, enthält es sonst das Zeichen 0.

POPCLIP_MODIFIER_FLAGS
Dies zeigt an, welche Tasten gedrückt wurden, während die PopClip-Aktion ausgewählt wurde. Alles, was in einer Umgebungsvariablen übergeben wird, ist eine Zeichenfolge. Daher müssen die Zeichenfolgen auch in ein benutzerfreundliches Format übersetzt werden. Ich verwende das intval () Funktion, um den String in eine Ganzzahl zu konvertieren.

Alle verschiedenen Schlüsselcodewerte werden im GitHub der PopClip-Erweiterungen angezeigt.

Wie zu sehen ist, hat jede Option in den Voreinstellungen für die Erweiterung eine eigene Umgebungsvariable.

Die $ result-Variable wird auch auf eine leere Zeichenfolge gesetzt, damit die nächsten beiden Abschnitte gefüllt werden.


Verarbeitung der Umgebungsvariablen

Der Hauptbestandteil einer PopClip-Erweiterung besteht darin, die in der Umgebung übergebenen Variablen zu verwenden und etwas Nützliches damit zu machen.

 // // Wenn die Einstellung auf KJV gesetzt ist oder die Befehlstaste // gedrückt wird, dann holen Sie sich den Vers vom englischen KJV // und fügen Sie ihn zum Ergebnis hinzu. // if (($ qKJV [0] == '1') || ($ keycode == 1048576) || ($ keycode == 1310720)) $ result. = getBibleVerse ($ verse, "kjv"). "\ n"; 

Dieser Codeabschnitt ruft den Vers von der King James-Version ab, wenn er in den Voreinstellungen festgelegt wurde (die Variable $ qKJV) oder die Befehlstaste gedrückt wurde, während die PopClip-Aktion ausgewählt wurde ($ keycode ist 1048576). Es fordert es auch an, wenn sowohl die Steuer- als auch die Befehlstaste gedrückt werden ($ keycode ist 1310720). Da die Variable $ qKJV eine Zeichenfolge ist, die 1 oder 0 ist, können Sie prüfen, ob das erste Zeichen ein Zeichen 1 ist. Auf diese Weise muss keine Zahl verarbeitet werden. Das kann etwas Zeit sparen!

Wenn die Bedingung erfüllt ist, werden die Verse mit Hilfe von abgerufen getBibleVerse () Funktion und an die $ Ergebniszeichenfolge angehängt.

 // // Wenn die Einstellung auf die Thai-KJV eingestellt ist oder die Taste // gedrückt wird, holen Sie den Vers von der // Thai-KJV ab und fügen Sie ihn dem Ergebnis hinzu. // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ result. = getBibleVerse ($ verse, "thai"). "\ n"; 

Hier ist es ähnlich. Wenn die Thai King James-Version in den Voreinstellungen ausgewählt wurde ($ qThaiKJV) oder die Steuertaste gedrückt wurde, während die PopClip-Aktion ausgewählt wurde ($ keycode ist 262144), wird die Thai King James-Version angefordert. Es fordert es auch an, wenn sowohl Steuer- als auch Befehlstasten gedrückt werden ($ keycode ist 1310720)..

Wenn die Bedingung erfüllt ist, werden die Verse mit Hilfe von abgerufen getBibleVerse () Funktion und an die $ Ergebniszeichenfolge angehängt.

 // // Alles, was aus dem Skript hervorgeht, wird von PopClip in // der obersten Anwendung eingefügt. Wenn die Ergebnisse // nichts sind, dann geben Sie den Vers zurück. // if (strcmp ($ resultiert, "") === 0) echo $ verse;  else echo $ results; 

Hier müssen die Ergebnisse wiederholt werden. Wenn der Ergebnispuffer jedoch leer ist, sollte der Vers wiederholt werden. Wenn eine leere Zeichenfolge wiederholt wird, wird die Auswahl gelöscht. Da alles eine Option ist, ist es möglich, mit der $ Ergebnisse Variable leer Nach guten Programmierpraktiken müssen wir immer jede Möglichkeit berücksichtigen.


Verwendungszweck

Sobald die Erweiterung in PopClip geladen und die Voreinstellungen festgelegt sind, ist die Erweiterung einfach zu verwenden. Wählen Sie einfach einen Text aus, der eine Bibelreferenz ist.

Einen Vers auswählen

Wenn die PopClip-Leiste angezeigt wird, wählen Sie die weiße Bibel aus und die Auswahl wird in den Vers geändert. Hier wurden die Einstellungen für die zu druckenden Versionen KJV und ThaiKJV festgelegt.

Verse ersetzt

Wenn der Text nicht mit dem regulären Ausdruck für eine Bibelreferenz übereinstimmt, wird das Bibelsymbol nicht angezeigt.

Auswahl kein Vers

Dies hilft, Immobilien in der PopClip-Leiste zu sparen. Wenn Sie eine Erweiterung erstellen, sollten Sie sich überlegen, wie Sie das Aussehen Ihrer Erweiterung minimieren.


Zusammenfassung

Jetzt haben Sie eine nette PopClip-Erweiterung, mit der Sie Verse von einer Website abrufen und in Ihre Anwendung einfügen können. Darüber hinaus wissen Sie jetzt, wie Sie ein Voreinstellungsfenster für Ihre Erweiterung erstellen, diese Informationen von Ihrer Erweiterung abrufen, den ausgewählten Text bearbeiten und wieder in die oberste Anwendung einfügen. Sie können diesen Code verwenden und erweitern oder als Skelett für Ihre eigene PopClip-Erweiterung verwenden. Lassen Sie alle wissen, wie Sie es in den Kommentaren verwenden!