Class String
In: lib/string_utils.rb
Parent: Object

Métodos adicionales para la clase String

Methods

Public Instance methods

[Source]

     # File lib/string_utils.rb, line 105
105:   def gender_article
106:     name = self.dup.strip
107:     art = if name.match(/[a|ad]$/) 
108:       "La"
109:     else
110:       "El"
111:     end
112:     art
113:   end

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

[Source]

    # File lib/string_utils.rb, line 51
51:   def prepare_for_query
52:     # Esta la usamos allá donde los selects vayan a ser con "like 'xxx%'",
53:     # y por lo tanto, no queremos quitar ni los signos de puntuacion ni las
54:     # palabras comunes
55:     palabra = self
56: 
57:     # Primero quitamos las tildes
58:     search_string = palabra.tildes
59: 
60:     # Sustituimos muchos espacios por uno solo
61:     search_string = search_string.gsub(/[[:space:]]+/, " ")
62:     # Quitamos los espacios al principio y el final
63:     search_string = search_string.strip
64:     search_string = search_string.downcase
65:   end

Quita de un texto todos los tags HTML

[Source]

    # File lib/string_utils.rb, line 45
45:   def strip_html
46:     self.gsub(/<\/?[^>]*>/,  "")
47:   end

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

[Source]

     # File lib/string_utils.rb, line 101
101:   def strip_version
102:     self.sub(/\?\d+$/, '')
103:   end

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

[Source]

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

Prepara un término de búsqueda para la búsqueda con Ferret.

  • Quita palabras de menos de 3 letras, algunos artículos y preposiciones.
  • Si una palabra acaba en "s" busca también la misma sin "s" (hack para plurales)

[Source]

    # File lib/string_utils.rb, line 70
70:   def to_ferret_search_string
71:     unwanted_words_list =  %w{con del las los para por que una}
72:     
73:     query_string = self
74:     
75:     # cambiar muchos espacios por uno y mantener juntas las palabras entre comillas, 
76:     search_string = query_string.prepare_for_query.gsub(/("[^"]+")/) { $1.gsub(/\s+/,'@') }
77:     
78:     # quitar palabras comunes y palabras de 1 o 2 letras salvo para las frases entre comillas
79:     search_words = search_string.split(" ").map do |w| 
80:       w.gsub!(/[[:punct:]]/, "") unless w.match(/^["]/)
81:       w if (w.length > 2) && !unwanted_words_list.include?(w) 
82:     end.compact
83:     
84:     # If any of the words ends in "s", assume it is plural
85:     # and search also the singular form
86:     search_words.each do |w|
87:       search_words << w[0..-2] if w.match(/s$/)
88:     end
89:     
90:     search_string = search_words.length > 1 ? "(" + search_words.compact.join(" OR ") + ")" : search_words.to_s
91:     
92:     # volver a poner los espacios en los textos entre comillas.
93:     search_string = search_string.gsub(/@/,' ')
94:     
95:     search_string
96:   end

Convierte un string en un tag, quitándole las tildes y quitando todo lo que no sea una letra, un número o una "_"

[Source]

    # File lib/string_utils.rb, line 37
37:   def to_tag
38:     return if self.nil?
39:     output = self.dup
40:     output = output.tildes.strip.downcase
41:     output.gsub(/[^a-z0-9_]+/, '').gsub(/-+$/, '').gsub(/^-+$/, '')
42:   end

[Validate]