haml-i18n-extractor 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -1
- data/TODO +6 -0
- data/lib/haml-i18n-extractor/extraction/extractor.rb +36 -26
- data/lib/haml-i18n-extractor/extraction/{exception_finder.rb → finder/exception_finder.rb} +0 -0
- data/lib/haml-i18n-extractor/extraction/{text_finder.rb → finder/text_finder.rb} +18 -12
- data/lib/haml-i18n-extractor/extraction/replacer/interpolation_helper.rb +51 -0
- data/lib/haml-i18n-extractor/extraction/replacer/replacer_result.rb +24 -0
- data/lib/haml-i18n-extractor/extraction/{text_replacer.rb → replacer/text_replacer.rb} +38 -33
- data/lib/haml-i18n-extractor/extraction/{tagging_tool.rb → tagging_writer.rb} +1 -1
- data/lib/haml-i18n-extractor/extraction/{yaml_tool.rb → yaml_writer.rb} +9 -12
- data/lib/haml-i18n-extractor/flow/prompter.rb +1 -1
- data/lib/haml-i18n-extractor/helpers.rb +38 -0
- data/lib/haml-i18n-extractor/version.rb +1 -1
- data/lib/haml-i18n-extractor.rb +8 -5
- data/scripts/renew_test_syntax +18 -0
- data/test/cli_test.rb +2 -2
- data/test/exception_finder_test.rb +2 -2
- data/test/extractor_test.rb +23 -23
- data/test/haml_parser_test.rb +3 -3
- data/test/haml_reader_test.rb +3 -3
- data/test/haml_writer_test.rb +4 -2
- data/test/integration_test.rb +13 -11
- data/test/interpolation_helper_test.rb +43 -0
- data/test/prompter_test.rb +3 -3
- data/test/support/ex1.yml +15 -0
- data/test/support/ex2.output.haml +1 -1
- data/test/support/ex5.haml +4 -0
- data/test/support/ex5.output.haml +4 -0
- data/test/support/ex5.yml +8 -0
- data/test/{tagging_tool_test.rb → tagging_writer_test.rb} +6 -6
- data/test/test_helper.rb +2 -2
- data/test/text_finder_test.rb +22 -20
- data/test/text_replacer_test.rb +29 -27
- data/test/workflow_test.rb +5 -5
- data/test/yaml_writer_test.rb +120 -0
- metadata +27 -14
- data/test/yaml_tool_test.rb +0 -110
data/test/text_replacer_test.rb
CHANGED
@@ -3,65 +3,67 @@ require 'test_helper'
|
|
3
3
|
module Haml
|
4
4
|
class TextReplacerTest < MiniTest::Unit::TestCase
|
5
5
|
|
6
|
-
|
7
|
-
Haml::I18n::Extractor::TextReplacer.new("this is whatever", "this is whatever", :plain)
|
6
|
+
def test_it_initializes_with_the_line_it_is_going_to_replace_and_the_match_to_replace
|
7
|
+
Haml::I18n::Extractor::TextReplacer.new("this is whatever", "this is whatever", :plain, "/path/to/doesntmatter.haml")
|
8
8
|
end
|
9
9
|
|
10
|
-
|
10
|
+
def test_but_it_raises_if_passed_a_wrong_line_type
|
11
11
|
begin
|
12
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new("regular text", "regular text", :this_is_not_defined)
|
12
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new("regular text", "regular text", :this_is_not_defined, "/path/to/doesntmatter.haml")
|
13
13
|
assert false, 'should raise'
|
14
14
|
rescue Haml::I18n::Extractor::NotDefinedLineType
|
15
15
|
assert true, 'raised NotDefinedLineType'
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
|
20
|
+
|
19
21
|
# some text replacement examples
|
20
|
-
|
21
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new("this is whatever", "this is whatever", :plain)
|
22
|
+
def test_it_can_replace_the_body_of_haml_with_t_characters
|
23
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new("this is whatever", "this is whatever", :plain, "/path/to/doesntmatter.haml")
|
22
24
|
assert_equal replacer.replace_hash, { :modified_line => "= t('.this_is_whatever')",
|
23
|
-
:
|
25
|
+
:t_name => "this_is_whatever", :replaced_text => "this is whatever", :path => "/path/to/doesntmatter.haml" }
|
24
26
|
end
|
25
27
|
|
26
|
-
|
27
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new("%span Admin Dashboard", "Admin Dashboard", :tag)
|
28
|
+
def test_it_can_replace_the_body_of_haml_with_t_characters_example
|
29
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new("%span Admin Dashboard", "Admin Dashboard", :tag, "/path/to/doesntmatter.haml")
|
28
30
|
assert_equal replacer.replace_hash, { :modified_line => "%span= t('.admin_dashboard')",
|
29
|
-
:
|
31
|
+
:t_name => "admin_dashboard", :replaced_text => "Admin Dashboard", :path => "/path/to/doesntmatter.haml" }
|
30
32
|
end
|
31
33
|
|
32
|
-
|
33
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new("%span t('.admin_dashboard')", "t('.admin_dashboard')", :tag)
|
34
|
+
def test_it_wont_replace_already_replaced_t_characters_if_they_are_not_ruby_evaled
|
35
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new("%span t('.admin_dashboard')", "t('.admin_dashboard')", :tag, "/path/to/doesntmatter.haml")
|
34
36
|
assert_equal replacer.replace_hash, { :modified_line => "%span t('.admin_dashboard')",
|
35
|
-
:
|
37
|
+
:t_name => "admin_dashboard", :replaced_text => "t('.admin_dashboard')", :path => "/path/to/doesntmatter.haml" }
|
36
38
|
end
|
37
39
|
|
38
|
-
|
39
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new("%span= t('.admin_dashboard')", "t('.admin_dashboard')", :script)
|
40
|
+
def test_it_wont_replace_already_replaced_t_characters_that_are_ruby_evaled
|
41
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new("%span= t('.admin_dashboard')", "t('.admin_dashboard')", :script, "/path/to/doesntmatter.haml")
|
40
42
|
assert_equal replacer.replace_hash, { :modified_line => "%span= t('.admin_dashboard')",
|
41
|
-
:
|
43
|
+
:t_name => "admin_dashboard", :replaced_text => "t('.admin_dashboard')", :path => "/path/to/doesntmatter.haml" }
|
42
44
|
end
|
43
45
|
|
44
|
-
|
45
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new(%{%p#brand= link_to 'Some Place', '/'}, "Some Place", :script)
|
46
|
+
def test_it_can_replace_the_body_of_haml_with_t_characters_example_for_link_to_and_removes_surrounding_quotes_as_well
|
47
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new(%{%p#brand= link_to 'Some Place', '/'}, "Some Place", :script, "/path/to/doesntmatter.haml")
|
46
48
|
assert_equal replacer.replace_hash, { :modified_line => %{%p#brand= link_to t('.some_place'), '/'} ,
|
47
|
-
:
|
49
|
+
:t_name => "some_place", :replaced_text => "Some Place", :path => "/path/to/doesntmatter.haml" }
|
48
50
|
|
49
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new(%{%p#brand= link_to "Some Place", "/"}, "Some Place", :script)
|
51
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new(%{%p#brand= link_to "Some Place", "/"}, "Some Place", :script, "/path/to/doesntmatter.haml")
|
50
52
|
assert_equal replacer.replace_hash, { :modified_line => %{%p#brand= link_to t('.some_place'), "/"} ,
|
51
|
-
:
|
53
|
+
:t_name => "some_place", :replaced_text => "Some Place", :path => "/path/to/doesntmatter.haml" }
|
52
54
|
end
|
53
55
|
|
54
56
|
# keyname restrictions
|
55
|
-
|
56
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new("this is whatever" * 80, "this is whatever" * 80, :plain)
|
57
|
-
assert_equal replacer.replace_hash[:modified_line].size, Haml::I18n::Extractor::
|
57
|
+
def test_it_limits_the_characters_of_the_t_namespace_it_provides_to_limit_key_name
|
58
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new("this is whatever" * 80, "this is whatever" * 80, :plain, "/path/to/doesntmatter.haml")
|
59
|
+
assert_equal replacer.replace_hash[:modified_line].size, Haml::I18n::Extractor::Helpers::StringHelpers::LIMIT_KEY_NAME + 8 # = t('.')
|
58
60
|
end
|
59
61
|
|
60
|
-
|
62
|
+
def test_it_does_not_allow_weird_characters_in_the_keyname
|
61
63
|
weird_line = "thi:s = (is \"' `ch@racter ~ ma?dne{}ss!"
|
62
|
-
replacer = Haml::I18n::Extractor::TextReplacer.new(weird_line, weird_line, :plain)
|
64
|
+
replacer = Haml::I18n::Extractor::TextReplacer.new(weird_line, weird_line, :plain, "/path/to/doesntmatter.haml")
|
63
65
|
assert_equal replacer.replace_hash, { :modified_line => "= t('.this_is_chracter_madness')",
|
64
|
-
:
|
66
|
+
:t_name => "this_is_chracter_madness", :replaced_text => weird_line, :path => "/path/to/doesntmatter.haml" }
|
65
67
|
end
|
66
68
|
|
67
69
|
end
|
data/test/workflow_test.rb
CHANGED
@@ -5,14 +5,14 @@ module Haml
|
|
5
5
|
|
6
6
|
def setup
|
7
7
|
TestHelper.setup_project_directory! # tests here rely on this setup...
|
8
|
-
@workflow = TestHelper.mock_full_project_user_interaction!
|
8
|
+
@workflow = TestHelper.mock_full_project_user_interaction!
|
9
9
|
end
|
10
10
|
|
11
11
|
def teardown
|
12
12
|
TestHelper.teardown_project_directory!
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
def test_it_should_work_on_a_directory_mkay
|
16
16
|
begin
|
17
17
|
filename = "#{TestHelper::PROJECT_DIR}app/views/bar/thang.haml"
|
18
18
|
bad_worfklow = Haml::I18n::Extractor::Workflow.new(filename)
|
@@ -22,18 +22,18 @@ module Haml
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
|
25
|
+
def test_it_finds_all_haml_files
|
26
26
|
assert_equal @workflow.files.size, 9
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
def test_outputs_stats
|
30
30
|
with_highline do
|
31
31
|
@workflow.start_message
|
32
32
|
assert @output.string.match(/Found \d haml files/), "Outputs stats"
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
36
|
+
def test_yaml_file_in_config
|
37
37
|
TestHelper.mock_full_project_user_interaction!
|
38
38
|
end
|
39
39
|
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Haml
|
4
|
+
class YamlWriterTest < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@temp_locale_dir = "./test/tmp/"
|
8
|
+
TestHelper.setup_project_directory!
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup_info_for_yaml
|
12
|
+
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
|
13
|
+
@ex1.run
|
14
|
+
end
|
15
|
+
|
16
|
+
def locale_config_dir
|
17
|
+
dir = File.expand_path(File.join(File.dirname(__FILE__), "/tmp/config/locales"))
|
18
|
+
if ! File.exists?(dir)
|
19
|
+
FileUtils.mkdir_p(dir)
|
20
|
+
end
|
21
|
+
dir
|
22
|
+
end
|
23
|
+
|
24
|
+
def locale_config_file
|
25
|
+
File.join(locale_config_dir, "en.yml")
|
26
|
+
end
|
27
|
+
|
28
|
+
def setup_yaml_file
|
29
|
+
File.open(locale_config_file, "w+") do |f|
|
30
|
+
f.write(existing_yaml_hash.to_yaml)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def existing_yaml_hash
|
35
|
+
{"en" => {
|
36
|
+
"viewname" => {
|
37
|
+
"translate_key" => "Translate Key"
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
def ex1_yaml_hash
|
44
|
+
YAML.load File.read(file_path("ex1.yml"))
|
45
|
+
end
|
46
|
+
|
47
|
+
def ex5_yaml_hash
|
48
|
+
YAML.load File.read(file_path("ex5.yml"))
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_it_can_deal_with_interpolated_vars
|
52
|
+
@ex5 = Haml::I18n::Extractor.new(file_path("ex5.haml"))
|
53
|
+
@ex5.run
|
54
|
+
assert_equal @ex5.yaml_writer.yaml_hash, ex5_yaml_hash
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_defaults_for_empty_init
|
58
|
+
yaml_writer = Haml::I18n::Extractor::YamlWriter.new
|
59
|
+
assert_equal yaml_writer.yaml_file, "./config/locales/en.yml"
|
60
|
+
assert_equal yaml_writer.i18n_scope, :en
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_you_can_pass_a_yaml_file
|
64
|
+
yaml_writer = Haml::I18n::Extractor::YamlWriter.new(nil, @temp_locale_dir)
|
65
|
+
assert_equal yaml_writer.yaml_file, @temp_locale_dir
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_it_can_merge_with_an_existing_yml_file
|
69
|
+
setup_info_for_yaml
|
70
|
+
setup_yaml_file
|
71
|
+
@ex1.yaml_writer.write_file(locale_config_file)
|
72
|
+
really_written = YAML.load(File.read(locale_config_file))
|
73
|
+
assert_equal really_written['en']['viewname'], existing_yaml_hash['en']['viewname']
|
74
|
+
assert_equal really_written['en']['support'], ex1_yaml_hash['en']['support']
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_it_can_accept_a_different_yml_file
|
78
|
+
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"), {:yaml_file => "/tmp/foo.yml"})
|
79
|
+
assert_equal @ex1.yaml_writer.yaml_file, "/tmp/foo.yml"
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_it_knows_about_i18n_scope
|
83
|
+
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"), {:i18n_scope => "he"})
|
84
|
+
assert_equal @ex1.yaml_writer.i18n_scope, :he
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_it_knows_about_i18n_scope_defaults_to_en
|
88
|
+
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
|
89
|
+
assert_equal @ex1.yaml_writer.i18n_scope, :en
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_it_will_assume_yaml_file_according_to_i18n_scope_if_no_yaml_file_is_passed
|
93
|
+
yaml_writer = Haml::I18n::Extractor::YamlWriter.new("he", nil)
|
94
|
+
assert_equal yaml_writer.yaml_file, "./config/locales/he.yml"
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_it_will_not_assume_yaml_file_according_to_i18n_scope_if_yaml_file_is_passed
|
98
|
+
yaml_writer = Haml::I18n::Extractor::YamlWriter.new("he", "/tmp/foo.yml")
|
99
|
+
assert_equal yaml_writer.yaml_file, "/tmp/foo.yml"
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_it_relies_on_the_info_for_yaml_having_a_certain_format
|
103
|
+
setup_info_for_yaml
|
104
|
+
@ex1.yaml_writer.info_for_yaml.each do |line_no, info_for_line|
|
105
|
+
assert info_for_line.has_key?(:modified_line), "hash info has :modified_line key"
|
106
|
+
assert info_for_line.has_key?(:t_name), "hash info has :t_name key"
|
107
|
+
assert info_for_line.has_key?(:replaced_text), "hash info has :replaced_text key"
|
108
|
+
# FIXME: since the scope right now is we're running this per file this will be the same, but keeping this right now.
|
109
|
+
assert info_for_line.has_key?(:path), "hash info has :path key"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_constructs_a_yaml_hash_according_to_the_view_in_rails_mode
|
114
|
+
setup_info_for_yaml
|
115
|
+
yaml_writer = @ex1.yaml_writer
|
116
|
+
assert_equal yaml_writer.yaml_hash, ex1_yaml_hash
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml-i18n-extractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Shai Rosenfeld
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-09-
|
18
|
+
date: 2013-09-08 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: tilt
|
@@ -223,21 +223,24 @@ files:
|
|
223
223
|
- haml-i18n-extractor.gemspec
|
224
224
|
- lib/haml-i18n-extractor.rb
|
225
225
|
- lib/haml-i18n-extractor/core-ext/hash.rb
|
226
|
-
- lib/haml-i18n-extractor/extraction/exception_finder.rb
|
227
226
|
- lib/haml-i18n-extractor/extraction/extractor.rb
|
227
|
+
- lib/haml-i18n-extractor/extraction/finder/exception_finder.rb
|
228
|
+
- lib/haml-i18n-extractor/extraction/finder/text_finder.rb
|
228
229
|
- lib/haml-i18n-extractor/extraction/haml_parser.rb
|
229
230
|
- lib/haml-i18n-extractor/extraction/haml_reader.rb
|
230
231
|
- lib/haml-i18n-extractor/extraction/haml_writer.rb
|
231
|
-
- lib/haml-i18n-extractor/extraction/
|
232
|
-
- lib/haml-i18n-extractor/extraction/
|
233
|
-
- lib/haml-i18n-extractor/extraction/text_replacer.rb
|
234
|
-
- lib/haml-i18n-extractor/extraction/
|
232
|
+
- lib/haml-i18n-extractor/extraction/replacer/interpolation_helper.rb
|
233
|
+
- lib/haml-i18n-extractor/extraction/replacer/replacer_result.rb
|
234
|
+
- lib/haml-i18n-extractor/extraction/replacer/text_replacer.rb
|
235
|
+
- lib/haml-i18n-extractor/extraction/tagging_writer.rb
|
236
|
+
- lib/haml-i18n-extractor/extraction/yaml_writer.rb
|
235
237
|
- lib/haml-i18n-extractor/flow/cli.rb
|
236
238
|
- lib/haml-i18n-extractor/flow/prompter.rb
|
237
239
|
- lib/haml-i18n-extractor/flow/user_action.rb
|
238
240
|
- lib/haml-i18n-extractor/flow/workflow.rb
|
239
241
|
- lib/haml-i18n-extractor/helpers.rb
|
240
242
|
- lib/haml-i18n-extractor/version.rb
|
243
|
+
- scripts/renew_test_syntax
|
241
244
|
- test/cli_test.rb
|
242
245
|
- test/exception_finder_test.rb
|
243
246
|
- test/extractor_test.rb
|
@@ -245,24 +248,29 @@ files:
|
|
245
248
|
- test/haml_reader_test.rb
|
246
249
|
- test/haml_writer_test.rb
|
247
250
|
- test/integration_test.rb
|
251
|
+
- test/interpolation_helper_test.rb
|
248
252
|
- test/prompter_test.rb
|
249
253
|
- test/support/bad.haml
|
250
254
|
- test/support/ex1.haml
|
251
255
|
- test/support/ex1.output.haml
|
256
|
+
- test/support/ex1.yml
|
252
257
|
- test/support/ex2.haml
|
253
258
|
- test/support/ex2.output.haml
|
254
259
|
- test/support/ex3.haml
|
255
260
|
- test/support/ex3.output.haml
|
256
261
|
- test/support/ex4.haml
|
257
262
|
- test/support/ex4.output.haml
|
263
|
+
- test/support/ex5.haml
|
264
|
+
- test/support/ex5.output.haml
|
265
|
+
- test/support/ex5.yml
|
258
266
|
- test/support/nothing_to_translate.haml
|
259
267
|
- test/support/nothing_to_translate.i18n-extractor.haml
|
260
|
-
- test/
|
268
|
+
- test/tagging_writer_test.rb
|
261
269
|
- test/test_helper.rb
|
262
270
|
- test/text_finder_test.rb
|
263
271
|
- test/text_replacer_test.rb
|
264
272
|
- test/workflow_test.rb
|
265
|
-
- test/
|
273
|
+
- test/yaml_writer_test.rb
|
266
274
|
homepage: https://github.com/shaiguitar/haml-i18n-extractor
|
267
275
|
licenses:
|
268
276
|
- MIT
|
@@ -304,21 +312,26 @@ test_files:
|
|
304
312
|
- test/haml_reader_test.rb
|
305
313
|
- test/haml_writer_test.rb
|
306
314
|
- test/integration_test.rb
|
315
|
+
- test/interpolation_helper_test.rb
|
307
316
|
- test/prompter_test.rb
|
308
317
|
- test/support/bad.haml
|
309
318
|
- test/support/ex1.haml
|
310
319
|
- test/support/ex1.output.haml
|
320
|
+
- test/support/ex1.yml
|
311
321
|
- test/support/ex2.haml
|
312
322
|
- test/support/ex2.output.haml
|
313
323
|
- test/support/ex3.haml
|
314
324
|
- test/support/ex3.output.haml
|
315
325
|
- test/support/ex4.haml
|
316
326
|
- test/support/ex4.output.haml
|
327
|
+
- test/support/ex5.haml
|
328
|
+
- test/support/ex5.output.haml
|
329
|
+
- test/support/ex5.yml
|
317
330
|
- test/support/nothing_to_translate.haml
|
318
331
|
- test/support/nothing_to_translate.i18n-extractor.haml
|
319
|
-
- test/
|
332
|
+
- test/tagging_writer_test.rb
|
320
333
|
- test/test_helper.rb
|
321
334
|
- test/text_finder_test.rb
|
322
335
|
- test/text_replacer_test.rb
|
323
336
|
- test/workflow_test.rb
|
324
|
-
- test/
|
337
|
+
- test/yaml_writer_test.rb
|
data/test/yaml_tool_test.rb
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Haml
|
4
|
-
class YamlToolTest < MiniTest::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@temp_locale_dir = "./test/tmp/"
|
8
|
-
TestHelper.setup_project_directory!
|
9
|
-
end
|
10
|
-
|
11
|
-
def setup_locale_hash
|
12
|
-
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
|
13
|
-
@ex1.run
|
14
|
-
end
|
15
|
-
|
16
|
-
def locale_config_dir
|
17
|
-
dir = File.expand_path(File.join(File.dirname(__FILE__), "/tmp/config/locales"))
|
18
|
-
if ! File.exists?(dir)
|
19
|
-
FileUtils.mkdir_p(dir)
|
20
|
-
end
|
21
|
-
dir
|
22
|
-
end
|
23
|
-
|
24
|
-
def locale_config_file
|
25
|
-
File.join(locale_config_dir, "en.yml")
|
26
|
-
end
|
27
|
-
|
28
|
-
def setup_yaml_file
|
29
|
-
File.open(locale_config_file, "w+") do |f|
|
30
|
-
f.write(existing_yaml_hash.to_yaml)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def existing_yaml_hash
|
35
|
-
{"en" => {
|
36
|
-
"viewname" => {
|
37
|
-
"translate_key" => "Translate Key"
|
38
|
-
}
|
39
|
-
}
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
def ex1_yaml_hash
|
44
|
-
YAML.load File.read(file_path("ex1.yml"))
|
45
|
-
end
|
46
|
-
|
47
|
-
test "defaults for empty init" do
|
48
|
-
yaml_tool = Haml::I18n::Extractor::YamlTool.new
|
49
|
-
assert_equal yaml_tool.yaml_file, "./config/locales/en.yml"
|
50
|
-
assert_equal yaml_tool.i18n_scope, :en
|
51
|
-
end
|
52
|
-
|
53
|
-
test "you can pass a yaml_file" do
|
54
|
-
yaml_tool = Haml::I18n::Extractor::YamlTool.new(nil, @temp_locale_dir)
|
55
|
-
assert_equal yaml_tool.yaml_file, @temp_locale_dir
|
56
|
-
end
|
57
|
-
|
58
|
-
test "it can merge with an existing yml file" do
|
59
|
-
setup_locale_hash
|
60
|
-
setup_yaml_file
|
61
|
-
@ex1.yaml_tool.write_file(locale_config_file)
|
62
|
-
really_written = YAML.load(File.read(locale_config_file))
|
63
|
-
assert_equal really_written['en']['viewname'], existing_yaml_hash['en']['viewname']
|
64
|
-
assert_equal really_written['en']['support'], ex1_yaml_hash['en']['support']
|
65
|
-
end
|
66
|
-
|
67
|
-
test "it can accept a different yml file" do
|
68
|
-
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"), {:yaml_file => "/tmp/foo.yml"})
|
69
|
-
assert_equal @ex1.yaml_tool.yaml_file, "/tmp/foo.yml"
|
70
|
-
end
|
71
|
-
|
72
|
-
test "it knows about i18n scope" do
|
73
|
-
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"), {:i18n_scope => "he"})
|
74
|
-
assert_equal @ex1.yaml_tool.i18n_scope, :he
|
75
|
-
end
|
76
|
-
|
77
|
-
test "it knows about i18n scope, defaults to :en" do
|
78
|
-
@ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
|
79
|
-
assert_equal @ex1.yaml_tool.i18n_scope, :en
|
80
|
-
end
|
81
|
-
|
82
|
-
test "it will assume yaml_file according to i18n_scope if no yaml_file is passed" do
|
83
|
-
yaml_tool = Haml::I18n::Extractor::YamlTool.new("he", nil)
|
84
|
-
assert_equal yaml_tool.yaml_file, "./config/locales/he.yml"
|
85
|
-
end
|
86
|
-
|
87
|
-
test "it will not assume yaml_file according to i18n_scope if yaml_file is passed" do
|
88
|
-
yaml_tool = Haml::I18n::Extractor::YamlTool.new("he", "/tmp/foo.yml")
|
89
|
-
assert_equal yaml_tool.yaml_file, "/tmp/foo.yml"
|
90
|
-
end
|
91
|
-
|
92
|
-
test "it relies on the locale_hash having a certain format" do
|
93
|
-
setup_locale_hash
|
94
|
-
@ex1.yaml_tool.locale_hash.each do |line_no, info_for_line|
|
95
|
-
assert info_for_line.has_key?(:modified_line), "hash info has :modified_line key"
|
96
|
-
assert info_for_line.has_key?(:keyname), "hash info has :keyname key"
|
97
|
-
assert info_for_line.has_key?(:replaced_text), "hash info has :replaced_text key"
|
98
|
-
# FIXME: since the scope right now is we're running this per file this will be the same, but keeping this right now.
|
99
|
-
assert info_for_line.has_key?(:path), "hash info has :path key"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
test "constructs a yaml hash according to the view in rails mode" do
|
104
|
-
setup_locale_hash
|
105
|
-
yaml_tool = @ex1.yaml_tool
|
106
|
-
assert_equal yaml_tool.yaml_hash, ex1_yaml_hash
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
end
|