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


TypeScript dom5.setAttribute函數代碼示例

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


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

示例1: _addSharedImportsToShell

  _addSharedImportsToShell(bundles: Map<string, string[]>): string {
    console.assert(this.shell != null);
    let shellDeps = bundles.get(this.shell)
        .map((d) => path.relative(path.dirname(this.shell), d));

    let file = this.analyzer.files.get(this.shell);
    console.assert(file != null);
    let contents = file.contents.toString();
    let doc = dom5.parse(contents);
    let imports = dom5.queryAll(doc, dom5.predicates.AND(
      dom5.predicates.hasTagName('link'),
      dom5.predicates.hasAttrValue('rel', 'import')
    ));

    // Remove all imports that are in the shared deps list so that we prefer
    // the ordering or shared deps. Any imports left should be independent of
    // ordering of shared deps.
    let shellDepsSet = new Set(shellDeps);
    for (let _import of imports) {
      if (shellDepsSet.has(dom5.getAttribute(_import, 'href'))) {
        dom5.remove(_import);
      }
    }

    // Append all shared imports to the end of <head>
    let head = dom5.query(doc, dom5.predicates.hasTagName('head'));
    for (let dep of shellDeps) {
      let newImport = dom5.constructors.element('link');
      dom5.setAttribute(newImport, 'rel', 'import');
      dom5.setAttribute(newImport, 'href', dep);
      dom5.append(head, newImport);
    }
    let newContents = dom5.serialize(doc);
    return newContents;
  }
開發者ID:LostInBrittany,項目名稱:polymer-cli,代碼行數:35,代碼來源:bundle.ts

示例2: createLinks

export function createLinks(
    html: string,
    baseUrl: string,
    deps: Set<string>,
    absolute: boolean = false): string {
  const ast = parse5.parse(html, {locationInfo: true});
  const baseTag = dom5.query(ast, dom5.predicates.hasTagName('base'));
  const baseTagHref = baseTag ? dom5.getAttribute(baseTag, 'href') : '';

  // parse5 always produces a <head> element.
  const head = dom5.query(ast, dom5.predicates.hasTagName('head'))!;
  for (const dep of deps) {
    let href;
    if (absolute && !baseTagHref) {
      href = absUrl(dep);
    } else {
      href = relativeUrl(absUrl(baseUrl), absUrl(dep));
    }
    const link = dom5.constructors.element('link');
    dom5.setAttribute(link, 'rel', 'prefetch');
    dom5.setAttribute(link, 'href', href);
    dom5.append(head, link);
  }
  dom5.removeFakeRootElements(ast);
  return parse5.serialize(ast);
}
開發者ID:chrisekelley,項目名稱:polymer-build,代碼行數:26,代碼來源:prefetch-links.ts

示例3: _rewriteElementAttrsBaseUrl

 /**
  * Find all element attributes which express URLs and rewrite them so they
  * are based on the relationship of the old base URL to the new base URL.
  */
 private _rewriteElementAttrsBaseUrl(
     ast: ASTNode,
     oldBaseUrl: ResolvedUrl,
     newBaseUrl: ResolvedUrl) {
   const nodes = dom5.queryAll(
       ast,
       matchers.elementsWithUrlAttrsToRewrite,
       undefined,
       this.bundler.rewriteUrlsInTemplates ? dom5.childNodesIncludeTemplate :
                                             dom5.defaultChildNodes);
   for (const node of nodes) {
     for (const attr of constants.URL_ATTR) {
       const attrValue = dom5.getAttribute(node, attr);
       if (attrValue && !isTemplatedUrl(attrValue)) {
         let relUrl: string;
         if (attr === 'style') {
           relUrl =
               this._rewriteCssTextBaseUrl(attrValue, oldBaseUrl, newBaseUrl);
         } else {
           relUrl = rewriteHrefBaseUrl(attrValue, oldBaseUrl, newBaseUrl);
         }
         dom5.setAttribute(node, attr, relUrl);
       }
     }
   }
 }
開發者ID:Polymer,項目名稱:vulcanize,代碼行數:30,代碼來源:html-bundler.ts

