diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/index.js b/index.js index 9ba2170..264cd16 100644 --- a/index.js +++ b/index.js @@ -30,10 +30,13 @@ const flatten = (file, store = { imported: new Set(), pragmas: [] }, depth = 0) }); if (depth === 0) { const solidityPragma = findPragmaVersion(store.pragmas, 'solidity'); - const experimentalPragma = findPragmaVersion(store.pragmas, 'experimental'); - if (experimentalPragma) { - contract = `pragma experimental "v${experimentalPragma}";\n${contract}`; - } + const experimentalPragmas = findExperimentalPragmas(store.pragmas); + + experimentalPragmas.forEach( + pragma => { + contract = `pragma experimental ${pragma};\n${contract}`; + } + ); if (solidityPragma) { contract = `pragma solidity ^${solidityPragma};\n${contract}`; } @@ -58,4 +61,13 @@ function findPragmaVersion(pragmas, name) { }, null); } +function findExperimentalPragmas(pragmas) { + return Array.from( + new Set(pragmas + .filter(pragma => pragma.name === 'experimental') + .map(pragma => pragma.value.replace(/("|')/g, '')) + ) + ); +} + module.exports = flatten;