Sha256: f85c2c3ae34cb3dd1a65d91604deea3c0ce120f1a97a4ef0246aa6a07d5fb874

Contents?: true

Size: 1.37 KB

Versions: 7

Compression:

Stored size: 1.37 KB

Contents

module MrVideo

  module Episodes

    class ShowPresenter

      def initialize(context)
        @context = context
      end

      def content
        if fix_relative_links?
          content_with_relative_links_fixed
        else
          raw_content
        end
      end

      def content_type
        episode.content_type
      end

      private

      def content_with_relative_links_fixed
        content = raw_content
        [
        /href=["']([^'" >]+)["']/,
        /src=["']([^'" >]+)["']/,
        /@import url\(([^'" >]+)\)/     
        ].each do |pattern|
          content.gsub!(pattern) do |match|
            url = $1
            match.gsub(url, URI.join(base_url, url).to_s)
          end
        end
        content
      end

      def base_url
        episode.website_url
      end

      def raw_content
        episode.content
      end

      def fix_relative_links?
        params[:fix_relative_links] != 'false'
      end

      def episode
        @episode ||= cassette.find_episode_by_id(id)
      end

      def cassette
        @cassette ||= Cassette.find(cassette_id)
      end

      def cassette_id
        params[:cassette_id]
      end

      def id
        params[:id]
      end

      def params
        context.params
      end

      def context
        @context
      end

    end # ShowPresenter class

  end # Episodes module

end # MrVideo module

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
mr_video-1.2.0 app/presenters/mr_video/episodes/show_presenter.rb
mr_video-1.1.3 app/presenters/mr_video/episodes/show_presenter.rb
mr_video-1.1.1 app/presenters/mr_video/episodes/show_presenter.rb
mr_video-1.1.0 app/presenters/mr_video/episodes/show_presenter.rb
mr_video-1.0.5 app/presenters/mr_video/episodes/show_presenter.rb
mr_video-1.0.4 app/presenters/mr_video/episodes/show_presenter.rb
mr_video-1.0.2 app/presenters/mr_video/episodes/show_presenter.rb