Sha256: 259b214ab8791e7bbd5d82d9a729e3fc1041e28cff1a276ce06314da43b4ac41

Contents?: true

Size: 967 Bytes

Versions: 7

Compression:

Stored size: 967 Bytes

Contents

require 'delegate'
require 'link_thumbnailer/graders/base'
require 'link_thumbnailer/graders/length'
require 'link_thumbnailer/graders/html_attribute'
require 'link_thumbnailer/graders/link_density'
require 'link_thumbnailer/graders/position'

module LinkThumbnailer
  class Grader < ::SimpleDelegator

    attr_reader :config, :description

    def initialize(description)
      @config      = ::LinkThumbnailer.page.config
      @description = description

      super(config)
    end

    # For given description, computes probabilities returned by each graders by multipying them together.
    #
    # @return [Float] the probability for the given description to be considered good
    def call
      probability = 1.0

      graders.each do |lambda|
        instance = lambda.call(description)
        probability *= instance.call.to_f ** instance.weight
      end

      probability
    end

    private

    def graders
      config.graders
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
link_thumbnailer-3.3.1 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.3.0 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.2.1 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.2.0 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.1.2 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.1.1 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.1.0 lib/link_thumbnailer/grader.rb