Class: MemDB::Idx::Pattern::Pattern
- Inherits:
-
Object
- Object
- MemDB::Idx::Pattern::Pattern
- Defined in:
- lib/mem_db/idx/pattern.rb
Instance Method Summary collapse
-
#initialize(source, min:) ⇒ Pattern
constructor
A new instance of Pattern.
-
#value ⇒ Object
rubocop:disable Metrics/PerceivedComplexity, Metrics/AbcSize, Metrics/CyclomaticComplexity.
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
#value ⇒ Object
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 |