UNPKG

@riotjs/compiler

Version:

Compiler for Riot.js .riot files

57 lines (49 loc) 1.5 kB
import { EACH_DIRECTIVE, IF_DIRECTIVE, IS_DIRECTIVE, KEY_ATTRIBUTE, } from './constants.js' import { getName, getNodeAttributes } from './utils.js' import { hasExpressions } from './checks.js' /** * Find the attribute node * @param { string } name - name of the attribute we want to find * @param { riotParser.nodeTypes.TAG } node - a tag node * @returns { riotParser.nodeTypes.ATTR } attribute node */ export function findAttribute(name, node) { return ( node.attributes && node.attributes.find((attr) => getName(attr) === name) ) } export function findIfAttribute(node) { return findAttribute(IF_DIRECTIVE, node) } export function findEachAttribute(node) { return findAttribute(EACH_DIRECTIVE, node) } export function findKeyAttribute(node) { return findAttribute(KEY_ATTRIBUTE, node) } export function findIsAttribute(node) { return findAttribute(IS_DIRECTIVE, node) } /** * Find all the node attributes that are not expressions * @param {RiotParser.Node} node - riot parser node * @returns {Array} list of all the static attributes */ export function findStaticAttributes(node) { return getNodeAttributes(node).filter( (attribute) => !hasExpressions(attribute), ) } /** * Find all the node attributes that have expressions * @param {RiotParser.Node} node - riot parser node * @returns {Array} list of all the dynamic attributes */ export function findDynamicAttributes(node) { return getNodeAttributes(node).filter(hasExpressions) }