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


TypeScript parse5.serialize函數代碼示例

本文整理匯總了TypeScript中parse5.serialize函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript serialize函數的具體用法?TypeScript serialize怎麽用?TypeScript serialize使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


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

示例1: test

 test('Real root elements will be preserved', () => {
   const html =
       '<html><head></head><body><div>Just a div</div></body></html>';
   const ast = parse5.parse(html, {locationInfo: true});
   assert.deepEqual(parse5.serialize(ast), html);
   dom5.removeFakeRootElements(ast);
   assert.deepEqual(parse5.serialize(ast), html);
 });
開發者ID:Polymer,項目名稱:tools,代碼行數:8,代碼來源:dom5_test.ts

示例2: test

 test('siblingsAfter', () => {
   const orderedList =
       parse5.parseFragment(`<ol><li>1<li>2<li>3<li>4<li>5</ol>`);
   const li3 = orderedList.childNodes![0]!.childNodes![2]!;
   const after3 = ast.siblingsAfter(li3);
   assert.equal(after3.length, 2);
   assert.equal(parse5.serialize(after3[0]), '4');
   assert.equal(parse5.serialize(after3[1]), '5');
 });
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:9,代碼來源:parse5-utils_test.ts

示例3: processFile

  private async processFile(file: File): Promise<File> {
    if (file.path !== this.entrypoint) {
      return file;
    }
    const contents = await getFileContents(file);
    const document = parse5.parse(contents);

    const babelHelpersFragment =
        parse5.parseFragment('\n\n<script></script>\n\n');
    dom5.setTextContent(
        babelHelpersFragment.childNodes![1]!,
        await fs.readFile(
            path.join(__dirname, 'babel-helpers.min.js'), 'utf-8'));

    const firstScriptOrImport = dom5.nodeWalk(document, scriptOrImport);
    if (firstScriptOrImport) {
      dom5.insertBefore(
          firstScriptOrImport.parentNode!,
          firstScriptOrImport,
          babelHelpersFragment);
    } else {
      const head =
          dom5.query(document, dom5.predicates.hasTagName('head')) || document;
      dom5.append(head, babelHelpersFragment);
    }

    const newFile = file.clone();
    newFile.contents = new Buffer(parse5.serialize(document), 'utf-8');
    return newFile;
  }
開發者ID:chrisekelley,項目名稱:polymer-build,代碼行數:30,代碼來源:inject-babel-helpers.ts

示例4: _removeEmptyHiddenDivs

 /**
  * Removes all empty hidden container divs from the AST.
  */
 private _removeEmptyHiddenDivs(ast: ASTNode) {
   for (const div of dom5.queryAll(ast, matchers.hiddenDiv)) {
     if (serialize(div).trim() === '') {
       dom5.remove(div);
     }
   }
 }
開發者ID:Polymer,項目名稱:vulcanize,代碼行數:10,代碼來源:html-bundler.ts

示例5: _rollupInlineModuleScripts

 /**
  * Inlines the contents of external module scripts and rolls-up imported
  * modules into inline scripts.
  */
 private async _rollupInlineModuleScripts(ast: ASTNode) {
   this.document = await this._reanalyze(serialize(ast));
   rewriteObject(ast, this.document.parsedDocument.ast);
   dom5.removeFakeRootElements(ast);
   const es6Rewriter =
       new Es6Rewriter(this.bundler, this.manifest, this.assignedBundle);
   const inlineModuleScripts =
       [...this.document.getFeatures({
         kind: 'js-document',
         imported: false,
         externalPackages: true,
         excludeBackreferences: true,
       })].filter(({
                    isInline,
                    parsedDocument: {parsedAsSourceType}
                  }) => isInline && parsedAsSourceType === 'module');
   for (const inlineModuleScript of inlineModuleScripts) {
     const ast = clone(inlineModuleScript.parsedDocument.ast);
     const importResolutions =
         es6Rewriter.getEs6ImportResolutions(inlineModuleScript);
     es6Rewriter.rewriteEs6SourceUrlsToResolved(ast, importResolutions);
     const serializedCode = serializeEs6(ast).code;
     const {code} = await es6Rewriter.rollup(
         this.document.parsedDocument.baseUrl,
         serializedCode,
         inlineModuleScript);
     if (inlineModuleScript.astNode &&
         inlineModuleScript.astNode.language === 'html') {
       // Second argument 'true' tells encodeString to escape the <script>
       // content.
       dom5.setTextContent(
           inlineModuleScript.astNode.node, encodeString(`\n${code}\n`, true));
     }
   }
 }
