@bespunky/angular-zen
Version:
The Angular tools you always wished were there.
20 lines • 4.21 kB
JavaScript
import { extractArgsFromPath } from './_utils';
export class RouteComposer {
constructor(path, name) {
this.path = path;
this.name = name;
this.args = extractArgsFromPath(path);
this.hasArgs = this.args.length > 0;
this.compose = (this.hasArgs ? this.routePathWithArgs.bind(this) : this.routePath.bind(this));
}
routePathWithArgs(entity) {
return this.args.reduce((route, arg) => {
const argName = arg.substring(1);
const value = entity[argName];
const formattedValue = value instanceof Date ? value.toUTCString() : String(value);
return route.replace(arg, formattedValue);
}, this.path);
}
routePath() { return this.path; }
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXplbi9yb3V0ZXIteC9uYXZpZ2F0aW9uL3NyYy9saWIvcm91dGUtY29tcG9zZXIvcm91dGVyLWNvbXBvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkvQyxNQUFNLE9BQU8sYUFBYTtJQUt0QixZQUE0QixJQUFjLEVBQWtCLElBQVU7UUFBMUMsU0FBSSxHQUFKLElBQUksQ0FBVTtRQUFrQixTQUFJLEdBQUosSUFBSSxDQUFNO1FBRWxFLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFpRCxDQUFDO0lBQ2xKLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxNQUF5QztRQUUvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNuQixDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtZQUUzQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBNEMsQ0FBQztZQUU1RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUUsT0FBTyxDQUFFLENBQUM7WUFDaEMsTUFBTSxjQUFjLEdBQUcsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFbkYsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDLEVBQ0QsSUFBSSxDQUFDLElBQUksQ0FDWixDQUFDO0lBQ04sQ0FBQztJQUVPLFNBQVMsS0FBZSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdEFyZ3NGcm9tUGF0aCB9IGZyb20gJy4vX3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUm91dGVDb21wb3NlckNvbXBvc2VNZXRob2QsIEVudGl0eVJvdXRlQXJncyB9IGZyb20gJy4uL3R5cGVzL3JvdXRlLWNvbXBvc2VyLnR5cGVzJztcbmltcG9ydCB0eXBlICB7IFJvdXRlQXJndW1lbnQgfSBmcm9tICcuLi90eXBlcy9yb3V0ZS1wYXRocy50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZUNvbXBvc2VyPEVudGl0eSwgRnVsbFBhdGggZXh0ZW5kcyBzdHJpbmcsIE5hbWUgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXJnczogUm91dGVBcmd1bWVudDxGdWxsUGF0aD5bXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGFzQXJnczogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9zZTogUm91dGVDb21wb3NlckNvbXBvc2VNZXRob2Q8RW50aXR5LCBGdWxsUGF0aD47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGF0aDogRnVsbFBhdGgsIHB1YmxpYyByZWFkb25seSBuYW1lOiBOYW1lKVxuICAgIHtcbiAgICAgICAgdGhpcy5hcmdzID0gZXh0cmFjdEFyZ3NGcm9tUGF0aChwYXRoKTtcbiAgICAgICAgdGhpcy5oYXNBcmdzID0gdGhpcy5hcmdzLmxlbmd0aCA+IDA7XG4gICAgICAgIHRoaXMuY29tcG9zZSA9ICh0aGlzLmhhc0FyZ3MgPyB0aGlzLnJvdXRlUGF0aFdpdGhBcmdzLmJpbmQodGhpcykgOiB0aGlzLnJvdXRlUGF0aC5iaW5kKHRoaXMpKSBhcyBSb3V0ZUNvbXBvc2VyQ29tcG9zZU1ldGhvZDxFbnRpdHksIEZ1bGxQYXRoPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdXRlUGF0aFdpdGhBcmdzKGVudGl0eTogRW50aXR5Um91dGVBcmdzPEVudGl0eSwgRnVsbFBhdGg+KTogc3RyaW5nXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5hcmdzLnJlZHVjZShcbiAgICAgICAgICAgIChyb3V0ZTogc3RyaW5nLCBhcmc6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdOYW1lID0gYXJnLnN1YnN0cmluZygxKSBhcyBrZXlvZiBFbnRpdHlSb3V0ZUFyZ3M8RW50aXR5LCBGdWxsUGF0aD47XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVudGl0eVsgYXJnTmFtZSBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUudG9VVENTdHJpbmcoKSA6IFN0cmluZyh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGUucmVwbGFjZShhcmcsIGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnBhdGhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdXRlUGF0aCgpOiBGdWxsUGF0aCB7IHJldHVybiB0aGlzLnBhdGg7IH1cbn1cbiJdfQ==