module Mustermann::ToPattern

Mixin for adding {#to_pattern} ducktyping to objects.

@example

require 'mustermann/to_pattern'

class Foo
  include Mustermann::ToPattern

  def to_s
    ":foo/:bar"
  end
end

Foo.new.to_pattern # => #<Mustermann::Sinatra:":foo/:bar">

By default included into String, Symbol, Regexp, Array and {Mustermann::Pattern}.

Constants

PRIMITIVES

Public Instance Methods

to_pattern(**options) click to toggle source

Converts the object into a {Mustermann::Pattern}.

@example converting a string

":name.png".to_pattern # => #<Mustermann::Sinatra:":name.png">

@example converting a string with options

"  path".to_pattern(type: :rails) # => #<Mustermann::Rails:"/*path">

@example converting a regexp

/.  .to_pattern # => #<Mustermann::Regular:".*">

@example converting a pattern

Mustermann.new("foo").to_pattern # => #<Mustermann::Sinatra:"foo">

@param [Hash] options The options hash. @return [Mustermann::Pattern] pattern corresponding to object.

# File lib/mustermann/to_pattern.rb, line 40
def to_pattern(**options)
  input   = self if PRIMITIVES.any? { |p| self.is_a? p }
  input ||= __getobj__ if respond_to?(:__getobj__)
  Mustermann.new(input || to_s, **options)
end