i18n_sync 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,21 +1,47 @@
1
- = i18n_sync
1
+ i18n Sync!
2
+ ==========
2
3
 
3
4
  Syncs all locale yml/rb files based on a "master" one.
4
5
 
5
6
 
6
- == Install
7
+ Install
8
+ -------
7
9
 
8
- gem install i18n_sync
10
+ gem install i18n_sync
9
11
 
10
12
 
11
- = Use
13
+ Use
14
+ ---
12
15
 
13
- i18s path/to/master/file.yml
16
+
17
+ i18s path/to/master/file.lang.yml
14
18
 
15
19
  All other yml should be located on the same folder as the "master".
16
20
 
21
+ Example:
22
+
23
+
24
+ i18s config/locales/app.en.yml
25
+
26
+ This command syncs all config/locale/app.*.yml files
27
+ using en as the master.
28
+
29
+
30
+ Other Options
31
+ -------------
32
+
33
+ i18s add some.very.nested.key Value path/to/file
34
+
35
+ Adds the new key on the file and every other translation.
36
+
37
+
38
+ i18s path/to/directory
39
+
40
+ Syncronizes the entire directory.
41
+
17
42
 
18
- == Note on Patches/Pull Requests
43
+ Note on Patches/Pull Requests
44
+ -----------------------------
19
45
 
20
46
  * Fork the project.
21
47
  * Make your feature addition or bug fix.
@@ -25,6 +51,7 @@ All other yml should be located on the same folder as the "master".
25
51
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
26
52
  * Send me a pull request. Bonus points for topic branches.
27
53
 
28
- == Copyright
54
+ Copyright
55
+ ---------
29
56
 
30
57
  Copyright (c) 2010 Marcos Piccinini. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
+ require 'rspec/core/rake_task'
4
+
3
5
 
4
6
  begin
5
7
  require 'jeweler'
@@ -11,7 +13,7 @@ begin
11
13
  gem.homepage = "http://github.com/nofxx/i18n_sync"
12
14
  gem.authors = ["Marcos Piccinini"]
13
15
  gem.add_dependency "ya2yaml"
14
- gem.add_development_dependency "rspec", ">= 1.2.9"
16
+ gem.add_development_dependency "rspec", ">= 2.5.0"
15
17
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
18
  end
17
19
  Jeweler::GemcutterTasks.new
@@ -19,21 +21,14 @@ rescue LoadError
19
21
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
22
  end
21
23
 
22
- # require 'spec/rake/spectask'
23
- # Spec::Rake::SpecTask.new(:spec) do |spec|
24
- # spec.libs << 'lib' << 'spec'
25
- # spec.spec_files = FileList['spec/**/*_spec.rb']
26
- # end
27
-
28
- # Spec::Rake::SpecTask.new(:rcov) do |spec|
29
- # spec.libs << 'lib' << 'spec'
30
- # spec.pattern = 'spec/**/*_spec.rb'
31
- # spec.rcov = true
32
- # end
33
24
 
34
- # task :spec => :check_dependencies
25
+ desc "Runs spec suite"
26
+ RSpec::Core::RakeTask.new(:spec) do |spec|
27
+ spec.pattern = 'spec/*_spec.rb'
28
+ spec.rspec_opts = ['--backtrace --colour']
29
+ end
35
30
 
36
- # task :default => :spec
31
+ task :default => :spec
37
32
 
38
33
  require 'rake/rdoctask'
39
34
  Rake::RDocTask.new do |rdoc|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.3.0
data/bin/i18s CHANGED
@@ -14,7 +14,7 @@ require 'optparse'
14
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
15
  require 'i18n_sync'
16
16
 
17
- Options = {}
17
+ Options = {:lang => :en}
18
18
 
19
19
  parser = OptionParser.new do |opts|
20
20
  opts.banner = <<BANNER
@@ -24,8 +24,9 @@ Usage: #{File.basename($0)} <path/to/master.yml> [args]
24
24
 
25
25
  Options are:
26
26
 
