localite 0.3 → 0.5.6
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/Manifest +44 -0
- data/VERSION +1 -1
- data/bin/list-tr +10 -0
- data/lib/localite.rb +161 -43
- data/lib/localite/filter.rb +23 -64
- data/lib/localite/format.rb +36 -0
- data/lib/localite/node_filter.rb +197 -0
- data/lib/localite/scopes.rb +93 -0
- data/lib/localite/settings.rb +139 -17
- data/lib/localite/storage.rb +132 -0
- data/lib/localite/template.rb +29 -25
- data/lib/localite/tr.rb +292 -0
- data/lib/localite/translate.rb +46 -20
- data/localite.gemspec +9 -6
- data/localite.tmproj +3 -99
- data/tasks/echoe.rake +1 -1
- data/test/i18n/de.tr +5 -0
- data/test/i18n/en.tr +16 -0
- data/test/rails/Rakefile +10 -0
- data/test/rails/app/controllers/application_controller.rb +10 -0
- data/test/rails/app/controllers/localite_controller.rb +20 -0
- data/test/rails/app/views/localite/index.html.erb +19 -0
- data/test/rails/app/views/localite/template.de.html.erb +1 -0
- data/test/rails/app/views/localite/template.en.html.erb +1 -0
- data/test/rails/config/boot.rb +110 -0
- data/test/rails/config/environment.rb +50 -0
- data/test/rails/config/environments/development.rb +17 -0
- data/test/rails/config/environments/production.rb +28 -0
- data/test/rails/config/environments/test.rb +28 -0
- data/test/rails/config/initializers/new_rails_defaults.rb +21 -0
- data/test/rails/config/initializers/session_store.rb +15 -0
- data/test/rails/config/locales/de.yml +4 -0
- data/test/rails/config/locales/en.yml +4 -0
- data/test/rails/config/routes.rb +13 -0
- data/test/rails/script/console +3 -0
- data/test/rails/script/server +3 -0
- data/test/rails/test/functional/localite_controller_test.rb +56 -0
- data/test/rails/test/test_helper.rb +38 -0
- data/test/test.rb +4 -1
- metadata +51 -11
- data/lib/localite/scope.rb +0 -140
- data/test/i18n/de.yml +0 -15
data/lib/localite/scope.rb
DELETED
@@ -1,140 +0,0 @@
|
|
1
|
-
module Localite::Scope
|
2
|
-
#
|
3
|
-
# scope allows to set a scope around a translation. A scoped translation
|
4
|
-
#
|
5
|
-
# Localite.scope("scope") do
|
6
|
-
# "msg".t
|
7
|
-
# end
|
8
|
-
#
|
9
|
-
# will look up "scope.msg" and "msg", in that order, and return the first
|
10
|
-
# matching translation in the current locale. Scopes can be stacked; looking
|
11
|
-
# up a scoped translation
|
12
|
-
# Localite.scope("outer") do
|
13
|
-
# Localite.scope("scope") do
|
14
|
-
# "msg".t
|
15
|
-
# end
|
16
|
-
# end
|
17
|
-
#
|
18
|
-
# will look up "outer.scope.msg", "scope.msg", "msg".
|
19
|
-
#
|
20
|
-
# If no translation will be found we look up the same entries in the base
|
21
|
-
# locale.
|
22
|
-
def scope(*args, &block)
|
23
|
-
return yield if args.empty?
|
24
|
-
|
25
|
-
scopes.exec(args.shift) do
|
26
|
-
scope *args, &block
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def scopes
|
31
|
-
Thread.current[:"localite:scopes"] ||= Scopes.new
|
32
|
-
end
|
33
|
-
|
34
|
-
#
|
35
|
-
# The mode setting defines how the template engine deals with its
|
36
|
-
# parameters. In :html mode all parameters will be subject to HTML
|
37
|
-
# escaping, while in :text mode the parameters remain unchanged.
|
38
|
-
def html(&block)
|
39
|
-
in_mode :html, &block
|
40
|
-
end
|
41
|
-
|
42
|
-
def text(&block)
|
43
|
-
in_mode :text, &block
|
44
|
-
end
|
45
|
-
|
46
|
-
def mode
|
47
|
-
Thread.current[:"localite:mode"] || :text
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def in_mode(mode, &block)
|
53
|
-
old = Thread.current[:"localite:mode"]
|
54
|
-
Thread.current[:"localite:mode"] = mode
|
55
|
-
yield
|
56
|
-
ensure
|
57
|
-
Thread.current[:"localite:mode"] = old
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
class Scopes < Array
|
62
|
-
def exec(s, &block)
|
63
|
-
s = "#{last}.#{s}" if last
|
64
|
-
push s
|
65
|
-
|
66
|
-
yield
|
67
|
-
ensure
|
68
|
-
pop
|
69
|
-
end
|
70
|
-
|
71
|
-
def each(s)
|
72
|
-
reverse_each do |entry|
|
73
|
-
yield "#{entry}.#{s}"
|
74
|
-
end
|
75
|
-
|
76
|
-
yield s
|
77
|
-
end
|
78
|
-
|
79
|
-
def first(s)
|
80
|
-
each(s) do |entry|
|
81
|
-
return entry
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
module Localite::Scope::Etest
|
88
|
-
Scopes = Localite::Scope::Scopes
|
89
|
-
|
90
|
-
def test_scope
|
91
|
-
scope = Scopes.new
|
92
|
-
scope.exec("a") do
|
93
|
-
scope.exec("b") do
|
94
|
-
scope.exec("b") do
|
95
|
-
r = []
|
96
|
-
scope.each("str") do |scoped|
|
97
|
-
r << scoped
|
98
|
-
end
|
99
|
-
assert_equal %w(a.b.b.str a.b.str a.str str), r
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_more_scopes
|
106
|
-
Localite.scope("a", :b, "b") do
|
107
|
-
r = []
|
108
|
-
Localite.scopes.each("str") do |scoped|
|
109
|
-
r << scoped
|
110
|
-
end
|
111
|
-
assert_equal %w(a.b.b.str a.b.str a.str str), r
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_more_scopes_w_dots
|
116
|
-
Localite.scope("a", :b, "b.c.d") do
|
117
|
-
r = []
|
118
|
-
Localite.scopes.each("str.y") do |scoped|
|
119
|
-
r << scoped
|
120
|
-
end
|
121
|
-
assert_equal %w(a.b.b.c.d.str.y a.b.str.y a.str.y str.y), r
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def test_empty_scopes
|
126
|
-
r = []
|
127
|
-
Localite.scopes.each("str.y") do |scoped|
|
128
|
-
r << scoped
|
129
|
-
end
|
130
|
-
assert_equal %w(str.y), r
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_modi
|
134
|
-
assert_equal "abc", "param".t(:xxx => "abc")
|
135
|
-
assert_equal "a > c", "param".t(:xxx => "a > c")
|
136
|
-
assert_equal "a > c", Localite.text { "param".t(:xxx => "a > c") }
|
137
|
-
assert_equal "a > c", Localite.html { "param".t(:xxx => "a > c") }
|
138
|
-
assert_equal "a > c", "param".t(:xxx => "a > c")
|
139
|
-
end
|
140
|
-
end
|