示例4: _rewriteAstToEmulateBaseTag

 /**
  * Given an import document with a base tag, transform all of its URLs and
  * set link and form target attributes and remove the base tag.
  */
 private _rewriteAstToEmulateBaseTag(ast: ASTNode, docUrl: ResolvedUrl) {
   const baseTag = dom5.query(ast, matchers.base);
   const p = dom5.predicates;
   // If there's no base tag, there's nothing to do.
   if (!baseTag) {
     return;
   }
   for (const baseTag of dom5.queryAll(ast, matchers.base)) {
     removeElementAndNewline(baseTag);
   }
   if (dom5.predicates.hasAttr('href')(baseTag)) {
     const baseUrl = this.bundler.analyzer.urlResolver.resolve(
         docUrl, dom5.getAttribute(baseTag, 'href')! as FileRelativeUrl);
     if (baseUrl) {
       this._rewriteAstBaseUrl(ast, baseUrl, docUrl);
     }
   }
   if (p.hasAttr('target')(baseTag)) {
     const baseTarget = dom5.getAttribute(baseTag, 'target')!;
     const tagsToTarget = dom5.queryAll(
         ast,
         p.AND(
             p.OR(p.hasTagName('a'), p.hasTagName('form')),
             p.NOT(p.hasAttr('target'))));
     for (const tag of tagsToTarget) {
       dom5.setAttribute(tag, 'target', baseTarget);
     }
   }
 }
開發者ID:Polymer,項目名稱:vulcanize,代碼行數:33,代碼來源:html-bundler.ts

示例5: _addSharedImportsToShell

  _addSharedImportsToShell(bundles: Map<string, string[]>): string {
    console.assert(this.shell != null);
    let shellUrl = urlFromPath(this.root, this.shell);
    let shellUrlDir = posixPath.dirname(shellUrl);
    let shellDeps = bundles.get(shellUrl)
      .map((d) => posixPath.relative(shellUrlDir, d));
    logger.debug('found shell dependencies', {
      shellUrl: shellUrl,
      shellUrlDir: shellUrlDir,
      shellDeps: shellDeps,
    });

    let file = this.analyzer.getFile(this.shell);
    console.assert(file != null);
    let contents = file.contents.toString();
    let doc = dom5.parse(contents);
    let imports = dom5.queryAll(doc, dom5.predicates.AND(
      dom5.predicates.hasTagName('link'),
      dom5.predicates.hasAttrValue('rel', 'import')
    ));
    logger.debug('found html import elements', {
      imports: imports.map((el) => dom5.getAttribute(el, 'href')),
    });

    // Remove all imports that are in the shared deps list so that we prefer
    // the ordering or shared deps. Any imports left should be independent of
    // ordering of shared deps.
    let shellDepsSet = new Set(shellDeps);
    for (let _import of imports) {
      let importHref = dom5.getAttribute(_import, 'href');
      if (shellDepsSet.has(importHref)) {
        logger.debug(`removing duplicate import element "${importHref}"...`);
        dom5.remove(_import);
      }
    }

    // Append all shared imports to the end of <head>
    let head = dom5.query(doc, dom5.predicates.hasTagName('head'));
    for (let dep of shellDeps) {
      let newImport = dom5.constructors.element('link');
      dom5.setAttribute(newImport, 'rel', 'import');
      dom5.setAttribute(newImport, 'href', dep);
      dom5.append(head, newImport);
    }
    let newContents = dom5.serialize(doc);
    return newContents;
  }
開發者ID:augint,項目名稱:polymer-cli,代碼行數:47,代碼來源:bundle.ts

示例6: pullUpDeps

 pullUpDeps(
   file: File,
   deps: string[],
   type: 'import' | 'prefetch'
 ) {
   let contents = file.contents.toString();
   let ast = dom5.parse(contents);
   let head = dom5.query(ast, dom5.predicates.hasTagName('head'));
   for (let dep of deps) {
     if (dep.startsWith(this.root)) {
       dep = path.relative(file.dirname, dep);
     }
     // prefetched deps should be absolute, as they will be in the main file
     if (type === 'prefetch') {
       dep = path.join('/', dep);
     }
     let link = dom5.constructors.element('link');
     dom5.setAttribute(link, 'rel', type);
     dom5.setAttribute(link, 'href', dep);
     dom5.append(head, link);
   }
   contents = dom5.serialize(ast);
   file.contents = new Buffer(contents);
 }
開發者ID:NorthernLogic,項目名稱:polymer-cli,代碼行數:24,代碼來源:prefetch.ts

