Sha256: 069f21fd4288317af1ec5e695d6c78064ebbafceaf4e97b1027ba54970f57f81

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module Onebox
  module Engine
    class GithubFolderOnebox
      include Engine
      include StandardEmbed
      include LayoutSupport

      matches_regexp Regexp.new(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?(github)\.com[\:\d]*(\/\w*){2}\/tree/)
      always_https

      private

      def data
        og = get_opengraph

        max_length = 250

        display_path = extract_path(og.url, max_length)
        display_description = clean_description(og.description, og.title, max_length)

        {
          link: og.url,
          path_link: url,
          image: og.image,
          title: og.title,
          path: display_path,
          description: display_description,
          favicon: get_favicon
        }
      end

      def extract_path(root, max_length)
        path = url.split('#')[0].split('?')[0]
        path = path["#{root}/tree/".length..-1]
        path.length > max_length ? path[-max_length..-1] : path
      end

      def clean_description(description, title, max_length)
        return unless description

        desc_end = " - #{title}"
        if description[-desc_end.length..-1] == desc_end
          description = description[0...-desc_end.length]
        end

        Onebox::Helpers.truncate(description, max_length)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
onebox-2.1.7 lib/onebox/engine/github_folder_onebox.rb