rieles 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34edfe533aa91b4af012b620a36052a5fcc2c474
4
- data.tar.gz: 45ca3daf371191708cd438ae9d8a7c879653a7bc
3
+ metadata.gz: 5d3bd4f1fc0de68403ccdb8ea36687580e7021df
4
+ data.tar.gz: d1b9112586f6cd1e8d2ae1ce0f5b4c3a8c3a8855
5
5
  SHA512:
6
- metadata.gz: 15107b9c09f3305011f915cd5b049daa1497332c0ff2bc7b8e2152ce04a2014a4ba389f9b4083b6b24d764414b84f0119be930cf65fb0351310fa3151dd87194
7
- data.tar.gz: 5498d5b31a3c97aacbc1b11417178a0edbe2577c643b763baf1f94bfb10f8590b34173db02279ef88aaccf8550f57b1c77094823cecec61edb29e076d6a14405
6
+ metadata.gz: 0798ce53a2a000fad0a0c46006b4742b125170db3418dfd104dfb38c6a45c9896e5b5bd77f9e1646eba0c2c4854f8626ed8318a89ef4df8e6753252f180e18b0
7
+ data.tar.gz: 84bcbeec0174b38552d73cad7d106a3056dcd97e3ca2c420f21b932d2da027fbf26499b3e33e5345b9f47aa18aabe1b46c2101756dc0dee657105e2675df0499
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ script: bundle exec rspec spec
data/README.rdoc CHANGED
@@ -1,3 +1,5 @@
1
+ {<img src="https://travis-ci.org/LogicalBricks/rieles.png" />}[https://travis-ci.org/LogicalBricks/rieles]
2
+
1
3
  = Rieles
2
4
 
3
5
  Incluye diversos archivos para trabajar en Español. Dentro de los recursos que se agregan está el archivo de inflections para pluralizar y singularizar en Español, el archivo de locale para traducir los mensajes, y los templates erb y haml para que el scaffold genere las vistas completamente en Español.
@@ -20,83 +20,57 @@ ActiveSupport::Inflector.inflections do |inflect|
20
20
  # La regla básica en Español es similar al Inglés, el plural de las palabras
21
21
  # terminadas en vocal se obtiene agregándole una 's' al final. Sin embargo,
22
22
  # para formar correctamente el plural de palabras como doctor, camion,
23
- # universidad o pastel, se aplica una regla distinta: las palabras que
24
- # terminen con r, n, d, l se convierten a plural agregando la sílaba "es",
25
- # de otra forma, el plural se obtendrían como doctors, camions, universidads
26
- # y pastels.
27
- # Para que la expresión no quede tan extensa, vamos a utilizar unas variables
28
- # para almacenar parte de la misma. También nos servirá para no tener que
29
- # repetir la mistra estructura.
30
-
31
- final_singular_rndlj = /([rndlj])([A-Z]|_|$)/
32
- final_singular_vocal = /([aeiou])([A-Z]|_|$)/
33
-
34
- inflect.plural(/#{final_singular_rndlj}/, '\1es\2')
35
- inflect.plural(/#{final_singular_vocal}/, '\1s\2')
36
-
37
- # Las reglas anteriores funcionan incluso cuando son palabras compuestas por
38
- # dos o más palabras, siempre y cuando, todas sean del mismo tipo, es decir,
39
- # que ambas terminen con r, n, d o l, o bien, que ambas terminen en vocal;
40
- # por ejemplo "doctor_operacion", o "libro_revista", serán pluralizadas
41
- # correctamente a "doctores_operaciones" y "libros_revistas" respectivamente.
42
- # Sin embargo, si las palabras no son del mismo tipo, la pluralización no
43
- # ocurre correctamente. Por ejemplo, "autor_libro" es pluralizado como
44
- # "autor_libros", y "paciente_doctor" es pluralizado como
45
- # "paciente_doctores". Esto sucede porque al pluralizar, rails aplica sólo
46
- # la última regla que coincida y omite las demás.
47
- # Para soportar palabras compuestas, es necesario agregar otras reglas.
48
- compuesta_singular_1 = /#{final_singular_vocal}([a-z]+)#{final_singular_rndlj}/
49
- compuesta_singular_2 = /#{final_singular_rndlj}([a-z]+)#{final_singular_vocal}/
50
- inflect.plural(compuesta_singular_1, '\1s\2\3\4es\5')
51
- inflect.plural(compuesta_singular_2, '\1es\2\3\4s\5')
52
- # Con estas reglas, ya se pueden traducir correctamente las palabras compuestas
53
- # de dos palabras aunque no sean del mismo tipo.
54
- # Se pueden agregar, de la misma manera, reglas para cuando se trate de tres
55
- # palabras compuestas, pero esto significa tomar en cuenta más combinaciones.
56
- # En la mayoría de los casos, creo que es suficiente con estas dos.
57
-
58
- # Para obtener correctamente el plural de palablas como maiz => maices,
23
+ # universidad ley o pastel, se aplica una regla distinta: las palabras que
24
+ # terminen con r, y, n, d, l se convierten a plural agregando la sílaba "es",
25
+ # de otra forma, el plural se obtendrían como doctors, camions, universidads,
26
+ # leys y pastels.
27
+ # Para obtener correctamente el plural de palabras como maiz => maices,
59
28
  # pez => peces, las palabras terminadas en z se cambian la z por c, y
60
- # se agrega "es"
61
- inflect.plural(/z([A-Z]|_|$)$/i, 'ces\1')
29
+ # se agrega "es".
30
+ # Por facilidad, haremos uso de la posibilidad que nos brinda `gsub` de pasar
31
+ # un hash para realizar los remplazos.
32
+
33
+ remplazos = {
34
+ 'a' => 'as',
35
+ 'e' => 'es',
36
+ 'i' => 'is',
37
+ 'o' => 'os',
38
+ 'u' => 'us',
39
+ 'd' => 'des',
40
+ 'j' => 'jes',
41
+ 'l' => 'les',
42
+ 'n' => 'nes',
43
+ 'r' => 'res',
44
+ 'y' => 'yes',
45
+ 'z' => 'ces',
46
+ }
47
+
48
+ inflect.plural(/(z|[aeiou]|[rndljy])(?=[A-Z]|_|$)/, remplazos)
62
49
 
63
50
  #-----------------------------------------------------------------------------
64
51
 
65
52
  # Para singularizar, generalmente basta con eliminar la 's' del final, pero
66
53
  # palabras como doctores y universidades se convertirían erróneamente como
67
54
  # doctore y universidade.
68
- # Podemos agregar una nueva regla, cuando la palabra termina en "es", eliminar
69
- # esa sílaba, pero esto tampoco es del todo cierto, ya que funciona con
70
- # palabras como "doctores" o "camiones", porque su singular son "doctor" y
71
- # "camion", respectivamente. Sin embargo, hay otras palabras que se
72
- # convertirían erróneamente, como semestres, por ejemplo, que al eliminar la
73
- # sílaba "es" del final, se singularizaría como 'semestr'. Para evitar eso, se
74
- # obliga que la palabra que termina en "es" y venga precedida de r, n, d o l,
75
- # deba también ser precedida por una vocal.
76
-
77
- # Primero, definimos las palabras que terminen en 'es', precedido de r, n, d,
78
- # l o j, precedido de una vocal.
79
- final_plural_rndlj = /([aeiou][rndlj])es([A-Z]|_|$)/
80
- # Después, definimos las palabras que terminen en vocal seguida de una 's'. En
81
- # caso de que esa vocal sea la e, entonces no debe ser precedida de alguna
82
- # combinación de vocal + r, n, d, l o j.
83
- final_plural_vocal = /((?<![aeiou][rndlj])e|a|i|o|u)s([A-Z]|_|$)/
84
- # Lsas palabras compuestas serán las siguientes: la primera palabra es con r,
85
- # n, d, l o j, seguida de una palabra terminada en vocal. La segunda palabra
86
- # compuesta, será al revés.
87
- compuesta_plural_1 = /#{final_plural_rndlj}([a-z]+)#{final_plural_vocal}/
88
- compuesta_plural_2 = /#{final_plural_vocal}([a-z]+)#{final_plural_rndlj}/
89
-
90
- # las palabras terminadas en ia ya están en singular
91
- inflect.singular(/(ia)([A-Z]|_|$)$/i, '\1')
92
-
93
- # Utilizando las variables creadas anteriormente, se generan las nuevas reglas
94
- # para obtener el singular de las palabras sencillas y compuetas que terminen
95
- # tanto en vocal, como en r, n, d, l, o j.
96
- inflect.singular(final_plural_rndlj, '\1\2')
97
- inflect.singular(final_plural_vocal, '\1\2')
98
- inflect.singular(compuesta_plural_1, '\1\2\3\4\5')
99
- inflect.singular(compuesta_plural_2, '\1\2\3\4\5')
55
+ # Podemos agregar una nueva regla, cuando la palabra termina en "es",
56
+ # eliminar esa sílaba, pero esto tampoco es del todo cierto, ya que funciona
57
+ # con palabras como "doctores" o "camiones", porque su singular son "doctor"
58
+ # y "camion", respectivamente. Sin embargo, hay otras palabras que se
59
+ # convertirían erróneamente, como semestres, por ejemplo, que al eliminar
60
+ # la sílaba "es" del final, se singularizaría como 'semestr'. Para evitar
61
+ # eso, se obliga que la palabra que termina en "es" y venga precedida de r,
62
+ # y, n, d o l, deba también ser precedida por una vocal.
63
+ # Primero, definimos las palabras que terminen en 'es', precedido de r, y, n,
64
+ # d, l o j, precedido de una vocal.
65
+ # Después, definimos las palabras que terminen en vocal seguida de una 's'. En
66
+ # caso de que esa vocal sea la e, entonces debe ser precedida de alguna
67
+ # combinación de las letras b, c, d, f, g, p, t seguida de las letras l o r.
68
+ # Nota: Por una regla que aplica en Inglés, las palabras terminadas en 'ia'
69
+ # son plurales de palabras terminadas en 'um', ejemplo 'medium' => 'media'.
70
+ # Como es Español esa regla no aplica, es necesario especificar que las
71
+ # palabras terminadas en ia ya están en singular.
72
+
73
+ inflect.singular(/((?<singular>ia)|(?<singular>[aeiou][rldyjn])es|(?<singular>[bcdfgpt][lr]e|[aeiou])s)(?=[A-Z]|_|$)/, '\\k<singular>')
100
74
 
101
75
  # Para singularizar palabras con 'ces', como 'maices'
102
76
  inflect.singular(/ces$/, 'z')
@@ -110,7 +84,11 @@ ActiveSupport::Inflector.inflections do |inflect|
110
84
  inflect.irregular 'pais', 'paises'
111
85
  # Pero es necesario agregar otra regla. Pais termina en s, pero ya está en
112
86
  # singular, por lo que hay que indicarle a rails que no elimine la s final.
113
- inflect.singular /(pais)([A-Z]|_|$)/, '\1\2'
87
+ inflect.singular /(pais)(?=[A-Z]|_|$)/, '\1'
88
+
89
+ # el mismo caso aplica para 'mes'
90
+ inflect.irregular 'mes', 'meses'
91
+ inflect.singular /(mes)(?=[A-Z]|_|$)/, '\1'
114
92
 
115
93
  # Ejemplos cuyo plural y singular sea el mismo
116
94
  inflect.uncountable %w( campus lunes martes miercoles jueves viernes )
data/lib/rieles.rb CHANGED
@@ -1,16 +1,17 @@
1
1
  require 'rieles/version'
2
+ require 'rails'
2
3
  require 'config/initializer/inflections.rb'
3
4
 
4
5
  module Rieles
5
6
  I18n.load_path += Dir.glob( File.dirname(__FILE__) + "/config/locales/*.{rb,yml}" )
6
7
 
7
- class Railtie < Rails::Railtie
8
+ class Railtie < ::Rails::Railtie
8
9
  config.app_generators do |g|
9
10
  g.templates.unshift File::expand_path('../templates', __FILE__)
10
11
  end
11
12
  end
12
13
 
13
- class Engine < Rails::Engine
14
+ class Engine < ::Rails::Engine
14
15
  end
15
16
  end
16
17
 
@@ -1,3 +1,3 @@
1
1
  module Rieles
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -1,39 +1,39 @@
1
1
  <h1>Listado de <%= plural_table_name.humanize %></h1>
2
2
 
3
3
  <%% if @<%= plural_table_name %>.any? %>
4
- <table>
5
- <thead>
6
- <tr>
4
+ <table>
5
+ <thead>
6
+ <tr>
7
7
  <%- attributes.reject(&:password_digest?).each do |attribute| -%>
8
- <th><%= attribute.human_name %></th>
8
+ <th><%= attribute.human_name %></th>
9
9
  <%- end -%>
10
- <th></th>
11
- <th></th>
12
- <th></th>
13
- </tr>
14
- </thead>
10
+ <th></th>
11
+ <th></th>
12
+ <th></th>
13
+ </tr>
14
+ </thead>
15
15
 
16
- <tbody>
16
+ <tbody>
17
17
  <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
18
- <tr>
18
+ <tr>
19
19
  <%- attributes.reject(&:password_digest?).each do |attribute| -%>
20
20
  <%- if attribute.type == :integer or attribute.type == :decimal -%>
21
- <td><%%= number_with_delimiter <%= singular_table_name %>.<%= attribute.name %> %></td>
21
+ <td><%%= number_with_delimiter <%= singular_table_name %>.<%= attribute.name %> %></td>
22
22
  <%- else -%>
23
- <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
23
+ <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
24
24
  <%- end -%>
25
25
  <%- end -%>
26
- <td><%%= link_to 'Mostrar', <%= singular_table_name %> %></td>
27
- <td><%%= link_to 'Editar', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
28
- <td><%%= link_to 'Eliminar', <%= singular_table_name %>, method: :delete, data: { confirm: '¿Estás seguro?' } %></td>
29
- </tr>
26
+ <td><%%= link_to 'Mostrar', <%= singular_table_name %> %></td>
27
+ <td><%%= link_to 'Editar', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
28
+ <td><%%= link_to 'Eliminar', <%= singular_table_name %>, method: :delete, data: { confirm: '¿Estás seguro?' } %></td>
29
+ </tr>
30
30
  <%% end %>
31
- </tbody>
32
- </table>
31
+ </tbody>
32
+ </table>
33
33
  <%% else %>
34
- <div>
35
- <h3>No se encontraron <%= plural_table_name.humanize %></h3>
36
- </div>
34
+ <div>
35
+ <h3>No se encontraron <%= plural_table_name.humanize %></h3>
36
+ </div>
37
37
  <%% end %>
38
38
 
39
39
  <br />
data/rieles.gemspec CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = Rieles::VERSION
18
18
 
19
+ gem.add_dependency 'rails', '~> 3.0'
20
+
19
21
  gem.add_development_dependency 'generator_spec'
20
22
  gem.add_development_dependency 'rspec'
21
23
  end
@@ -1,21 +1,20 @@
1
1
  # encoding: UTF-8
2
- require 'rails'
3
2
  require 'rieles'
4
3
 
5
4
  describe 'Inflections' do
6
5
  def singulares
7
- %w(riel camion hospital universidad reloj semestre mesa ave bola materia)
6
+ %w[riel camion hospital universidad reloj ley semestre mesa ave bola materia]
8
7
  end
9
8
 
10
9
  def plurales
11
- %w(rieles camiones hospitales universidades relojes semestres mesas aves bolas materias)
10
+ %w[rieles camiones hospitales universidades relojes leyes semestres mesas aves bolas materias]
12
11
  end
13
12
 
14
13
  #########################################################
15
14
  # Sección que prueba las conversiones al plural
16
15
  #########################################################
17
16
 
18
- describe 'Pluralizaciones' do
17
+ context 'Pluralizaciones' do
19
18
  it 'debe pluralizar palabras sencillas' do
20
19
  singulares.each_with_index do |s, i|
21
20
  s.pluralize.should == plurales[i]
@@ -23,8 +22,8 @@ describe 'Inflections' do
23
22
  end
24
23
 
25
24
  it 'debe pluralizar palabras compuestas' do
26
- singulares_compuestas = singulares.permutation(2).to_a.collect{ |e| e.join('_') }
27
- plurales_compuestas = plurales.permutation(2).to_a.collect{ |e| e.join('_') }
25
+ singulares_compuestas = singulares.permutation(4).to_a.collect{ |e| e.join('_') }
26
+ plurales_compuestas = plurales.permutation(4).to_a.collect{ |e| e.join('_') }
28
27
  singulares_compuestas.each_with_index do |s, i|
29
28
  s.pluralize.should == plurales_compuestas[i]
30
29
  end
@@ -41,6 +40,7 @@ describe 'Inflections' do
41
40
  'camiones_grandes'.pluralize.should == 'camiones_grandes'
42
41
  'universidades_hospitales_doctores'.pluralize.should == 'universidades_hospitales_doctores'
43
42
  'paises'.pluralize.should == 'paises'
43
+ 'meses'.pluralize.should == 'meses'
44
44
  'lunes'.pluralize.should == 'lunes'
45
45
  end
46
46
  end
@@ -49,16 +49,16 @@ describe 'Inflections' do
49
49
  # Sección que prueba las conversiones al singular
50
50
  #########################################################
51
51
 
52
- describe 'Singularizaciones' do
52
+ context 'Singularizaciones' do
53
53
  it 'debe singularizar palabras sencillas' do
54
54
  plurales.each_with_index do |p, i|
55
55
  p.singularize.should == singulares[i]
56
56
  end
57
57
  end
58
58
 
59
- it 'debe pluralizar palabras compuestas' do
60
- singulares_compuestas = singulares.permutation(2).to_a.collect{ |e| e.join('_') }
61
- plurales_compuestas = plurales.permutation(2).to_a.collect{ |e| e.join('_') }
59
+ it 'debe singularizar palabras compuestas' do
60
+ singulares_compuestas = singulares.permutation(4).to_a.collect{ |e| e.join('_') }
61
+ plurales_compuestas = plurales.permutation(4).to_a.collect{ |e| e.join('_') }
62
62
  plurales_compuestas.each_with_index do |p, i|
63
63
  p.singularize.should == singulares_compuestas[i]
64
64
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rieles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Azarel Doroteo Pacheco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-09 00:00:00.000000000 Z
11
+ date: 2013-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: generator_spec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -48,6 +62,7 @@ extensions: []
48
62
  extra_rdoc_files: []
49
63
  files:
50
64
  - .gitignore
65
+ - .travis.yml
51
66
  - Gemfile
52
67
  - README.rdoc
53
68
  - Rakefile
@@ -91,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
106
  version: '0'
92
107
  requirements: []
93
108
  rubyforge_project:
94
- rubygems_version: 2.0.0
109
+ rubygems_version: 2.0.3
95
110
  signing_key:
96
111
  specification_version: 4
97
112
  summary: Instala inflections, locales y templates de scaffold para trabajar en Español.