rieles 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.