27
- -o --order - Order by name
28
- -t --trace - Be more verbose
27
+ -l --lang LANG - Select a default language
28
+ -o --order - Order by name
29
+ -t --trace - Be more verbose
29
30
 
30
31
  Common usage:
31
32
 
@@ -34,15 +35,22 @@ Common usage:
34
35
 
35
36
 
36
37
  BANNER
38
+ opts.on("-l LANGUAGE", "--lang", "Default Language" ) { |l| Options[:lang] = l }
37
39
  opts.on("-O", "--no-order", "Table order" ) { Options[:order] = false }
38
- opts.on("-t", "--trace") { Options[:trace] = true }
40
+ opts.on("-v", "--verbose") { Options[:debug] = true }
39
41
  opts.parse!(ARGV)
40
42
  end
41
43
 
42
44
  if ARGV.empty?
43
- puts parser.banner
44
- exit
45
+ # ipaths = %w{ config/locales lib/locales }.select { |ipath| File.exists?(ipath) }
46
+ # unless ipaths.empty?
47
+ # ipaths.each { |i| I18S.work_on(i) }
48
+ # else
49
+ puts parser.banner
50
+ exit
51
+ # end
52
+ elsif ARGV[0] == "add"
53
+ I18S.add_key *ARGV[1..-1]
45
54
  else
46
- syncr = I18S.new ARGV, Options # ARGF
47
- syncr.work
55
+ I18S.work_on ARGV, Options # ARGF
48
56
  end
@@ -1,63 +1,68 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{i18n_sync}
8
- s.version = "0.0.5"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marcos Piccinini"]
12
- s.date = %q{2010-07-16}
12
+ s.date = %q{2011-06-06}
13
13
  s.default_executable = %q{i18s}
14
14
  s.description = %q{Gem to sync all locale yml/rb files based on a "master" one.}
15
15
  s.email = %q{x@nofxx.com}
16
16
  s.executables = ["i18s"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.rdoc"
19
+ "README.rdoc"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/i18s",
29
- "i18n_sync.gemspec",
30
- "lib/i18n_sync.rb",
31
- "spec/fixtures/en.yml",
32
- "spec/fixtures/named.en.yml",
33
- "spec/fixtures/named.pt.yml",
34
- "spec/fixtures/order.en.yml",
35
- "spec/fixtures/order.pt.yml",
36
- "spec/fixtures/pt.yml",
37
- "spec/i18n_sync_spec.rb",
38
- "spec/spec_helper.rb"
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/i18s",
28
+ "i18n_sync.gemspec",
29
+ "lib/i18n_sync.rb",
30
+ "spec/fixtures/children.en.yml",
31
+ "spec/fixtures/children.pt.yml",
32
+ "spec/fixtures/en.yml",
33
+ "spec/fixtures/extra.en.yml",
34
+ "spec/fixtures/extra.pt.yml",
35
+ "spec/fixtures/named.en.yml",
36
+ "spec/fixtures/named.pt.yml",
37
+ "spec/fixtures/order.en.yml",
38
+ "spec/fixtures/order.pt.yml",
39
+ "spec/fixtures/pt.yml",
40
+ "spec/i18n_sync_spec.rb",
41
+ "spec/results/children.pt.yml",
42
+ "spec/results/extra.pt.yml",
43
+ "spec/results/named.pt.yml",
44
+ "spec/results/order.en.yml",
45
+ "spec/spec_helper.rb"
39
46
  ]
