Инструмент для преобразования кода в строку? - PullRequest
1 голос
/ 04 июля 2010

Я обнаружил, что должен преобразовать часть кода Lua в строку, чтобы он мог работать как правильный фрагмент Lua. Написание подобного кода не так уж сложно, но это отнимает много времени и подвержено незначительным ошибкам, которые приводят к потере времени на разработку и терпения.

Есть ли какой-нибудь инструмент / фильтр, способный взять кусок исполняемого кода и превратить его в правильную строку?

Если я не правильно объясняю себя (не носитель английского языка, мои извинения!), Я хочу найти инструмент, который превращает код как

MyFunction("String!")

в

"MyFunction(\"String!\")"

В данном примере это тривиально, но, говоря о нескольких строках кода, это довольно утомительно.

Я использую Linux в качестве основной ОС, возможно, есть какой-нибудь инструмент фильтрации? Решение на основе Lua было бы интересно и для развлечения.

Ответы [ 5 ]

6 голосов
/ 04 июля 2010

Вы можете просто обернуть код длинной строкой. Это должно быть просто независимо от метода, который вы используете для достижения этого:

myString = [==[
    for i = 1, 10 do
        print("Hello #"..i)
    end
]==]

Вы можете иметь сколько угодно знаков = (включая ни одного) между открывающими и закрывающими скобками, если они совпадают. Таким образом, вы обязательно получите символ «конец комментария», которого нет в прилагаемом исходном коде.

2 голосов
/ 04 июля 2010

Использование string.format("%q",s).

1 голос
/ 17 июля 2010

Вы можете сделать что-то подобное, однако результат будет читаться только через сам компилятор Lua.

string.dump(function() print("Hello world") end)

Запустить такой код, что вы можете сделать это

loadstring(string.dump(function() print("Hello world") end))()
1 голос
/ 04 июля 2010

IntelliJ делает это очень хорошо.

0 голосов
/ 04 июля 2010

Хотелось бы что-нибудь подобное?

sed 's/"/\\"/g;' join_string | tr '\n' '\a' | sed 's/\a/\\n/g' | more
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...