30 lines
900 B
JavaScript
30 lines
900 B
JavaScript
// this is a fake version of emotion
|
|
// const printAST = require('ast-pretty-print')
|
|
const {createMacro} = require('../../')
|
|
|
|
module.exports = createMacro(emotionMacro)
|
|
|
|
function emotionMacro({references, babel}) {
|
|
const {types: t} = babel
|
|
references.css.forEach(cssRef => {
|
|
if (cssRef.parentPath.type === 'TaggedTemplateExpression') {
|
|
cssRef.parentPath.replaceWith(
|
|
t.stringLiteral(
|
|
cssRef.parentPath
|
|
.get('quasi')
|
|
.evaluate()
|
|
.value.trim(),
|
|
),
|
|
)
|
|
}
|
|
})
|
|
references.styled.forEach(styledRef => {
|
|
if (styledRef.parentPath.parentPath.type === 'TaggedTemplateExpression') {
|
|
const quasi = styledRef.parentPath.parentPath.get('quasi')
|
|
const val = quasi.evaluate().value.trim()
|
|
const replacement = t.templateLiteral([t.templateElement(val)], [])
|
|
quasi.replaceWith(replacement)
|
|
}
|
|
})
|
|
}
|