Class: Lazier::Settings

Inherits:
Object
  • Object
show all
Includes:
I18n
Defined in:
lib/lazier/settings.rb

Overview

Settings for the extensions.

Instance Attribute Summary collapse

Attributes included from I18n

#i18n_locale, #i18n_locales_path, #i18n_root

Class Method Summary collapse

Instance Method Summary collapse

Methods included from I18n

#i18n_setup

Constructor Details

#initializeSettings

Initializes a new settings object.



38
39
40
41
# File 'lib/lazier/settings.rb', line 38

def initialize
  i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
  setup
end

Instance Attribute Details

#boolean_namesHash (readonly)

Returns String representations of booleans.

Returns:

  • (Hash)

    String representations of booleans.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/lazier/settings.rb', line 20

class Settings
  attr_reader :format_number
  attr_reader :boolean_names
  attr_reader :date_names
  attr_reader :date_formats

  include Lazier::I18n

  # Returns the singleton instance of the settings.
  #
  # @param force [Boolean] If to force recreation of the instance.
  # @return [Settings] The singleton instance of the settings.
  def self.instance(force = false)
    @instance = nil if force
    @instance ||= ::Lazier::Settings.new
  end

  # Initializes a new settings object.
  def initialize
    i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
    setup
  end

  # Setups the current instance.
  def setup
    setup_format_number
    setup_boolean_names
    setup_date_formats
    setup_date_names
  end

  # Set the current locale for messages.
  #
  # @param locale [String] The new locale. Default is the current system locale.
  # @return [R18n::Translation] The new translation object.
  def i18n=(locale)
    super(locale)
    setup
  end

  # Setups formatters for a number.
  # @see Object#format_number
  #
  # @param precision [Fixnum] The precision to show.
  # @param decimal_separator [String] The string to use as decimal separator.
  # @param add_string [String] The string to append to the number.
  # @param k_separator [String] The string to use as thousands separator.
  # @return [Hash] The new formatters.
  def setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",")
    @format_number = ::HashWithIndifferentAccess.new({precision: precision, decimal_separator: decimal_separator, add_string: add_string, k_separator: k_separator})
  end

  # Setups strings representation of booleans.
  # @see Object#format_boolean
  #
  # @param true_name [String] The string representation of `true`. Defaults to `Yes`.
  # @param false_name [String] The string representation of `false`. Defaults to `No`.
  # @return [Hash] The new representations.
  def setup_boolean_names(true_name = nil, false_name = nil)
    @boolean_names = {true => true_name || i18n.boolean[0], false => false_name || i18n.boolean[1]}
  end

  # Setups custom formats for dates and times.
  # @see DateTime#lstrftime
  #
  # @param formats [Hash] The format to add or replace.
  # @param replace [Boolean] If to discard current formats.
  # @return [Hash] The new formats.
  def setup_date_formats(formats = nil, replace = false)
    @date_formats = HashWithIndifferentAccess.new if replace || !@date_formats

    @date_formats.merge!(formats.ensure_hash(nil, {ct_date: "%Y-%m-%d", ct_time: "%H:%M:%S", ct_date_time: "%F %T", ct_iso_8601: "%FT%T%z" }))
    ::Time::DATE_FORMATS.merge!(@date_formats)

    @date_formats
  end

  # Setups strings representation of days and months.
  # @see DateTime::ClassMethods#days
  # @see DateTime::ClassMethods#months
  # @see DateTime#lstrftime
  #
  # @param long_months [Array] The string representation of months.
  # @param short_months [Array] The abbreviated string representation of months.
  # @param long_days [Array] The string representation of days.
  # @param short_days [Array] The abbreviated string representation of days.
  # @return [Hash] The new representations.
  def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
    definitions = self.i18n.date

    @date_names = {
      long_months: long_months.ensure(definitions.long_months),
      short_months: short_months.ensure(definitions.short_months),
      long_days: long_days.ensure(definitions.long_days),
      short_days: short_days.ensure(definitions.short_days)
    }.with_indifferent_access
  end
end

#date_formatsHash (readonly)

Returns Custom date and time formats.

Returns:

  • (Hash)

    Custom date and time formats.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/lazier/settings.rb', line 20

