i18nliner 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|