import Hummingbird /// A result builder that collects the route collections of ``RouterController`` values into a stack. /// /// Mirrors the `MiddlewareFixedTypeBuilder` Hummingbird uses for `addMiddleware`, letting controllers be listed declaratively rather than having /// their routes added one statement at a time. @resultBuilder public enum RouteCollectionBuilder { public static func buildExpression( _ controller: some RouterController ) -> [RouteCollection] { [controller.routes] } public static func buildBlock( _ collections: [RouteCollection]... ) -> [RouteCollection] { collections.flatMap { $0 } } public static func buildOptional( _ collections: [RouteCollection]? ) -> [RouteCollection] { collections ?? [] } public static func buildEither( first collections: [RouteCollection] ) -> [RouteCollection] { collections } public static func buildEither( second collections: [RouteCollection] ) -> [RouteCollection] { collections } public static func buildArray( _ collections: [[RouteCollection]] ) -> [RouteCollection] { collections.flatMap { $0 } } }