hugoruscitti/pilas

View on GitHub
data/manual/complementos/index.json

Summary

Maintainability
Test Coverage
{
    "content": "<h1 id=\"complementos-plugins\">Complementos (Plugins)</h1>\n<p>Pilas incorpora un sistema de complementos para que se pueda\npersonalizar el entorno completo usando c\u00f3digo auto-incluido.</p>\n<p>Esta es una funcionalidad avanzada, que se suele utilizar en\ntalleres o cursos especializados. La idea general es que pilas\nse puede modificar a\u00f1adiendo c\u00f3digo en un directorio especial y\nsin necesidad de tocar le c\u00f3digo fuente de pilas en s\u00ed.</p>\n<h2 id=\"que-son-los-complementos\">\u00bfQue son los complementos?</h2>\n<p>Los complementos, o plugins, son simplemente archivos de c\u00f3digo\npython que pilas leer\u00e1 al momento de iniciar.</p>\n<p>Cada c\u00f3digo python podr\u00e1 definir clases que luego se podr\u00e1n utilizar\ndirectamente desde el motor.</p>\n<p>Todos los complementos tienen que existir en un directorio\nespecial del sistema. Estos son los lugares en donde se buscar\u00e1n los\ncomplementos:</p>\n<ul>\n<li>En linux: $USERDIR/.pilas-engine/complementos/</li>\n<li>En OSX: $USERDIR/.pilas-engine/complementos/</li>\n</ul>\n<h2 id=\"inicializando-los-complementos\">Inicializando los complementos</h2>\n<p>Los complementos no se buscar\u00e1n a menos que se iniciale pilas-engine\nespecificando que queremos complementos.</p>\n<p>Para inicializar pilas-engine con soporte para completos tenemos\nque usar el par\u00e1metro \"cargar_plugins\" as\u00ed:</p>\n<pre><code class=\"python\">import pilasengine\n\npilas = pilasengine.iniciar(cargar_plugins=True)\n</code></pre>\n\n<p>Y en la consola tendr\u00e1 que aparecer un texto indicando la cantidad de\ncomplementos encontrada.</p>\n<h2 id=\"creando-un-plugin-de-ejemplo\">Creando un plugin de ejemplo</h2>\n<p>Para probar esta funcionalidad, vamos a hacer un complemento muy\nsimple que solamente muestre un mensaje cuando pilas se inicializa.</p>\n<p>Primero tenemos que crear el archivo para el complemento, en este\ncaso <code>$HOMEDIR/.pilas-engine/plugins/saludar.py</code></p>\n<pre><code class=\"python\">class Saludar(object):\n\n    def __init__(self, pilas):\n      pilas.avisar(&quot;Bienvenido, pilas se inicio correctamente.&quot;)\n</code></pre>\n\n<p>Luego, para iniciarle a pilas que queremos cargar los complementos\ntenemos que iniciar pilas as\u00ed:</p>\n<pre><code class=\"python\">import pilasengine\n\npilas = pilasengine.iniciar(cargar_plugins=True)\n</code></pre>\n\n<p>tendr\u00edamos que ver en consola el mensaje <code>Se encontro un plugin</code>. Luego,\npara inicializar el complemento:</p>\n<pre><code class=\"python\">pilas.complementos.Saludar(pilas)\n</code></pre>\n\n<p>Es decir, en el nombre de cualquier clase definida en nuestros complementos\nestar\u00e1 accesible a trav\u00e9s del acceso <code>pilas.complementos...</code></p>\n<h2 id=\"no-olvides-pasar-el-objeto-pilas\">No olvides pasar el objeto \"pilas\"...</h2>\n<p>Ten en cuenta que a partir de la versi\u00f3n 0.90 de pilas-engine, para\nacceder a la funcionalidad de pilas tenemos que usar la variable \"pilas\", y\nque esta no el global. As\u00ed que te recomendamos hacer complementos\ntal y como lo sugeremos aqu\u00ed en el ejemplo, declarando \"pilas\" como un arguemento\nen el inicializador:</p>\n<pre><code class=\"python\">def NombreComplemento(object):\n\n    def __init__(self, pilas):\n      # [etc...]\n</code></pre>\n\n<p>e inicializ\u00e1ndolo especificando el objeto pilas:</p>\n<pre><code class=\"python\">pilas.complementos.NombreComplemento(pilas)\n</code></pre>\n\n", 
    "url": "/complementos/", 
    "language": "en", 
    "title": "Complementos"
}