Sha256: 1e40b2a4e2b927dcb3a627287509ba19b79a803980c64b65c6235767455aef0c

Contents?: true

Size: 998 Bytes

Versions: 2

Compression:

Stored size: 998 Bytes

Contents

# frozen_string_literal: true

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

2 entries across 2 versions & 1 rubygems

Version Path
link_thumbnailer-3.4.0 lib/link_thumbnailer/grader.rb
link_thumbnailer-3.3.2 lib/link_thumbnailer/grader.rb