class MemDB::Idx::Pattern::Pattern
Public Class Methods
new(source, min:)
click to toggle source
# File lib/mem_db/idx/pattern.rb, line 9 def initialize(source, min:) @parts = source.split("*", -1) @min = min end
Public Instance Methods
value()
click to toggle source
# File lib/mem_db/idx/pattern.rb, line 14 def value # rubocop:disable Metrics/PerceivedComplexity, Metrics/AbcSize, Metrics/CyclomaticComplexity if @parts.length == 1 [:enum, @parts[0]] else prefix = @parts[0] suffix = @parts[-1] if prefix != "" || suffix != "" if prefix.length >= @min && prefix.length >= suffix.length [:prefix, prefix] elsif suffix.length >= @min [:suffix, suffix] else candidates = [ [:prefix, prefix], [:suffix, suffix] ] candidates.push([:substring, substring]) if substring # rubocop:disable Metrics/BlockNesting candidates.max_by { |v| v[1].length } end else [:substring, substring] end end end
Private Instance Methods
substring()
click to toggle source
# File lib/mem_db/idx/pattern.rb, line 44 def substring return @substring if defined?(@substring) @substring = if @parts.length > 2 substrings = @parts[1..-2] substrings.find { |p| p.length > @min } || substrings.find { |p| p.length.positive? } end end