makeloc 0.1.2 → 0.2.0
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 +4 -4
- data/README.md +2 -1
- data/VERSION +1 -1
- data/lib/makeloc/core_extensions.rb +31 -13
- data/lib/makeloc/generators/do/USAGE +3 -1
- data/lib/makeloc/generators/do/do_generator.rb +7 -1
- data/makeloc.gemspec +5 -6
- data/spec/generators/test_generator_spec.rb +63 -50
- data/spec/generators/tmp/{test.en.yml.bk → test.en.yml.original} +0 -0
- data/spec/generators/tmp/{test_incomplete.en.yml.bk → test_incomplete.en.yml.original} +2 -0
- data/spec/spec_helper.rb +2 -2
- metadata +4 -5
- data/spec/generators/tmp/test.en.yml +0 -185
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3d4e4f0024656f307a78ca6f2666e6c393dc05d
|
4
|
+
data.tar.gz: 00f1cb02e417f676c20b02ac87334711841a10a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cf55090558bb393400048527940adb4e7aca1c1241b3b2d33edd13db4e697b92a2a2b0037d568f12f848323fbb8c236dc5997f0cdc3bff3e46e3c095fa682d8
|
7
|
+
data.tar.gz: 883bedc6f342a923d02a9b7e230a4ecb7f1e07b9211b7273b7f3237e298bd316ab813b1039a3c8794d58035d93e0dfec8839d5c22f626accf317e5bac9d36260
|
data/README.md
CHANGED
@@ -12,8 +12,9 @@ Makeloc, given a reference filepath (formatted as `path/to/file/context.referenc
|
|
12
12
|
## Usage
|
13
13
|
Makeloc is a generator. The following will create, or update if it exists, the file `config/locales/activerecord.it.yml`
|
14
14
|
|
15
|
-
rails g makeloc:do it config/locales/activerecord.en.yml
|
15
|
+
rails g makeloc:do it config/locales/activerecord.en.yml [--strict]
|
16
16
|
|
17
|
+
with option --strict it overwrites (if already present) the generated locale file deleting its original extra translations
|
17
18
|
|
18
19
|
## Test
|
19
20
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -37,29 +37,47 @@ class Hash
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
def at(path)
|
40
|
+
def at(path,opts={})
|
41
41
|
array_path = path.to_s.split('.')
|
42
42
|
current_key = array_path.shift
|
43
|
+
# raise ArgumentError, "wrong key " unless self.keys.include?(current_key)
|
44
|
+
raise ArgumentError, "wrong opts" unless (opts.empty? or opts[:set])
|
43
45
|
if array_path.empty?
|
44
|
-
|
46
|
+
case opts[:set]
|
47
|
+
when :delete
|
48
|
+
self.delete(current_key)
|
49
|
+
when nil
|
50
|
+
self[current_key]
|
51
|
+
else
|
52
|
+
self[current_key] = opts[:set]
|
53
|
+
end
|
45
54
|
else
|
46
|
-
self[current_key].at(array_path.join('.'))
|
55
|
+
self[current_key] and self[current_key].at(array_path.join('.'),opts)
|
47
56
|
end
|
48
57
|
end
|
49
58
|
|
59
|
+
def delete_at(path)
|
60
|
+
at(path, :set => :delete)
|
61
|
+
end
|
62
|
+
|
50
63
|
end
|
51
64
|
|
52
|
-
# hash = { a: 1, b: { d: 2, e: [3, 4] }, c: {f: 0, g: 3} }
|
65
|
+
# # hash = { a: 1, b: { d: 2, e: [3, 4] }, c: {f: 0, g: 3} }
|
53
66
|
# hash = {"date"=>{"abbr_day_names"=>["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"], "abbr_month_names"=>[nil, "Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], "day_names"=>["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"], "formats"=>{"default"=>"%d-%m-%Y", "long"=>"%d %B %Y", "short"=>"%d %b"}, "month_names"=>[nil, "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], "order"=>[:day, :month, :year]}, "datetime"=>{"distance_in_words"=>{"about_x_hours"=>{"one"=>"circa un'ora", "other"=>"circa %{count} ore"}, "about_x_months"=>{"one"=>"circa un mese", "other"=>"circa %{count} mesi"}, "about_x_years"=>{"one"=>"circa un anno", "other"=>"circa %{count} anni"}, "almost_x_years"=>{"one"=>"circa 1 anno", "other"=>"circa %{count} anni"}, "half_a_minute"=>"mezzo minuto", "less_than_x_minutes"=>{"one"=>"meno di un minuto", "other"=>"meno di %{count} minuti"}, "less_than_x_seconds"=>{"one"=>"meno di un secondo", "other"=>"meno di %{count} secondi"}, "over_x_years"=>{"one"=>"oltre un anno", "other"=>"oltre %{count} anni"}, "x_days"=>{"one"=>"1 giorno", "other"=>"%{count} giorni"}, "x_minutes"=>{"one"=>"1 minuto", "other"=>"%{count} minuti"}, "x_months"=>{"one"=>"1 mese", "other"=>"%{count} mesi"}, "x_seconds"=>{"one"=>"1 secondo", "other"=>"%{count} secondi"}}, "prompts"=>{"day"=>"Giorno", "hour"=>"Ora", "minute"=>"Minuto", "month"=>"Mese", "second"=>"Secondi", "year"=>"Anno"}}, "errors"=>{"format"=>"%{attribute} %{message}", "messages"=>{"accepted"=>"deve essere accettata", "blank"=>"non può essere lasciato in bianco", "confirmation"=>"non coincide con la conferma", "empty"=>"non può essere vuoto", "equal_to"=>"deve essere uguale a %{count}", "even"=>"deve essere pari", "exclusion"=>"è riservato", "greater_than"=>"deve essere superiore a %{count}", "greater_than_or_equal_to"=>"deve essere superiore o uguale a %{count}", "inclusion"=>"non è incluso nella lista", "invalid"=>"non è valido", "less_than"=>"deve essere meno di %{count}", "less_than_or_equal_to"=>"deve essere meno o uguale a %{count}", "not_a_number"=>"non è un numero", "not_an_integer"=>"non è un intero", "odd"=>"deve essere dispari", "record_invalid"=>"Validazione fallita: %{errors}", "taken"=>"è già in uso", "too_long"=>{"one"=>"è troppo lungo (il massimo è 1 carattere)", "other"=>"è troppo lungo (il massimo è %{count} caratteri)"}, "too_short"=>{"one"=>"è troppo corto (il minimo è 1 carattere)", "other"=>"è troppo corto (il minimo è %{count} caratteri)"}, "wrong_length"=>{"one"=>"è della lunghezza sbagliata (deve essere di 1 carattere)", "other"=>"è della lunghezza sbagliata (deve essere di %{count} caratteri)"}}, "template"=>{"body"=>"Per favore ricontrolla i seguenti campi:", "header"=>{"one"=>"Non posso salvare questo %{model}: 1 errore", "other"=>"Non posso salvare questo %{model}: %{count} errori."}}}, "helpers"=>{"select"=>{"prompt"=>"Per favore, seleziona", "prompt_allow_nil"=>"Per favore, seleziona o lascia in binaco"}, "submit"=>{"create"=>"Crea %{model}", "submit"=>"Invia %{model}", "update"=>"Aggiorna %{model}", "cancel"=>"Annulla %{model}", "reset"=>"Cancella %{model}", "add"=>"Aggiungi %{model}"}, "links"=>{"new"=>"Nuovo %{model}", "add"=>"Aggiungi %{model}", "edit"=>"Modifica %{model}", "reset"=>"Reset", "back"=>"Indietro", "cancel"=>"Annulla", "confirm"=>"Sei sicuro?", "destroy"=>"Elimina %{model}", "show"=>"Visualizza %{model}"}, "titles"=>{"index"=>"Lista %{model}", "edit"=>"Modifica %{model}", "new"=>"Nuovo %{model}", "show"=>"Riepilogo %{model}"}, "tooltips"=>{"edit"=>"Modifica %{model}", "save"=>"Salva %{model}", "new"=>"Crea %{model}", "destroy"=>"Elimina %{model}", "back"=>"Torna alla lista", "show"=>"Visualizza %{model}", "add"=>"Aggiungi %{model}"}}, "sign_out"=>"Esci", "sign_in"=>"Accedi", "number"=>{"currency"=>{"format"=>{"delimiter"=>",", "format"=>"%n %u", "precision"=>2, "separator"=>".", "significant"=>false, "strip_insignificant_zeros"=>false, "unit"=>"€"}}, "format"=>{"delimiter"=>",", "precision"=>2, "separator"=>".", "significant"=>false, "strip_insignificant_zeros"=>false}, "human"=>{"decimal_units"=>{"format"=>"%n %u", "units"=>{"billion"=>"Miliardi", "million"=>"Milioni", "quadrillion"=>"Biliardi", "thousand"=>"Mila", "trillion"=>"Bilioni", "unit"=>""}}, "format"=>{"delimiter"=>"", "precision"=>1, "significant"=>true, "strip_insignificant_zeros"=>true}, "storage_units"=>{"format"=>"%n %u", "units"=>{"byte"=>{"one"=>"Byte", "other"=>"Byte"}, "gb"=>"GB", "kb"=>"KB", "mb"=>"MB", "tb"=>"TB"}}}, "percentage"=>{"format"=>{"delimiter"=>""}}, "precision"=>{"format"=>{"delimiter"=>""}}}, "support"=>{"array"=>{"last_word_connector"=>" e ", "two_words_connector"=>" e ", "words_connector"=>", "}}, "time"=>{"am"=>"am", "formats"=>{"default"=>"%a %d %b %Y, %H:%M:%S %z", "long"=>"%d %B %Y %H:%M", "short"=>"%d %b %H:%M"}, "pm"=>"pm"}, "gender_suffix"=>{"M"=>"o", "F"=>"a"}, "activemodel"=>{"errors"=>{"format"=>"%{attribute} %{message}", "messages"=>{"accepted"=>"deve essere accettata", "blank"=>"non può essere lasciato in bianco", "confirmation"=>"non coincide con la conferma", "empty"=>"non può essere vuoto", "equal_to"=>"deve essere uguale a %{count}", "even"=>"deve essere pari", "exclusion"=>"è riservato", "greater_than"=>"deve essere superiore a %{count}", "greater_than_or_equal_to"=>"deve essere superiore o uguale a %{count}", "inclusion"=>"non è incluso nella lista", "invalid"=>"non è valido", "less_than"=>"deve essere meno di %{count}", "less_than_or_equal_to"=>"deve essere meno o uguale a %{count}", "not_a_number"=>"non è un numero", "not_an_integer"=>"non è un intero", "odd"=>"deve essere dispari", "record_invalid"=>"Validazione fallita: %{errors}", "taken"=>"è già in uso", "too_long"=>{"one"=>"è troppo lungo (il massimo è 1 carattere)", "other"=>"è troppo lungo (il massimo è %{count} caratteri)"}, "too_short"=>{"one"=>"è troppo corto (il minimo è 1 carattere)", "other"=>"è troppo corto (il minimo è %{count} caratteri)"}, "wrong_length"=>{"one"=>"è della lunghezza sbagliata (deve essere di 1 carattere)", "other"=>"è della lunghezza sbagliata (deve essere di %{count} caratteri)"}}, "template"=>{"body"=>"Per favore ricontrolla i seguenti campi:", "header"=>{"one"=>"Non posso salvare questo %{model}: 1 errore", "other"=>"Non posso salvare questo %{model}: %{count} errori."}}}}, "activerecord"=>{"errors"=>{"format"=>"%{attribute} %{message}", "messages"=>{"accepted"=>"deve essere accettata", "blank"=>"non può essere lasciato in bianco", "confirmation"=>"non coincide con la conferma", "empty"=>"non può essere vuoto", "equal_to"=>"deve essere uguale a %{count}", "even"=>"deve essere pari", "exclusion"=>"è riservato", "greater_than"=>"deve essere superiore a %{count}", "greater_than_or_equal_to"=>"deve essere superiore o uguale a %{count}", "inclusion"=>"non è incluso nella lista", "invalid"=>"non è valido", "less_than"=>"deve essere meno di %{count}", "less_than_or_equal_to"=>"deve essere meno o uguale a %{count}", "not_a_number"=>"non è un numero", "not_an_integer"=>"non è un intero", "odd"=>"deve essere dispari", "record_invalid"=>"Validazione fallita: %{errors}", "taken"=>"è già in uso", "too_long"=>{"one"=>"è troppo lungo (il massimo è 1 carattere)", "other"=>"è troppo lungo (il massimo è %{count} caratteri)"}, "too_short"=>{"one"=>"è troppo corto (il minimo è 1 carattere)", "other"=>"è troppo corto (il minimo è %{count} caratteri)"}, "wrong_length"=>{"one"=>"è della lunghezza sbagliata (deve essere di 1 carattere)", "other"=>"è della lunghezza sbagliata (deve essere di %{count} caratteri)"}}, "template"=>{"body"=>"Per favore ricontrolla i seguenti campi:", "header"=>{"one"=>"Non posso salvare questo %{model}: 1 errore", "other"=>"Non posso salvare questo %{model}: %{count} errori."}}}}}
|
54
67
|
|
55
|
-
# puts hash.at('date.
|
68
|
+
# # puts hash.at('date.dady_names').nil?
|
69
|
+
# # puts hash.at('datetime.distance_in_words.about_x_hours.one', :set => 'ciccio')
|
70
|
+
# # puts hash.at('datetime.distance_in_words.about_x_hours.one')
|
71
|
+
# # puts hash.at('datetime.distance_in_words.about_x_hours.one', :set => :delete)
|
72
|
+
# puts hash.delete_at('datetime.distance_in_words.about_x_hours.one')
|
73
|
+
# puts hash.at('datetime.distance_in_words.about_x_hours')
|
56
74
|
|
57
|
-
# hash.parse{|k,v| puts "#{k} => #{v}"}
|
58
|
-
# puts
|
59
|
-
# hash.parse_leaves{|k,v| puts "#{k} => #{v}"}
|
60
|
-
# puts
|
61
|
-
# hash.parse(true){|k,v| puts "#{k} => #{v}"}
|
62
|
-
# puts
|
63
|
-
# hash.update_leaves!{|k,v| nil }
|
75
|
+
# # hash.parse{|k,v| puts "#{k} => #{v}"}
|
76
|
+
# # puts
|
77
|
+
# # hash.parse_leaves{|k,v| puts "#{k} => #{v}"}
|
78
|
+
# # puts
|
79
|
+
# # hash.parse(true){|k,v| puts "#{k} => #{v}"}
|
80
|
+
# # puts
|
81
|
+
# # hash.update_leaves!{|k,v| nil }
|
64
82
|
|
65
|
-
# puts hash
|
83
|
+
# # puts hash
|
@@ -2,7 +2,9 @@ Description:
|
|
2
2
|
A little generator to tidy locale files along with their content for Ruby On Rails
|
3
3
|
|
4
4
|
Example:
|
5
|
-
rails g makeloc:do it config/locales/activerecord.en.yml
|
5
|
+
rails g makeloc:do it config/locales/activerecord.en.yml [--strict]
|
6
6
|
|
7
7
|
This will create:
|
8
8
|
config/locales/activerecord.it.yml
|
9
|
+
|
10
|
+
with option --strict it overwrites (if already present) the generated locale file deleting its original extra translations
|
@@ -6,6 +6,7 @@ module Makeloc
|
|
6
6
|
|
7
7
|
argument :target_lang, :type => :string
|
8
8
|
argument :source_file, :type => :string
|
9
|
+
class_option :strict, :type => :boolean
|
9
10
|
|
10
11
|
def do
|
11
12
|
ref_locale_fp = Pathname.new(source_file)
|
@@ -23,7 +24,12 @@ module Makeloc
|
|
23
24
|
# updating target data with original values if they exists
|
24
25
|
if File.exist? target_fp
|
25
26
|
existing_target_data = YAML.load(File.open(File.expand_path(target_fp)))[target_lang]
|
26
|
-
|
27
|
+
|
28
|
+
# delete extra keys present in original target data
|
29
|
+
(existing_target_data.flatten_keys - target_data.flatten_keys).each{|extra_key| existing_target_data.delete_at(extra_key)} if options[:strict]
|
30
|
+
|
31
|
+
target_data.deep_merge!(existing_target_data)
|
32
|
+
|
27
33
|
end
|
28
34
|
|
29
35
|
create_file(target_fp){ {target_lang => target_data}.to_yaml(:line_width => -1) } # line_width => -1 to disable indentation
|
data/makeloc.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: makeloc 0.
|
5
|
+
# stub: makeloc 0.2.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "makeloc"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.2.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["masciugo"]
|
14
|
-
s.date = "2014-07-
|
14
|
+
s.date = "2014-07-09"
|
15
15
|
s.description = ""
|
16
16
|
s.email = "masciugo@gmail.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -33,10 +33,9 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/makeloc/railtie.rb",
|
34
34
|
"makeloc.gemspec",
|
35
35
|
"spec/generators/test_generator_spec.rb",
|
36
|
-
"spec/generators/tmp/test.en.yml",
|
37
|
-
"spec/generators/tmp/test.en.yml.bk",
|
36
|
+
"spec/generators/tmp/test.en.yml.original",
|
38
37
|
"spec/generators/tmp/test.it.yml",
|
39
|
-
"spec/generators/tmp/test_incomplete.en.yml.
|
38
|
+
"spec/generators/tmp/test_incomplete.en.yml.original",
|
40
39
|
"spec/spec_helper.rb"
|
41
40
|
]
|
42
41
|
s.homepage = "http://github.com/masciugo/makeloc"
|
@@ -4,69 +4,82 @@ module Makeloc
|
|
4
4
|
|
5
5
|
describe DoGenerator do
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
# loaded once at beginning
|
8
|
+
let!(:ref_hash_with_root) { YAML.load(File.read(REF_LANG_FP)) }
|
9
|
+
let!(:ref_hash) { ref_hash_with_root[REF_LANG] }
|
10
|
+
let!(:incomplete_target_hash_with_root) { YAML.load(File.read(TARGET_INCOMPLETE_ORIGINAL_FP)) }
|
11
|
+
let!(:incomplete_target_hash) { incomplete_target_hash_with_root[TARGET_LANG] }
|
12
|
+
|
13
|
+
EXTRA_KEYS = %w{ date.extra_key_1 date.formats.extra_key_2 }
|
14
|
+
MISSING_KEYS = %w{ datetime.distance_in_words.about_x_hours.other date.abbr_day_names }
|
15
|
+
|
16
|
+
# loaded at runtime after each generation
|
17
|
+
let(:target_hash_with_root) { YAML.load(File.read(TARGET_LANG_FP)) }
|
18
|
+
let(:target_hash) { target_hash_with_root[TARGET_LANG] }
|
19
|
+
|
20
|
+
shared_examples "a brand new generated locale file" do
|
21
|
+
it "should generate a #{TARGET_LANG_FP.basename} file in the same dir" do
|
22
|
+
File.exists? TARGET_LANG_FP
|
23
|
+
end
|
24
|
+
it "#{TARGET_LANG_FP.basename} hash has '#{TARGET_LANG}' as root key" do
|
25
|
+
target_hash_with_root.keys.should ==([TARGET_LANG])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
shared_examples "a new generated locale file with identical structure" do
|
30
|
+
it "#{TARGET_LANG_FP.basename} hash has identical keys set as #{REF_LANG_FP.basename} hash" do
|
31
|
+
target_hash.flatten_keys.should eql(ref_hash.flatten_keys)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
with_input "y\n" do
|
36
|
+
|
37
|
+
context "when #{TARGET_LANG_FP.basename} doesn't exist" do
|
38
|
+
with_args "en", REF_LANG_FP
|
39
|
+
|
10
40
|
before(:each) do
|
11
|
-
FileUtils.
|
41
|
+
FileUtils.rm_rf TARGET_LANG_FP
|
42
|
+
subject.should generate
|
12
43
|
end
|
13
44
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
let(:target_hash) { target_hash_with_root[TARGET_LANG] }
|
21
|
-
|
22
|
-
shared_examples "a brand new generated locale file" do
|
23
|
-
it "should generate a #{TARGET_LANG_FP.basename} file in the same dir" do
|
24
|
-
File.exists? TARGET_LANG_FP
|
25
|
-
end
|
26
|
-
it "#{TARGET_LANG_FP.basename} hash has same structure as hash for #{REF_LANG_FP.basename}" do
|
27
|
-
ref_hash.flatten_keys.should eql(target_hash.flatten_keys)
|
28
|
-
end
|
29
|
-
it "#{TARGET_LANG_FP.basename} hash has '#{TARGET_LANG}' as root key" do
|
30
|
-
target_hash_with_root.keys.should ==([TARGET_LANG])
|
31
|
-
end
|
45
|
+
it_should_behave_like "a brand new generated locale file"
|
46
|
+
it_should_behave_like "a new generated locale file with identical structure"
|
47
|
+
it "gets created with nil leaves" do
|
48
|
+
all_values = []
|
49
|
+
target_hash.parse_leaves{|k,v| all_values << v }
|
50
|
+
all_values.compact.should be_empty
|
32
51
|
end
|
52
|
+
end
|
33
53
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
# loaded once at beginning
|
38
|
-
let!(:incomplete_target_hash_with_root) { YAML.load(File.read(TARGET_INCOMPLETE_BK_FP)) }
|
39
|
-
let!(:incomplete_target_hash) { incomplete_target_hash_with_root[TARGET_LANG] }
|
40
|
-
|
41
|
-
before(:each) do
|
42
|
-
FileUtils.cp TARGET_INCOMPLETE_BK_FP, TARGET_LANG_FP
|
43
|
-
subject.should generate
|
44
|
-
end
|
45
|
-
it_should_behave_like "a brand new generated locale file"
|
54
|
+
context "when #{TARGET_LANG_FP.basename} already exists with some missing keys (ie.: #{MISSING_KEYS.join(', ')}) and some extra keys (ie.: #{EXTRA_KEYS.join(', ')})" do
|
55
|
+
with_args "en", REF_LANG_FP
|
46
56
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
52
|
-
it "keeps old values (value at 'date.abbr_month_names' is in lang #{TARGET_LANG})" do
|
53
|
-
target_hash.at('date.abbr_month_names').should ==(incomplete_target_hash.at('date.abbr_month_names'))
|
54
|
-
end
|
57
|
+
before(:each) do
|
58
|
+
FileUtils.cp TARGET_INCOMPLETE_ORIGINAL_FP, TARGET_LANG_FP
|
59
|
+
subject.should generate
|
55
60
|
end
|
56
61
|
|
57
|
-
|
58
|
-
|
59
|
-
|
62
|
+
it_should_behave_like "a brand new generated locale file"
|
63
|
+
MISSING_KEYS.each do |key|
|
64
|
+
it "value at '#{key}' is nil" do
|
65
|
+
target_hash.at(key).should be_nil
|
60
66
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
67
|
+
end
|
68
|
+
it "keeps old values (value at 'date.abbr_month_names' is in lang #{TARGET_LANG})" do
|
69
|
+
target_hash.at('date.abbr_month_names').should ==(incomplete_target_hash.at('date.abbr_month_names'))
|
70
|
+
end
|
71
|
+
EXTRA_KEYS.each do |key|
|
72
|
+
it "keeps extra key #{key} along with its original value" do
|
73
|
+
target_hash.at(key).should == incomplete_target_hash.at(key)
|
66
74
|
end
|
67
75
|
end
|
76
|
+
context "with option --strict" do
|
77
|
+
with_args "en", REF_LANG_FP, '--strict'
|
78
|
+
it_should_behave_like "a new generated locale file with identical structure"
|
79
|
+
end
|
68
80
|
|
69
81
|
end
|
82
|
+
|
70
83
|
end
|
71
84
|
|
72
85
|
end
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -38,5 +38,5 @@ REF_LANG = 'it'
|
|
38
38
|
REF_LANG_FP = Pathname.new(File.join(TMP_FOLDER,"test.#{REF_LANG}.yml"))
|
39
39
|
TARGET_LANG_FP = Pathname.new(File.join(TMP_FOLDER,"test.#{TARGET_LANG}.yml"))
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
TARGET_LANG_ORIGINAL_FP = Pathname.new(File.join(TMP_FOLDER,"test.#{TARGET_LANG}.yml.original"))
|
42
|
+
TARGET_INCOMPLETE_ORIGINAL_FP = Pathname.new(File.join(TMP_FOLDER,"test_incomplete.#{TARGET_LANG}.yml.original"))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: makeloc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- masciugo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -144,10 +144,9 @@ files:
|
|
144
144
|
- lib/makeloc/railtie.rb
|
145
145
|
- makeloc.gemspec
|
146
146
|
- spec/generators/test_generator_spec.rb
|
147
|
-
- spec/generators/tmp/test.en.yml
|
148
|
-
- spec/generators/tmp/test.en.yml.bk
|
147
|
+
- spec/generators/tmp/test.en.yml.original
|
149
148
|
- spec/generators/tmp/test.it.yml
|
150
|
-
- spec/generators/tmp/test_incomplete.en.yml.
|
149
|
+
- spec/generators/tmp/test_incomplete.en.yml.original
|
151
150
|
- spec/spec_helper.rb
|
152
151
|
homepage: http://github.com/masciugo/makeloc
|
153
152
|
licenses:
|
@@ -1,185 +0,0 @@
|
|
1
|
-
---
|
2
|
-
en:
|
3
|
-
date:
|
4
|
-
abbr_day_names:
|
5
|
-
abbr_month_names:
|
6
|
-
day_names:
|
7
|
-
formats:
|
8
|
-
default:
|
9
|
-
long:
|
10
|
-
short:
|
11
|
-
month_names:
|
12
|
-
order:
|
13
|
-
datetime:
|
14
|
-
distance_in_words:
|
15
|
-
about_x_hours:
|
16
|
-
one:
|
17
|
-
other:
|
18
|
-
about_x_months:
|
19
|
-
one:
|
20
|
-
other:
|
21
|
-
about_x_years:
|
22
|
-
one:
|
23
|
-
other:
|
24
|
-
almost_x_years:
|
25
|
-
one:
|
26
|
-
other:
|
27
|
-
half_a_minute:
|
28
|
-
less_than_x_minutes:
|
29
|
-
one:
|
30
|
-
other:
|
31
|
-
less_than_x_seconds:
|
32
|
-
one:
|
33
|
-
other:
|
34
|
-
over_x_years:
|
35
|
-
one:
|
36
|
-
other:
|
37
|
-
x_days:
|
38
|
-
one:
|
39
|
-
other:
|
40
|
-
x_minutes:
|
41
|
-
one:
|
42
|
-
other:
|
43
|
-
x_months:
|
44
|
-
one:
|
45
|
-
other:
|
46
|
-
x_seconds:
|
47
|
-
one:
|
48
|
-
other:
|
49
|
-
prompts:
|
50
|
-
day:
|
51
|
-
hour:
|
52
|
-
minute:
|
53
|
-
month:
|
54
|
-
second:
|
55
|
-
year:
|
56
|
-
errors:
|
57
|
-
format:
|
58
|
-
messages:
|
59
|
-
accepted:
|
60
|
-
blank:
|
61
|
-
confirmation:
|
62
|
-
empty:
|
63
|
-
equal_to:
|
64
|
-
even:
|
65
|
-
exclusion:
|
66
|
-
greater_than:
|
67
|
-
greater_than_or_equal_to:
|
68
|
-
inclusion:
|
69
|
-
invalid:
|
70
|
-
less_than:
|
71
|
-
less_than_or_equal_to:
|
72
|
-
not_a_number:
|
73
|
-
not_an_integer:
|
74
|
-
odd:
|
75
|
-
record_invalid:
|
76
|
-
taken:
|
77
|
-
too_long:
|
78
|
-
one:
|
79
|
-
other:
|
80
|
-
too_short:
|
81
|
-
one:
|
82
|
-
other:
|
83
|
-
wrong_length:
|
84
|
-
one:
|
85
|
-
other:
|
86
|
-
template:
|
87
|
-
body:
|
88
|
-
header:
|
89
|
-
one:
|
90
|
-
other:
|
91
|
-
helpers:
|
92
|
-
select:
|
93
|
-
prompt:
|
94
|
-
prompt_allow_nil:
|
95
|
-
submit:
|
96
|
-
create:
|
97
|
-
submit:
|
98
|
-
update:
|
99
|
-
cancel:
|
100
|
-
reset:
|
101
|
-
add:
|
102
|
-
links:
|
103
|
-
new:
|
104
|
-
add:
|
105
|
-
edit:
|
106
|
-
reset:
|
107
|
-
back:
|
108
|
-
cancel:
|
109
|
-
confirm:
|
110
|
-
destroy:
|
111
|
-
show:
|
112
|
-
titles:
|
113
|
-
index:
|
114
|
-
edit:
|
115
|
-
new:
|
116
|
-
show:
|
117
|
-
tooltips:
|
118
|
-
edit:
|
119
|
-
save:
|
120
|
-
new:
|
121
|
-
destroy:
|
122
|
-
back:
|
123
|
-
show:
|
124
|
-
add:
|
125
|
-
sign_out:
|
126
|
-
sign_in:
|
127
|
-
number:
|
128
|
-
currency:
|
129
|
-
format:
|
130
|
-
delimiter:
|
131
|
-
format:
|
132
|
-
precision:
|
133
|
-
separator:
|
134
|
-
significant:
|
135
|
-
strip_insignificant_zeros:
|
136
|
-
unit:
|
137
|
-
format:
|
138
|
-
delimiter:
|
139
|
-
precision:
|
140
|
-
separator:
|
141
|
-
significant:
|
142
|
-
strip_insignificant_zeros:
|
143
|
-
human:
|
144
|
-
decimal_units:
|
145
|
-
format:
|
146
|
-
units:
|
147
|
-
billion:
|
148
|
-
million:
|
149
|
-
quadrillion:
|
150
|
-
thousand:
|
151
|
-
trillion:
|
152
|
-
unit:
|
153
|
-
format:
|
154
|
-
delimiter:
|
155
|
-
precision:
|
156
|
-
significant:
|
157
|
-
strip_insignificant_zeros:
|
158
|
-
storage_units:
|
159
|
-
format:
|
160
|
-
units:
|
161
|
-
byte:
|
162
|
-
one:
|
163
|
-
other:
|
164
|
-
gb:
|
165
|
-
kb:
|
166
|
-
mb:
|
167
|
-
tb:
|
168
|
-
percentage:
|
169
|
-
format:
|
170
|
-
delimiter:
|
171
|
-
precision:
|
172
|
-
format:
|
173
|
-
delimiter:
|
174
|
-
support:
|
175
|
-
array:
|
176
|
-
last_word_connector:
|
177
|
-
two_words_connector:
|
178
|
-
words_connector:
|
179
|
-
time:
|
180
|
-
am:
|
181
|
-
formats:
|
182
|
-
default:
|
183
|
-
long:
|
184
|
-
short:
|
185
|
-
pm:
|