當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript Sequence.from方法代碼示例

本文整理匯總了TypeScript中spica/sequence.Sequence.from方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Sequence.from方法的具體用法?TypeScript Sequence.from怎麽用?TypeScript Sequence.from使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在spica/sequence.Sequence的用法示例。


在下文中一共展示了Sequence.from方法的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1:

 .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

示例2: 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

示例3: 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

示例4: 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

示例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.from方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。