lazier 2.3.1 → 2.4.0

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.
@@ -103,7 +103,7 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Tue Jan 29 19:28:50 2013 by
106
+ Generated on Tue Jan 29 20:37:32 2013 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
108
  0.8.3 (ruby-1.9.3).
109
109
  </div>
data/lib/lazier.rb CHANGED
@@ -12,6 +12,7 @@ require "r18n-desktop"
12
12
 
13
13
  require "lazier/version" if !defined?(Lazier::Version)
14
14
  require "lazier/exceptions"
15
+ require "lazier/i18n"
15
16
  require "lazier/settings"
16
17
  require "lazier/object"
17
18
  require "lazier/boolean"
@@ -27,7 +28,6 @@ module Lazier
27
28
  #
28
29
  # @return [Settings] The settings for the extensions.
29
30
  def self.settings
30
- ::Lazier.localize if !Lazier.localized?
31
31
  ::Lazier::Settings.instance
32
32
  end
33
33
 
@@ -44,8 +44,6 @@ module Lazier
44
44
  # @option pathname Extensions for path objects.
45
45
  # @return [Settings] The settings for the extensions.
46
46
  def self.load!(*what)
47
- ::Lazier.localize if !Lazier.localized?
48
-
49
47
  what = ["object", "boolean", "string", "hash", "datetime", "math", "pathname"] if what.count == 0
50
48
  what.collect! { |w| ::Lazier.send("load_#{w}") }
51
49
 
@@ -125,28 +123,4 @@ module Lazier
125
123
  include ::Lazier::Pathname
126
124
  end
127
125
  end
128
-
129
- # Get the list of available translation for the current locale.
130
- #
131
- # @return [R18N::Translation] The translation object.
132
- def self.i18n
133
- Lazier.localize if !Lazier.localized?
134
- @i18n
135
- end
136
-
137
- # Set the current locale for messages.
138
- #
139
- # @param locale [String] The new locale. Default is the current system locale.
140
- # @return [R18n::Translation] The new translation object.
141
- def self.localize(locale = nil)
142
- @i18n_locales_path ||= ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../locales/")
143
- @i18n = R18n::I18n.new([locale, ENV["LANG"], R18n::I18n.system_locale].compact, @i18n_locales_path).t.lazier
144
- end
145
-
146
- # Check whether the i18n support have been enabled.
147
- #
148
- # @return [Boolean] Whether the i18n support have been enabled or not.
149
- def self.localized?
150
- @i18n.present?
151
- end
152
126
  end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the lazier gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ module Lazier
8
+ module I18n
9
+ # Setup all I18n translations.
10
+ #
11
+ # @param root [Symbol] The root level of translation.
12
+ # @param path [String] The path where the translation are stored.
13
+ def i18n_setup(root, path)
14
+ @i18n_root = root.to_sym
15
+ @i18n_locales_path = path
16
+ end
17
+
18
+ # Get the list of available translation for the current locale.
19
+ #
20
+ # @return [R18N::Translation] The translation object.
21
+ def i18n
22
+ @i18n ||= i18n_load_locale(nil)
23
+ end
24
+
25
+ # Set the current locale for messages.
26
+ #
27
+ # @param locale [String] The new locale. Default is the current system locale.
28
+ # @return [R18n::Translation] The new translation object.
29
+ def i18n=(locale)
30
+ @i18n = i18n_load_locale(locale)
31
+ end
32
+
33
+ private
34
+ # Loads a locale for messages.
35
+ #
36
+ # @param locale [Symbol] The new locale. Default is the current system locale.
37
+ # @return [R18n::Translation] The new translation object.
38
+ def i18n_load_locale(locale)
39
+ R18n::I18n.new([locale, ENV["LANG"], R18n::I18n.system_locale].compact, @i18n_locales_path.ensure_string).t.send(@i18n_root.ensure_string)
40
+ end
41
+ end
42
+ end
@@ -11,12 +11,16 @@ module Lazier
11
11
  # @attr [Hash] boolean_names String representations of booleans.
12
12
  # @attr [Hash] date_names String representations of days and months.
13
13
  # @attr [Hash] date_formats Custom date and time formats.
14
+ # @attr [R18n::Translation] i18n The translation object.
15
+
14
16
  class Settings
15
17
  attr_reader :format_number
16
18
  attr_reader :boolean_names
17
19
  attr_reader :date_names
18
20
  attr_reader :date_formats
19
21
 
22
+ include Lazier::I18n
23
+
20
24
  # Returns the singleton instance of the settings.
21
25
  #
22
26
  # @param force [Boolean] If to force recreation of the instance.
@@ -28,12 +32,27 @@ module Lazier
28
32
 
29
33
  # Initializes a new settings object.
30
34
  def initialize
35
+ self.i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
36
+ self.setup
37
+ end
38
+
39
+ # Setups the current instance.
40
+ def setup
31
41
  self.setup_format_number
