$('#' + elementId + ' .point')
нужно в функции, иначе будет чужие точки трогать. var info1 = info;
имеет смысл перед подключением карт сделать var mapsData = [];
, а потом после подключения скриптов карт mapsData.push(info);
. Ну и в инициализации сделать mapsData.forEach(function(x, i) { $(document.body).append($('<div>').attr('id', 'map' + i)); showMap('map' + i, x) });
Николай Петренко: нельзя «просто обернуть if statement в скобки». По крайней мере регулярным выражением сделать это будет крайне сложно и вряд ли опишет все возможные случаи.
Если сделать простую замену, то когда-нибудь окажется, то такую же конструкцию можно написать, например, в строке. И ваш преобразователь заменит её в строке, что приведёт не к желаемому результату.
В CoffeScript всё не так просто, там для блоков используются пробелы. Что чуть более нетривиальнее, чем разделители точкозапятой и фигурными скобками.
Вам придётся писать синтаксис, который сможет корректно распознавать случаи, которые вы хотите изменить, а так же корректно распознавать случаи javascript'а, в которых вы не хотите ничего изменять.
Вам придётся описать где-то четверть-половину синтаксиса javascript'а, чтобы просто корректно вставлять скобки у if'а и делать блоки фигурными скобками вместо индентаций. Ну и как будете расширять изменения синтаксиса — захватите и вторую половину javascript'а.
Так что да, вам таки нужен свой lexer/parser. Возьмите какой-нибудь из них и разберитесь, как описывать свои грамматики. А затем опишите такую, которая была бы совместима с javascript'ом, но вводила свои правила/изменяла некоторые из них.