40
47
  s.homepage = %q{http://github.com/nofxx/i18n_sync}
41
- s.rdoc_options = ["--charset=UTF-8"]
42
48
  s.require_paths = ["lib"]
43
49
  s.rubygems_version = %q{1.3.7}
44
50
  s.summary = %q{Syncs all locale yml/rb files based on a "master" one.}
45
- s.test_files = [
46
- "spec/spec_helper.rb",
47
- "spec/i18n_sync_spec.rb"
48
- ]
49
51
 
50
52
  if s.respond_to? :specification_version then
51
53
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
54
  s.specification_version = 3
53
55
 
54
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
57
+ s.add_runtime_dependency(%q<ya2yaml>, [">= 0"])
58
+ s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
56
59
  else
57
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
60
+ s.add_dependency(%q<ya2yaml>, [">= 0"])
61
+ s.add_dependency(%q<rspec>, [">= 2.5.0"])
58
62
  end
59
63
  else
60
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
64
+ s.add_dependency(%q<ya2yaml>, [">= 0"])
65
+ s.add_dependency(%q<rspec>, [">= 2.5.0"])
61
66
  end
62
67
  end
63
68
 
@@ -1,58 +1,96 @@
1
1
  #
2
- # Based on translation rake task on spree (http://spreecommerce.com/)
2
+ # Inspired by translation rake task on spree (http://spreecommerce.com/)
3
3
  #
4
+ # Changed to use YAML instead of text regex, but yaml has issues so we need to:
4
5
  require 'ya2yaml'
6
+ # To work with utf8 encoded .yml files.
7
+
8
+
9
+ class Hash
10
+ def deep_merge!(other_hash)
11
+ other_hash.each do |k,v|
12
+ next unless tv = self[k]
13
+ self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.dup.deep_merge!(v) : v
14
+ end
15
+ self
16
+ end
17
+ end
5
18
 
6
19
  class I18S
7
20
 
8
- def initialize(argv, opts = {}, argf=[])
21
+ # Just here cuz I'm lazy....TBF really ugly ! ! ! !
22
+ def self.work_on(argv, opts = {}, argf = [])
23
+ if File.directory? path = argv[0]
24
+ Dir["#{path}/**"].map do |file|
25
+ next unless file =~ /(^|\.)#{opts[:lang]}\./
26
+ new([file], opts, argf)
27
+ end.reject(&:nil?)
28
+ else
29
+ [new(argv, opts, argf)]
30
+ end
31
+ end
32
+
33
+ def self.recursive_hash
34
+ Hash.new { |h,k| h[k] = recursive_hash }
35
+ end
36
+
37
+ def self.add_key(key, val, file)
38
+ hsh = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) }#recursive_hash
39
+ keys = key.split(".")
40
+ keys.reduce(hsh) do |a, k|
41
+ k == keys[-1] ? a[k] = val : a = a[k]
42
+ end
43
+ new(file, {}, hsh)
44
+ end
45
+
46
+ def initialize(argv, opts = {}, keys = {}, argf=[])
9
47
  # argf.each { |file| p file }
10
48
  @fullpath, *@new_ones = argv
11
49
  @file, *path = @fullpath.split("/").reverse # hm.. hack,,, in 1.9
12
50
  @path = path.reverse.join("/") || "." # can splat the first
13
51
  _, @lang, @namespace = @file.split(".").reverse
14
- @debug = opts[:trace]
52
+ @debug = opts[:debug]
15
53
  @order = opts[:order]
16
54
  @comments, @words = read_file(@fullpath, @lang)
55
+ @words.merge! keys unless keys.empty?
56
+ work
17
57
  end
18
58
 
19
59
  def work
20
- puts "Start work on #{@file} (#{@lang})"
60
+ out "Start work on #{@file} (#{@lang})"
21
61
  @new_ones.empty? ? sync : create_new_files
22
62
  end
23
63
 
24
64
  def create_new_files
25
- @new_ones.each do |file|
26
- puts "Creating new file #{file}"
27
- create(file)
65
+ @new_ones.each do |name|
66
+ puts "Creating new file #{name}"
67
+ create name
28
68
  end
29
69
  end
30
70
 
31
71
  def sync
32
72
  Dir["#{@path}/*.{yml,rb}"].each do |filename|
33
- #next if filename.match('_rails')
34
- next if filename =~ /#{@file}/
35
- lang, namespace = File.basename(filename, '.yml').split(".").reverse #filename.split("/").last.split(".").reverse
73
+ lang, namespace = File.basename(filename, '.yml').split(".").reverse
36
74
  if namespace
37
75
  next unless @namespace && @namespace == namespace
38
76
  else
39
77
  next if @namespace
40
78
  end
41
79
 
