@glimmer/compiler
Version:
75 lines (60 loc) • 6.22 kB
JavaScript
import { isPresent, mapPresent } from '@glimmer/util';
export class PresentList {
constructor(list) {
this.list = list;
}
toArray() {
return this.list;
}
map(callback) {
let result = mapPresent(this.list, callback);
return new PresentList(result);
}
filter(predicate) {
let out = [];
for (let item of this.list) {
if (predicate(item)) {
out.push(item);
}
}
return OptionalList(out);
}
toPresentArray() {
return this.list;
}
into({
ifPresent
}) {
return ifPresent(this);
}
}
export class EmptyList {
constructor() {
this.list = [];
}
map(_callback) {
return new EmptyList();
}
filter(_predicate) {
return new EmptyList();
}
toArray() {
return this.list;
}
toPresentArray() {
return null;
}
into({
ifEmpty
}) {
return ifEmpty();
}
} // export type OptionalList<T> = PresentList<T> | EmptyList<T>;
export function OptionalList(value) {
if (isPresent(value)) {
return new PresentList(value);
} else {
return new EmptyList();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9zaGFyZWQvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFNBQVQsRUFBb0IsVUFBcEIsUUFBc0MsZUFBdEM7QUFZQSxPQUFNLE1BQU8sV0FBUCxDQUFrQjtBQUN0QixFQUFBLFdBQUEsQ0FBcUIsSUFBckIsRUFBMEM7QUFBckIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUF5Qjs7QUFFOUMsRUFBQSxPQUFPLEdBQUE7QUFDTCxXQUFPLEtBQUssSUFBWjtBQUNEOztBQUVELEVBQUEsR0FBRyxDQUFJLFFBQUosRUFBNkI7QUFDOUIsUUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBTixFQUFZLFFBQVosQ0FBdkI7QUFDQSxXQUFPLElBQUksV0FBSixDQUFnQixNQUFoQixDQUFQO0FBQ0Q7O0FBRUQsRUFBQSxNQUFNLENBQWMsU0FBZCxFQUFpRDtBQUNyRCxRQUFJLEdBQUcsR0FBUSxFQUFmOztBQUVBLFNBQUssSUFBSSxJQUFULElBQWlCLEtBQUssSUFBdEIsRUFBNEI7QUFDMUIsVUFBSSxTQUFTLENBQUMsSUFBRCxDQUFiLEVBQXFCO0FBQ25CLFFBQUEsR0FBRyxDQUFDLElBQUosQ0FBUyxJQUFUO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLFlBQVksQ0FBQyxHQUFELENBQW5CO0FBQ0Q7O0FBRUQsRUFBQSxjQUFjLEdBQUE7QUFDWixXQUFPLEtBQUssSUFBWjtBQUNEOztBQUVELEVBQUEsSUFBSSxDQUFPO0FBQUUsSUFBQTtBQUFGLEdBQVAsRUFBbUY7QUFDckYsV0FBTyxTQUFTLENBQUMsSUFBRCxDQUFoQjtBQUNEOztBQTlCcUI7QUFpQ3hCLE9BQU0sTUFBTyxTQUFQLENBQWdCO0FBQXRCLEVBQUEsV0FBQSxHQUFBO0FBQ1csU0FBQSxJQUFBLEdBQVksRUFBWjtBQXFCVjs7QUFuQkMsRUFBQSxHQUFHLENBQUksU0FBSixFQUE4QjtBQUMvQixXQUFPLElBQUksU0FBSixFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxNQUFNLENBQWMsVUFBZCxFQUFrRDtBQUN0RCxXQUFPLElBQUksU0FBSixFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxPQUFPLEdBQUE7QUFDTCxXQUFPLEtBQUssSUFBWjtBQUNEOztBQUVELEVBQUEsY0FBYyxHQUFBO0FBQ1osV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsRUFBQSxJQUFJLENBQU87QUFBRSxJQUFBO0FBQUYsR0FBUCxFQUFpRjtBQUNuRixXQUFPLE9BQU8sRUFBZDtBQUNEOztBQXJCbUIsQyxDQXdCdEI7O0FBRUEsT0FBTSxTQUFVLFlBQVYsQ0FBMEIsS0FBMUIsRUFBNkM7QUFDakQsTUFBSSxTQUFTLENBQUMsS0FBRCxDQUFiLEVBQXNCO0FBQ3BCLFdBQU8sSUFBSSxXQUFKLENBQWdCLEtBQWhCLENBQVA7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPLElBQUksU0FBSixFQUFQO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiwgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc1ByZXNlbnQsIG1hcFByZXNlbnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbExpc3Q8VD4ge1xuICBtYXA8VT4oY2FsbGJhY2s6IChpbnB1dDogVCkgPT4gVSk6IE1hcExpc3Q8VCwgVSwgQW55T3B0aW9uYWxMaXN0PFQ+PjtcbiAgZmlsdGVyPFMgZXh0ZW5kcyBUPihcbiAgICBwcmVkaWNhdGU6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFRbXSkgPT4gdmFsdWUgaXMgU1xuICApOiBBbnlPcHRpb25hbExpc3Q8Uz47XG4gIHRvQXJyYXkoKTogVFtdO1xuICB0b1ByZXNlbnRBcnJheSgpOiBPcHRpb248UHJlc2VudEFycmF5PFQ+PjtcbiAgaW50bzxVLCBWPihvcHRpb25zOiB7IGlmUHJlc2VudDogKGFycmF5OiBQcmVzZW50TGlzdDxUPikgPT4gVTsgaWZFbXB0eTogKCkgPT4gViB9KTogVSB8IFY7XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVzZW50TGlzdDxUPiBpbXBsZW1lbnRzIE9wdGlvbmFsTGlzdDxUPiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGxpc3Q6IFByZXNlbnRBcnJheTxUPikge31cblxuICB0b0FycmF5KCk6IFByZXNlbnRBcnJheTxUPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdDtcbiAgfVxuXG4gIG1hcDxVPihjYWxsYmFjazogKGlucHV0OiBUKSA9PiBVKTogTWFwTGlzdDxULCBVLCBQcmVzZW50TGlzdDxUPj4ge1xuICAgIGxldCByZXN1bHQgPSBtYXBQcmVzZW50KHRoaXMubGlzdCwgY2FsbGJhY2spO1xuICAgIHJldHVybiBuZXcgUHJlc2VudExpc3QocmVzdWx0KSBhcyBNYXBMaXN0PFQsIFUsIHRoaXM+O1xuICB9XG5cbiAgZmlsdGVyPFMgZXh0ZW5kcyBUPihwcmVkaWNhdGU6ICh2YWx1ZTogVCkgPT4gdmFsdWUgaXMgUyk6IEFueU9wdGlvbmFsTGlzdDxTPiB7XG4gICAgbGV0IG91dDogU1tdID0gW107XG5cbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMubGlzdCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShpdGVtKSkge1xuICAgICAgICBvdXQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT3B0aW9uYWxMaXN0KG91dCk7XG4gIH1cblxuICB0b1ByZXNlbnRBcnJheSgpOiBQcmVzZW50QXJyYXk8VD4ge1xuICAgIHJldHVybiB0aGlzLmxpc3Q7XG4gIH1cblxuICBpbnRvPFUsIFY+KHsgaWZQcmVzZW50IH06IHsgaWZQcmVzZW50OiAoYXJyYXk6IFByZXNlbnRMaXN0PFQ+KSA9PiBVOyBpZkVtcHR5OiAoKSA9PiBWIH0pOiBVIHwgViB7XG4gICAgcmV0dXJuIGlmUHJlc2VudCh0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW1wdHlMaXN0PFQ+IGltcGxlbWVudHMgT3B0aW9uYWxMaXN0PFQ+IHtcbiAgcmVhZG9ubHkgbGlzdDogVFtdID0gW107XG5cbiAgbWFwPFU+KF9jYWxsYmFjazogKGlucHV0OiBUKSA9PiBVKTogTWFwTGlzdDxULCBVLCBFbXB0eUxpc3Q8VD4+IHtcbiAgICByZXR1cm4gbmV3IEVtcHR5TGlzdCgpIGFzIE1hcExpc3Q8VCwgVSwgdGhpcz47XG4gIH1cblxuICBmaWx0ZXI8UyBleHRlbmRzIFQ+KF9wcmVkaWNhdGU6ICh2YWx1ZTogVCkgPT4gdmFsdWUgaXMgUyk6IEFueU9wdGlvbmFsTGlzdDxTPiB7XG4gICAgcmV0dXJuIG5ldyBFbXB0eUxpc3QoKTtcbiAgfVxuXG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5saXN0O1xuICB9XG5cbiAgdG9QcmVzZW50QXJyYXkoKTogT3B0aW9uPFByZXNlbnRBcnJheTxUPj4ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW50bzxVLCBWPih7IGlmRW1wdHkgfTogeyBpZlByZXNlbnQ6IChhcnJheTogUHJlc2VudExpc3Q8VD4pID0+IFU7IGlmRW1wdHk6ICgpID0+IFYgfSk6IFUgfCBWIHtcbiAgICByZXR1cm4gaWZFbXB0eSgpO1xuICB9XG59XG5cbi8vIGV4cG9ydCB0eXBlIE9wdGlvbmFsTGlzdDxUPiA9IFByZXNlbnRMaXN0PFQ+IHwgRW1wdHlMaXN0PFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gT3B0aW9uYWxMaXN0PFQ+KHZhbHVlOiByZWFkb25seSBUW10pOiBBbnlPcHRpb25hbExpc3Q8VD4ge1xuICBpZiAoaXNQcmVzZW50KHZhbHVlKSkge1xuICAgIHJldHVybiBuZXcgUHJlc2VudExpc3QodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRW1wdHlMaXN0PFQ+KCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQW55T3B0aW9uYWxMaXN0PFQ+ID0gKFByZXNlbnRMaXN0PFQ+IHwgRW1wdHlMaXN0PFQ+KSAmIE9wdGlvbmFsTGlzdDxUPjtcblxuZXhwb3J0IHR5cGUgTWFwTGlzdDxULCBVLCBMIGV4dGVuZHMgT3B0aW9uYWxMaXN0PFQ+PiA9IEwgZXh0ZW5kcyBQcmVzZW50TGlzdDxUPlxuICA/IFByZXNlbnRMaXN0PFU+XG4gIDogTCBleHRlbmRzIEVtcHR5TGlzdDxUPlxuICA/IEVtcHR5TGlzdDxVPlxuICA6IG5ldmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==