| Class | String |
| In: |
lib/string_utils.rb
|
| Parent: | Object |
Métodos adicionales para la clase String
# 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
# 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
# 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
# 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
# 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.
# 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 "_"
# 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