class Snowden::WildcardGenerator

Attributes

edit_distance[R]

Public Class Methods

new(args) click to toggle source
# File lib/snowden/wildcard_generator.rb, line 3
def initialize(args)
  @edit_distance = args.fetch(:edit_distance)
end

Public Instance Methods

wildcards(string) click to toggle source

@api private

# File lib/snowden/wildcard_generator.rb, line 8
def wildcards(string)
  wildcards = [string]
  edit_distance.times do
    wildcards = add_wildcard_layer(wildcards)
  end

  wildcards = wildcards.uniq

  wildcards.to_enum
end

Private Instance Methods

add_wildcard_layer(list_of_strings) click to toggle source
# File lib/snowden/wildcard_generator.rb, line 23
def add_wildcard_layer(list_of_strings)
  list_of_strings.map {|s| base_wildcards(s) }.flatten
end
base_wildcards(string) click to toggle source
# File lib/snowden/wildcard_generator.rb, line 27
def base_wildcards(string)
  string_range = (0..string.length)

  [string]
    .concat(string_range.map { |i| string.dup.insert(i, wildcard_char) })
    .concat(string_range.map { |i| string.dup.tap { |s| s[i] = wildcard_char } })
end
wildcard_char() click to toggle source
# File lib/snowden/wildcard_generator.rb, line 35
def wildcard_char
  "*"
end