PopClip es un gran programa de utilidad que, una vez que te acostumbras, es muy difícil vivir sin él. Este tutorial le mostrará cómo escribir una extensión de scripting haciendo una extensión de ejemplo.
En este tutorial, le mostraré cómo crear una extensión PopClip construyendo una extensión que busque una referencia bíblica para ser seleccionada, busque la referencia en inglés o tailandés usando una API web y pegue los versos apropiados en su lugar . Aprenderá a crear una extensión PopClip que usa un script PHP, una expresión regular para la activación, la configuración de las preferencias que el usuario puede editar y el uso de teclas de acceso rápido para anular las preferencias..
Lo primero que se debe hacer es decidir qué va a hacer la extensión. Siempre debe crear cada extensión con una sola funcionalidad en mente. Como soy misionero, escribo notas sobre los versículos de la Biblia todo el tiempo. Me gustaría tener una extensión que tome una referencia bíblica y pegue ese versículo o versículos en mi documento en tailandés e inglés. Por lo tanto, la extensión hará justamente eso.!
Pero, a veces podría necesitar uno u otro idioma. Por lo tanto, la extensión debe tener un panel de preferencias y teclas de acceso rápido para anular las preferencias. Eso puede parecer mucho trabajo, pero PopClip lo hace fácil.
Encontré un gran sitio web, Efesios 4:14, que permite la descarga de versos de la Biblia King James en inglés y la Biblia Thai King James. Como trabajo con el idioma tailandés, estas son las únicas Biblias que necesito. También tienen muchos otros idiomas. Por lo tanto, puede agregar cualquier idioma que le interese.
Si acaba de instalar PopClip, lea primero la Guía del usuario de PopClip. El tutorial, Crea tu propia extensión personalizada para PopClip, ofrece una excelente introducción a PopClip y cómo hacer extensiones que no requieran programación. Este tutorial se centrará en las extensiones de programación de script para PopClip.
Pilotmoon ofrece una lista completa de las opciones de archivo de configuración plist. Siempre refiérase a esto para obtener la documentación actualizada de la interfaz de extensiones para PopClip.
La extensión será escrita en PHP. Si no sabe cómo programar en PHP, puede encontrar un excelente curso de video en Tuts +: PHP Fundamentals.
Donde sea que esté trabajando en su computadora, cree un directorio llamado popclipBible.popclipext. Ese directorio se verá como un archivo normal, pero cuando haga clic derecho en él y seleccione el menú emergente Mostrar el contenido del paquete, Mostrará los contenidos de ese directorio. Necesitas crear los archivos. Config.plist, biblia.php, y biblia.png en este directorio.
Config.plist es el archivo plist descrito en la siguiente sección. biblia.php contendrá el script PHP para ser ejecutado. biblia.png Es el archivo gráfico de la extensión. Todos estos están en el archivo de descarga en la parte superior.
Todas las extensiones para PopClip comienzan con un archivo plist llamado Config.plist. Este archivo le dice a PopClip cómo la extensión se ajusta al mundo de PopClip. La lista completa para esta extensión es:
Comportamiento Después pegar resultado Archivo de imagen biblia.png Intérprete de guiones / usr / bin / php Archivo de script de shell biblia.php Título Biblia Opciones Identificador de opción Biblekjv Tipo de opción booleano Etiqueta de opción KJB Identificador de opción biblethaikjv Tipo de opción booleano Etiqueta de opción KJV tailandés Descripción de la extensión Buscar versículos de la Biblia en Popclip. Identificador de extensión com.customct.popclip.extension.bible Nombre de la extensión Biblia Larga carrera Expresión regular (. * \ d + \: \ d + (\ - \ d +) *) Versión de software requerida 701
Como se puede ver, es un archivo de datos con formato XML. Este archivo de datos le dice a PopClip todo lo que necesita saber para ejecutar la extensión.
Esta es la lista necesaria para esta extensión. El diccionario principal tiene las claves. Comportamiento y Opciones. Estas son las entradas principales para proporcionar la funcionalidad de la extensión. Los describiré con más detalle a continuación. Las otras teclas son:
Descripción de la extensión
Esta clave proporciona una descripción de lo que hará la extensión. Esto debe ser corto, pero descriptivo..
Identificador de extensión
Esta clave le da un identificador único para su extensión. Lo basé en mi sitio web para una completa unicidad. Puede ser por cualquier secuencia alfanumérica, pero siempre es agradable leer algo.
Nombre de la extensión
Esta clave es el nombre de la extensión. Simplemente lo llamo Biblia.
Larga carrera
Esta clave se establece en verdadero ya que realizará una llamada a la API web que tardará un tiempo en finalizar debido a la velocidad de la red. Esto simplemente hace que PopClip muestre un icono de espera mientras se realiza la acción.
Si la extensión no toma mucho tiempo, debería ser falsa.
Expresión regular
El valor de esta clave es una expresión regular que permitirá el lanzamiento de la extensión solo si se confirma el texto seleccionado actualmente. Al escribir una expresión regular que solo coincidirá con una referencia bíblica, no mostrará la extensión de la Biblia en cualquier selección de texto.
Si estás un poco oxidado al escribir expresiones regulares, debes leer este artículo en Net Tuts+.
Versión de software requerida
Esta clave especifica la versión de PopClip que necesita esta extensión..
Las teclas de acción son para definir la acción que realizará la extensión. Hay muchas posibilidades, pero este tutorial solo se centrará en los elementos necesarios. Son los siguientes:
Después
Esto especifica la acción a realizar después de ejecutar el script.. pegar resultado se pegará en la parte superior de la aplicación, sea cual sea el texto que salga el script.
Archivo de imagen
Esta clave especifica el icono utilizado para esta extensión. Dado que el icono está en la misma área que la extensión, simplemente puede consultar el archivo: biblia.png. Si quisiera mantener los iconos en un subdirectorio de la extensión, usaría una referencia relativa a ese archivo.
Intérprete de guiones
Esta clave define el intérprete que se utilizará para procesar el script. Ya que estoy haciendo este programa en PHP, debe hacer referencia al intérprete de PHP predeterminado en todas las Mac: / usr / bin / php. Puede colocar la ruta completa a cualquier intérprete que desee utilizar para escribir extensiones.
Archivo de script de shell
Esta clave define el archivo en el directorio de la extensión a ejecutar. El nombre del archivo es: biblia.php.
Título
Esta clave es el título de la extensión: Biblia.
los Opciones clave contiene una serie de diccionarios. Un diccionario para cada opción en el panel de preferencias para la extensión. Para esta extensión, el usuario debe tener la opción de pegar desde la Biblia KJV o la Biblia Thai KJV. Como tengo dos opciones para esta extensión, describiré cada clave en el Opciones Diccionario y dile lo que utilicé para cada opción..
Identificador de opción
Esta clave le da a PopClip un nombre único para la opción que necesita para su extensión. Esto se utiliza en la variable de entorno que se pasa a su programa. Para las dos opciones, estos identificadores serán utilizados: Biblekjv y biblethaikjv.
Tipo de opción
Esta clave define qué tipo de opción es. Puede ser cualquiera booleano (si o no), cuerda (cualquier cadena), o múltiple (Usted da una lista de opciones y el usuario puede elegir de ellas). los booleano tipo es lo que se necesita para esta extensión.
Etiqueta de opción
Esta tecla define el texto que se usará en el panel de opciones para la extensión. Para esta extensión, las etiquetas. KJB y KJV tailandés trabajará.
Con estas opciones definidas en la lista, se creará un panel de preferencias para editar las preferencias. Esto es lo que se verá:
Preferencias de extensión de la BibliaAhora, el guión necesita ser escrito. El guión completo es:
$ url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 4); $ ch = curl_init (); curl_setopt_array ($ ch, ($ options + $ por defecto)); if (! $ result = curl_exec ($ ch)) trigger_error (curl_error ($ ch)); curl_close ($ ch); devuelve $ resultado; // // Función: getBibleVerse // // Descripción: Esta función es para recuperar un // verso de la Biblia del sitio web api.preachingcentral.com //. // // Entradas: // $ verse Los versos a buscar. // $ version La versión de la biblia a usar. // función getBibleVerse ($ verse, $ versión) global $ libro; $ resultado = ""; $ 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); $ primero = 0; $ quote = 0; foreach ($ vals como $ 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'] , "RESULTADO") === 0) if ($ first == 0) if (strcmp ($ version, "thai") === 0) // // El sitio solo devuelve los nombres de libros en inglés. Traduce // al tailandés. // $ 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 // // El inglés está bien aquí. // $ result = $ xml_elem ['value']; $ first = 1; else $ result = $ result. '"'. "\ n \ n". $ xml_elem ['valor']; $ quote = 0; devolver $ resultado. '"'; // // Obtenga las variables del entorno PopClip para la // extensión. // $ verse = recortar (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ( "POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = ""; // // Si la preferencia se establece en KJV o se presiona la tecla de comando //, obtenga el verso del Inglés KJV // y agréguelo al resultado. Si se presionan tanto la tecla de comando // como la tecla de control, también obtenga el KJV. // si (($ qKJV [0] == '1') || ( $ keycode == 1048576) || ($ keycode == 1310720)) $ resultados. = getBibleVerse ($ verse, "kjv"). "\ n"; // // Si la preferencia se establece en la KJV tailandesa o la // tecla de control es presione y luego obtenga el verso de la // KJV tailandesa y agréguela al resultado. Si se presionan la // tecla de comando y la tecla de control, // también obtenga la versión tailandesa. if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "thai"). "\ n "; // // Cualquiera La cosa que se hizo eco del script se pegará en // en la aplicación superior de PopClip. Si los resultados // no son nada, devuelva el verso. // if (strcmp ($ resultados, "") === 0) echo $ verse; else echo $ results; ?>
Lo primero en el guión es un conjunto de los nombres de los libros en la Biblia. Esta matriz es para traducir los nombres de libros en inglés a su equivalente en tailandés. La API web que utiliza la extensión solo da referencias en inglés. Entonces, los nombres de los libros de la Biblia en inglés necesitan ser traducidos al tailandés..
La primera función es una función auxiliar. Es una rutina de PHP para solicitar información de un sitio web utilizando curl y devolver los resultados al programa de llamadas. La entrada es la url de la solicitud..
La segunda función es la función principal para procesar el versículo bíblico. Solicitará el versículo bíblico y procesará el XML resultante en un formato más legible para pegarlo en el editor de texto o en cualquier programa que esté actualmente activo. Los parámetros son el versículo bíblico actual y el designador para el cual se solicita la Biblia. Para la Biblia King James, es kjv. Para la Biblia tailandesa, es tailandés. Puede obtener otros códigos en el enlace del sitio anterior.
PopClip envía información al script a través de variables de entorno. Es una forma sencilla de comunicarse. Así es como accedes a esa información..
// // Obtenga las variables de entorno PopClip para la // extensión. // $ verse = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ("POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ resultados = "";
La función de PHP getenv ()
recuperará la variable de entorno dada en la cadena para la llamada a la función. Todas las variables de entorno son cadenas y deben utilizarse como tales. Las diferentes variables de entorno son:
POPCLIP_TEXT
Esta variable es la selección cuando se invocó PopClip. Como el usuario de la extensión puede seleccionar espacios en blanco adicionales, siempre me gusta usar el recortar()
Función para eliminar cualquier espacio en blanco extra.
POPCLIP_OPTION_BIBLEKJV
Esta variable es la opción para obtener el verso de la versión de King James. Es una cadena que contiene el carácter. 1 Si es verdadero, de lo contrario contiene el carácter. 0.
POPCLIP_OPTION_BIBLETHAIKJV
Esta variable es la opción para obtener el verso de la versión Thai King James. Es una cadena que contiene el carácter. 1 Si es verdadero, de lo contrario contiene el carácter. 0.
POPCLIP_MODIFIER_FLAGS
Esto le indica al usuario qué teclas se presionaron mientras se seleccionó la acción PopClip. Todo lo que se pasa en una variable de entorno es una cadena. Por lo tanto, las cadenas también deben traducirse a un formato fácil de usar. Yo uso el intval ()
Función para convertir la cadena a un entero..
Todos los diferentes valores de códigos de clave se muestran en las Extensiones PopClip GitHub.
Como puede verse, cada opción en las preferencias para la extensión tiene su propia variable de entorno correspondiente.
La variable $ result también se establece en una cadena vacía para que se llenen las siguientes dos secciones.
La parte principal de cualquier extensión de PopClip es tomar las variables que se pasan en el entorno y hacer algo útil con ellas..
// // Si la preferencia se establece en KJV o se presiona la tecla de comando //, obtenga el verso de la versión inglesa KJV // y agréguelo al resultado. // if (($ qKJV [0] == '1') || ($ keycode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "kjv"). "\ n";
Esta sección de código recuperará el verso de la versión de King James si se configuró en las preferencias (la variable $ qKJV) o se presionó la tecla de comando al seleccionar la acción PopClip ($ keycode es 1048576). También lo solicitará si se presionan las teclas de control y comando ($ keycode es 1310720). Dado que la variable $ qKJV es una cadena que es 1 o 0, puede verificar que el primer carácter sea un carácter 1. De esa manera, no tiene que procesar un número. Eso puede ahorrar algo de tiempo.!
Si la condición es verdadera, entonces los versos se recuperan usando el getBibleVerse ()
Función y anexado a la cadena $ resultado.
// // Si la preferencia se establece en Thai KJV o la // tecla de control es presione, luego obtenga el verso de la // Thai KJV y agréguelo al resultado. // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "thai"). "\norte";
Aquí, es similar. Si se seleccionó la versión de Thai King James en las preferencias ($ qThaiKJV) o se presionó la tecla de control mientras se seleccionaba la acción PopClip ($ keycode es 262144), entonces se solicitará la versión de Thai King James. También lo solicitará si se presionan las teclas de control y comando ($ keycode es 1310720).
Si la condición es verdadera, entonces los versos se recuperan usando el getBibleVerse ()
Función y anexado a la cadena $ resultado.
// // Todo lo que se haga eco del script se pegará en // en la aplicación superior de PopClip. Si los resultados // no son nada, devuelva el verso. // if (strcmp ($ resultados, "") === 0) echo $ verse; else echo $ results;
Aquí, los resultados deben ser repetidos. Pero, si el búfer de resultados está vacío, entonces el verso debe hacerse eco. Si se repite una cadena vacía, elimina efectivamente lo que se seleccionó. Como todo es una opción, es posible llegar aquí con el $ resultados
variable vacia Las buenas prácticas de programación nos dicen que siempre debemos tener en cuenta cada posibilidad..
Una vez que la extensión se carga en PopClip y se establecen las preferencias, entonces la extensión es fácil de usar. Simplemente seleccione un texto que sea una referencia bíblica..
Seleccionando un versoCuando aparezca la barra PopClip, seleccione la biblia blanca y la selección cambiará al verso. Aquí, las preferencias se configuraron para las versiones KJV y ThaiKJV que se imprimirán.
Verso reemplazadoSi el texto no coincide con la expresión regular para una referencia bíblica, entonces no se mostrará el ícono de la Biblia..
La selección no es un versoEsto ayuda a ahorrar bienes raíces en la barra PopClip. Cuando cree una extensión, piense en cómo minimizar las apariencias innecesarias de su extensión.
Ahora tiene una pequeña extensión de PopClip para obtener versos de un sitio web y pegarlos en su aplicación. Aún mejor que eso, ahora sabe cómo crear un panel de preferencias para su extensión, obtener esa información desde su extensión, manipular el texto seleccionado y pegarlo nuevamente en la aplicación superior. Puede tomar este código y expandirlo o usarlo como un esqueleto para su propia extensión PopClip. Deja que todos sepan cómo lo usas en los comentarios.!