Каковы некоторые методы для сушки макросов в Sweet.js?
Допустим, у меня есть эти два макроса, которые идентичны, за исключением имени макроса:
macro h1 {
case {$name ($x (,) ...)} => {
letstx $nameVal = [makeValue(unwrapSyntax(#{$name}), null)]
return #{React.createElement($nameVal, $x (,) ...)}
}
}
macro h2 {
case {$name ($x (,) ...)} => {
letstx $nameVal = [makeValue(unwrapSyntax(#{$name}), null)]
return #{React.createElement($nameVal, $x (,) ...)}
}
}
Какие у меня есть варианты повторного использования кода здесь? Могу ли я иметь макрос генерировать макрос?
или я мог бы минимально разместить часть тела (начиная с letstx...
) в собственном "внутреннем" макросе?:
1 ответ
Как насчет чего-то вроде:
macro make_header {
case {_ $name ($x (,) ...)} => {
letstx $nameVal = [makeValue(unwrapSyntax(#{$name}), null)]
return #{React.createElement($nameVal, $x (,) ...)}
}
}
macro h1 {
rule { ($x (,) ...) } => {
make_header h1 ($x (,) ...)
}
}
macro h2 {
rule { ($x (,) ...) } => {
make_header h2 ($x (,) ...)
}
}
h1 (1, 2, 3)
h2 (1, 2, 3)