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.



42
43
44
# File 'lib/kotoshu/configuration/builder.rb', line 42

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:



35
36
37
38
39
# File 'lib/kotoshu/configuration/builder.rb', line 35

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



95
96
97
98
# File 'lib/kotoshu/configuration/builder.rb', line 95

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



122
123
124
125
# File 'lib/kotoshu/configuration/builder.rb', line 122

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



50
51
52
53
# File 'lib/kotoshu/configuration/builder.rb', line 50

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



59
60
61
62
# File 'lib/kotoshu/configuration/builder.rb', line 59

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



131
132
133
134
# File 'lib/kotoshu/configuration/builder.rb', line 131

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

#language=(lang) ⇒ self

Set language code.

Parameters:

  • lang (String)

    Language code

Returns:

  • (self)

    Self for chaining



68
69
70
71
# File 'lib/kotoshu/configuration/builder.rb', line 68

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

#locale=(locale) ⇒ self

Set locale.

Parameters:

  • locale (String, nil)

    Locale

Returns:

  • (self)

    Self for chaining



77
78
79
80
# File 'lib/kotoshu/configuration/builder.rb', line 77

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



86
87
88
89
# File 'lib/kotoshu/configuration/builder.rb', line 86

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



113
114
115
116
# File 'lib/kotoshu/configuration/builder.rb', line 113

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

#to_configConfiguration

Convert builder to frozen Configuration.

Returns:



202
203
204
205
206
# File 'lib/kotoshu/configuration/builder.rb', line 202

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



104
105
106
107
# File 'lib/kotoshu/configuration/builder.rb', line 104

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:



185
186
187
188
# File 'lib/kotoshu/configuration/builder.rb', line 185

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:



140
141
142
143
# File 'lib/kotoshu/configuration/builder.rb', line 140

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:



149
150
151
152
# File 'lib/kotoshu/configuration/builder.rb', line 149

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:



158
159
160
161
# File 'lib/kotoshu/configuration/builder.rb', line 158

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

#with_locale(locale) ⇒ Configuration

Fluent method to set locale.

Parameters:

  • locale (String, nil)

    Locale

Returns:



167
168
169
170
# File 'lib/kotoshu/configuration/builder.rb', line 167

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:



176
177
178
179
# File 'lib/kotoshu/configuration/builder.rb', line 176

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:



194
195
196
197
# File 'lib/kotoshu/configuration/builder.rb', line 194

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