gottfrois/link_thumbnailer

View on GitHub
lib/link_thumbnailer/graders/length.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module LinkThumbnailer
  module Graders
    class Length < ::LinkThumbnailer::Graders::Base

      def call
        return 0.0 if too_short?

        y / get_gaussian_value_for(ideal_description_length)
      end

      private

      def get_gaussian_value_for(x)
        Math.sqrt(2.0 * Math::PI ** 2) * Math.exp(-(x - ideal_description_length) ** 2 / 2.0 * 0.005 ** 2)
      end

      def x
        text.length
      end

      def y
        get_gaussian_value_for(x)
      end

      def ideal_description_length
        options.fetch(:ideal_description_length, 120).to_f
      end

      def too_short?
        text.length < config.description_min_length
      end

    end
  end
end