(node: t.Element | t.Template)
| 174 | * Creates a `CssSelector` from an AST node. |
| 175 | */ |
| 176 | export function createCssSelectorFromNode(node: t.Element | t.Template): CssSelector { |
| 177 | const elementName = node instanceof t.Element ? node.name : 'ng-template'; |
| 178 | const attributes = getAttrsForDirectiveMatching(node); |
| 179 | const cssSelector = new CssSelector(); |
| 180 | const elementNameNoNs = splitNsName(elementName)[1]; |
| 181 | |
| 182 | cssSelector.setElement(elementNameNoNs); |
| 183 | |
| 184 | Object.getOwnPropertyNames(attributes).forEach((name) => { |
| 185 | const nameNoNs = splitNsName(name)[1]; |
| 186 | const value = attributes[name]; |
| 187 | |
| 188 | cssSelector.addAttribute(nameNoNs, value); |
| 189 | if (name.toLowerCase() === 'class') { |
| 190 | const classes = value.trim().split(/\s+/); |
| 191 | classes.forEach((className) => cssSelector.addClassName(className)); |
| 192 | } |
| 193 | }); |
| 194 | |
| 195 | return cssSelector; |
| 196 | } |
| 197 | |
| 198 | /** |
| 199 | * Extract a map of properties to values for a given element or template node, which can be used |
no test coverage detected
searching dependent graphs…