Sha256: 102b8db03544f68c9c11ffc9af5866a4ec32cc77817acb46677dd9d49851a564

Contents?: true

Size: 1023 Bytes

Versions: 6

Compression:

Stored size: 1023 Bytes

Contents

require 'rack'

module Rack
  module Rewritten
    class Html
      def initialize(app)
        @app = app
      end

      def call(env)
        req = Rack::Request.new(env)
        status, headers, response = @app.call(env)

        if status == 200
          new_response = []
          response.each do |line|
            links = line.scan(/href="([^"]+)"/).flatten.uniq
            res = line
            links.each do |link|
              if ::Rewritten.exist_translation_for?(link)
                t = ::Rewritten.get_current_translation(link)
                res.gsub!(%(href="#{link}"), %(href="#{t}")) if t
                res.gsub!(%(href='#{link}'), %(href='#{t}')) if t
                res.gsub!(%(href="#{link}?), %(href="#{t}?)) if t
                res.gsub!(%(href='#{link}?), %(href='#{t}?)) if t
              end
            end
            new_response << res
          end
        else
          new_response = response
        end

        [status, headers, new_response]
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rewritten-0.16.5 lib/rack/html.rb
rewritten-0.16.4 lib/rack/html.rb
rewritten-0.16.3 lib/rack/html.rb
rewritten-0.16.2 lib/rack/html.rb
rewritten-0.16.1 lib/rack/html.rb
rewritten-0.16.0 lib/rack/html.rb