class Settings
  attr_reader :format_number
  attr_reader :boolean_names
  attr_reader :date_names
  attr_reader :date_formats

  include Lazier::I18n

  # Returns the singleton instance of the settings.
  #
  # @param force [Boolean] If to force recreation of the instance.
  # @return [Settings] The singleton instance of the settings.
  def self.instance(force = false)
    @instance = nil if force
    @instance ||= ::Lazier::Settings.new
  end

  # Initializes a new settings object.
  def initialize
    i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
    setup
  end

  # Setups the current instance.
  def setup
    setup_format_number
    setup_boolean_names
    setup_date_formats
    setup_date_names
  end

  # Set the current locale for messages.
  #
  # @param locale [String] The new locale. Default is the current system locale.
  # @return [R18n::Translation] The new translation object.
  def i18n=(locale)
    super(locale)
    setup
  end

  # Setups formatters for a number.
  # @see Object#format_number
  #
  # @param precision [Fixnum] The precision to show.
  # @param decimal_separator [String] The string to use as decimal separator.
  # @param add_string [String] The string to append to the number.
  # @param k_separator [String] The string to use as thousands separator.
  # @return [Hash] The new formatters.
  def setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",")
    @format_number = ::HashWithIndifferentAccess.new({precision: precision, decimal_separator: decimal_separator, add_string: add_string, k_separator: k_separator})
  end

  # Setups strings representation of booleans.
  # @see Object#format_boolean
  #
  # @param true_name [String] The string representation of `true`. Defaults to `Yes`.
  # @param false_name [String] The string representation of `false`. Defaults to `No`.
  # @return [Hash] The new representations.
  def setup_boolean_names(true_name = nil, false_name = nil)
    @boolean_names = {true => true_name || i18n.boolean[0], false => false_name || i18n.boolean[1]}
  end

  # Setups custom formats for dates and times.
  # @see DateTime#lstrftime
  #
  # @param formats [Hash] The format to add or replace.
  # @param replace [Boolean] If to discard current formats.
  # @return [Hash] The new formats.
  def setup_date_formats(formats = nil, replace = false)
    @date_formats = HashWithIndifferentAccess.new if replace || !@date_formats

    @date_formats.merge!(formats.ensure_hash(nil, {ct_date: "%Y-%m-%d", ct_time: "%H:%M:%S", ct_date_time: "%F %T", ct_iso_8601: "%FT%T%z" }))
    ::Time::DATE_FORMATS.merge!(@date_formats)

    @date_formats
  end

  # Setups strings representation of days and months.
  # @see DateTime::ClassMethods#days
  # @see DateTime::ClassMethods#months
  # @see DateTime#lstrftime
  #
  # @param long_months [Array] The string representation of months.
  # @param short_months [Array] The abbreviated string representation of months.
  # @param long_days [Array] The string representation of days.
  # @param short_days [Array] The abbreviated string representation of days.
  # @return [Hash] The new representations.
  def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
    definitions = self.i18n.date

    @date_names = {
      long_months: long_months.ensure(definitions.long_months),
      short_months: short_months.ensure(definitions.short_months),
      long_days: long_days.ensure(definitions.long_days),
      short_days: short_days.ensure(definitions.short_days)
    }.with_indifferent_access
  end
end

#date_namesHash (readonly)

Returns String representations of days and months.

Returns:

  • (Hash)

    String representations of days and months.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/lazier/settings.rb', line 20

