Module: StringToNumber
- Defined in:
- lib/string_to_number.rb,
lib/string_to_number/parser.rb,
lib/string_to_number/version.rb,
lib/string_to_number/to_number.rb
Defined Under Namespace
Constant Summary collapse
- VERSION =
'0.2.1'
Class Method Summary collapse
-
.cache_stats ⇒ Hash
Get cache performance statistics.
-
.clear_caches! ⇒ void
Clear all internal caches.
-
.in_numbers(sentence, use_optimized: true) ⇒ Integer
Convert French text to number.
-
.in_numbers_original(sentence) ⇒ Integer
Convert using original implementation (for compatibility testing).
-
.valid_french_number?(text) ⇒ Boolean
Check if a string contains valid French number words.
Class Method Details
.cache_stats ⇒ Hash
Get cache performance statistics
72 73 74 |
# File 'lib/string_to_number.rb', line 72 def cache_stats Parser.cache_stats end |
.clear_caches! ⇒ void
This method returns an undefined value.
Clear all internal caches
Useful for testing, memory management, or when processing large volumes of unique inputs.
61 62 63 |
# File 'lib/string_to_number.rb', line 61 def clear_caches! Parser.clear_caches! end |
.in_numbers(sentence, use_optimized: true) ⇒ Integer
Convert French text to number
38 39 40 41 42 43 44 45 |
# File 'lib/string_to_number.rb', line 38 def in_numbers(sentence, use_optimized: true) if use_optimized Parser.convert(sentence) else # Fallback to original implementation for compatibility testing ToNumber.new(sentence).to_number end end |
.in_numbers_original(sentence) ⇒ Integer
Convert using original implementation (for compatibility testing)
51 52 53 |
# File 'lib/string_to_number.rb', line 51 def in_numbers_original(sentence) ToNumber.new(sentence).to_number end |
.valid_french_number?(text) ⇒ Boolean
Check if a string contains valid French number words
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/string_to_number.rb', line 81 def valid_french_number?(text) return false unless text.respond_to?(:to_s) normalized = text.to_s.downcase.strip return false if normalized.empty? # Check if any words are recognized French number words words = normalized.tr('-', ' ').split(/\s+/) recognized_words = words.count do |word| word == 'et' || Parser::WORD_VALUES.key?(word) || Parser::MULTIPLIERS.key?(word) end # Require at least 50% recognized words for validation recognized_words.to_f / words.size >= 0.5 end |