42
- puts "Writing #{filename}"
43
- (_comments, other) = read_file(filename, lang)
80
+ out "Writing #{filename}"
81
+ (_comments, old) = read_file(filename, lang)
44
82
  # Initializing hash variable as empty if it does not exist
45
- @words.each { |k,v| other[k] ||= @words[k] }
46
- # Remove if not defined in master
47
- other.delete_if { |k,v| !@words[k] }
83
+ other = @words.dup.deep_merge! old
48
84
  write_file(filename, lang, @comments, other)
49
85
  end
50
86
  end
51
87
 
52
- def create(file)
53
- fullpath = file =~ /\// ? file : "#{@path}/#{file}.yml"
88
+ def create newlang
89
+ # New name "app.en.yml" -> "app.pt.yml", "en.yml" -> "pt.yml"
90
+ newname = @file.gsub(/(^|\.)#{@lang}\./, "\\1#{newlang}.")
91
+ fullpath = "#{@path}/#{newname}"
54
92
  return puts("File exists.") if File.exists?(fullpath)
55
- write_file(fullpath, file, @comments, @words)
93
+ write_file(fullpath, newlang, @comments, @words)
56
94
  end
57
95
 
58
96
  #Retrieve comments, translation data in hash form
@@ -61,40 +99,12 @@ class I18S
61
99
  [comments, YAML.load(File.open(filename, "r:utf-8"))[basename]]
62
100
  end
63
101
 
64
- #Creates hash of translation data
65
- #def create_hash(data, filename)
66
- # return {} unless data
67
- # words = Hash.new
68
- # return words if !data
69
- # parent = Array.new
70
- # previous_key = 'base'
71
- # data.split("\n").each do |w|
72
- # next if w.strip.empty?
73
- # w.sub!(":", "") if w =~ /^(\s*)\:/
74
- # (key, *value) = w.split(':')
75
- # value = value.join# ||= ''
76
- # shift = (key =~ /\w/)/2 - parent.size #Determine level of current key in comparison to parent array
77
- # key = key.sub(/^\s+/,'')
78
- # parent << previous_key if shift > 0 #If key is child of previous key, add previous key as parent
79
- # (shift*-1).times { parent.pop } if shift < 0 #If key is not related to previous key, remove parent keys
80
- # previous_key = key #Track key in case next key is child of this key
81
- # words[parent.join(':')+':'+key] = value
82
- # end
83
- # words
84
- #end
85
-
86
102
  #Writes to file from translation data hash structure
87
103
  def write_file(filename, basename, comments, data)
88
104
  File.delete filename if File.exists? filename
89
105
  File.open(filename, "w:utf-8") do |y|
90
106
  y.puts(comments) if comments
91
- #y.puts(basename + ":\n")
92
- y.puts({ basename => data }.ya2yaml )# (:sick_compatible => true))
93
- # words.sort.each do |k,v|
94
- # keys = k.split(':')
95
- # (keys.size-1).times { keys[keys.size-1] = ' ' + keys[keys.size-1] } #Add indentation for children keys
96
- # y.puts(keys[keys.size-1]+':'+v+"\n")
97
- # end
107
+ y.puts({ basename => data }.ya2yaml )
98
108
  end
99
109
  end
100
110
 
@@ -0,0 +1,14 @@
1
+ en:
2
+ another: Another
3
+ newone: "New One!"
4
+ test: Test
5
+ very:
6
+ nasty:
7
+ nested:
8
+ bax: Bax
9
+ foo: Foo
10
+ bar: Bar
11
+ newvery:
12
+ nasty:
13
+ nested:
14
+ hi: Hi
@@ -0,0 +1,8 @@
1
+ pt:
2
+ test: Teste
3
+ old: Velho
4
+ very:
5
+ nasty:
6
+ nested:
7
+ foo: Fu
8
+ old: Velho
@@ -7,8 +7,16 @@ def run(comm)
7
7
  `bin/i18s #{comm}`
8
8
  end
9
9
 
10
+ def result(name)
11
+ File.read("spec/results/#{name}.yml")
12
+ end
13
+
14
+ def files_should_match(name, extra = nil)
15
+ File.read("spec/work#{extra}/#{name}.yml").should eql(result(name))
16
+ end
17
+
10
18
  describe "I18nSync" do
11
- before(:each) do
19
+ before do
12
20
  `rm -rf spec/work`
13
21
  `cp -rf spec/fixtures spec/work`
14
22
  end
@@ -40,6 +48,7 @@ describe "I18nSync" do
40
48
  end
41
49
 
42
50
  describe "Namespaced" do
51
+
43
52
  let(:i) { I18S.new("spec/work/named.en.yml") }
44
53
 
45
54
  it "should parse master file" do
@@ -50,20 +59,14 @@ describe "I18nSync" do
50
59
  end
51
60
 
52
61
  it "should read the hash" do
53
- i.instance_variable_get("@words").should eql({"something"=>"Something", "another"=>"Another"})
62
+ i.instance_variable_get("@words").
63
+ should eql({"something"=>"Something", "another"=>"Another"})
54
64
  end
55
65
 
56
66
  end
57
67
 
58
68
  describe "Acceptance" do
59
69
 
60
- it "should create a new one" do
61
- newfile = "spec/work/fo.yml"
62
- `rm #{newfile}` if File.exists?(newfile)
63
- run("#{EN} fo")
64
- File.read(newfile).should eql("# Comment cool\n--- \nfo: \n sync: \"To Sync It!\"\n test: Test\n")
65
- end
66
-
67
70
  it "should sync files nicely" do
68
71
  run("spec/work/pt.yml")
69
72
  File.read(EN).should eql("\n--- \nen: \n new: \"Uau, isso é novo\"\n sync: \"To Sync It!\"\n test: Test\n")
@@ -76,21 +79,71 @@ describe "I18nSync" do
76
79
 
77
80
  it "should work with namespaces" do
78
81
  run("spec/work/named.en.yml")
79
- File.read("spec/work/named.pt.yml").should eql("\n--- \npt: \n another: Another\n something: Algo\n")
80
- File.read("spec/work/pt.yml").should eql("\npt:\n sync: To Sync It!\n test: Teste\n new: \"Uau, isso é novo\"\n")
82
+ files_should_match("named.pt")
83
+ File.read("spec/work/pt.yml").
84
+ should eql("\npt:\n sync: To Sync It!\n test: Teste\n new: \"Uau, isso é novo\"\n")
81
85
  end
82
86
 
83
87
  it "should order alphabeticaly namespaces" do
84
88
  run("spec/work/order.pt.yml")
85
- File.read("spec/work/order.en.yml").should eql("\n--- \nen: \n alpha: Alpha\n blue: Blue\n zebra: Zebra\n")
89
+ files_should_match("order.en")
86
90
  File.read("spec/work/named.pt.yml").should eql("\npt:\n something: Algo\n")
87
91
  end
88
92
 
89
93
  it "should work with extra chars" do
90
94
  run("spec/work/extra.en.yml")
91
- File.read("spec/work/extra.pt.yml").should eql("\n--- \npt: \n normal: Normal\n with_colon: \"Value: Rock\"\n yup: Sim\n")
95
+ files_should_match("extra.pt")
96
+ end
97
+
98
+ it "should work with deep nestings" do
99
+ run("spec/work/children.en.yml")
100
+ files_should_match("children.pt")
101
+ end
102
+
103
+ end
104
+
105
+ describe "Creating files" do
106
+
107
+ it "should create a new one" do
108
+ newfile = "spec/work/fo.yml"; `rm #{newfile}` if File.exists?(newfile)
109
+ run("#{EN} fo")
110
+ File.read(newfile).should eql("# Comment cool\n--- \nfo: \n sync: \"To Sync It!\"\n test: Test\n")
111
+ end
112
+
113
+ it "should create a new with the right name" do
114
+ newfile = "spec/work/named.fo.yml"; `rm #{newfile}` if File.exists?(newfile)
115
+ run("spec/work/named.en.yml fo")
116
+ File.read(newfile).should eql("\n--- \nfo: \n another: Another\n something: Something\n")
117
+ end
118
+
119
+ end
120
+
121
+ describe "Multi Files" do
122
+
123
+ before do
124
+ `rm -rf spec/workmulti`
125
+ `cp -rf spec/fixtures spec/workmulti`
92
126
  end
93
127
 
128
+ it "should sync a show directory" do
129
+ run("spec/workmulti")
130
+ files_should_match("extra.pt", :multi)
131
+ end
132
+
133
+ end
134
+
135
+ describe "Add keys to i18n!" do
136
+
137
+ it "should have a nice command to add stuff" do
138
+ run("add dynamic Dynamic spec/work/en.yml")
139
+ File.read("spec/work/en.yml").should eql("# Comment cool\n--- \nen: \n dynamic: Dynamic\n sync: \"To Sync It!\"\n test: Test\n")
140
+ end
141
+
142
+ it "should work on a complex scenario" do
143
+ run("add dynamic.nested.very.nasty Nasty spec/work/extra.en.yml")
144
+ File.read("spec/work/extra.en.yml").should eql("\n--- \nen: \n dynamic: \n nested: \n very: \n nasty: Nasty\n normal: Normal\n with_colon: \"Value: Rock\"\n yup: true\n")
145
+
146
+ end
94
147
  end
95
148
 
96
149
  end
@@ -0,0 +1,16 @@
1
+
2
+ ---
3
+ pt:
4
+ another: Another
5
+ newone: "New One!"
6
+ newvery:
7
+ nasty:
8
+ nested:
9
+ hi: Hi
10
+ test: Teste
11
+ very:
12
+ nasty:
13
+ nested:
14
+ bar: Bar
15
+ bax: Bax
16
+ foo: Fu
@@ -0,0 +1,6 @@
1
+
2
+ ---
3
+ pt:
4
+ normal: Normal
5
+ with_colon: "Value: Rock"
6
+ yup: Sim
@@ -0,0 +1,5 @@
1
+
2
+ ---
3
+ pt:
4
+ another: Another
5
+ something: Algo
@@ -0,0 +1,6 @@
1
+
2
+ ---
3
+ en:
4
+ alpha: Alpha
5
+ blue: Blue
6
+ zebra: Zebra
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 3
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Marcos Piccinini
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-04-04 00:00:00 -03:00
17
+ date: 2011-06-06 00:00:00 -03:00
18
18
  default_executable: i18s
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -39,10 +39,10 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  segments:
42
- - 1
43
42
  - 2
44
- - 9
45
- version: 1.2.9
43
+ - 5
44
+ - 0
45
+ version: 2.5.0
46
46
  type: :development
47
47
  version_requirements: *id002
48
48
  description: Gem to sync all locale yml/rb files based on a "master" one.
@@ -63,6 +63,8 @@ files:
63
63
  - bin/i18s
64
64
  - i18n_sync.gemspec
65
65
  - lib/i18n_sync.rb
66
+ - spec/fixtures/children.en.yml
67
+ - spec/fixtures/children.pt.yml
66
68
  - spec/fixtures/en.yml
67
69
  - spec/fixtures/extra.en.yml
68
70
  - spec/fixtures/extra.pt.yml
@@ -72,6 +74,10 @@ files:
72
74
  - spec/fixtures/order.pt.yml
73
75
  - spec/fixtures/pt.yml
74
76
  - spec/i18n_sync_spec.rb
77
+ - spec/results/children.pt.yml
78
+ - spec/results/extra.pt.yml
79
+ - spec/results/named.pt.yml
80
+ - spec/results/order.en.yml
75
81
  - spec/spec_helper.rb
76
82
  has_rdoc: true
77
83
  homepage: http://github.com/nofxx/i18n_sync
@@ -105,6 +111,5 @@ rubygems_version: 1.3.7
105
111
  signing_key:
106
112
  specification_version: 3
107
113
  summary: Syncs all locale yml/rb files based on a "master" one.
108
- test_files:
109
- - spec/i18n_sync_spec.rb
110
- - spec/spec_helper.rb
114
+ test_files: []
115
+