• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript sequence.Sequence类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了TypeScript中spica/sequence.Sequence的典型用法代码示例。如果您正苦于以下问题:TypeScript Sequence类的具体用法?TypeScript Sequence怎么用?TypeScript Sequence使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Sequence类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。

示例1: match

 function match(pattern: string, segment: string): boolean {
   const [p = '', ...ps] = [...pattern];
   const [s = '', ...ss] = [...segment];
   assert(typeof p === 'string');
   assert(typeof s === 'string');
   switch (p) {
     case '':
       return s === '';
     case '?':
       return s !== ''
           && s !== '/'
           && match(ps.join(''), ss.join(''));
     case '*':
       return s === '/'
         ? match(ps.join(''), segment)
         : Sequence
             .zip(
               Sequence.cycle([ps.join('')]),
               Sequence.from(segment)
                 .tails()
                 .map(ss => ss.join('')))
             .filter(uncurry(match))
             .take(1)
             .extract()
             .length > 0;
     default:
       return s === p
           && match(ps.join(''), ss.join(''));
   }
 }
开发者ID:falsandtru,项目名称:pjax-api,代码行数:30,代码来源:router.ts


示例2: compare

export function compare(pattern: string, path: URL.Pathname<StandardURL>): boolean {
  assert(path[0] === '/');
  assert(!path.includes('?'));
  const regSegment = /\/|[^/]+\/?/g;
  const regTrailingSlash = /\/$/;
  assert(expand(pattern).every(pat => pat.match(regSegment)!.join('') === pat));
  return Sequence
    .zip(
      Sequence.from(expand(pattern)),
      Sequence.cycle([path]))
    .map(([pattern, path]) =>
      [
        pattern.match(regSegment) || [],
        pattern.match(regTrailingSlash)
          ? path.match(regSegment) || []
          : path.replace(regTrailingSlash, '').match(regSegment) || []
      ])
    .filter(([ps, ss]) =>
      ps.length <= ss.length &&
      Sequence
        .zip(
          Sequence.from(ps),
          Sequence.from(ss))
        .dropWhile(uncurry(match))
        .take(1)
        .extract()
        .length === 0)
    .take(1)
    .extract()
    .length > 0;
}
开发者ID:falsandtru,项目名称:pjax-api,代码行数:31,代码来源:router.ts


示例3:

 .filter(([ps, ss]) =>
   ps.length <= ss.length &&
   Sequence
     .zip(
       Sequence.from(ps),
       Sequence.from(ss))
     .dropWhile(uncurry(match))
     .take(1)
     .extract()
     .length === 0)
开发者ID:falsandtru,项目名称:pjax-api,代码行数:10,代码来源:router.ts


示例4: match

function match(actualContentType: string | null, expectedContentType: string): boolean {
  assert(actualContentType === null || actualContentType.split(':').length === 1);
  return Sequence
    .intersect(
      Sequence.from(parse(actualContentType || '').sort()),
      Sequence.from(parse(expectedContentType).sort()),
      (a, b) => a.localeCompare(b))
    .take(1)
    .extract()
    .length > 0;

  function parse(headerValue: string): string[] {
    return headerValue.split(/\s*;\s*/)
      .filter(v => v.length > 0);
  }
}
开发者ID:falsandtru,项目名称:pjax-api,代码行数:16,代码来源:xhr.ts


示例5: it

 it('char', () => {
   assert(match('', ''));
   assert(!match('', 'a'));
   assert(match('a', 'a'));
   assert(!match('a', 'A'));
   assert(!match('A', 'a'));
   Sequence.mappend(
     Sequence.from(['a', 'b', 'c'])
       .subsequences(),
     Sequence.from(['a', 'b', 'c'])
       .permutations())
     .map(subs => subs.join(''))
     .extract()
     .forEach(subs =>
       assert(match('abc', subs) === (subs === 'abc')));
 });
开发者ID:falsandtru,项目名称:pjax-api,代码行数:16,代码来源:router.test.ts


示例6: it

    it('match', () => {
      Sequence.from(['text/html', 'text/html'])
        .mapM(type =>
          Sequence.from([type, type + ';']))
        .extract()
        .forEach(([a, b]) =>
          assert(match(a, b)));

      Sequence.from(['text/plain', 'text/html'])
        .permutations()
        .bind(types =>
          Sequence.from([types[0], types.join('; ')])
            .permutations())
        .extract()
        .forEach(([a, b]) =>
          assert(match(a, b)));
    });
开发者ID:falsandtru,项目名称:pjax-api,代码行数:17,代码来源:xhr.test.ts


示例7: return

 return (url: string) => {
   const { path, pathname } = new URL(standardize(url));
   return Sequence.from(Object.keys(config).filter(([c]) => c === '/').sort().reverse())
     .filter(flip(compare)(pathname))
     .map(pattern => config[pattern])
     .take(1)
     .extract()
     .pop()!
     .call(config, path);
 };
开发者ID:falsandtru,项目名称:pjax-api,代码行数:10,代码来源:router.ts


示例8: expand

function expand(pattern: string): string[] {
  if (pattern.match(/\*\*|[\[\]]/)) throw new Error(`Invalid pattern: ${pattern}`);
  assert(pattern === '' || pattern.match(/{[^{}]*}|.[^{]*/g)!.join('') === pattern);
  return pattern === ''
    ? [pattern]
    : Sequence.from(pattern.match(/{[^{}]*}|.[^{]*/g)!)
        .map(p =>
          p.match(/^{[^{}]*}$/)
            ? p.slice(1, -1).split(',')
            : [p])
        .mapM(Sequence.from)
        .map(ps => ps.join(''))
        .bind(p =>
          p === pattern
            ? Sequence.from([p])
            : Sequence.from(expand(p)))
        .unique()
        .extract();
}
开发者ID:falsandtru,项目名称:pjax-api,代码行数:19,代码来源:router.ts


示例9: scope

export function scope(
  config: Config,
  path: {
    orig: URL.Pathname<StandardURL>;
    dest: URL.Pathname<StandardURL>;
  }
): Maybe<Config> {
  const scope = { '/': {}, ...config.scope };
  return Sequence.from(Object.keys(scope).sort().reverse())
    .dropWhile(pattern =>
      !! !compare(pattern, path.orig)
      && !compare(pattern, path.dest))
    .take(1)
    .filter(pattern =>
      !! compare(pattern, path.orig)
      && compare(pattern, path.dest))
    .map<Option | undefined>(pattern => scope[pattern])
    .map<Maybe<Config>>(option =>
      option
        ? Just(new Config(extend<Option>({}, config, option)))
        : Nothing)
    .extract()
    .reduce((_, m) => m, Nothing);
}
开发者ID:falsandtru,项目名称:pjax-api,代码行数:24,代码来源:scope.ts



注:本文中的spica/sequence.Sequence类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript tuple.tuple函数代码示例发布时间:2022-05-25
下一篇:
TypeScript promise.AtomicPromise类代码示例发布时间:2022-05-25
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap