本文整理匯總了TypeScript中dom5.predicates.hasAttr方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript predicates.hasAttr方法的具體用法?TypeScript predicates.hasAttr怎麽用?TypeScript predicates.hasAttr使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類dom5.predicates
的用法示例。
在下文中一共展示了predicates.hasAttr方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: parse
/**
* Parse html into ASTs.
*
* @param {string} htmlString an HTML document.
* @param {string} href is the path of the document.
*/
parse(
contents: string, url: ResolvedUrl, urlResolver: UrlResolver,
inlineInfo?: InlineDocInfo<any>): ParsedHtmlDocument {
const ast = parseHtml(contents, {locationInfo: true});
// There should be at most one <base> tag and it must be inside <head> tag.
const baseTag = query(
ast,
p.AND(
p.parentMatches(p.hasTagName('head')),
p.hasTagName('base'),
p.hasAttr('href')));
let baseUrl;
if (baseTag) {
const baseHref = getAttribute(baseTag, 'href')! as FileRelativeUrl;
baseUrl = urlResolver.resolve(baseHref, url, undefined);
} else {
baseUrl = url;
}
const isInline = !!inlineInfo;
inlineInfo = inlineInfo || {};
return new ParsedHtmlDocument({
url,
baseUrl,
contents,
ast,
locationOffset: inlineInfo.locationOffset,
astNode: inlineInfo.astNode,
isInline,
});
}
示例2: _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);
}
}
}
示例3: attributeSelectorToPredicate
function attributeSelectorToPredicate(selector: cssWhat.Attribute):
dom5.Predicate {
switch (selector.action) {
case 'exists':
return dom5.predicates.hasAttr(selector.name);
case 'equals':
return dom5.predicates.hasAttrValue(selector.name, selector.value);
case 'start':
return (el) => {
const attrValue = dom5.getAttribute(el, selector.name);
return attrValue != null && attrValue.startsWith(selector.value);
};
case 'end':
return (el) => {
const attrValue = dom5.getAttribute(el, selector.name);
return attrValue != null && attrValue.endsWith(selector.value);
};
case 'element':
return dom5.predicates.hasSpaceSeparatedAttrValue(
selector.name, selector.value);
case 'any':
return (el) => {
const attrValue = dom5.getAttribute(el, selector.name);
return attrValue != null && attrValue.includes(selector.value);
};
}
const never: never = selector.action;
throw new Error(
`Unexpected type of attribute matcher from CSS parser ${never}`);
}
示例4:
...constants.URL_ATTR.map((attr) => predicates.hasAttr(attr))),