Html 2 txt

Hola, ¿sabéis si hay alguna función que nos convierta un trozo de HTML
en el texto que contiene, pero sin marcas HTML? Vamos, como se vería si
lo pegáramos en un editor de texto plano…

s2

Yo conozco el sanitize de Brad Choate, que es refrito de uno hecho en
Perl.

2008/9/15 Fernando C. [email protected]:

y para cepillarse todas las etiquetas html sin contemplación:

http://codesnippets.joyent.com/posts/show/615

salud!

Francesc E. escribió:

Ojo. Ese código no está bien.

str = <<-HTML_TEXT

Un saludo,

Francesc

2008/9/15 Andrés gutiérrez [email protected]:

Aunque la expresión regular si que parece que funciona, pero creo que
habría que refinarlo para hacer lo que Fernando pedía, ya que por
ejemplo habría que convertir los br’s en saltos de línea en lugar de
eliminarlos del todo…

Saludos

Francesc E. escribió:

te servira verificar el Content-length ??request.content_length

if request.content_length.to_i > tamanio_max_permitido
render :text => ‘Archivo demasiado grande’
return
end

o algo similar

El 15 de septiembre de 2008 10:17, Fernando C. <
[email protected]> escribió:

HTML generico y regexps se llevan fatal. Si el HTML lo controlas esta
OK, si es arbitrario entonces hay que tirar de un parser:

require 'rubygems'
require 'hpricot_scrub'
require 'open-uri'

doc = Hpricot(open('http://www.amazon.com').read)
puts doc.scrub

Ahora bien, no te esperes el rendering super-guapo de lynx and
friends, eso saca algo bastante feo porque quitar los tags es solo un
paso hacia el texto. Si quieres algo mas añañado y tiene sentido en tu
app simplemente llamaria a sistema. Por ejemplo:

elinks -dump -no-numbering -no-references http://www.elpais.com

Si, la expresión regular funciona. Estaría genial que cuando alguien
sube algo de código incluya el test. :wink:

Pero esto…

str = <<HTML_TEXT

Application error

Change this error message for exceptions thrown outside of an action (like in Dispatcher setups or broken Ruby code) in public/500.html

HTML_TEXT

puts str.gsub(/</?[^>]*>/, “”)

… va a muy a saco no?

El 15 de septiembre de 2008 17:49, Borja Martín
[email protected]escribió:

Borja Martín wrote:

y para cepillarse todas las etiquetas html sin contemplación:

http://codesnippets.joyent.com/posts/show/615

He encontrado el strip_tags(html), que parece la solución perfecta:

http://api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html

El tema está en que me da un error undefined method `strip_tags’…
¿hace falta indicar de algún modo que cargue el SanitizeHelper?

s2

El tema está en que me da un error undefined method `strip_tags’…
¿hace falta indicar de algún modo que cargue el SanitizeHelper?

Me da este error porque trato de acceder desde un controller, en la
vista accede sin problemas; ¿cómo accedo desde el controller?

2008/9/15 Fernando C. [email protected]

El tema está en que me da un error undefined method `strip_tags’…
¿hace falta indicar de algún modo que cargue el SanitizeHelper?

Me da este error porque trato de acceder desde un controller, en la
vista accede sin problemas; ¿cómo accedo desde el controller?

unsegunditodegoogle.com =>

http://snippets.dzone.com/posts/show/1799

Manuel González Noriega wrote:

2008/9/15 Fernando C. [email protected]

El tema está en que me da un error undefined method `strip_tags’…
¿hace falta indicar de algún modo que cargue el SanitizeHelper?

Me da este error porque trato de acceder desde un controller, en la
vista accede sin problemas; ¿cómo accedo desde el controller?

unsegunditodegoogle.com =>

http://snippets.dzone.com/posts/show/1799

Muchísimas gracias!!

En mi caso concreto, sería:
def help
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::SanitizeHelper
end

y ya funciona esto:
txt = help.strip_tags @articulo.texto_completo

s2

En mi caso concreto, sería:
def help
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::SanitizeHelper
end

y ya funciona esto:
txt = help.strip_tags @articulo.texto_completo

Y más variantes, aquí:

Aunque a mí no me ha funcionado esto:
txt =
Object.new.extend(ActionView::Helpers::SanitizeHelper).strip_tags
@articulo.texto_completo

:frowning:

Hola, justo ayer estaba buscando esto para meter un method de un helper
en
un modelo,
lo que hice fue

include ActionView::Helpers::NumberHelper
class MyModel < ActiveRecord::Base

está bien esto? o ¿hay alguna forma mas elegante de hacerlo ?

probé lo de snnipets.dzone tambien, pero no me funcionó en el modelo ,
por
eso puse el include directamente.

Saludos

Atte.
Miguel Michelson Martinez

www.artenlinea.cl

On Mon, Sep 15, 2008 at 2:10 PM, Fernando C. <

Puedes meterle un helper :all al ApplicationController o afinar más al
helper que quieras.

Echale un ojo al método helper de ActionController:
http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html#M000681

2008/9/15 Fernando C. [email protected]

2008/9/15 Fernando C. [email protected]

Hola, ¿sabéis si hay alguna función que nos convierta un trozo de HTML
en el texto que contiene, pero sin marcas HTML? Vamos, como se vería si
lo pegáramos en un editor de texto plano…

Depende de el caso, a veces prefiero tirar de comandos del sistema.
html2text (port install html2text o apt-get install html2text es un
programa
muy extendido que además formatea cosas como títulos, para que quede más
bonito.

por lo que quedaría algo así:

Kakafuti2:nasa.gov guillermo$ irb

def html2text(text)
html = IO.popen(“html2text”,“r+”)
html.write text
html.close_write
html.read
end
=> nil
puts html2text(“\n\n

Tía

  1. que no pare
    ninguno
  2. Nos movemos los dos
  3. Lo mismo pero al
    reves
\n\n”)
****** Tía ******

  1. que no pare ninguno
  2. Nos movemos los dos
  3. Lo mismo pero al reves

  4. => nil

Mi experiencia me dice que si se puede evitar hacer llamadas a sistema
mejor. En el caso de que no hubiera más remedio que hacerlo yo creo
que cachearia el resultado en un campo de la tabla tal como
html_stripped o algo así.

De cualquier modo, creo que cachearia los datos parseados para quitar
carga de proceso.

Comentar también que yo creo tiene sentido procesar esos datos desde
el modelo y no desde la vista porque así si por ejemplo estamos
parseando contenido de otras webs, podemos acceder directamente desde
los modelos.

Hola,

La forma elegante, creo, es que no deberías de hacer cosas que afecten a
la
vista en el modelo, y por lo tanto, no te debería de hacer falta usar
helpers en el modelo. Quizás has de repensar lo que quieres hacer, antes
que
hacer eso, pero bueno, es solo una opinión.

Saludos,

2008/9/15 Miguel M. [email protected]

2008/9/15 Francesc E. [email protected]:

Mi experiencia me dice que si se puede evitar hacer llamadas a sistema
mejor.

Bueno, eso asi de general no lo comparto. Las llamadas a sistema son
un recurso valido en funcion de la aplicacion. Por eso existe
mini-magick, algunos tipos sospechosos generan PDF usando pdflatex,
etc. Depende.