Sha256: ca7276d72c9f7eefa105bdc64516f341cdeee1d83d03be8fcce0195f2870a39b

Contents?: true

Size: 985 Bytes

Versions: 1

Compression:

Stored size: 985 Bytes

Contents

module Zemanta

  class Markup
    attr_reader :text, :links

    def initialize(opts = {})
      @text  = opts["text"]
      @links = opts["links"].map{ |link| Link.new(link) }
    end

    def self.fetch(text, opts = {})
      relevance  = opts.delete(:relevance)  || 0
      confidence = opts.delete(:confidence) || 0

      new(suggest_markup_request(text, opts)).tap do |markup|
        markup.drop_links_below(relevance, confidence)
      end
    end

    def drop_links_below(relevance, confidence)
      @links.keep_if do |link|
        link.above?(relevance, confidence)
      end
    end

    private

    def self.suggest_markup_request(text, opts)
      return {'links' => []} if text.to_s.empty?
      request({ text: shortened_text(text), method: "zemanta.suggest_markup" }.merge(opts))["markup"]
    end

    def self.request(opts)
      Fetcher.new(opts).post
    end

    def self.shortened_text(text)
      text[0..Zemanta.config.character_limit-1]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zemanta_client-0.0.9 lib/zemanta/markup.rb