class Mustermann::AST::Compiler::Variable

@!visibility private

def default(allow_reserved: false, **options)

@!visibility private
def default(allow_reserved: false, **options)
  allow_reserved ? '[\w\-\.~%\:/\?#\[\]@\!\$\&\'\(\)\*\+,;=]' : '[\w\-\.~%]'
end

def parametric(string)

@!visibility private
def parametric(string)
  "#{Regexp.escape(name)}(?:=#{string})?"
end

def pattern(parametric: false, separator: nil, **options)

@!visibility private
def pattern(parametric: false, separator: nil, **options)
  register_param(parametric: parametric, separator: separator, **options)
  pattern = super(**options)
  pattern = parametric(pattern) if parametric
  pattern = "#{pattern}(?:#{Regexp.escape(separator)}#{pattern})*" if explode and separator
  pattern
end

def qualified(string, **options)

@!visibility private
def qualified(string, **options)
  prefix ? "#{string}{1,#{prefix}}" : super(string, **options)
end

def register_param(parametric: false, split_params: nil, separator: nil, **options)

@!visibility private
def register_param(parametric: false, split_params: nil, separator: nil, **options)
  return unless explode and split_params
  split_params[name] = { separator: separator, parametric: parametric }
end

def translate(**options)

@!visibility private
def translate(**options)
  return super(**options) if explode or not options[:parametric]
  # Remove this line after fixing broken compatibility between 2.1 and 2.2
  options.delete(:parametric) if options.has_key?(:parametric)
  parametric super(parametric: false, **options)
end