Sha256: 36391c286ce60978c0e1b81a71f99cc83dca5db151f8d59c9949c0aab47ff65e

Contents?: true

Size: 981 Bytes

Versions: 44

Compression:

Stored size: 981 Bytes

Contents

require "pact_broker/webhooks/pact_and_verification_parameters"

module PactBroker
  module Webhooks
    class Render
      TEMPLATE_PARAMETER_REGEXP = /\$\{pactbroker\.[^\}]+\}/
      DEFAULT_ESCAPER = lambda { |it| it }

      def self.includes_parameter?(value)
        value =~ TEMPLATE_PARAMETER_REGEXP
      end

      def self.render_with_placeholder(value, placeholder = "placeholder")
        value.gsub(TEMPLATE_PARAMETER_REGEXP, placeholder)
      end

      def self.call(template, params, &escaper)
        render_template(escape_params(params, escaper || DEFAULT_ESCAPER), template)
      end


      def self.render_template(params, template)
        params.inject(template) do | agg, (key, value) |
          agg.gsub("${#{key}}", value)
        end
      end

      def self.escape_params(params, escaper)
        params.keys.each_with_object({}) do | key, new_params |
          new_params[key] = escaper.call(params[key])
        end
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
pact_broker-2.96.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.95.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.95.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.94.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.93.4 lib/pact_broker/webhooks/render.rb
pact_broker-2.93.3 lib/pact_broker/webhooks/render.rb
pact_broker-2.93.2 lib/pact_broker/webhooks/render.rb
pact_broker-2.93.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.93.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.92.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.91.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.90.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.89.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.89.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.88.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.87.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.86.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.85.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.85.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.84.0 lib/pact_broker/webhooks/render.rb