class Settings
  attr_reader :format_number
  attr_reader :boolean_names
  attr_reader :date_names
  attr_reader :date_formats

  include Lazier::I18n

  # Returns the singleton instance of the settings.
  #
  # @param force [Boolean] If to force recreation of the instance.
  # @return [Settings] The singleton instance of the settings.
  def self.instance(force = false)
    @instance = nil if force
    @instance ||= ::Lazier::Settings.new
  end

  # Initializes a new settings object.
  def initialize
    i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
    setup
  end

  # Setups the current instance.
  def setup
    setup_format_number
    setup_boolean_names
    setup_date_formats
    setup_date_names
  end

  # Set the current locale for messages.
  #
  # @param locale [String] The new locale. Default is the current system locale.
  # @return [R18n::Translation] The new translation object.
  def i18n=(locale)
    super(locale)
    setup
  end

  # Setups formatters for a number.
  # @see Object#format_number
  #
  # @param precision [Fixnum] The precision to show.
  # @param decimal_separator [String] The string to use as decimal separator.
  # @param add_string [String] The string to append to the number.
  # @param k_separator [String] The string to use as thousands separator.
  # @return [Hash] The new formatters.
  def setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",")
    @format_number = ::HashWithIndifferentAccess.new({precision: precision, decimal_separator: decimal_separator, add_string: add_string, k_separator: k_separator})
  end

  # Setups strings representation of booleans.
  # @see Object#format_boolean
  #
  # @param true_name [String] The string representation of `true`. Defaults to `Yes`.
  # @param false_name [String] The string representation of `false`. Defaults to `No`.
  # @return [Hash] The new representations.
  def setup_boolean_names(true_name = nil, false_name = nil)
    @boolean_names = {true => true_name || i18n.boolean[0], false => false_name || i18n.boolean[1]}
  end

  # Setups custom formats for dates and times.
  # @see DateTime#lstrftime
  #
  # @param formats [Hash] The format to add or replace.
  # @param replace [Boolean] If to discard current formats.
  # @return [Hash] The new formats.
  def setup_date_formats(formats = nil, replace = false)
    @date_formats = HashWithIndifferentAccess.new if replace || !@date_formats

    @date_formats.merge!(formats.ensure_hash(nil, {ct_date: "%Y-%m-%d", ct_time: "%H:%M:%S", ct_date_time: "%F %T", ct_iso_8601: "%FT%T%z" }))
    ::Time::DATE_FORMATS.merge!(@date_formats)

    @date_formats
  end

  # Setups strings representation of days and months.
  # @see DateTime::ClassMethods#days
  # @see DateTime::ClassMethods#months
  # @see DateTime#lstrftime
  #
  # @param long_months [Array] The string representation of months.
  # @param short_months [Array] The abbreviated string representation of months.
  # @param long_days [Array] The string representation of days.
  # @param short_days [Array] The abbreviated string representation of days.
  # @return [Hash] The new representations.
  def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
    definitions = self.i18n.date

    @date_names = {
      long_months: long_months.ensure(definitions.long_months),
      short_months: short_months.ensure(definitions.short_months),
      long_days: long_days.ensure(definitions.long_days),
      short_days: short_days.ensure(definitions.short_days)
    }.with_indifferent_access
  end
end

#format_numberHash (readonly)

Returns Settings for numbers formatting.

Returns:

  • (Hash)

    Settings for numbers formatting.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/lazier/settings.rb', line 20

class Settings
  attr_reader :format_number
  attr_reader :boolean_names
  attr_reader :date_names
  attr_reader :date_formats

  include Lazier::I18n

  # Returns the singleton instance of the settings.
  #
  # @param force [Boolean] If to force recreation of the instance.
  # @return [Settings] The singleton instance of the settings.
  def self.instance(force = false)
    @instance = nil if force
    @instance ||= ::Lazier::Settings.new
  end

  # Initializes a new settings object.
  def initialize
    i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
    setup
  end

  # Setups the current instance.
  def setup
    setup_format_number
    setup_boolean_names
    setup_date_formats
    setup_date_names
  end

  # Set the current locale for messages.
  #
  # @param locale [String] The new locale. Default is the current system locale.
  # @return [R18n::Translation] The new translation object.
  def i18n=(locale)
    super(locale)
    setup
  end

  # Setups formatters for a number.
  # @see Object#format_number
  #
  # @param precision [Fixnum] The precision to show.
  # @param decimal_separator [String] The string to use as decimal separator.
  # @param add_string [String] The string to append to the number.
  # @param k_separator [String] The string to use as thousands separator.
  # @return [Hash] The new formatters.
  def setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",")
    @format_number = ::HashWithIndifferentAccess.new({precision: precision, decimal_separator: decimal_separator, add_string: add_string, k_separator: k_separator})
  end

  # Setups strings representation of booleans.
  # @see Object#format_boolean
  #
  # @param true_name [String] The string representation of `true`. Defaults to `Yes`.
  # @param false_name [String] The string representation of `false`. Defaults to `No`.
  # @return [Hash] The new representations.
  def setup_boolean_names(true_name = nil, false_name = nil)
    @boolean_names = {true => true_name || i18n.boolean[0], false => false_name || i18n.boolean[1]}
  end

  # Setups custom formats for dates and times.
  # @see DateTime#lstrftime
  #
  # @param formats [Hash] The format to add or replace.
  # @param replace [Boolean] If to discard current formats.
  # @return [Hash] The new formats.
  def setup_date_formats(formats = nil, replace = false)
    @date_formats = HashWithIndifferentAccess.new if replace || !@date_formats

    @date_formats.merge!(formats.ensure_hash(nil, {ct_date: "%Y-%m-%d", ct_time: "%H:%M:%S", ct_date_time: "%F %T", ct_iso_8601: "%FT%T%z" }))
    ::Time::DATE_FORMATS.merge!(@date_formats)

    @date_formats
  end

  # Setups strings representation of days and months.
  # @see DateTime::ClassMethods#days
  # @see DateTime::ClassMethods#months
  # @see DateTime#lstrftime
  #
  # @param long_months [Array] The string representation of months.
  # @param short_months [Array] The abbreviated string representation of months.
  # @param long_days [Array] The string representation of days.
  # @param short_days [Array] The abbreviated string representation of days.
  # @return [Hash] The new representations.
  def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
    definitions = self.i18n.date

    @date_names = {
      long_months: long_months.ensure(definitions.long_months),
      short_months: short_months.ensure(definitions.short_months),
      long_days: long_days.ensure(definitions.long_days),
      short_days: short_days.ensure(definitions.short_days)
    }.with_indifferent_access
  end
