PLY(lex/yacc) based AMPscript compiler to aide Salesforce Marketing Cloud local development and exprimentation. This tool runs in interpreter and compiler mode. In compiler mode, it takes an ampscript file as input and outputs JavaScript or Python.
- AMPscript interpreter and compiler
- JavaScript + AMPscript mixed blocks (%%[ ... ]%% inside
<script runat='server'>) - JavaScript to Python transpilation with:
- implicit string coercion for
+ .lengthtolen()conversion- object property access converted to dict access
console.*andWrite()mapped to ampfunctions
- implicit string coercion for
- AMPscript function library in
src/ampfunctions.pywith dynamic delegation
git clone https://github.com/beau32/amp.git
cd amp
pip3 install -r requirement.txt
python3 amp.py
python3 amp.py -l js -i codesample.ampscript > output.js
python3 amp.py -l py -i codesample.ampscript > output.py
python3 amp.py -l py -i codesample.ampscript | python3 -
codesample.ampscript: AMPscript onlycodesample_js.ampscript: JavaScript + AMPscriptcodesample_js_advanced.ampscript: advanced mixed exampletest_nested_if.ampscript: nested IF testtest_nested_set.ampscript: expression assignment test
- JavaScript object literals are converted to Python
dict(). - AMPscript variables use the
_ampsuffix in generated Python. - When transpiling JS to Python,
console.log/warn/error/infoandWrite()route toampfunctions.Write().