Class: MemDB::Idx::Pattern::Pattern

Inherits:
Object
  • Object
show all
Defined in:
lib/mem_db/idx/pattern.rb

Instance Method Summary collapse

Constructor Details

#initialize(source, min:) ⇒ Pattern

Returns a new instance of Pattern.



9
10
11
12
# File 'lib/mem_db/idx/pattern.rb', line 9

def initialize(source, min:)
  @parts = source.split("*", -1)
  @min = min
end

Instance Method Details

#valueObject

rubocop:disable Metrics/PerceivedComplexity, Metrics/AbcSize, Metrics/CyclomaticComplexity



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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