Sha256: 30275d7f331f967c0eefbe9522c17dceacd58d82af40dd2cd48e474cca32b769

Contents?: true

Size: 1005 Bytes

Versions: 63

Compression:

Stored size: 1005 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

      private

      def self.render_template(params, template)
        params.inject(template) do | template, (key, value) |
          template.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

63 entries across 63 versions & 1 rubygems

Version Path
pact_broker-2.52.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.52.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.51.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.50.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.50.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.49.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.48.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.47.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.47.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.46.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.45.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.44.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.43.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.42.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.41.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.40.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.39.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.38.1 lib/pact_broker/webhooks/render.rb
pact_broker-2.38.0 lib/pact_broker/webhooks/render.rb
pact_broker-2.37.0 lib/pact_broker/webhooks/render.rb