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


TypeScript Sequence.cycle方法代碼示例

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


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


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