Sha256: 7e2608acca0ae23c4fd99b5d2008a9bc1d9db8971f91d2f3905a5e6d7127f83b

Contents?: true

Size: 1.48 KB

Versions: 26

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.empty?
              always{yield}
            else
              @remaining_path = rp
            end
          end
        end
      end
    end

    register_plugin(:optimized_string_matchers, OptimizedStringMatchers)
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
roda-3.43.1 lib/roda/plugins/optimized_string_matchers.rb
roda-3.43.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.42.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.41.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.40.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.39.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.38.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.37.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.36.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.35.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.34.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.33.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.32.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.31.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.30.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.29.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.28.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.27.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.26.0 lib/roda/plugins/optimized_string_matchers.rb
roda-3.25.0 lib/roda/plugins/optimized_string_matchers.rb