Sha256: 8f53fbe6d4c2a9e1993ff3d754c3010fded0bdf6ac6c94278ba0cf5fefa00c01

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require 'cms_scanner/finders/confidence'

module CMSScanner
  module Finders
    # Finding
    module Finding
      FINDING_OPTS = [:confidence, :confirmed_by, :references, :found_by, :interesting_entries]

      attr_accessor(*FINDING_OPTS)

      # @return [ Array ]
      def references
        @references ||= []
      end

      # @return [ Array ]
      def confirmed_by
        @confirmed_by ||= []
      end

      # Should be overriden in child classes
      # @return [ Array ]
      def interesting_entries
        @interesting_entries ||= []
      end

      # @return [ Confidence ]
      def confidence
        @confidence ||= Confidence.new(0)
      end

      # @param [ Integer, Confidence ] value
      def confidence=(value)
        @confidence = value.is_a?(Confidence) ? value : Confidence.new(value)
      end

      # @param [ Hash ] opts
      # TODO: Maybe use instance_variable_set ?
      def parse_finding_options(opts = {})
        FINDING_OPTS.each { |opt| send("#{opt}=", opts[opt]) if opts.key?(opt) }
      end

      def eql?(other)
        self == other && confidence == other.confidence && found_by == other.found_by
      end

      def <=>(other)
        to_s.downcase <=> other.to_s.downcase
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cms_scanner-0.0.19 lib/cms_scanner/finders/finding.rb