unpack brazilian-rails

This commit is contained in:
2013-07-14 11:09:25 -04:00
parent 7d287fe530
commit e563725dc5
131 changed files with 5496 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
$:.unshift(File.dirname(__FILE__)) unless
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
$KCODE = 'utf-8' if RUBY_VERSION < '1.9'
require 'rubygems'
require 'active_support'
require 'active_support/core_ext'
%w(version
string_portuguese).each {|req| require File.dirname(__FILE__) + "/brstring/#{req}"}
module BrString
end

View File

@@ -0,0 +1,154 @@
# encoding: UTF-8
class String
MINUSCULAS_COM_ACENTO = 'áéíóúâêîôûàèìòùäëïöüãõñç'
MAIUSCULAS_COM_ACENTO = 'ÁÉÍÓÚÂÊÎÔÛÀÈÌÒÙÄËÏÖÜÃÕÑÇ'
MINUSCULAS = "abcdefghijklmnopqrstuvwxyz#{MINUSCULAS_COM_ACENTO}"
MAIUSCULAS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ#{MAIUSCULAS_COM_ACENTO}"
# Normaliza nomes proprios
#
# Exemplo:
# String.nome_proprio('maria de souza dos santos e silva da costa') ==> 'Maria de Souza dos Santos e Silva da Costa'
def self.nome_proprio(texto)
return texto if texto.blank?
self.titleize(texto).gsub(/ D(a|e|o|as|os) /, ' d\1 ').gsub(/ E /, ' e ')
end
# Normaliza nomes proprios
#
# Exemplo:
# 'maria de souza dos santos e silva da costa'.nome_proprio ==> 'Maria de Souza dos Santos e Silva da Costa'
def nome_proprio
String.nome_proprio(self)
end
# Normaliza nomes proprios na própria instância.
#
# Exemplo:
# texto = 'maria de souza dos santos e silva da costa'
# texto.nome_proprio!
# texto ==> 'Maria de Souza dos Santos e Silva da Costa'
def nome_proprio!
self.gsub!(/^.*$/, String.nome_proprio(self)) if self
end
# Remove as letras acentuadas
#
# Exemplo:
# String.remover_acentos('texto está com acentuação') ==> 'texto esta com acentuacao'
def self.remover_acentos(texto)
return texto if texto.blank?
texto = texto.gsub(/(á|à|ã|â|ä)/, 'a').gsub(/(é|è|ê|ë)/, 'e').gsub(/(í|ì|î|ï)/, 'i').gsub(/(ó|ò|õ|ô|ö)/, 'o').gsub(/(ú|ù|û|ü)/, 'u')
texto = texto.gsub(/(Á|À|Ã|Â|Ä)/, 'A').gsub(/(É|È|Ê|Ë)/, 'E').gsub(/(Í|Ì|Î|Ï)/, 'I').gsub(/(Ó|Ò|Õ|Ô|Ö)/, 'O').gsub(/(Ú|Ù|Û|Ü)/, 'U')
texto = texto.gsub(/ñ/, 'n').gsub(/Ñ/, 'N')
texto = texto.gsub(/ç/, 'c').gsub(/Ç/, 'C')
texto
end
# Remove as letras acentuadas
#
# Exemplo:
# 'texto está com acentuação'.remover_acentos ==> 'texto esta com acentuacao'
def remover_acentos
String.remover_acentos(self)
end
# Remove as letras acentuadas na própria instância.
#
# Exemplo:
# texto = 'texto está com acentuação'
# texto.remover_acentos!
# texto ==> 'texto esta com acentuacao'
def remover_acentos!
self.gsub!(/^.*$/, String.remover_acentos(self)) if self
end
# Retorna uma string com caracteres maiusculos
#
# Exemplo:
# String.upcase('texto com acentuação' ==> 'TEXTO COM ACENTUAÇÃO'
def self.upcase(texto)
return texto if texto.nil? or texto.empty?
texto.tr(MINUSCULAS, MAIUSCULAS)
end
# Retorna uma string com caracteres maiusculos
#
# Exemplo:
# 'texto com acentuação'.upcase ==> 'TEXTO COM ACENTUAÇÃO'
def upcase
String.upcase(self)
end
# Converte para caracteres maiusculos na própria instância
#
# Exemplo:
# texto = 'texto com acentuação'
# texto.upcase
# texto ==> 'TEXTO COM ACENTUAÇÃO'
def upcase!
self.gsub!(/^.*$/, String.upcase(self)) if self
end
# Retorna uma string com caracteres minúsculos
#
# Exemplo:
# String.downcase('TEXTO COM ACENTUAÇÃO') ==> 'texto com acentuação'
def self.downcase(texto)
return texto if texto.nil? or texto.empty?
texto.tr(MAIUSCULAS, MINUSCULAS)
end
# Retorna uma string com caracteres minúsculos
#
# Exemplo:
# 'TEXTO COM ACENTUAÇÃO'.downcase ==> 'texto com acentuação'
def downcase
String.downcase(self)
end
# Converte para caracteres minúsculos na própria instância
#
# Exemplo:
# texto = 'TEXTO COM ACENTUAÇÃO'
# texto.downcase
# texto ==> 'texto com acentuação'
def downcase!
self.gsub!(/^.*$/, String.downcase(self)) if self
end
# Passa a primeira letra de cada palavra para maiúscula e as demais para minúsculas.
#
# Exemplo:
# String.titleize('o livro esta sobre a mesa!') ==> 'O Livro Esta Sobre A Mesa!'
def self.titleize(texto)
return texto if texto.nil? or texto.empty?
texto = texto.downcase
texto = texto.downcase
texto.mb_chars[0] = texto.mb_chars.first.upcase
texto = texto.gsub(/\s[a-z#{String::MINUSCULAS_COM_ACENTO}]/) {|a| a.upcase }
texto
end
# Passa a primeira letra de cada palavra para maiúscula e as demais para minúsculas.
#
# Exemplo:
# 'o livro esta sobre a mesa!'.titleize ==> 'O Livro Esta Sobre A Mesa!'
def titleize
String.titleize(self)
end
# Passa a primeira letra de cada palavra para maiúscula e as demais para minúsculas na própria instância.
#
# Exemplo:
# texto = 'o livro esta sobre a mesa!'
# texto.titleize!
# texto ==> 'O Livro Esta Sobre A Mesa!'
def titleize!
self.gsub!(/^.*$/, String.titleize(self)) if self
end
end

View File

@@ -0,0 +1,10 @@
module BrString
module VERSION #:nodoc:
MAJOR = 3
MINOR = 3
TINY = 0
STRING = "#{MAJOR}.#{MINOR}.#{TINY}"
end
end