Sha256: b90682ad307f3efc49726ff1f8014352dd0b75a465360766233a12e11000ff52

Contents?: true

Size: 593 Bytes

Versions: 4

Compression:

Stored size: 593 Bytes

Contents

require_relative '../collection'
# rubocop:disable Lint/UnusedMethodArgument -
# this is because #resolve is supporting a duck typed interface and needs the env parameter

class SiteHub
  class Collection < Hash
    class RouteCollection < Collection
      def add(id, route, *_opts)
        self[id] = route
      end

      def valid?
        !keys.empty?
      end

      def resolve(id: nil, env: nil)
        return values.first unless values.find(&:rule)
        result = values.find { |route| route.applies?(env) }
        result && result.resolve(env: env)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sitehub-0.5.0.alpha12 lib/sitehub/collection/route_collection.rb
sitehub-0.5.0.alpha11 lib/sitehub/collection/route_collection.rb
sitehub-0.5.0.alpha10 lib/sitehub/collection/route_collection.rb
sitehub-0.5.0.alpha8 lib/sitehub/collection/route_collection.rb