class Webmention::Verification::Verifiers::JsonVerifier::DeepLocator

Public Class Methods

new(json, pattern) click to toggle source
# File lib/webmention/verification/verifiers/json_verifier.rb, line 16
def initialize(json, pattern)
  @json = json
  @pattern = pattern
end
values_for(object) click to toggle source
# File lib/webmention/verification/verifiers/json_verifier.rb, line 25
def self.values_for(object)
  object.is_a?(Hash) ? object.values : object.entries
end

Public Instance Methods

results() click to toggle source
# File lib/webmention/verification/verifiers/json_verifier.rb, line 21
def results
  @results ||= build_results(comparator, @json)
end

Private Instance Methods

build_results(comparator, object, matches = []) click to toggle source

:reek: TooManyStatements { max_statements: 6 }

# File lib/webmention/verification/verifiers/json_verifier.rb, line 32
def build_results(comparator, object, matches = [])
  return matches unless object.is_a?(Enumerable)

  matches << object if object.any? { |_, value| comparator.call(value) }

  self.class.values_for(object).each { |value| build_results(comparator, value, matches) }

  matches
end
comparator() click to toggle source
# File lib/webmention/verification/verifiers/json_verifier.rb, line 42
def comparator
  @comparator ||= ->(value) { value.is_a?(String) && value.match?(@pattern) }
end