import {Route, RouteParameters, RouteSegment} from './Route.ts' import Utility from '../../service/utility/Utility.ts' import {make} from '../../../../di/src/global.ts' export class ComplexRoute extends Route { public match(incoming: string): boolean { const base_length = this.split(this.base).length const incoming_length = this.split(incoming).length return base_length === incoming_length // FIXME match! } public build_parameters(incoming: string): RouteParameters { const utility = make(Utility) const params: RouteParameters = {} let current_wildcard: number = 1 this.zip(incoming).forEach((segment: RouteSegment) => { if ( segment.base.indexOf('*') >= 0 ) { params[`$${current_wildcard}`] = utility.infer(segment.match) current_wildcard += 1 } else if ( segment.base.startsWith(':') && segment.base.length > 1 ) { const name = segment.base.substr(1) params[name] = utility.infer(segment.match) } }) return params } }