Удаление исходного чанка из возвращаемого значения string.dump - PullRequest
1 голос
/ 12 августа 2011

Я пытаюсь создать файл lua с закрытым исходным кодом, и для этого я беру на себя риск, что никто в здравом уме не собирается долго конвертировать (это какая-то форма сборки) независимо от того, string.dump возвращает.

Тем не менее, string.dump также имеет фрагмент строки, возвращенный с полным исходным кодом кода, сброшенного им. Независимо от того, что я делаю, я не могу создать автоматическое средство удаления исходного кода, которое удаляет исходный код из возвращенной строки. Кажется, он не передается как есть, я не знаю, удаляет ли это мой отступ , новые строки, пробелы или некоторые из них удаляются при определенных условиях или что.

Так в основном; скажи, что у меня было

local a = string.dump(function() print("Hello world") end)

a будет что-то вроде:

LuaQ (источник) (материал, который я хочу сохранить, заставляет его работать, я думаю)

Но я хочу удалить чанк источника, но string.find не найдет его, даже если я передам идентичный источник для поиска.

Если мне где-то неясно, скажите, пожалуйста.

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

Посмотрите на источник LuaC . Я полагаю, что вы видите только отладочную информацию, и у LuaC есть возможность убрать отладочную информацию из сгенерированного байт-кода. Вы могли бы взглянуть на то, как это происходит.

Тем не менее, строковые литералы всегда будут видны в байт-коде вашей программы, поскольку Lua сохраняет их в виде простого текста в байт-коде.

2 голосов
/ 13 августа 2011

После a=string.dump(function() print("Hello world") end), a содержит не исходный код функции. Он содержит строку в функции. хоть. Тем не менее, вы, вероятно, используете loadstring, и по умолчанию в качестве имени фрагмента добавляются полные строки. Попробуйте loadstring(source,"=") вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...