Noticias Weblogs Foros Wiki Código
Sponsors:

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

PlanetaCódigo en inglés

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

el feRoRcarril

Patch Server y coloreado de parches

Mayo 31st, 2006 - [Enlace local]

Ayer comentaba que había hecho dos cosas interesantes que podían interesar a algunos.

Hoy le he dedicado un ratillo al coloreado de los parches (formatos diff normal, unificado y contextual), y ya tengo algo enseñable. Hay que probarlo mejor, y probablemente dé algunos problemillas con parches recursivos (de varios ficheros a la vez, vamos), pero ya se puede empezar a usar. Lo único que hay que hacer para usarlo es dejarlo disponible en algún sitio, de tal manera que se pueda cargar con require 'syntax/lang/diff' (por ejemplo, dejarlo como lib/syntax/lang/diff.rb en una aplicación Rails). El uso, como se puede ver en el helper colorize_patch de patch_server, es tan sencillo como:

require 'syntax/convertors/html'
conv = Syntax::Convertors::HTML.for_syntax 'diff'
conv.convert(contenido_del_parche)

Teniendo, por supuesto, instalado Syntax.

In-place editing

Sobre la caja para modificar campos sueltos por Ajax, sigue estando igual de poco pulida que ayer, pero como he subido todo patch_server para poner disponible el coloreador de parches, ha quedado visible. Ahora mismo es solamente un helper (ajax_field_updater, que por ahora está en application_helper) bastante simple. Hay un ejemplo en la vista patches/edit:

   <%= ajax_field_updater :patch, :description, :data_html => textilize(@patch.description) %>

Los dos primeros parámetros son los típicos de los helpers de controles de formulario de Rails, y el tercero son opciones. La que yo he especificado en el ejemplo hace que, en vez de mostrarse el contenido del campo tal cual, se muestre el resultado de textilize, es decir, que se interprete de tal forma que haya formato con los guiones bajos, asteriscos, etc. Ver la api y la referencia de Markdown para más detalles.

La parte del servidor es un poco más compleja, porque todavía no he escrito nada para hacerlo más cómodo. Por tanto, hay que hacerlo todo a mano, añadiendo un método (en este caso concreto) llamado update_patch_description. La implementación es trivial:

   def update_patch_description
       @patch = Patch.find(params[:id])
       if params[:patch][:description]
           @patch.description = params[:patch][:description]
           @patch.save
       end
       render :inline => "<%= textilize_without_paragraph(@patch.description) %>"
   end

Espero que les guste ;-)

» Leer más, comentarios, etc...