Class: Kotoshu::Configuration::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/kotoshu/configuration/builder.rb

Overview

Builder for creating immutable Configuration objects.

Provides a fluent interface for building configuration objects that are frozen after creation, ensuring thread-safety and immutability.

Examples:

Building with block

config = Configuration::Builder.build do |b|
  b.dictionary_path = "words.txt"
  b.language = "en-GB"
end

Building with fluent methods

config = Configuration::Builder.build
  .with_dictionary_path("words.txt")
  .with_language("en-GB")

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBuilder

Create a new builder.



40
41
42
# File 'lib/kotoshu/configuration/builder.rb', line 40

def initialize
  @settings = DEFAULTS.dup
end

Class Method Details

.build {|builder| ... } ⇒ Configuration

Build an immutable configuration.

Examples:

With block

config = Builder.build do |b|
  b.dictionary_path = "words.txt"
end

Without block (uses defaults)

config = Builder.build

Yields:

  • (builder)

    Optional block for configuration

Returns:



33
34
35
36
37
# File 'lib/kotoshu/configuration/builder.rb', line 33

def self.build
  builder_instance = new
  yield(builder_instance) if block_given?
  builder_instance.to_config
end

Instance Method Details

#case_sensitive=(sensitive) ⇒ self

Set case sensitivity.

Parameters:

  • sensitive (Boolean)

    Case sensitive flag

Returns:

  • (self)

    Self for chaining



93
94
95
96
# File 'lib/kotoshu/configuration/builder.rb', line 93

def case_sensitive=(sensitive)
  @settings[:case_sensitive] = sensitive
  self
end

#custom_words=(words) ⇒ self

Set custom words.

Parameters:

  • words (Array<String>)

    Custom words

Returns:

  • (self)

    Self for chaining



120
121
122
123
# File 'lib/kotoshu/configuration/builder.rb', line 120

def custom_words=(words)
  @settings[:custom_words] = words.dup.freeze
  self
end

#dictionary_path=(path) ⇒ self

Set dictionary path.

Parameters:

  • path (String)

    Path to dictionary file

Returns:

  • (self)

    Self for chaining



48
49
50
51
# File 'lib/kotoshu/configuration/builder.rb', line 48

def dictionary_path=(path)
  @settings[:dictionary_path] = path
  self
end

#dictionary_type=(type) ⇒ self

Set dictionary type.

Parameters:

  • type (Symbol)

    Dictionary type

Returns:

  • (self)

    Self for chaining



57
58
59
60
# File 'lib/kotoshu/configuration/builder.rb', line 57

def dictionary_type=(type)
  @settings[:dictionary_type] = type
  self
end

#encoding=(encoding) ⇒ self

Set encoding.

Parameters:

  • encoding (String)

    Character encoding

Returns:

  • (self)

    Self for chaining



129
130
131
132
# File 'lib/kotoshu/configuration/builder.rb', line 129

def encoding=(encoding)
  @settings[:encoding] = encoding
  self
end

#language=(lang) ⇒ self

Set language code.

Parameters:

  • lang (String)

    Language code

Returns:

  • (self)

    Self for chaining



66
67
68
69
# File 'lib/kotoshu/configuration/builder.rb', line 66

def language=(lang)
  @settings[:language] = lang
  self
end

#locale=(locale) ⇒ self

Set locale.

Parameters:

  • locale (String, nil)

    Locale

Returns:

  • (self)

    Self for chaining



75
76
77
78
# File 'lib/kotoshu/configuration/builder.rb', line 75

def locale=(locale)
  @settings[:locale] = locale
  self
end

#max_suggestions=(max) ⇒ self

Set max suggestions.

Parameters:

  • max (Integer)

    Maximum suggestions

Returns:

  • (self)

    Self for chaining



84
85
86
87
# File 'lib/kotoshu/configuration/builder.rb', line 84

def max_suggestions=(max)
  @settings[:max_suggestions] = max
  self
end

#suggestion_algorithms=(algorithms) ⇒ self

Set suggestion algorithms.

Parameters:

  • algorithms (Array<Class>, nil)

    Suggestion algorithms

Returns:

  • (self)

    Self for chaining



111
112
113
114
# File 'lib/kotoshu/configuration/builder.rb', line 111

def suggestion_algorithms=(algorithms)
  @settings[:suggestion_algorithms] = algorithms
  self
end

#to_configConfiguration

Convert builder to frozen Configuration.

Returns:



200
201
202
203
204
# File 'lib/kotoshu/configuration/builder.rb', line 200

def to_config
  config = Configuration.new(@settings.dup)
  config.freeze
  config
end

#verbose=(verbose) ⇒ self

Set verbose mode.

Parameters:

  • verbose (Boolean)

    Verbose flag

Returns:

  • (self)

    Self for chaining



102
103
104
105
# File 'lib/kotoshu/configuration/builder.rb', line 102

def verbose=(verbose)
  @settings[:verbose] = verbose
  self
end

#with_case_sensitive(sensitive) ⇒ Configuration

Fluent method to set case sensitivity.

Parameters:

  • sensitive (Boolean)

    Case sensitive flag

Returns:



183
184
185
186
# File 'lib/kotoshu/configuration/builder.rb', line 183

def with_case_sensitive(sensitive)
  @settings[:case_sensitive] = sensitive
  self
end

#with_dictionary_path(path) ⇒ Configuration

Fluent method to set dictionary path.

Parameters:

  • path (String)

    Path to dictionary file

Returns:



138
139
140
141
# File 'lib/kotoshu/configuration/builder.rb', line 138

def with_dictionary_path(path)
  @settings[:dictionary_path] = path
  self
end

#with_dictionary_type(type) ⇒ Configuration

Fluent method to set dictionary type.

Parameters:

  • type (Symbol)

    Dictionary type

Returns:



147
148
149
150
# File 'lib/kotoshu/configuration/builder.rb', line 147

def with_dictionary_type(type)
  @settings[:dictionary_type] = type
  self
end

#with_language(lang) ⇒ Configuration

Fluent method to set language.

Parameters:

  • lang (String)

    Language code

Returns:



156
157
158
159
# File 'lib/kotoshu/configuration/builder.rb', line 156

def with_language(lang)
  @settings[:language] = lang
  self
end

#with_locale(locale) ⇒ Configuration

Fluent method to set locale.

Parameters:

  • locale (String, nil)

    Locale

Returns:



165
166
167
168
# File 'lib/kotoshu/configuration/builder.rb', line 165

def with_locale(locale)
  @settings[:locale] = locale
  self
end

#with_max_suggestions(max) ⇒ Configuration

Fluent method to set max suggestions.

Parameters:

  • max (Integer)

    Maximum suggestions

Returns:



174
175
176
177
# File 'lib/kotoshu/configuration/builder.rb', line 174

def with_max_suggestions(max)
  @settings[:max_suggestions] = max
  self
end

#with_verbose(verbose) ⇒ Configuration

Fluent method to set verbose mode.

Parameters:

  • verbose (Boolean)

    Verbose flag

Returns:



192
193
194
195
# File 'lib/kotoshu/configuration/builder.rb', line 192

def with_verbose(verbose)
  @settings[:verbose] = verbose
  self
end