i18nliner 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +151 -104
- data/lib/i18nliner/base.rb +47 -0
- data/lib/i18nliner/call_helpers.rb +39 -13
- data/lib/i18nliner/commands/check.rb +20 -10
- data/lib/i18nliner/commands/dump.rb +17 -0
- data/lib/i18nliner/commands/generic_command.rb +10 -1
- data/lib/i18nliner/errors.rb +11 -1
- data/lib/i18nliner/erubis.rb +12 -0
- data/lib/i18nliner/extensions/controller.rb +25 -0
- data/lib/i18nliner/extensions/core.rb +61 -0
- data/lib/i18nliner/extensions/inferpolation.rb +28 -0
- data/lib/i18nliner/extensions/model.rb +29 -0
- data/lib/i18nliner/extensions/view.rb +28 -0
- data/lib/i18nliner/extractors/ruby_extractor.rb +15 -33
- data/lib/i18nliner/extractors/sexp_helper.rb +38 -0
- data/lib/i18nliner/extractors/translate_call.rb +9 -11
- data/lib/i18nliner/extractors/translation_hash.rb +6 -6
- data/lib/i18nliner/pre_processors/erb_pre_processor.rb +334 -0
- data/lib/i18nliner/processors/abstract_processor.rb +26 -5
- data/lib/i18nliner/processors/erb_processor.rb +19 -3
- data/lib/i18nliner/processors/ruby_processor.rb +16 -5
- data/lib/i18nliner/railtie.rb +27 -0
- data/lib/i18nliner/scope.rb +4 -0
- data/lib/i18nliner.rb +5 -29
- data/lib/tasks/i18nliner.rake +10 -4
- data/spec/commands/check_spec.rb +22 -0
- data/spec/commands/dump_spec.rb +27 -0
- data/spec/extensions/core_spec.rb +71 -0
- data/spec/extensions/inferpolation_spec.rb +41 -0
- data/spec/extensions/view_spec.rb +42 -0
- data/spec/extractors/ruby_extractor_spec.rb +4 -5
- data/spec/extractors/translate_call_spec.rb +29 -2
- data/spec/fixtures/app/models/invalid.rb +5 -0
- data/spec/fixtures/app/models/valid.rb +5 -0
- data/spec/pre_processors/erb_pre_processor_spec.rb +194 -0
- data/spec/processors/erb_processor_spec.rb +28 -0
- metadata +88 -5
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'i18nliner/extensions/inferpolation'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
describe I18nliner::Extensions::Inferpolation do
|
5
|
+
|
6
|
+
let(:foo) do
|
7
|
+
foo = OpenStruct.new(:bar => OpenStruct.new(:baz => "lol"), :bar2 => "foo")
|
8
|
+
foo.instance_variable_set(:@bar, foo.bar)
|
9
|
+
foo.instance_variable_set(:@bar2, "foo")
|
10
|
+
foo.extend I18nliner::Extensions::Inferpolation
|
11
|
+
foo
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should inferpolate valid instance methods and chains" do
|
15
|
+
options = {:default => "hello %{bar.baz} %{bar2}"}
|
16
|
+
foo.inferpolate(options).should == {
|
17
|
+
:default => "hello %{bar_baz} %{bar2}",
|
18
|
+
:bar_baz => foo.bar.baz,
|
19
|
+
:bar2 => foo.bar2
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should inferpolate valid instance variables and chains" do
|
24
|
+
options = {:default => "hello %{@bar.baz} %{@bar2}"}
|
25
|
+
foo.inferpolate(options).should == {
|
26
|
+
:default => "hello %{bar_baz} %{bar2}",
|
27
|
+
:bar_baz => foo.bar.baz,
|
28
|
+
:bar2 => foo.bar2
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not inferpolate invalid instance methods and chains" do
|
33
|
+
options = {:default => "hello %{lol} %{bar.baz.lol}"}
|
34
|
+
foo.inferpolate(options).should == options
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should not inferpolate invalid instance variables and chains" do
|
38
|
+
options = {:default => "hello %{@lol} %{@bar.baz.lol}"}
|
39
|
+
foo.inferpolate(options).should == options
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'i18nliner/extensions/view'
|
3
|
+
require 'i18nliner/call_helpers'
|
4
|
+
|
5
|
+
describe I18nliner::Extensions::View do
|
6
|
+
let(:i18n) do
|
7
|
+
Module.new do
|
8
|
+
extend(Module.new do
|
9
|
+
def translate(*args)
|
10
|
+
I18n.translate(*args)
|
11
|
+
end
|
12
|
+
end)
|
13
|
+
extend I18nliner::Extensions::View
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
describe "#translate" do
|
19
|
+
it "should inferpolate" do
|
20
|
+
i18n.stub(:foo).and_return("FOO")
|
21
|
+
I18nliner::CallHelpers.stub(:infer_key).and_return(:key)
|
22
|
+
|
23
|
+
expect(I18n).to receive(:translate).with(:key, :default => "hello %{foo}", :foo => "FOO")
|
24
|
+
i18n.translate("hello %{foo}")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should raise an error when given a block" do
|
28
|
+
expect {
|
29
|
+
i18n.translate(:foo) {
|
30
|
+
uhoh there was a bug with erb extraction or im doing it wrong
|
31
|
+
}
|
32
|
+
}.to raise_error I18nliner::InvalidBlockUsageError
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should raise an error when given an incorrect number of arguments" do
|
36
|
+
expect {
|
37
|
+
i18n.translate
|
38
|
+
}.to raise_error /wrong number of arguments/
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -1,10 +1,7 @@
|
|
1
|
-
require 'sexp_processor'
|
2
1
|
require 'ruby_parser'
|
3
|
-
require 'i18nliner'
|
4
2
|
require 'i18nliner/errors'
|
5
3
|
require 'i18nliner/scope'
|
6
4
|
require 'i18nliner/extractors/ruby_extractor'
|
7
|
-
require 'i18nliner/extractors/translate_call'
|
8
5
|
|
9
6
|
describe I18nliner::Extractors::RubyExtractor do
|
10
7
|
def extract(source, scope = I18nliner::Scope.new(nil))
|
@@ -27,12 +24,15 @@ describe I18nliner::Extractors::RubyExtractor do
|
|
27
24
|
extract("foo 'Foo'").should == {}
|
28
25
|
end
|
29
26
|
|
27
|
+
it "should ignore t! calls" do
|
28
|
+
extract("t! something").should == {}
|
29
|
+
end
|
30
|
+
|
30
31
|
it "should not extract t calls with no default" do
|
31
32
|
extract("t :foo").should == {}
|
32
33
|
end
|
33
34
|
|
34
35
|
it "should extract valid t calls" do
|
35
|
-
if false
|
36
36
|
extract("t 'Foo'").should ==
|
37
37
|
{"foo_f44ad75d" => "Foo"}
|
38
38
|
extract("t :bar, 'Baz'").should ==
|
@@ -45,7 +45,6 @@ describe I18nliner::Extractors::RubyExtractor do
|
|
45
45
|
{"zomg_lots_a54248c9.one" => "just one", "zomg_lots_a54248c9.other" => "zomg lots"}
|
46
46
|
extract("t 'foo2', <<-STR\nFoo\nSTR").should ==
|
47
47
|
{'foo2' => "Foo"}
|
48
|
-
end
|
49
48
|
extract("t 'foo', 'F' + 'o' + 'o'").should ==
|
50
49
|
{'foo' => "Foo"}
|
51
50
|
end
|
@@ -1,10 +1,11 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'i18nliner/base'
|
2
3
|
require 'i18nliner/scope'
|
3
4
|
require 'i18nliner/extractors/translate_call'
|
4
5
|
|
5
6
|
describe I18nliner::Extractors::TranslateCall do
|
6
7
|
def call(scope, *args)
|
7
|
-
I18nliner::Extractors::TranslateCall.new(scope, nil,
|
8
|
+
I18nliner::Extractors::TranslateCall.new(scope, nil, :t, args)
|
8
9
|
end
|
9
10
|
|
10
11
|
let(:no_scope) { I18nliner::Scope.new(nil) }
|
@@ -43,6 +44,12 @@ describe I18nliner::Extractors::TranslateCall do
|
|
43
44
|
}.to raise_error(I18nliner::InvalidSignatureError)
|
44
45
|
end
|
45
46
|
|
47
|
+
# for legacy calls, e.g. t :key, :default => "foo"
|
48
|
+
it "should allow the default to be specified in the options hash" do
|
49
|
+
call = call(no_scope, :key, :default => "foo")
|
50
|
+
call.default.should == "foo"
|
51
|
+
end
|
52
|
+
|
46
53
|
it "should ensure options is a hash, if provided" do
|
47
54
|
expect {
|
48
55
|
call(no_scope, :key, "value", Object.new)
|
@@ -65,6 +72,26 @@ describe I18nliner::Extractors::TranslateCall do
|
|
65
72
|
end
|
66
73
|
end
|
67
74
|
|
75
|
+
it "should transliterate underscored keys according to the default locale" do
|
76
|
+
orig_locale = I18n.default_locale
|
77
|
+
I18n.backend.store_translations(:de, :i18n => {
|
78
|
+
:transliterate => {
|
79
|
+
:rule => {
|
80
|
+
"ü" => "ue",
|
81
|
+
"ö" => "oe"
|
82
|
+
}
|
83
|
+
}
|
84
|
+
})
|
85
|
+
|
86
|
+
I18nliner.inferred_key_format :underscored do
|
87
|
+
I18n.default_locale = :en
|
88
|
+
call(no_scope, "Jürgen").translations[0][0].should == "jurgen"
|
89
|
+
I18n.default_locale = :de
|
90
|
+
call(no_scope, "Jürgen").translations[0][0].should == "juergen"
|
91
|
+
end
|
92
|
+
I18n.default_locale = orig_locale
|
93
|
+
end
|
94
|
+
|
68
95
|
it "should generate underscored + crc32 keys" do
|
69
96
|
I18nliner.inferred_key_format :underscored_crc32 do
|
70
97
|
call(no_scope, "zOmg key!!").translations.should ==
|
@@ -0,0 +1,194 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'i18nliner/pre_processors/erb_pre_processor'
|
3
|
+
require 'i18nliner/errors'
|
4
|
+
require 'active_support/core_ext/string/strip.rb'
|
5
|
+
|
6
|
+
describe I18nliner::PreProcessors::ErbPreProcessor do
|
7
|
+
before do
|
8
|
+
I18nliner::PreProcessors::ErbPreProcessor::TBlock.any_instance.stub(:infer_key).and_return(:key)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".process" do
|
12
|
+
def process(string, remove_blank_lines = true)
|
13
|
+
result = I18nliner::PreProcessors::ErbPreProcessor.process(string)
|
14
|
+
result.gsub!(/\n+%>/, " %>") if remove_blank_lines
|
15
|
+
result
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should transform t block expressions" do
|
19
|
+
process("<%= t do %>hello world!<% end %>").should ==
|
20
|
+
'<%= t :key, "hello world!" %>'
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should remove extraneous whitespace from the default" do
|
24
|
+
process("<%= t do %> ohai! lulz\t <% end %>").should ==
|
25
|
+
'<%= t :key, "ohai! lulz" %>'
|
26
|
+
end
|
27
|
+
|
28
|
+
# so that line numbers are close-ish when you get an error in a
|
29
|
+
# multi-line t-block... an exception from an expression might not
|
30
|
+
# match up perfectly, but it will at least point to the start of the
|
31
|
+
# t-block
|
32
|
+
it "should preserve all newlines in the generated erb" do
|
33
|
+
process(<<-SOURCE.strip_heredoc, false).
|
34
|
+
<%= t do
|
35
|
+
%>
|
36
|
+
ohai!
|
37
|
+
<%= test %>
|
38
|
+
lulz
|
39
|
+
<% end %>
|
40
|
+
SOURCE
|
41
|
+
should == <<-EXPECTED.strip_heredoc
|
42
|
+
<%= t :key, "ohai! %{test} lulz", :test => (test)
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
%>
|
48
|
+
EXPECTED
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should not translate other block expressions" do
|
52
|
+
process(<<-SOURCE).
|
53
|
+
<%= form_for do %>
|
54
|
+
<%= t do %>Your Name<% end %>
|
55
|
+
<input>
|
56
|
+
<% end %>
|
57
|
+
SOURCE
|
58
|
+
should == <<-EXPECTED
|
59
|
+
<%= form_for do %>
|
60
|
+
<%= t :key, "Your Name" %>
|
61
|
+
<input>
|
62
|
+
<% end %>
|
63
|
+
EXPECTED
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should reject malformed erb" do
|
67
|
+
expect { process("<%= t do %>") }.
|
68
|
+
to raise_error(I18nliner::MalformedErbError)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should disallow nesting non-t block expressions in a t block expression" do
|
72
|
+
expect { process("<%= t { %><%= s { %>nope<% } %><% } %>") }.
|
73
|
+
to raise_error(I18nliner::TBlockNestingError)
|
74
|
+
expect { process("<%= t { %><%= s(:some, :args) { |args, here, too| %>nope<% } %><% } %>") }.
|
75
|
+
to raise_error(I18nliner::TBlockNestingError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should disallow statements in a t block expression" do
|
79
|
+
expect { process("<%= t { %>I am <% if happy %>happy<% else %>sad<% end %><% } %>") }.
|
80
|
+
to raise_error(I18nliner::TBlockNestingError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should create wrappers for markup" do
|
84
|
+
process(<<-SOURCE).
|
85
|
+
<%= t do %>
|
86
|
+
<b>bold</b>, or even <a href="#"><i><img>combos</i></a> get wrapper'd
|
87
|
+
<% end %>
|
88
|
+
SOURCE
|
89
|
+
should == <<-EXPECTED
|
90
|
+
<%= t :key, "*bold*, or even **combos** get wrapper'd", :wrappers => ["<b>\\\\1</b>", "<a href=\\\"#\\\"><i><img>\\\\1</i></a>"] %>
|
91
|
+
EXPECTED
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should not create wrappers for markup with multiple text nodes" do
|
95
|
+
expect { puts process("<%= t do %>this is <b><i>too</i> complicated</b><% end %>") }.
|
96
|
+
to raise_error(I18nliner::UnwrappableContentError)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should create wrappers for link_to calls with string content" do
|
100
|
+
process(<<-SOURCE).
|
101
|
+
<%= t do %>
|
102
|
+
You should <%= link_to("create a profile", "/profile") %>.
|
103
|
+
idk why <%= link_to "this " + "link", "/zomg" %> has concatention
|
104
|
+
<% end %>
|
105
|
+
SOURCE
|
106
|
+
should == <<-EXPECTED
|
107
|
+
<%= t :key, "You should *create a profile*. idk why **this link** has concatention", :wrappers => [link_to("\\\\1", "/profile"), link_to("\\\\1", "/zomg")] %>
|
108
|
+
EXPECTED
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should create wrappers for link_to calls with other content" do
|
112
|
+
process(<<-SOURCE).
|
113
|
+
<%= t do %>
|
114
|
+
Your account rep is <%= link_to(@user.name, "/user/\#{@user.id}") %>
|
115
|
+
<% end %>
|
116
|
+
SOURCE
|
117
|
+
should == <<-EXPECTED
|
118
|
+
<%= t :key, "Your account rep is *%{user_name}*", :user_name => (@user.name), :wrappers => [link_to("\\\\1", "/user/\#{@user.id}")] %>
|
119
|
+
EXPECTED
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should reuse identical wrappers" do
|
123
|
+
process(<<-SOURCE).
|
124
|
+
<%= t do %>
|
125
|
+
the wrappers for
|
126
|
+
<%= link_to "these", url %> <%= link_to "links", url %> are the same,
|
127
|
+
as are the ones for
|
128
|
+
<b>these</b> <b>tags</b>
|
129
|
+
<% end %>
|
130
|
+
SOURCE
|
131
|
+
should == <<-EXPECTED
|
132
|
+
<%= t :key, "the wrappers for **these** **links** are the same, as are the ones for *these* *tags*", :wrappers => ["<b>\\\\1</b>", link_to("\\\\1", url)] %>
|
133
|
+
EXPECTED
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should generate placeholders for inline expressions" do
|
137
|
+
process(<<-SOURCE).
|
138
|
+
<%= t do %>
|
139
|
+
Hello, <%= name %>
|
140
|
+
<% end %>
|
141
|
+
SOURCE
|
142
|
+
should == <<-EXPECTED
|
143
|
+
<%= t :key, "Hello, %{name}", :name => (name) %>
|
144
|
+
EXPECTED
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should generate placeholders for inline expressions in wrappers" do
|
148
|
+
process(<<-SOURCE).
|
149
|
+
<%= t do %>
|
150
|
+
Go to <a href="/asdf" title="<%= name %>">your account</a>
|
151
|
+
<% end %>
|
152
|
+
SOURCE
|
153
|
+
should == <<-EXPECTED
|
154
|
+
<%= t :key, "Go to *your account*", :wrappers => ["<a href=\\"/asdf\\" title=\\"\#{name}\\">\\\\1</a>"] %>
|
155
|
+
EXPECTED
|
156
|
+
end
|
157
|
+
|
158
|
+
# this is really the same as the one above, but it's good to have a
|
159
|
+
# spec for this in case the underlying implementation changes
|
160
|
+
# dramatically
|
161
|
+
it "should transform nested t block expressions in wrappers" do
|
162
|
+
process(<<-SOURCE).
|
163
|
+
<%= t do %>
|
164
|
+
Go to <a href="/asdf" title="<%= t do %>manage account stuffs, <%= name %><% end %>">your account</a>
|
165
|
+
<% end %>
|
166
|
+
SOURCE
|
167
|
+
should == <<-EXPECTED
|
168
|
+
<%= t :key, "Go to *your account*", :wrappers => ["<a href=\\"/asdf\\" title=\\"\#{t :key, \"manage account stuffs, %{name}\", :name => (name)}\\">\\\\1</a>"] %>
|
169
|
+
EXPECTED
|
170
|
+
end
|
171
|
+
|
172
|
+
it "should generate placeholders for empty markup" do
|
173
|
+
process(<<-SOURCE).
|
174
|
+
<%= t do %>
|
175
|
+
Create <input name="count"> groups
|
176
|
+
<% end %>
|
177
|
+
SOURCE
|
178
|
+
should == <<-EXPECTED
|
179
|
+
<%= t :key, "Create %{input_name_count} groups", :input_name_count => ("<input name=\\"count\\">".html_safe) %>
|
180
|
+
EXPECTED
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should unescape entities" do
|
184
|
+
process(<<-SOURCE).
|
185
|
+
<%= t do %>
|
186
|
+
© <%= year %> ACME Corp. All Rights Reserved. Our lawyers > your lawyers
|
187
|
+
<% end %>
|
188
|
+
SOURCE
|
189
|
+
should == <<-EXPECTED
|
190
|
+
<%= t :key, "© %{year} ACME Corp. All Rights Reserved. Our lawyers > your lawyers", :year => (year) %>
|
191
|
+
EXPECTED
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'i18nliner/processors/erb_processor'
|
2
|
+
require 'i18nliner/extractors/translation_hash'
|
3
|
+
|
4
|
+
describe I18nliner::Processors::ErbProcessor do
|
5
|
+
before do
|
6
|
+
@translations = I18nliner::Extractors::TranslationHash.new
|
7
|
+
@processor = I18nliner::Processors::ErbProcessor.new(@translations)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#check_contents" do
|
11
|
+
it "should extract valid translation calls" do
|
12
|
+
@processor.check_contents(<<-SOURCE)
|
13
|
+
<%= t "Inline!" %>
|
14
|
+
<%= t do %>
|
15
|
+
Zomg a block
|
16
|
+
<a href="/nesting"
|
17
|
+
title="<%= t do %>what is this?<% end %>"
|
18
|
+
>with nesting</a>!!!
|
19
|
+
<% end %>
|
20
|
+
SOURCE
|
21
|
+
@translations.values.sort.should == [
|
22
|
+
"Inline!",
|
23
|
+
"Zomg a block *with nesting*!!!",
|
24
|
+
"what is this?"
|
25
|
+
]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18nliner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 4.4.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: ruby2ruby
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.6
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.0.6
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: globby
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +82,7 @@ dependencies:
|
|
66
82
|
requirements:
|
67
83
|
- - ! '>='
|
68
84
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.1.
|
85
|
+
version: 0.1.1
|
70
86
|
type: :runtime
|
71
87
|
prerelease: false
|
72
88
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +90,23 @@ dependencies:
|
|
74
90
|
requirements:
|
75
91
|
- - ! '>='
|
76
92
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.1.
|
93
|
+
version: 0.1.1
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: erubis
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 2.7.0
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.7.0
|
78
110
|
- !ruby/object:Gem::Dependency
|
79
111
|
name: ya2yaml
|
80
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,6 +123,22 @@ dependencies:
|
|
91
123
|
- - '='
|
92
124
|
- !ruby/object:Gem::Version
|
93
125
|
version: '0.31'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: nokogiri
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.5.0
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.5.0
|
94
142
|
- !ruby/object:Gem::Dependency
|
95
143
|
name: debugger
|
96
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,9 +171,25 @@ dependencies:
|
|
123
171
|
- - ~>
|
124
172
|
- !ruby/object:Gem::Version
|
125
173
|
version: 2.14.0
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: rspec-mocks
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ~>
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 2.14.0
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ~>
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 2.14.0
|
126
190
|
description: No .yml files. Inline defaults. Optional keys. Inferred interpolation
|
127
191
|
values. Wrappers and blocks, so your templates look template-y and your translations
|
128
|
-
HTML-free.
|
192
|
+
stay HTML-free.
|
129
193
|
email: jenseng@gmail.com
|
130
194
|
executables: []
|
131
195
|
extensions: []
|
@@ -134,6 +198,7 @@ files:
|
|
134
198
|
- LICENSE.txt
|
135
199
|
- Rakefile
|
136
200
|
- README.md
|
201
|
+
- lib/i18nliner/base.rb
|
137
202
|
- lib/i18nliner/call_helpers.rb
|
138
203
|
- lib/i18nliner/commands/basic_formatter.rb
|
139
204
|
- lib/i18nliner/commands/check.rb
|
@@ -141,19 +206,37 @@ files:
|
|
141
206
|
- lib/i18nliner/commands/dump.rb
|
142
207
|
- lib/i18nliner/commands/generic_command.rb
|
143
208
|
- lib/i18nliner/errors.rb
|
209
|
+
- lib/i18nliner/erubis.rb
|
210
|
+
- lib/i18nliner/extensions/controller.rb
|
211
|
+
- lib/i18nliner/extensions/core.rb
|
212
|
+
- lib/i18nliner/extensions/inferpolation.rb
|
213
|
+
- lib/i18nliner/extensions/model.rb
|
214
|
+
- lib/i18nliner/extensions/view.rb
|
144
215
|
- lib/i18nliner/extractors/abstract_extractor.rb
|
145
216
|
- lib/i18nliner/extractors/ruby_extractor.rb
|
217
|
+
- lib/i18nliner/extractors/sexp_helper.rb
|
146
218
|
- lib/i18nliner/extractors/translate_call.rb
|
147
219
|
- lib/i18nliner/extractors/translation_hash.rb
|
220
|
+
- lib/i18nliner/pre_processors/erb_pre_processor.rb
|
148
221
|
- lib/i18nliner/processors/abstract_processor.rb
|
149
222
|
- lib/i18nliner/processors/erb_processor.rb
|
150
223
|
- lib/i18nliner/processors/ruby_processor.rb
|
151
224
|
- lib/i18nliner/processors.rb
|
225
|
+
- lib/i18nliner/railtie.rb
|
152
226
|
- lib/i18nliner/scope.rb
|
153
227
|
- lib/i18nliner.rb
|
154
228
|
- lib/tasks/i18nliner.rake
|
229
|
+
- spec/commands/check_spec.rb
|
230
|
+
- spec/commands/dump_spec.rb
|
231
|
+
- spec/extensions/core_spec.rb
|
232
|
+
- spec/extensions/inferpolation_spec.rb
|
233
|
+
- spec/extensions/view_spec.rb
|
155
234
|
- spec/extractors/ruby_extractor_spec.rb
|
156
235
|
- spec/extractors/translate_call_spec.rb
|
236
|
+
- spec/fixtures/app/models/invalid.rb
|
237
|
+
- spec/fixtures/app/models/valid.rb
|
238
|
+
- spec/pre_processors/erb_pre_processor_spec.rb
|
239
|
+
- spec/processors/erb_processor_spec.rb
|
157
240
|
homepage: http://github.com/jenseng/i18nliner
|
158
241
|
licenses: []
|
159
242
|
post_install_message:
|