end

#i18nR18n::Translation

Returns The translation object.

Returns:

  • (R18n::Translation)

    The translation object.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/lazier/settings.rb', line 20

class Settings
  attr_reader :format_number
  attr_reader :boolean_names
  attr_reader :date_names
  attr_reader :date_formats

  include Lazier::I18n

  # Returns the singleton instance of the settings.
  #
  # @param force [Boolean] If to force recreation of the instance.
  # @return [Settings] The singleton instance of the settings.
  def self.instance(force = false)
    @instance = nil if force
    @instance ||= ::Lazier::Settings.new
  end

  # Initializes a new settings object.
  def initialize
    i18n_setup(:lazier, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
    setup
  end

  # Setups the current instance.
  def setup
    setup_format_number
    setup_boolean_names
    setup_date_formats
    setup_date_names
  end

  # Set the current locale for messages.
  #
  # @param locale [String] The new locale. Default is the current system locale.
  # @return [R18n::Translation] The new translation object.
  def i18n=(locale)
    super(locale)
    setup
  end

  # Setups formatters for a number.
  # @see Object#format_number
  #
  # @param precision [Fixnum] The precision to show.
  # @param decimal_separator [String] The string to use as decimal separator.
  # @param add_string [String] The string to append to the number.
  # @param k_separator [String] The string to use as thousands separator.
  # @return [Hash] The new formatters.
  def setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",")
    @format_number = ::HashWithIndifferentAccess.new({precision: precision, decimal_separator: decimal_separator, add_string: add_string, k_separator: k_separator})
  end

  # Setups strings representation of booleans.
  # @see Object#format_boolean
  #
  # @param true_name [String] The string representation of `true`. Defaults to `Yes`.
  # @param false_name [String] The string representation of `false`. Defaults to `No`.
  # @return [Hash] The new representations.
  def setup_boolean_names(true_name = nil, false_name = nil)
    @boolean_names = {true => true_name || i18n.boolean[0], false => false_name || i18n.boolean[1]}
  end

  # Setups custom formats for dates and times.
  # @see DateTime#lstrftime
  #
  # @param formats [Hash] The format to add or replace.
  # @param replace [Boolean] If to discard current formats.
  # @return [Hash] The new formats.
  def setup_date_formats(formats = nil, replace = false)
    @date_formats = HashWithIndifferentAccess.new if replace || !@date_formats

    @date_formats.merge!(formats.ensure_hash(nil, {ct_date: "%Y-%m-%d", ct_time: "%H:%M:%S", ct_date_time: "%F %T", ct_iso_8601: "%FT%T%z" }))
    ::Time::DATE_FORMATS.merge!(@date_formats)

    @date_formats
  end

  # Setups strings representation of days and months.
  # @see DateTime::ClassMethods#days
  # @see DateTime::ClassMethods#months
  # @see DateTime#lstrftime
  #
  # @param long_months [Array] The string representation of months.
  # @param short_months [Array] The abbreviated string representation of months.
  # @param long_days [Array] The string representation of days.
  # @param short_days [Array] The abbreviated string representation of days.
  # @return [Hash] The new representations.
  def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
    definitions = self.i18n.date

    @date_names = {
      long_months: long_months.ensure(definitions.long_months),
      short_months: short_months.ensure(definitions.short_months),
      long_days: long_days.ensure(definitions.long_days),
      short_days: short_days.ensure(definitions.short_days)
    }.with_indifferent_access
  end