32
42
  self.setup_boolean_names
33
43
  self.setup_date_formats
34
44
  self.setup_date_names
35
45
  end
36
46
 
47
+ # Set the current locale for messages.
48
+ #
49
+ # @param locale [String] The new locale. Default is the current system locale.
50
+ # @return [R18n::Translation] The new translation object.
51
+ def i18n=(locale)
52
+ super(locale)
53
+ self.setup
54
+ end
55
+
37
56
  # Setups formatters for a number.
38
57
  # @see Object#format_number
39
58
  #
@@ -53,8 +72,8 @@ module Lazier
53
72
  # @param false_name [String] The string representation of `false`. Defaults to `No`.
54
73
  # @return [Hash] The new representations.
55
74
  def setup_boolean_names(true_name = nil, false_name = nil)
56
- true_name ||= Lazier.i18n.boolean[0]
57
- false_name ||= Lazier.i18n.boolean[1]
75
+ true_name ||= self.i18n.boolean[0]
76
+ false_name ||= self.i18n.boolean[1]
58
77
  @boolean_names = {true => true_name, false => false_name}
59
78
  end
60
79
 
@@ -92,10 +111,10 @@ module Lazier
92
111
  # @param short_days [Array] The abbreviated string representation of days.
93
112
  # @return [Hash] The new representations.
94
113
  def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
95
- long_months = Lazier.i18n.date.long_months if long_months.blank?
96
- short_months = Lazier.i18n.date.short_months if short_months.blank?
97
- long_days = Lazier.i18n.date.long_days if long_days.blank?
98
- short_days = Lazier.i18n.date.short_days if short_days.blank?
114
+ long_months = self.i18n.date.long_months if long_months.blank?
115
+ short_months = self.i18n.date.short_months if short_months.blank?
116
+ long_days = self.i18n.date.long_days if long_days.blank?
117
+ short_days = self.i18n.date.short_days if short_days.blank?
99
118
 
100
119
  @date_names = { long_months: long_months, short_months: short_months, long_days: long_days, short_days: short_days }
101
120
  end
@@ -13,10 +13,10 @@ module Lazier
13
13
  MAJOR = 2
14
14
 
15
15
  # The minor version.
16
- MINOR = 3
16
+ MINOR = 4
17
17
 
18
18
  # The patch version.
19
- PATCH = 1
19
+ PATCH = 0
20
20
 
21
21
  # The current version of lazier.
22
22
  STRING = [MAJOR, MINOR, PATCH].compact.join(".")
@@ -13,9 +13,8 @@ describe Lazier::DateTime do
13
13
  let(:zone_without_dst) { ::ActiveSupport::TimeZone["International Date Line West"] }
14
14
 
15
15
  before(:all) do
16
- ::Lazier.localize(:en)
17
- ::Lazier::Settings.instance(true)
18
- ::Lazier.load!
16
+ Lazier.load!
17
+ ::Lazier::Settings.instance.i18n = :en
19
18
  end
20
19
 
21
20
  describe ".days" do
@@ -206,8 +205,9 @@ describe Lazier::TimeZone do
206
205
  let(:zone_without_dst) { ::ActiveSupport::TimeZone["International Date Line West"] }
207
206
 
208
207
  before(:all) do
208
+ ::Lazier::Settings.instance(true)
209
+ ::Lazier::Settings.instance.i18n = :en
209
210
  ::Lazier.load!
210
- ::Lazier.localize(:en)
211
211
  end
212
212
 
