Sha256: 76c9d5f96e664356e3332743552826afe93bafc97092db852f12d864a0f68ce4

Contents?: true

Size: 1.48 KB

Versions: 20

Compression:

Stored size: 1.48 KB

Contents

# frozen-string-literal: true

#
class Roda
  module RodaPlugins
    # The optimized_string_matchers plugin adds two optimized matcher methods,
    # +r.on_branch+ and +r.is_exactly+.  +r.on_branch+ is an optimized version of
    # +r.on+ that only accepts a single string, and +r.is_exactly+ is an
    # optimized version of +r.is+ that only accepts a single string.
    #
    #   plugin :optimized_string_matchers
    #
    #   route do |r|
    #     r.on_branch "x" do
    #       # matches /x and paths starting with /x/
    #       r.is_exactly "y" do
    #         # matches /x/y
    #       end
    #     end
    #   end
    #
    # Note that both of these methods only work with plain strings, not
    # with strings with embedded colons for capturing.  Matching will work
    # correctly in such cases, but the captures will not be yielded to the
    # match blocks.
    module OptimizedStringMatchers
      module RequestMethods
        # Optimized version of +on+ that only supports a single string.
        def on_branch(s)
          always{yield} if _match_string(s)
        end

        # Optimized version of +is+ that only supports a single string.
        def is_exactly(s)
          rp = @remaining_path
          if _match_string(s)
            if @remaining_path == ''
              always{yield}
            else
              @remaining_path = rp
            end
          end
        end
      end
    end

    register_plugin(:optimized_string_matchers, OptimizedStringMatchers)
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
roda-3.18.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.17.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.16.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.15.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.14.1 lib/roda/plugins/optimized_string_matchers.rb
roda-3.14.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.13.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.12.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.11.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.10.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.9.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.8.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.7.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.6.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.5.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.4.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.3.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.2.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.1.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.0.0 lib/roda/plugins/optimized_string_matchers.rb