i18n_generators 1.2.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/History.txt +26 -16
- data/README.md +82 -0
- data/Rakefile +8 -5
- data/i18n_generators.gemspec +4 -5
- data/lib/generators/i18n_locale/i18n_locale_generator.rb +2 -1
- data/lib/generators/i18n_translation/lib/translator.rb +26 -15
- data/lib/generators/i18n_translation/lib/yaml.rb +1 -1
- data/lib/i18n_generators/version.rb +1 -1
- data/{spec → test}/data/cldr/ja.html +0 -0
- data/{spec → test}/data/yml/active_record/en-US.yml +0 -0
- data/test/i18n_locale_command_test.rb +67 -0
- data/test/i18n_translation_command_test.rb +22 -0
- data/test/test_helper.rb +8 -0
- data/test/translator_test.rb +29 -0
- data/test/yaml_test.rb +112 -0
- metadata +65 -52
- data/README.rdoc +0 -63
- data/spec/i18n_locale_command_spec.rb +0 -71
- data/spec/i18n_translation_command_spec.rb +0 -20
- data/spec/spec_helper.rb +0 -15
- data/spec/translator_spec.rb +0 -39
- data/spec/yaml_spec.rb +0 -124
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5f02b7686ba68144eaab55c14f430f633e24ca3f
|
4
|
+
data.tar.gz: 65ad08fc37937c611b7e1afbb56ff36cf4a4d199
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dae9f080472d7da5b7fd6f944092b81ab5a57f5a6e56d59e74088450ad9c47ac8250f0e5aa308171d498caacb4df6823558210fcf5b7f27941951ca8a9ba4c08
|
7
|
+
data.tar.gz: ed5b7cfb0e594b85bfad0cbde0229a9df640912d379235a45fec478487241322b5bb4929978f37e076f48bb3868ae31015a598449aab2d3125bcfca1a3155d2f
|
data/Gemfile
CHANGED
data/History.txt
CHANGED
@@ -1,18 +1,28 @@
|
|
1
|
+
== 2.0.0
|
2
|
+
|
3
|
+
* enhancements
|
4
|
+
* The GoogleTranslate is back, and everything works again now! (liuhui998)
|
5
|
+
|
6
|
+
== 1.2.1
|
7
|
+
|
8
|
+
* bugfixes:
|
9
|
+
* Rails 4 ready
|
10
|
+
|
1
11
|
== 1.2.0
|
2
12
|
|
3
13
|
* enhancements:
|
4
14
|
* Drop Rails 2 support
|
5
|
-
* Put alias to model name for non-collection reflection names (see: https://twitter.com/#!/znz/status/179109337581625344)
|
15
|
+
* Put alias to model name for non-collection reflection names (see: https://twitter.com/#!/znz/status/179109337581625344) (thanks to znz)
|
6
16
|
|
7
17
|
== 1.1.0
|
8
18
|
|
9
19
|
* enhancements:
|
10
|
-
* New translation engine (see: http://googlecode.blogspot.com/2011/05/spring-cleaning-for-some-of-our-apis.html)
|
20
|
+
* New translation engine (see: http://googlecode.blogspot.com/2011/05/spring-cleaning-for-some-of-our-apis.html) (thanks to agilekawabata)
|
11
21
|
|
12
22
|
== 1.0.3
|
13
23
|
|
14
24
|
* bugfixes:
|
15
|
-
* #4 Translation generator recursive loop in ruby 1.9 + MS-Windows
|
25
|
+
* #4 Translation generator recursive loop in ruby 1.9 + MS-Windows (memarko)
|
16
26
|
|
17
27
|
* enhancements:
|
18
28
|
* Some Rails-3-ish cleanups
|
@@ -25,19 +35,19 @@
|
|
25
35
|
== 1.0.1
|
26
36
|
|
27
37
|
* major enhancements:
|
28
|
-
* Bundle yaml_waml.rb to avoid depending on yaml_waml gem
|
38
|
+
* Bundle yaml_waml.rb to avoid depending on yaml_waml gem (thanks to kakutani)
|
29
39
|
|
30
40
|
== 1.0.0
|
31
41
|
|
32
42
|
* major enhancements:
|
33
43
|
* Rails 3
|
34
44
|
* enhancements:
|
35
|
-
* Fixing deprectaed syntax {{error}} with %{error} for i18n_scaffold
|
45
|
+
* Fixing deprectaed syntax {{error}} with %{error} for i18n_scaffold (moro)
|
36
46
|
|
37
47
|
== 0.8.1
|
38
48
|
|
39
49
|
* bugfixes:
|
40
|
-
* Fix for pluralized translations
|
50
|
+
* Fix for pluralized translations (scambra)
|
41
51
|
|
42
52
|
== 0.8.0
|
43
53
|
|
@@ -58,9 +68,9 @@
|
|
58
68
|
* Could not load cldr data with short locale names
|
59
69
|
* major enhancements:
|
60
70
|
* Include AR association names in model attributes translation
|
61
|
-
* Add 'generated' comment mark (#g) for generated lines in YAML
|
71
|
+
* Add 'generated' comment mark (#g) for generated lines in YAML (thanks to t-wada-senpai, Shimura-san, Toyofuku-san, Sezutsu-san and oukayuka)
|
62
72
|
* Add --include-timestamps option and change default bahaviour not to include timestamp columns in translation YAML
|
63
|
-
* Add blank line between each blocks
|
73
|
+
* Add blank line between each blocks (thanks to Sawayanagi)
|
64
74
|
* enhancements:
|
65
75
|
* Avoid generating blank locale file
|
66
76
|
* Change GitHub fetch URL from blob/master/...?raw=true to raw/master
|
@@ -78,12 +88,12 @@
|
|
78
88
|
== 0.4.1
|
79
89
|
|
80
90
|
* bugfixes:
|
81
|
-
* i18n_translation abnormally ends when loading a view containing "-%>"
|
91
|
+
* i18n_translation abnormally ends when loading a view containing "-%>" (thanks to babie)
|
82
92
|
|
83
93
|
== 0.4.0
|
84
94
|
|
85
95
|
* major enhancements:
|
86
|
-
* translation generator now preserves any existing extra lines in the YAML file
|
96
|
+
* translation generator now preserves any existing extra lines in the YAML file (thanks to Iain Hecker)
|
87
97
|
|
88
98
|
== 0.3.4
|
89
99
|
|
@@ -93,12 +103,12 @@
|
|
93
103
|
== 0.3.3
|
94
104
|
|
95
105
|
* bugfixes:
|
96
|
-
* Did not work on Ruby 1.8.6
|
106
|
+
* Did not work on Ruby 1.8.6 (thanks to akm)
|
97
107
|
|
98
108
|
== 0.3.2
|
99
109
|
|
100
110
|
* bugfixes:
|
101
|
-
* Trim mode in ERB didn't work on some platforms
|
111
|
+
* Trim mode in ERB didn't work on some platforms (thanks to valda)
|
102
112
|
|
103
113
|
== 0.3.1
|
104
114
|
|
@@ -112,15 +122,15 @@
|
|
112
122
|
* Renamed the generators
|
113
123
|
i18n_locales -> i18n_locale (i18n --locale)
|
114
124
|
i18n_models -> i18n_translation (i18n --translation)
|
115
|
-
* Handle all translate keys which appear in view files
|
125
|
+
* Handle all translate keys which appear in view files (thanks to PanosJee)
|
116
126
|
|
117
127
|
== 0.2.0
|
118
128
|
|
119
129
|
* major enhancements:
|
120
|
-
* Implemented i18n_scaffold generator
|
130
|
+
* Implemented i18n_scaffold generator (thanks to Iain Hecker)
|
121
131
|
|
122
132
|
* enhancements:
|
123
|
-
* i18n_models generator can now deal with non AR classes which has content_columns
|
133
|
+
* i18n_models generator can now deal with non AR classes which has content_columns (thanks to Iain Hecker)
|
124
134
|
|
125
135
|
== 0.1.0
|
126
136
|
|
@@ -128,7 +138,7 @@
|
|
128
138
|
* Fetch locale YAML file from rails-i18n project repository first
|
129
139
|
|
130
140
|
* bugfixes:
|
131
|
-
* Could not recognize model names with multipie words
|
141
|
+
* Could not recognize model names with multipie words (thanks to makoto)
|
132
142
|
|
133
143
|
== 0.0.8
|
134
144
|
|
data/README.md
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
# I18n generators
|
2
|
+
|
3
|
+
A Rails plugin that generates the I18n locale files with automatic
|
4
|
+
translation. Supporting Rails 5.0, 4.2.x, 4.1.x, 4.0.x, 3.2.x, 3.1.x, 3.0.x,
|
5
|
+
2.3.x, and 2.2.x.
|
6
|
+
|
7
|
+
Here's an example of generating a translation file (the example model is taken
|
8
|
+
from [the Rails Girls app](http://guides.railsgirls.com/app/#create-idea-scaffold)).
|
9
|
+
|
10
|
+
% rails g scaffold idea name description:text picture
|
11
|
+
% rails g i18n ja
|
12
|
+
|
13
|
+
![translation_ja.yml](https://raw.githubusercontent.com/amatsuda/i18n_generators/414e923ae1a6450f0005b486376d084a88938a9e/assets/i18n_ja_example.png)
|
14
|
+
|
15
|
+
## Features
|
16
|
+
|
17
|
+
This gem/plugin provides following three generator commands.
|
18
|
+
|
19
|
+
### 1. Generate Locale Files for ActiveRecord/ActiveSupport/ActionPack/ActionView
|
20
|
+
|
21
|
+
% rails g i18n_locale ja (de-AT, pt-BR, etc.)
|
22
|
+
|
23
|
+
Downloads the .yml file for the specified locale from the official rails-i18n
|
24
|
+
repository:
|
25
|
+
https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale
|
26
|
+
|
27
|
+
Then the generator sets the application default locale to the specified
|
28
|
+
locale.
|
29
|
+
|
30
|
+
This will generate following locale file.
|
31
|
+
|
32
|
+
config/locales/ja.yml
|
33
|
+
|
34
|
+
### 2. Generate Translation YAML File For All Models/Attributes
|
35
|
+
|
36
|
+
% rails g i18n_translation ja (de-AT, pt-BR, etc.)
|
37
|
+
|
38
|
+
This will generate following YAML file.
|
39
|
+
|
40
|
+
config/locales/translation_ja.yml
|
41
|
+
|
42
|
+
The generator scans your app/models directory, and generates a YAML file with
|
43
|
+
all the AR model names and attributes so that you don't have to write the YAML
|
44
|
+
skeleton manually. In addition, the generator tries to translate each of them
|
45
|
+
into the specified language. The generator doesn't overwrite the existing
|
46
|
+
value so that you can rerun the generator again and again.
|
47
|
+
|
48
|
+
The #g mark in the generated YAML means that the line is generated by the
|
49
|
+
generator.
|
50
|
+
|
51
|
+
### 3. Generate All
|
52
|
+
|
53
|
+
% rails g i18n ja (de-AT, pt-BR, etc.)
|
54
|
+
|
55
|
+
Executes 1 and 2 at once.
|
56
|
+
|
57
|
+
|
58
|
+
## Supported versions
|
59
|
+
|
60
|
+
* Ruby 2.3, 2.2.x, 2.1.x, 2.0.0, 1.9.x, 1.8.7
|
61
|
+
* Ruby on Rails 5.0, 4.2, 4.1, 4.0, 3.2, 3.1, 3.0
|
62
|
+
* Ruby on Rails 2.3, 2.2 (supported by i18n_generators < 1.2)
|
63
|
+
|
64
|
+
|
65
|
+
## Installation
|
66
|
+
|
67
|
+
* Rails 3 or higher (with Bundler)
|
68
|
+
|
69
|
+
|
70
|
+
Add 'i18n_generators' to your Gemfile, then `bundle`. Restricting the group to
|
71
|
+
:development would be a good idea, since the generator would probably be used
|
72
|
+
only in development mode.
|
73
|
+
|
74
|
+
* Rails 2
|
75
|
+
|
76
|
+
|
77
|
+
Use 'i18n_generators' version '< 1.2'.
|
78
|
+
|
79
|
+
|
80
|
+
## Copyright
|
81
|
+
|
82
|
+
Copyright (c) 2008 Akira Matsuda, released under the MIT license
|
data/Rakefile
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
3
|
|
4
|
-
require '
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
require 'rake/testtask'
|
5
|
+
|
6
|
+
Rake::TestTask.new do |t|
|
7
|
+
t.libs << "test"
|
8
|
+
t.pattern = 'test/**/*_test.rb'
|
9
|
+
t.warning = true
|
10
|
+
t.verbose = true
|
8
11
|
end
|
9
12
|
|
10
|
-
task :default => :
|
13
|
+
task :default => :test
|
data/i18n_generators.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ['Akira Matsuda']
|
10
10
|
s.email = ['ronnie@dio.jp']
|
11
11
|
s.homepage = 'https://github.com/amatsuda/i18n_generators'
|
12
|
-
s.summary = '
|
13
|
-
s.description = 'A Rails generator
|
12
|
+
s.summary = 'A Rails generator that generates Rails I18n locale files with automatic translation for almost every known locale.'
|
13
|
+
s.description = 'A Rails generator that generates Rails I18n locale files with automatic translation for almost every known locale.'
|
14
14
|
|
15
15
|
s.rubyforge_project = 'i18n_generators'
|
16
16
|
|
@@ -19,12 +19,11 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
22
|
-
s.extra_rdoc_files = ['README.rdoc']
|
23
22
|
s.licenses = ['MIT']
|
24
23
|
|
25
24
|
s.add_runtime_dependency 'mechanize'
|
26
25
|
s.add_runtime_dependency 'rails', '>= 3.0.0'
|
27
|
-
s.add_development_dependency '
|
28
|
-
s.add_development_dependency '
|
26
|
+
s.add_development_dependency 'test-unit'
|
27
|
+
s.add_development_dependency 'test-unit-rr'
|
29
28
|
s.add_development_dependency 'rake'
|
30
29
|
end
|
@@ -20,7 +20,7 @@ class I18nLocaleGenerator < Rails::Generators::NamedBase
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def add_locale_config(config_contents)
|
23
|
-
new_line = " config.i18n.default_locale =
|
23
|
+
new_line = " config.i18n.default_locale = :#{locale_name}"
|
24
24
|
if config_contents =~ /\n *config\.i18n\.default_locale *=/
|
25
25
|
config_contents.sub(/ *config\.i18n\.default_locale *=.*/, new_line)
|
26
26
|
elsif config_contents =~ /\n *#? *config\.i18n\.default_locale *=/
|
@@ -36,6 +36,7 @@ class I18nLocaleGenerator < Rails::Generators::NamedBase
|
|
36
36
|
log "fetching #{locale_name}.yml from rails-i18n repository..."
|
37
37
|
begin
|
38
38
|
get "https://github.com/svenfuchs/rails-i18n/raw/master/rails/locale/#{locale_name}.yml", "config/locales/#{locale_name}.yml"
|
39
|
+
I18n.load_path.unshift "config/locales/#{locale_name}.yml"
|
39
40
|
rescue
|
40
41
|
log "could not find #{locale_name}.yml on rails-i18n repository"
|
41
42
|
end
|
@@ -1,23 +1,11 @@
|
|
1
|
-
require 'open-uri'
|
2
|
-
|
3
1
|
module I27r
|
4
2
|
class TranslationError < StandardError; end
|
5
3
|
|
6
4
|
module GoogleTranslate
|
7
5
|
def _translate(word, lang)
|
8
6
|
w = CGI.escape ActiveSupport::Inflector.humanize(word)
|
9
|
-
|
10
|
-
|
11
|
-
require 'json'
|
12
|
-
::JSON.parse json
|
13
|
-
else
|
14
|
-
ActiveSupport::JSON.decode(json)
|
15
|
-
end
|
16
|
-
if result['responseStatus'] == 200
|
17
|
-
result['responseData']['translatedText']
|
18
|
-
else
|
19
|
-
raise TranslationError.new result.inspect
|
20
|
-
end
|
7
|
+
text = Net::HTTP.get URI("https://translate.google.com/translate_a/single?client=t&sl=en&tl=#{lang}&dt=t&q=#{w}")
|
8
|
+
text.scan(/"(.*?)"/).first.first.tap {|t| t.force_encoding(Encoding::UTF_8) if t.respond_to? :force_encoding}
|
21
9
|
end
|
22
10
|
end
|
23
11
|
|
@@ -33,8 +21,31 @@ module I27r
|
|
33
21
|
end
|
34
22
|
end
|
35
23
|
|
24
|
+
module BingTranslator
|
25
|
+
def _translate(word, lang)
|
26
|
+
require 'cgi'
|
27
|
+
require 'open-uri'
|
28
|
+
|
29
|
+
w = CGI.escape ActiveSupport::Inflector.humanize(word)
|
30
|
+
json = OpenURI.open_uri("http://api.microsofttranslator.com/v2/ajax.svc/TranslateArray?appId=%22T5y_QKkSEGi7P462fd0EwjEhB0_XGUl8PNTgQylxBYks*%22&texts=[%22#{w}%22]&from=%22en%22&to=%22#{lang}%22").read.gsub(/\A([^\[]+)/, '')
|
31
|
+
|
32
|
+
result = if RUBY_VERSION >= '1.9'
|
33
|
+
require 'json'
|
34
|
+
::JSON.parse json
|
35
|
+
else
|
36
|
+
ActiveSupport::JSON.decode(json)
|
37
|
+
end
|
38
|
+
|
39
|
+
if result.any?
|
40
|
+
result[0]['TranslatedText']
|
41
|
+
else
|
42
|
+
raise TranslationError.new result.inspect
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
36
47
|
class Translator
|
37
|
-
include
|
48
|
+
include GoogleTranslate
|
38
49
|
|
39
50
|
def initialize(lang)
|
40
51
|
@lang, @cache = lang, {}
|
File without changes
|
File without changes
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'generators/i18n_locale/i18n_locale_generator'
|
3
|
+
|
4
|
+
class I18nLocaleGeneratorTest < Test::Unit::TestCase
|
5
|
+
setup do
|
6
|
+
@generator = I18nLocaleGenerator.new(['ja'])
|
7
|
+
end
|
8
|
+
|
9
|
+
sub_test_case 'add_locale_config' do
|
10
|
+
test 'when i18n.default_locale is configured in environment.rb' do
|
11
|
+
config = <<-CONFIG
|
12
|
+
module Tes
|
13
|
+
class Application < Rails::Application
|
14
|
+
config.i18n.default_locale = :de
|
15
|
+
end
|
16
|
+
end
|
17
|
+
CONFIG
|
18
|
+
|
19
|
+
assert_equal <<-RESULT, @generator.send(:add_locale_config, config)
|
20
|
+
module Tes
|
21
|
+
class Application < Rails::Application
|
22
|
+
config.i18n.default_locale = :ja
|
23
|
+
end
|
24
|
+
end
|
25
|
+
RESULT
|
26
|
+
end
|
27
|
+
|
28
|
+
test 'when i18n.default_locale config is commented in environment.rb' do
|
29
|
+
config = <<-CONFIG
|
30
|
+
module Tes
|
31
|
+
class Application < Rails::Application
|
32
|
+
# config.i18n.default_locale = :de
|
33
|
+
end
|
34
|
+
end
|
35
|
+
CONFIG
|
36
|
+
|
37
|
+
assert_equal <<-RESULT, @generator.send(:add_locale_config, config)
|
38
|
+
module Tes
|
39
|
+
class Application < Rails::Application
|
40
|
+
config.i18n.default_locale = :ja
|
41
|
+
end
|
42
|
+
end
|
43
|
+
RESULT
|
44
|
+
end
|
45
|
+
|
46
|
+
test 'when i18n.default_locale is not written in environment.rb' do
|
47
|
+
config = <<-CONFIG
|
48
|
+
module Tes
|
49
|
+
class Application < Rails::Application
|
50
|
+
something goes here.
|
51
|
+
bla bla bla...
|
52
|
+
end
|
53
|
+
end
|
54
|
+
CONFIG
|
55
|
+
|
56
|
+
assert_equal <<-RESULT, @generator.send(:add_locale_config, config)
|
57
|
+
module Tes
|
58
|
+
class Application < Rails::Application
|
59
|
+
config.i18n.default_locale = :ja
|
60
|
+
something goes here.
|
61
|
+
bla bla bla...
|
62
|
+
end
|
63
|
+
end
|
64
|
+
RESULT
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'generators/i18n_translation/i18n_translation_generator'
|
3
|
+
|
4
|
+
class I18nTranslationGeneratorTest < Test::Unit::TestCase
|
5
|
+
setup do
|
6
|
+
@generator = I18nTranslationGenerator.new(['ja'])
|
7
|
+
end
|
8
|
+
|
9
|
+
test 'each_value' do
|
10
|
+
pend
|
11
|
+
|
12
|
+
hash = ActiveSupport::OrderedHash.new
|
13
|
+
hash[:parent1] = ActiveSupport::OrderedHash.new
|
14
|
+
hash[:parent1][:child1] = 'child one'
|
15
|
+
hash[:parent2] = ActiveSupport::OrderedHash.new
|
16
|
+
hash[:parent2][:child2] = 'child two'
|
17
|
+
hash[:parent2][:child3] = 'child three'
|
18
|
+
subject.send(:each_value, [], hash) do |parents, value|
|
19
|
+
p "#{parents.join('.')} #{value}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
$KCODE = 'U'
|
3
|
+
|
4
|
+
require 'test_helper'
|
5
|
+
require 'generators/i18n_translation/lib/translator'
|
6
|
+
|
7
|
+
class I27r::TranslatorTest < Test::Unit::TestCase
|
8
|
+
setup do
|
9
|
+
@translator = I27r::Translator.new 'ja'
|
10
|
+
end
|
11
|
+
|
12
|
+
test 'when successfully translated' do
|
13
|
+
stub(@translator)._translate { 'こんにちは' }
|
14
|
+
|
15
|
+
assert_equal 'こんにちは', @translator.translate('hello')
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'when translation failed with error code' do
|
19
|
+
stub(@translator)._translate { '' }
|
20
|
+
|
21
|
+
assert_equal 'hello', @translator.translate('hello')
|
22
|
+
end
|
23
|
+
|
24
|
+
test 'when translation raised an error' do
|
25
|
+
stub(@translator)._translate { raise 'ERROR!' }
|
26
|
+
|
27
|
+
assert_equal 'hello', @translator.translate('hello')
|
28
|
+
end
|
29
|
+
end
|
data/test/yaml_test.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
require 'generators/i18n_translation/lib/yaml'
|
4
|
+
|
5
|
+
class I27r::YamlDocumentTest < Test::Unit::TestCase
|
6
|
+
sub_test_case 'when loading an existing file' do
|
7
|
+
setup do
|
8
|
+
@yaml_string = <<YAML
|
9
|
+
ja:
|
10
|
+
hoge:
|
11
|
+
fuga: piyo #g
|
12
|
+
numbers:
|
13
|
+
one: "いち" #g
|
14
|
+
two: "に"
|
15
|
+
|
16
|
+
aaa:
|
17
|
+
foo: "ふー"
|
18
|
+
bar: "ばー"
|
19
|
+
YAML
|
20
|
+
@yaml = I27r::YamlDocument.new @yaml_string
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'it exists' do
|
24
|
+
assert_not_nil @yaml
|
25
|
+
end
|
26
|
+
|
27
|
+
test 'to_s' do
|
28
|
+
assert_equal @yaml_string, @yaml.to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
test '[]' do
|
32
|
+
assert_equal 'piyo', @yaml['ja', 'hoge', 'fuga']
|
33
|
+
assert_equal 'piyo', @yaml[['ja', 'hoge', 'fuga']]
|
34
|
+
end
|
35
|
+
|
36
|
+
test 'find_line_by_path' do
|
37
|
+
assert_equal 'piyo', @yaml.find_line_by_path(['ja', 'hoge', 'fuga']).value
|
38
|
+
end
|
39
|
+
|
40
|
+
test 'find_line_by_path (-1)' do
|
41
|
+
line = @yaml.find_line_by_path(['ja', 'aho', 'hage'], -1, true)
|
42
|
+
|
43
|
+
assert_not_nil line
|
44
|
+
assert_equal 'hage', line.key
|
45
|
+
assert_nil line.value
|
46
|
+
end
|
47
|
+
|
48
|
+
sub_test_case '[]=' do
|
49
|
+
test 'rewriting an existing value' do
|
50
|
+
@yaml['ja', 'hoge', 'fuga'] = 'puyo'
|
51
|
+
assert_equal 'puyo', @yaml['ja', 'hoge', 'fuga']
|
52
|
+
end
|
53
|
+
|
54
|
+
test 'an existing value without #g mark' do
|
55
|
+
@yaml['ja', 'hoge', 'numbers', 'two'] = 'ツー'
|
56
|
+
assert_equal 'に', @yaml['ja', 'hoge', 'numbers', 'two']
|
57
|
+
end
|
58
|
+
|
59
|
+
test 'creating a new node in the middle' do
|
60
|
+
@yaml['ja', 'hoge', 'numbers', 'three'] = 'さん'
|
61
|
+
assert_equal 'さん', @yaml['ja', 'hoge', 'numbers', 'three']
|
62
|
+
assert_equal <<YAML, @yaml.to_s
|
63
|
+
ja:
|
64
|
+
hoge:
|
65
|
+
fuga: piyo #g
|
66
|
+
numbers:
|
67
|
+
one: "いち" #g
|
68
|
+
two: "に"
|
69
|
+
three: さん #g
|
70
|
+
|
71
|
+
aaa:
|
72
|
+
foo: "ふー"
|
73
|
+
bar: "ばー"
|
74
|
+
YAML
|
75
|
+
end
|
76
|
+
|
77
|
+
test 'creating a new node at the bottom' do
|
78
|
+
@yaml['ja', 'aho', 'hage'] = 'hige'
|
79
|
+
assert_equal 'hige', @yaml['ja', 'aho', 'hage']
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
test 'when loading an existing file with alias' do
|
85
|
+
pend
|
86
|
+
|
87
|
+
@yaml_string = <<YAML
|
88
|
+
ja:
|
89
|
+
activerecord:
|
90
|
+
attributes:
|
91
|
+
hoge: &hoge
|
92
|
+
foo: FOO
|
93
|
+
bar: BAR
|
94
|
+
hoge2: &hoge2
|
95
|
+
hoge:
|
96
|
+
<<: *hogege
|
97
|
+
YAML
|
98
|
+
@yaml = I27r::YamlDocument.new @yaml_string
|
99
|
+
@yaml['ja', 'activerecord', 'hoge2', 'hoge'] = 'foo'
|
100
|
+
|
101
|
+
puts @yaml.to_s
|
102
|
+
end
|
103
|
+
|
104
|
+
test 'creating a new file' do
|
105
|
+
pend
|
106
|
+
|
107
|
+
yaml = I27r::YamlDocument.new
|
108
|
+
yaml['ja', 'hoge', 'fuga'] = 'piyo'
|
109
|
+
yaml['ja', 'hoge', 'foo'] = 'bar'
|
110
|
+
puts yaml
|
111
|
+
end
|
112
|
+
end
|
metadata
CHANGED
@@ -1,85 +1,98 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Akira Matsuda
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-08-31 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: mechanize
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: rails
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: 3.0.0
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.0.0
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
39
|
-
none: false
|
42
|
+
name: test-unit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - ">="
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement:
|
50
|
-
none: false
|
56
|
+
name: test-unit-rr
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ">="
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rake
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - ">="
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: '0'
|
66
76
|
type: :development
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
69
|
-
|
70
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: A Rails generator that generates Rails I18n locale files with automatic
|
84
|
+
translation for almost every known locale.
|
71
85
|
email:
|
72
86
|
- ronnie@dio.jp
|
73
87
|
executables: []
|
74
88
|
extensions: []
|
75
|
-
extra_rdoc_files:
|
76
|
-
- README.rdoc
|
89
|
+
extra_rdoc_files: []
|
77
90
|
files:
|
78
|
-
- .gitignore
|
91
|
+
- ".gitignore"
|
79
92
|
- Gemfile
|
80
93
|
- History.txt
|
81
94
|
- MIT-LICENSE
|
82
|
-
- README.
|
95
|
+
- README.md
|
83
96
|
- Rakefile
|
84
97
|
- i18n_generators.gemspec
|
85
98
|
- lib/generators/i18n/USAGE
|
@@ -92,43 +105,43 @@ files:
|
|
92
105
|
- lib/generators/i18n_translation/lib/yaml.rb
|
93
106
|
- lib/generators/i18n_translation/lib/yaml_waml.rb
|
94
107
|
- lib/i18n_generators/version.rb
|
95
|
-
-
|
96
|
-
-
|
97
|
-
-
|
98
|
-
-
|
99
|
-
-
|
100
|
-
-
|
101
|
-
-
|
108
|
+
- test/data/cldr/ja.html
|
109
|
+
- test/data/yml/active_record/en-US.yml
|
110
|
+
- test/i18n_locale_command_test.rb
|
111
|
+
- test/i18n_translation_command_test.rb
|
112
|
+
- test/test_helper.rb
|
113
|
+
- test/translator_test.rb
|
114
|
+
- test/yaml_test.rb
|
102
115
|
homepage: https://github.com/amatsuda/i18n_generators
|
103
116
|
licenses:
|
104
117
|
- MIT
|
118
|
+
metadata: {}
|
105
119
|
post_install_message:
|
106
120
|
rdoc_options: []
|
107
121
|
require_paths:
|
108
122
|
- lib
|
109
123
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
124
|
requirements:
|
112
|
-
- -
|
125
|
+
- - ">="
|
113
126
|
- !ruby/object:Gem::Version
|
114
127
|
version: '0'
|
115
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
129
|
requirements:
|
118
|
-
- -
|
130
|
+
- - ">="
|
119
131
|
- !ruby/object:Gem::Version
|
120
132
|
version: '0'
|
121
133
|
requirements: []
|
122
134
|
rubyforge_project: i18n_generators
|
123
|
-
rubygems_version:
|
135
|
+
rubygems_version: 2.4.8
|
124
136
|
signing_key:
|
125
|
-
specification_version:
|
126
|
-
summary:
|
137
|
+
specification_version: 4
|
138
|
+
summary: A Rails generator that generates Rails I18n locale files with automatic translation
|
139
|
+
for almost every known locale.
|
127
140
|
test_files:
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
-
|
132
|
-
-
|
133
|
-
-
|
134
|
-
-
|
141
|
+
- test/data/cldr/ja.html
|
142
|
+
- test/data/yml/active_record/en-US.yml
|
143
|
+
- test/i18n_locale_command_test.rb
|
144
|
+
- test/i18n_translation_command_test.rb
|
145
|
+
- test/test_helper.rb
|
146
|
+
- test/translator_test.rb
|
147
|
+
- test/yaml_test.rb
|
data/README.rdoc
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
= I18n generators
|
2
|
-
|
3
|
-
This gem plugin generates a set of locale files for Rails i18n feature. Supports Rails 4.0, 3.2.x, 3.1.x, 3.0.x, 2.3.x and 2.2.x.
|
4
|
-
|
5
|
-
* http://github.com/amatsuda/i18n_generators
|
6
|
-
* http://rubygems.org/gems/i18n_generators
|
7
|
-
|
8
|
-
|
9
|
-
== FEATURES
|
10
|
-
|
11
|
-
This gem/plugin provides following generate commands.
|
12
|
-
|
13
|
-
=== 1. Generate Locale Files for ActiveRecord/ActiveSupport/ActionPack
|
14
|
-
|
15
|
-
% rails g i18n_locale ja (de-AT, pt-BR, etc.)
|
16
|
-
|
17
|
-
Downloads the .yml file for the specified locale from the official rails-i18n repository:
|
18
|
-
https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale
|
19
|
-
|
20
|
-
Then the generater sets the application default locale to the specified locale.
|
21
|
-
|
22
|
-
This will generate following locale file.
|
23
|
-
|
24
|
-
config/locales/ja.yml
|
25
|
-
|
26
|
-
=== 2. Generate Translation YAML File For All Models/Attributes
|
27
|
-
|
28
|
-
% rails g i18n_translation ja (de-AT, pt-BR, etc.)
|
29
|
-
|
30
|
-
This will generate following YAML file.
|
31
|
-
|
32
|
-
config/locales/translation_ja.yml
|
33
|
-
|
34
|
-
The generator scans your app/models directory, and generates a YAML file with all the AR model names and attributes so that you don't have to write the YAML skeleton manually or by copy/paste.
|
35
|
-
In addition, the generator tries to translate each of them into the specified language.
|
36
|
-
The generator doesn't overwrite the existing value so that you can rerun the generator again and again.
|
37
|
-
|
38
|
-
=== 3. Generate All
|
39
|
-
|
40
|
-
% rails g i18n ja (de-AT, pt-BR, etc.)
|
41
|
-
|
42
|
-
Executes 1 and 2 at once.
|
43
|
-
|
44
|
-
|
45
|
-
== REQUIREMENTS:
|
46
|
-
|
47
|
-
* Ruby 1.8.7, 1.9, 2.0
|
48
|
-
* Ruby on Rails 4.0, 3.2, 3.1, 3.0
|
49
|
-
* Ruby on Rails 2.3, 2.2 (supported by i18n_generators < 1.2)
|
50
|
-
|
51
|
-
|
52
|
-
== INSTALL:
|
53
|
-
|
54
|
-
* Rails 3 (with Bundler)
|
55
|
-
|
56
|
-
Add 'i18n_generators' to your Gemfile, then `bundle`. Restricting the group to :development would be a good idea, since the generator would probably be used only in development mode.
|
57
|
-
|
58
|
-
* Rails 2
|
59
|
-
|
60
|
-
Use 'i18n_generators' version '< 1.2'.
|
61
|
-
|
62
|
-
|
63
|
-
Copyright (c) 2008 Akira Matsuda, released under the MIT license
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'generators/i18n_locale/i18n_locale_generator'
|
3
|
-
|
4
|
-
describe I18nLocaleGenerator do
|
5
|
-
subject { I18nLocaleGenerator.new(['ja']) }
|
6
|
-
|
7
|
-
describe 'add_locale_config' do
|
8
|
-
describe 'when i18n.default_locale is configured in environment.rb' do
|
9
|
-
before do
|
10
|
-
@config = "
|
11
|
-
module Tes
|
12
|
-
class Application < Rails::Application
|
13
|
-
config.i18n.default_locale = :de
|
14
|
-
end
|
15
|
-
end"
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'rewrites the existing default_locale to locale_name value' do
|
19
|
-
subject.send(:add_locale_config, @config).should == "
|
20
|
-
module Tes
|
21
|
-
class Application < Rails::Application
|
22
|
-
config.i18n.default_locale = 'ja'
|
23
|
-
end
|
24
|
-
end"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'when i18n.default_locale config is commented in environment.rb' do
|
29
|
-
before do
|
30
|
-
@config = "
|
31
|
-
module Tes
|
32
|
-
class Application < Rails::Application
|
33
|
-
# config.i18n.default_locale = :de
|
34
|
-
end
|
35
|
-
end"
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'uncomments the existing commented i18n config and sets locale_name value' do
|
39
|
-
subject.send(:add_locale_config, @config).should == "
|
40
|
-
module Tes
|
41
|
-
class Application < Rails::Application
|
42
|
-
config.i18n.default_locale = 'ja'
|
43
|
-
end
|
44
|
-
end"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe 'when i18n.default_locale is not written in environment.rb' do
|
49
|
-
before do
|
50
|
-
@config = "
|
51
|
-
module Tes
|
52
|
-
class Application < Rails::Application
|
53
|
-
something goes here.
|
54
|
-
bla bla bla...
|
55
|
-
end
|
56
|
-
end"
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'adds the default_locale config inside the config block and sets locale_name value' do
|
60
|
-
subject.send(:add_locale_config, @config).should == "
|
61
|
-
module Tes
|
62
|
-
class Application < Rails::Application
|
63
|
-
config.i18n.default_locale = 'ja'
|
64
|
-
something goes here.
|
65
|
-
bla bla bla...
|
66
|
-
end
|
67
|
-
end"
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'generators/i18n_translation/i18n_translation_generator'
|
3
|
-
|
4
|
-
describe I18nTranslationGenerator do
|
5
|
-
subject { I18nTranslationGenerator.new(['ja']) }
|
6
|
-
|
7
|
-
describe 'each_value' do
|
8
|
-
xit 'iterates through each value' do
|
9
|
-
hash = ActiveSupport::OrderedHash.new
|
10
|
-
hash[:parent1] = ActiveSupport::OrderedHash.new
|
11
|
-
hash[:parent1][:child1] = 'child one'
|
12
|
-
hash[:parent2] = ActiveSupport::OrderedHash.new
|
13
|
-
hash[:parent2][:child2] = 'child two'
|
14
|
-
hash[:parent2][:child3] = 'child three'
|
15
|
-
subject.send(:each_value, [], hash) do |parents, value|
|
16
|
-
p "#{parents.join('.')} #{value}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
-
require 'rails'
|
4
|
-
require 'rails/generators'
|
5
|
-
|
6
|
-
# Requires supporting files with custom matchers and macros, etc,
|
7
|
-
# in ./support/ and its subdirectories.
|
8
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
-
|
10
|
-
Rails.logger ||= Logger.new STDOUT
|
11
|
-
|
12
|
-
RSpec.configure do |config|
|
13
|
-
# config.mock_with :rr
|
14
|
-
config.mock_with :rspec
|
15
|
-
end
|
data/spec/translator_spec.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
$KCODE = 'U'
|
3
|
-
|
4
|
-
require 'spec_helper'
|
5
|
-
require 'generators/i18n_translation/lib/translator'
|
6
|
-
|
7
|
-
describe I27r::Translator do
|
8
|
-
subject { I27r::Translator.new 'ja' }
|
9
|
-
|
10
|
-
describe 'when successfully translated' do
|
11
|
-
before do
|
12
|
-
subject.stub!(:_translate).and_return('こんにちは')
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'returns translated text' do
|
16
|
-
subject.translate('hello').should == 'こんにちは'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe 'when translation failed with error code' do
|
21
|
-
before do
|
22
|
-
subject.stub!(:_translate).and_return('')
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'returns the original text' do
|
26
|
-
subject.translate('hello').should == 'hello'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe 'when translation raised an error' do
|
31
|
-
before do
|
32
|
-
subject.stub!(:_translate).and_raise('ERROR!')
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'returns the original text' do
|
36
|
-
subject.translate('hello').should == 'hello'
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/spec/yaml_spec.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'generators/i18n_translation/lib/yaml'
|
4
|
-
|
5
|
-
describe I27r::YamlDocument do
|
6
|
-
context 'when loading an existing file' do
|
7
|
-
before do
|
8
|
-
@yaml_string = <<YAML
|
9
|
-
ja:
|
10
|
-
hoge:
|
11
|
-
fuga: piyo #g
|
12
|
-
numbers:
|
13
|
-
one: "いち" #g
|
14
|
-
two: "に"
|
15
|
-
|
16
|
-
aaa:
|
17
|
-
foo: "ふー"
|
18
|
-
bar: "ばー"
|
19
|
-
YAML
|
20
|
-
@yaml = I27r::YamlDocument.new @yaml_string
|
21
|
-
end
|
22
|
-
|
23
|
-
subject { @yaml }
|
24
|
-
it { should be }
|
25
|
-
|
26
|
-
its(:to_s) { should == @yaml_string }
|
27
|
-
|
28
|
-
describe '[]' do
|
29
|
-
specify '[]' do
|
30
|
-
@yaml['ja', 'hoge', 'fuga'].should == 'piyo'
|
31
|
-
@yaml[['ja', 'hoge', 'fuga']].should == 'piyo'
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe 'find_line_by_path' do
|
36
|
-
subject { @yaml.find_line_by_path(['ja', 'hoge', 'fuga']) }
|
37
|
-
its(:value) { should == 'piyo' }
|
38
|
-
end
|
39
|
-
|
40
|
-
describe 'find_line_by_path' do
|
41
|
-
subject { @yaml.find_line_by_path(['ja', 'aho', 'hage'], -1, true) }
|
42
|
-
it { should be }
|
43
|
-
its(:key) { should == 'hage' }
|
44
|
-
its(:value) { should_not be }
|
45
|
-
end
|
46
|
-
|
47
|
-
describe '[]=' do
|
48
|
-
context 'rewriting an existing value' do
|
49
|
-
before { @yaml['ja', 'hoge', 'fuga'] = 'puyo' }
|
50
|
-
subject { @yaml['ja', 'hoge', 'fuga'] }
|
51
|
-
it { should == 'puyo' }
|
52
|
-
end
|
53
|
-
|
54
|
-
context 'an existing value without #g mark' do
|
55
|
-
before { @yaml['ja', 'hoge', 'numbers', 'two'] = 'ツー' }
|
56
|
-
subject { @yaml['ja', 'hoge', 'numbers', 'two'] }
|
57
|
-
it { should == 'に' }
|
58
|
-
end
|
59
|
-
|
60
|
-
context 'creating a new node in the middle' do
|
61
|
-
before { @yaml['ja', 'hoge', 'numbers', 'three'] = 'さん' }
|
62
|
-
subject { @yaml['ja', 'hoge', 'numbers', 'three'] }
|
63
|
-
it { should == 'さん' }
|
64
|
-
specify do
|
65
|
-
@yaml.to_s.should == <<YAML
|
66
|
-
ja:
|
67
|
-
hoge:
|
68
|
-
fuga: piyo #g
|
69
|
-
numbers:
|
70
|
-
one: "いち" #g
|
71
|
-
two: "に"
|
72
|
-
three: さん #g
|
73
|
-
|
74
|
-
aaa:
|
75
|
-
foo: "ふー"
|
76
|
-
bar: "ばー"
|
77
|
-
YAML
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context 'creating a new node at the bottom' do
|
82
|
-
before { @yaml['ja', 'aho', 'hage'] = 'hige' }
|
83
|
-
subject { @yaml['ja', 'aho', 'hage'] }
|
84
|
-
it { should == 'hige' }
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context 'when loading an existing file with alias' do
|
90
|
-
before do
|
91
|
-
pending
|
92
|
-
@yaml_string = <<YAML
|
93
|
-
ja:
|
94
|
-
activerecord:
|
95
|
-
attributes:
|
96
|
-
hoge: &hoge
|
97
|
-
foo: FOO
|
98
|
-
bar: BAR
|
99
|
-
hoge2: &hoge2
|
100
|
-
hoge:
|
101
|
-
<<: *hogege
|
102
|
-
YAML
|
103
|
-
@yaml = I27r::YamlDocument.new @yaml_string
|
104
|
-
@yaml['ja', 'activerecord', 'hoge2', 'hoge'] = 'foo'
|
105
|
-
end
|
106
|
-
|
107
|
-
specify '' do
|
108
|
-
puts @yaml.to_s
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
context 'creating a new file' do
|
113
|
-
before do
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
specify 'that' do
|
118
|
-
yaml = I27r::YamlDocument.new
|
119
|
-
yaml['ja', 'hoge', 'fuga'] = 'piyo'
|
120
|
-
yaml['ja', 'hoge', 'foo'] = 'bar'
|
121
|
-
puts yaml
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|