Example #1
0
const userinfo: PS.Parser<string> = PS.co(function* () {
  const uu: L.List<string> = yield PS.many(uchar(';:&=+$,'));
  yield PS.char('@');
  return PS.pure(joinStr(uu) + '@');
});
Example #2
0
 return p.chain(x => PS.many(r).map(xs => L.cons(x, xs)));
Example #3
0
const pathRootLess: PS.Parser<string> = PS.co(function* () {
  const s1: string = yield segmentNz;
  const ss: L.List<string> = yield PS.many(slashSegment);
  return PS.pure(s1 + joinStr(ss));
});
Example #4
0
const pathNoScheme: PS.Parser<string> = segmentNzc.chain(s1 => PS.many(slashSegment).map(ss => s1 + joinStr(ss)));
Example #5
0
const port: PS.Parser<string> = PS.char(':').chain(() => PS.many(PS.anyDigit)).map(xs => `:${joinStr(xs)}`);
Example #6
0
const ipLiteral: PS.Parser<string> = PS.between(
  PS.char('['),
  PS.char(']'),
  ipv6addrz.alt(ipvFuture).map(ua => `[${ua}]`)
);

function uchar(c: string): PS.Parser<string> {
  return unreservedChar.alt(escaped).alt(subDelims).alt(PS.oneOf(c.split('')));
}

const pchar = uchar(':@');

const regName: PS.Parser<string> = countMinMax(0, 255, nameChar).map(joinStr);

const uquery: PS.Parser<string> = PS.many(uchar(':@/?')).map(x => `?${joinStr(x)}`);

const ufragment: PS.Parser<string> = PS.many(uchar(':@/?')).map(x => `#${joinStr(x)}`);

const host: PS.Parser<string> = ipLiteral.alt(PS.attempt(ipv4address)).alt(regName);

const port: PS.Parser<string> = PS.char(':').chain(() => PS.many(PS.anyDigit)).map(xs => `:${joinStr(xs)}`);

const segment = PS.many(pchar).map(joinStr);

const slashSegment = PS.char('/').chain(() => segment).map(x => `/${x}`);

const segmentNz = PS.many1(pchar).map(joinStr);

const segmentNzc = PS.many1(uchar('@')).map(joinStr);