開發者ID:Polymer,項目名稱:tools,代碼行數:39,代碼來源:html-bundler.ts

示例6: addCustomElementsEs5Adapter

export function addCustomElementsEs5Adapter(html: string): string {
  // Only modify this file if we find a web components polyfill. This is a
  // heuristic to identify the entry point HTML file. Ultimately we should
  // explicitly transform only the entry point by having the project config.
  if (!webcomponentsLoaderRegex.test(html)) {
    return html;
  }
  const parsed = parse5.parse(html, {locationInfo: true});
  const script = dom5.query(parsed, webcomponentsLoaderMatcher);
  if (!script) {
    return html;
  }

  // Collect important dom references & create fragments for injection.
  const loaderScriptUrl = dom5.getAttribute(script, 'src')!;
  const adapterScriptUrl =
      url.resolve(loaderScriptUrl, 'custom-elements-es5-adapter.js');
  const es5AdapterFragment = parse5.parseFragment(`
    <script>if (!window.customElements) { document.write('<!--'); }</script>
    <script type="text/javascript" src="${adapterScriptUrl}"></script>
    <!--! do not remove -->
`);

  dom5.insertBefore(script.parentNode!, script, es5AdapterFragment);
  return parse5.serialize(parsed);
}
開發者ID:Polymer,項目名稱:polymer-build,代碼行數:26,代碼來源:custom-elements-es5-adapter.ts

示例7: _inlineModuleScripts

 /**
  * Inlines the contents of external module scripts and rolls-up imported
  * modules into inline scripts.
  */
 private async _inlineModuleScripts(ast: ASTNode) {
   this.document = await this._reanalyze(serialize(ast));
   rewriteObject(ast, this.document.parsedDocument.ast);
   dom5.removeFakeRootElements(ast);
   const es6Rewriter =
       new Es6Rewriter(this.bundler, this.manifest, this.assignedBundle);
   const inlineModuleScripts =
       [...this.document.getFeatures({
         kind: 'js-document',
         imported: false,
         externalPackages: true,
         excludeBackreferences: true,
       })].filter(({
                    isInline,
                    parsedDocument: {parsedAsSourceType}
                  }) => isInline && parsedAsSourceType === 'module');
   for (const inlineModuleScript of inlineModuleScripts) {
     const {code} = await es6Rewriter.rollup(
         this.document.parsedDocument.baseUrl,
         inlineModuleScript.parsedDocument.contents);
     // Second argument 'true' tells encodeString to escape the <script>
     // content.
     dom5.setTextContent(
         (inlineModuleScript.astNode as any).node,
         encodeString(`\n${code}\n`, true));
   }
 }
開發者ID:Polymer,項目名稱:vulcanize,代碼行數:31,代碼來源:html-bundler.ts

示例8: test

      test('Apply <base target> to all links and forms without target', () => {
        const htmlBase = `
          <base target="_blank">
          <a href="foo.html">LINK</a>
          <a href="bar.html" target="leavemealone">OTHERLINK</a>
          <form action="doit"></form>
          <form action="doitagain" target="leavemealone"></form>
          <div>Just a div.  I don't need a target</div>
        `;

        const expectedBase = `
          <a href="foo.html" target="_blank">LINK</a>
          <a href="bar.html" target="leavemealone">OTHERLINK</a>
          <form action="doit" target="_blank"></form>
          <form action="doitagain" target="leavemealone"></form>
          <div>Just a div.  I don't need a target</div>
        `;

        const ast = parse(htmlBase);
        htmlBundler['_rewriteAstToEmulateBaseTag'](
            ast, getFileUrl('the/doc/url'));

        const actual = parse5.serialize(ast);
        assert.deepEqual(
            stripSpace(actual), stripSpace(expectedBase), 'base target');
      });
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:26,代碼來源:html-bundler_test.ts


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