end

Class Method Details

.instance(force = false) ⇒ Settings

Returns the singleton instance of the settings.

Parameters:

  • force (Boolean) (defaults to: false)

    If to force recreation of the instance.

Returns:

  • (Settings)

    The singleton instance of the settings.



32
33
34
35
# File 'lib/lazier/settings.rb', line 32

def self.instance(force = false)
  @instance = nil if force
  @instance ||= ::Lazier::Settings.new
end

Instance Method Details

#setupObject

Setups the current instance.



44
45
46
47
48
49
# File 'lib/lazier/settings.rb', line 44

def setup
  setup_format_number
  setup_boolean_names
  setup_date_formats
  setup_date_names
end

#setup_boolean_names(true_name = nil, false_name = nil) ⇒ Hash

Setups strings representation of booleans.

Parameters:

  • true_name (String) (defaults to: nil)

    The string representation of true. Defaults to Yes.

  • false_name (String) (defaults to: nil)

    The string representation of false. Defaults to No.

Returns:

  • (Hash)

    The new representations.

See Also:



78
79
80
# File 'lib/lazier/settings.rb', line 78

def setup_boolean_names(true_name = nil, false_name = nil)
  @boolean_names = {true => true_name || i18n.boolean[0], false => false_name || i18n.boolean[1]}
end

#setup_date_formats(formats = nil, replace = false) ⇒ Hash

Setups custom formats for dates and times.

Parameters:

  • formats (Hash) (defaults to: nil)

    The format to add or replace.

  • replace (Boolean) (defaults to: false)

    If to discard current formats.

Returns:

  • (Hash)

    The new formats.

See Also:



88
89
90
91
92
93
94
95
# File 'lib/lazier/settings.rb', line 88

def setup_date_formats(formats = nil, replace = false)
  @date_formats = HashWithIndifferentAccess.new if replace || !@date_formats

  @date_formats.merge!(formats.ensure_hash(nil, {ct_date: "%Y-%m-%d", ct_time: "%H:%M:%S", ct_date_time: "%F %T", ct_iso_8601: "%FT%T%z" }))
  ::Time::DATE_FORMATS.merge!(@date_formats)

  @date_formats
end

#setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil) ⇒ Hash

Setups strings representation of days and months.

Parameters:

  • long_months (Array) (defaults to: nil)

    The string representation of months.

  • short_months (Array) (defaults to: nil)

    The abbreviated string representation of months.

  • long_days (Array) (defaults to: nil)

    The string representation of days.

  • short_days (Array) (defaults to: nil)

    The abbreviated string representation of days.

Returns:

  • (Hash)

    The new representations.

See Also:



107
108
109
110
111
112
113
114
115
116
# File 'lib/lazier/settings.rb', line 107

def setup_date_names(long_months = nil, short_months = nil, long_days = nil, short_days = nil)
  definitions = self.i18n.date

  @date_names = {
    long_months: long_months.ensure(definitions.long_months),
    short_months: short_months.ensure(definitions.short_months),
    long_days: long_days.ensure(definitions.long_days),
    short_days: short_days.ensure(definitions.short_days)
  }.with_indifferent_access
end

#setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",") ⇒ Hash

Setups formatters for a number.

Parameters:

  • precision (Fixnum) (defaults to: 2)

    The precision to show.

  • decimal_separator (String) (defaults to: ".")

    The string to use as decimal separator.

  • add_string (String) (defaults to: nil)

    The string to append to the number.

  • k_separator (String) (defaults to: ",")

    The string to use as thousands separator.

Returns:

  • (Hash)

    The new formatters.

See Also:



68
69
70
# File 'lib/lazier/settings.rb', line 68

def setup_format_number(precision = 2, decimal_separator = ".", add_string = nil, k_separator = ",")
  @format_number = ::HashWithIndifferentAccess.new({precision: precision, decimal_separator: decimal_separator, add_string: add_string, k_separator: k_separator})
end