示例7: _setDomModuleAssetpaths

  /**
   * Set the assetpath attribute of all imported dom-modules which don't yet
   * have them if the base URLs are different.
   */
  private _setDomModuleAssetpaths(
      ast: ASTNode, oldBaseUrl: ResolvedUrl, newBaseUrl: ResolvedUrl) {
    const domModules = dom5.queryAll(ast, matchers.domModuleWithoutAssetpath);
    for (let i = 0, node: ASTNode; i < domModules.length; i++) {
      node = domModules[i];
      const assetPathUrl = this.bundler.analyzer.urlResolver.relative(
          newBaseUrl, stripUrlFileSearchAndHash(oldBaseUrl) as ResolvedUrl);

      // There's no reason to set an assetpath on a dom-module if its
      // different from the document's base.
      if (assetPathUrl !== '') {
        dom5.setAttribute(node, 'assetpath', assetPathUrl);
      }
    }
  }
開發者ID:Polymer,項目名稱:tools,代碼行數:19,代碼來源:html-bundler.ts

示例8: _updateExternalModuleScripts

 /**
  * Update the `src` attribute of external `type=module` script tags to point
  * at new bundle locations.
  */
 public async _updateExternalModuleScripts(ast: ASTNode) {
   const scripts = dom5.queryAll(ast, matchers.externalModuleScript);
   for (const script of scripts) {
     const oldSrc = dom5.getAttribute(script, 'src');
     const oldFileUrl = this.bundler.analyzer.urlResolver.resolve(
         this.assignedBundle.url, oldSrc as FileRelativeUrl);
     if (oldFileUrl === undefined) {
       continue;
     }
     const bundle = this.manifest.getBundleForFile(oldFileUrl);
     if (bundle === undefined) {
       continue;
     }
     const newFileUrl = bundle.url;
     const newSrc = this.bundler.analyzer.urlResolver.relative(
         this.assignedBundle.url, newFileUrl);
     dom5.setAttribute(script, 'src', newSrc);
   }
 }
開發者ID:Polymer,項目名稱:vulcanize,代碼行數:23,代碼來源:html-bundler.ts

示例9: _transformIter

  protected async *
      _transformIter(files: AsyncIterable<File>): AsyncIterable<File> {
    for await (const file of files) {
      if (file.path !== this.filePath) {
        yield file;
        continue;
      }

      const contents = await getFileContents(file);
      const parsed = parse5.parse(contents, {locationInfo: true});
      const base = dom5.query(parsed, baseMatcher);
      if (!base || dom5.getAttribute(base, 'href') === this.newHref) {
        yield file;
        continue;
      }

      dom5.setAttribute(base, 'href', this.newHref);
      dom5.removeFakeRootElements(parsed);
      const updatedFile = file.clone();
      updatedFile.contents = new Buffer(parse5.serialize(parsed), 'utf-8');
      yield updatedFile;
    }
  }
開發者ID:chrisekelley,項目名稱:polymer-build,代碼行數:23,代碼來源:base-tag-updater.ts

示例10: _updateExternalModuleScriptTags

 /**
  * Update the `src` attribute of external `type=module` script tags to point
  * at new bundle locations.
  */
 public async _updateExternalModuleScriptTags(ast: ASTNode) {
   const scripts = dom5.queryAll(ast, matchers.externalModuleScript);
   for (const script of scripts) {
     const oldSrc = dom5.getAttribute(script, 'src');
     const oldFileUrl = this.bundler.analyzer.urlResolver.resolve(
         this.document.parsedDocument.baseUrl, oldSrc as FileRelativeUrl);
     if (oldFileUrl === undefined) {
       continue;
     }
     const bundle = this.manifest.getBundleForFile(oldFileUrl);
     if (bundle === undefined) {
       continue;
     }
     // Do not rewrite the src if the current bundle is going to be the new
     // home of the code.
     if (bundle.url === this.assignedBundle.url) {
       continue;
     }
     const newFileUrl = bundle.url;
     const newSrc = this.bundler.analyzer.urlResolver.relative(
         this.assignedBundle.url, newFileUrl);
     dom5.setAttribute(script, 'src', newSrc);
   }
 }
開發者ID:Polymer,項目名稱:tools,代碼行數:28,代碼來源:html-bundler.ts


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