213
213
  describe ".rationalize_offset" do
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the lazier gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "spec_helper"
8
+
9
+ class Container
10
+ include Lazier::I18n
11
+ end
12
+
13
+ describe Lazier::I18n do
14
+ let(:object) { Container.new }
15
+
16
+ describe "#i18n_setup" do
17
+ it "should set the root and the path" do
18
+ object.i18n_setup("ROOT", "PATH")
19
+ expect(object.instance_variable_get(:@i18n_root)).to eq(:ROOT)
20
+ expect(object.instance_variable_get(:@i18n_locales_path)).to eq("PATH")
21
+ end
22
+ end
23
+
24
+ describe "#i18n" do
25
+ it "should call the private method if nothing is set" do
26
+ object.instance_variable_set(:@i18n, nil)
27
+ object.should_receive(:i18n_load_locale)
28
+ object.i18n
29
+ end
30
+ end
31
+
32
+ describe "#i18n=" do
33
+ it "should call the private method if nothing is set" do
34
+ object.should_receive(:i18n_load_locale).and_return("LOCALE")
35
+ object.i18n = :en
36
+ expect(object.instance_variable_get(:@i18n)).to eq("LOCALE")
37
+ end
38
+
39
+ end
40
+
41
+ describe "#i18n_load_locale" do
42
+ it "should set using system locale if called without arguments" do
43
+ object.i18n_setup("ROOT", "PATH")
44
+ R18n::I18n.should_receive(:new).with([ENV["LANG"], R18n::I18n.system_locale].compact, "PATH").and_call_original
45
+ object.i18n = nil
46
+ end
47
+
48
+ it "should set the requested locale" do
49
+ object.i18n_setup("ROOT", "PATH")
50
+ R18n::I18n.should_receive(:new).with([:it, ENV["LANG"], R18n::I18n.system_locale].compact, "PATH").and_call_original
51
+ object.i18n = :it
52
+ end
53
+
54
+ it "should call the root" do
55
+ Lazier.load!
56
+ t = Object.new
57
+ object.i18n_setup("ROOT", ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
58
+ R18n::I18n.any_instance.should_receive(:t).and_return(t)
59
+ t.should_receive("ROOT")
60
+ object.i18n = :it
61
+ end
62
+ end
63
+ end
@@ -13,6 +13,7 @@ describe Lazier::Settings do
13
13
 
14
14
  before(:all) do
15
15
  Lazier.load!
16
+ ::Lazier::Settings.instance.i18n = :en
16
17
  end
17
18
 
18
19
  describe ".instance" do
@@ -108,6 +109,7 @@ describe Lazier::Settings do
108
109
 
109
110
  describe "#setup_date_names" do
110
111
  it "should save names for days and months" do
112
+ reference.i18n = :en
111
113
  reference.setup_date_names
112
114
  reference.setup_date_formats({sdn: "%B %b %A %a"})
113
115
 
data/spec/lazier_spec.rb CHANGED
@@ -42,38 +42,4 @@ describe Lazier do
42
42
  end
43
43
  end
44
44
  end
45
-
46
- describe ".i18n" do
47
- it "should run localize if needed" do
48
- Lazier.instance_variable_set(:@i18n, nil)
49
- Lazier.should_receive(:localize)
50
- Lazier.i18n
51
- end
52
- end
53
-
54
- describe ".localize" do
55
- it "should set the right locale path" do
56
- Lazier.localize
57
- expect(Lazier.instance_variable_get(:@i18n_locales_path)).to eq(File.absolute_path(::Pathname.new(File.dirname(__FILE__)).to_s + "/../locales/"))
58
- end
59
-
60
- it "should set using system locale if called without arguments" do
61
- R18n::I18n.should_receive(:new).with([ENV["LANG"], R18n::I18n.system_locale].compact, File.absolute_path(::Pathname.new(File.dirname(__FILE__)).to_s + "/../locales/")).and_call_original
62
- Lazier.localize
63
- end
64
-
65
- it "should set the requested locale" do
66
- R18n::I18n.should_receive(:new).with([:it, ENV["LANG"], R18n::I18n.system_locale].compact, File.absolute_path(::Pathname.new(File.dirname(__FILE__)).to_s + "/../locales/")).and_call_original
67
- Lazier.localize(:it)
68
- end
69
- end
70
-
71
- describe ".localize?" do
72
- it "should respect the value of the internal variable" do
73
- Lazier.instance_variable_set(:@i18n, nil)
74
- expect(Lazier.localized?).to be_false
75
- Lazier.localize(:en)
76
- expect(Lazier.localized?).to be_true
77
- end
78
- end
79
45
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazier
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -208,6 +208,7 @@ files:
208
208
  - doc/Lazier/Exceptions.html
209
209
  - doc/Lazier/Exceptions/Dump.html
210
210
  - doc/Lazier/Hash.html
211
+ - doc/Lazier/I18n.html
211
212
  - doc/Lazier/Math.html
212
213
  - doc/Lazier/Math/ClassMethods.html
213
214
  - doc/Lazier/Object.html
@@ -237,6 +238,7 @@ files:
237
238
  - lib/lazier/datetime.rb
238
239
  - lib/lazier/exceptions.rb
239
240
  - lib/lazier/hash.rb
241
+ - lib/lazier/i18n.rb
240
242
  - lib/lazier/math.rb
241
243
  - lib/lazier/object.rb
242
244
  - lib/lazier/pathname.rb
@@ -249,6 +251,7 @@ files:
249
251
  - spec/lazier/boolean_spec.rb
250
252
  - spec/lazier/datetime_spec.rb
251
253
  - spec/lazier/hash_spec.rb
254
+ - spec/lazier/i18n_spec.rb
252
255
  - spec/lazier/math_spec.rb
253
256
  - spec/lazier/object_spec.rb
254
257
  - spec/lazier/pathname_spec.rb
@@ -285,6 +288,7 @@ test_files:
285
288
  - spec/lazier/boolean_spec.rb
286
289
  - spec/lazier/datetime_spec.rb
287
290
  - spec/lazier/hash_spec.rb
291
+ - spec/lazier/i18n_spec.rb
288
292
  - spec/lazier/math_spec.rb
289
293
  - spec/lazier/object_spec.rb
290
294
  - spec/lazier/pathname_spec.rb