react-sourcerer
This project allows you to express code patterns in the form of React components.
This is a very experimental project. Currently, this project is under heavy development but a lot can be understood from the tests.
Example
For example the following will match code that:
- Imports from 'lodash'
- Calls forEach on any identifier imported from lodash.
<Import
source='lodash'
>
{imports =>
<MemberExpression
name='forEach'
target={getIdentifiersFromImport(imports)}
>
{(matches) =>
matches.length > 0
? <UseES2015Each />
: null}
</MemberExpression>
}
</Import>
Of course the patterns can be as sophisticated as you'd like them to be, and because React is awesome you can even observe changes in the code (componentDidUpdate).