class String

Métodos adicionales para la clase String

Public Instance Methods

escape_for_elasticsearch(double_quotes=false) click to toggle source
# File lib/efaber.rb, line 112
def escape_for_elasticsearch(double_quotes=false)
  foo = self.dup               
  foo.gsub!(/([\{\}\[\]\(\)\+\-\&\&\|\|\!\^\~\?\:\])/, ' ')        
  foo.gsub!(/([\"])/, '') if double_quotes
  foo
end
gender_article() click to toggle source
# File lib/efaber.rb, line 102
def gender_article
  name = self.dup.strip
  art = if name.match(/[a|ad]$/) 
    "La"
  else
    "El"
  end
  art
end
prepare_for_query() click to toggle source

“Limpia” las palabras de búsqueda, quitándoles las tildes, quitando espacios de sobra y convirtiendo en letras minúsculas

# File lib/efaber.rb, line 79
def prepare_for_query
  # Esta la usamos allá donde los selects vayan a ser con "like 'xxx%'",
  # y por lo tanto, no queremos quitar ni los signos de puntuacion ni las
  # palabras comunes
  palabra = self

  # Primero quitamos las tildes
  search_string = palabra.tildes

  # Sustituimos muchos espacios por uno solo
  search_string = search_string.gsub(/[[:space:]]+/, " ")
  # Quitamos los espacios al principio y el final
  search_string = search_string.strip
  search_string = search_string.downcase
end
strip_html() click to toggle source

Quita de un texto todos los tags HTML

# File lib/efaber.rb, line 73
def strip_html
  self.gsub(/<\/?[^>]*>/,  "")
end
strip_version() click to toggle source

Quita de un string, la versión. Se usa para quitar la versión en las URL de las imágenes. Por ejemplo, transforma /images/example.gif?388434738 en /images/example.gif?388434738

# File lib/efaber.rb, line 98
def strip_version
  self.sub(/\?\d+$/, '')
end
tildes() click to toggle source

Convierte los caracteres UTF en su equivalente ASCII (fuente www.bigbold.com/snippets/posts/show/1818) Se utiliza para indexar textos sin tildes y hacer búsquedas de manera que se encuentren los textos tanto si se escriben con o sin tildes

# File lib/efaber.rb, line 29
def tildes
  foo = self.dup
  foo.gsub!(/[ĄÀÁÂÃ]/,'A')
  foo.gsub!(/[âäàãáäåāăǎǟǡǻȁȃȧẵặ]/,'a')
  foo.gsub!(/[ÉĘÈ]/, 'E')
  foo.gsub!(/[ëêéèẽēĕėẻȅȇẹȩęḙḛềếễểḕḗệḝ]/,'e')
  foo.gsub!(/[ÌÍÎĨÏ]/, 'I')
  foo.gsub!(/[iìíîĩīĭïỉǐịįȉȋḭɨḯ]/,'i')
  foo.gsub!(/[ÒÓÔÕÖ]/, 'O')
  foo.gsub!(/[òóôõōŏȯöỏőǒȍȏơǫọɵøồốỗổȱȫȭṍṏṑṓờớỡởợǭộǿ]/,'o')
  foo.gsub!(/[ÙÚÛŨÜ]/, 'U')
  foo.gsub!(/[ùúûũūŭüủůűǔȕȗưụṳųṷṵṹṻǖǜǘǖǚừứữửự]/,'u')
  foo.gsub!(/[ỳýŷỹȳẏÿỷẙƴỵ]/,'y')
  foo.gsub!(/[œ]/,'oe')
  foo.gsub!(/[ÆǼǢæ]/,'ae')
  foo.gsub!(/[ñǹńŃÑ]/,'n')
  foo.gsub!(/[ÇĆ]/, 'C')
  foo.gsub!(/[çć]/,'c')
  foo.gsub!(/[ß]/,'ss')
  foo.gsub!(/[œ]/,'oe')
  foo.gsub!(/[ij]/,'ij')
  foo.gsub!(/[Łł]/,'l')
  foo.gsub!(/[śŚ]/,'s')
  foo.gsub!(/ŹŻ/, 'Z')
  foo.gsub!(/[źż]/,'z')

  # El código anterior no quita bien los tildes cuando se usa IE :(
  # Uso este que quita todo lo que no es un símbolo ASCII
  foo_chars = []
  foo.each_byte {|i| foo_chars.push(i.chr) if i<127}
  foo_chars.join()
end
to_tag() click to toggle source

Convierte un string en un tag, quitándole las tildes y quitando todo lo que no sea una letra, un número o una “_” Si el tag empieza por #, sustituye “#” por “hashtag_” para evitar que sanitized_name_* de un tag que empieza por “#” y otro que no tiene “#” coincidan.

# File lib/efaber.rb, line 65
def to_tag
  return if self.nil?
  output = self.dup
  output = output.tildes.strip.downcase
  output.gsub(/^#/, 'hashtag_').gsub(/[^a-z0-9_]+/, '').gsub(/-+$/, '').gsub(/^-+$/, '')
end