Sha256: 2b5eccb80484a0155a874cc79e38bf8e00a0a1eabdf76ae4e74a6d42fe9cebf3

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

module Danger
  # Prints markdown containing a random post from
  # [thecodinglove.com](http://thecodinglove.com)
  #
  # @example Prints markdown containing a random post
  #
  #          the_coding_love.random
  #
  # @see  valeriomazzeo/danger-the_coding_love
  # @tags thecodinglove.com, coding, love, random, gif
  #
  class DangerTheCodingLove < Plugin
    # Prints markdown containing a random post from thecodinglove.com
    #
    # @return  [text, image_url]
    #
    def random
      require 'open-uri'
      require 'nokogiri'

      @main_page_doc = Nokogiri::HTML(open('https://thecodinglove.com'))
      random_love_page_url = @main_page_doc.at_xpath("//a[@class='nav-link']/@href").to_s

      text, image_url = atUrl(random_love_page_url)

      markdown("------\n#{text}\n--\n![alt text](#{image_url} \"thecodinglove.com\")")

      [text, image_url]
    end

    # Returns text and url containing given post from thecodinglove.com url
    #
    # @return  [text, image_url]
    #
    def atUrl(love_page_url)
      @doc = Nokogiri::HTML(open(love_page_url))
      @doc = @doc.at_xpath("//div[@class='blog-post']")

      text = @doc.at_xpath('//h1').text
      image_url = @doc.at_xpath("//div[@class='blog-post-content']/p/img/@src").to_s
      video_gif_url = @doc.at_xpath("//div[@class='blog-post-content']/p/video//object[@type='image/gif']/@data").to_s

      if image_url.empty?
        return [text, video_gif_url]
      else
        return [text, image_url]
      end
    end

    def self.instance_name
      to_s.gsub('Danger', '').danger_underscore.split('/').last
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
danger-the_coding_love-0.0.6 lib/the_coding_love/plugin.rb