Page 1 of 4

Юникод в LuaFAR

Posted: Mon 01 Oct, 2012 15:16
by NightRoman
Из другой области вопрос есть. Встроенные строки в Луа юникодные?

Примечание модератора: http://lua-users.org/wiki/LuaUnicode

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Mon 01 Oct, 2012 15:28
by Shmuel
NightRoman wrote:Из другой области вопрос есть. Встроенные строки в Луа юникодные?
Строки в Lua не имеют атрибута кодовой страницы или юникодности. Это просто последовательность байтов, каждый из которых может быть и нулевым. То-есть Lua-строки могут содержать как текст в любой кодировке, так и бинарные данные.

Что же касается LuaFAR'а (а теперь и макросов), то нужно иметь в виду, что кодировка - UTF-8.
LuaFAR, используя встроенную библиотеку Selene Unicode, поддерживает операции с текстом в UTF-8.

Более подробно можно прочитать в мануалах Lua и LuaFAR.

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Mon 01 Oct, 2012 15:39
by Shmuel
Да, и теперь в макросах можно делать обработку текста регулярными выражениями, причём двух типов (Lua и фаровские).

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Mon 01 Oct, 2012 16:10
by Aidar
Shmuel wrote:...LuaFAR, используя встроенную библиотеку Selene Unicode, поддерживает операции с текстом в UTF-8...
Уточнение: Для этого вызовы стандартных функций обработки строк должны быть оформлены так:

Code: Select all

-- s - строка
s:len()
s:gsub(' ', '-')

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Mon 01 Oct, 2012 16:28
by Skirda
Aidar wrote:Уточнение: Для этого вызовы стандартных функций обработки строк должны быть оформлены так:

Code: Select all

-- s - строка
s:len()
s:gsub(' ', '-')
Означает ли это, что для строки, содержащей "нелатиницу" в макросах len(s) != s:len()?

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Mon 01 Oct, 2012 16:40
by Aidar
Skirda wrote:Означает ли это, что для строки, содержащей "нелатиницу" в макросах len(s) != s:len()?
Т.к. len - макро-функция, скорее всего, она реализована через функцию unicode.utf8.len.
Я имел в виду, что
string.len(s) != s:len()
unicode.utf8.len(s) == s:len()

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Mon 01 Oct, 2012 16:53
by Shmuel
Aidar, ты отвечаешь так, как будто спрашивающие уже имеют опыт на Lua.
Ответ простой: s:len() даст тот же результат, что и макрофункция mf.len(s).

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Posted: Fri 05 Oct, 2012 20:23
by SUSim
NightRoman, кстати, макрос на lua отлично справился запуском внешней проги без доступа к комстроке да и вообще без доступа к области shell.

из модального редактора я запустил копирование файла (бакап типа сделал) - lua команда os.execute.

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Posted: Fri 05 Oct, 2012 21:26
by Shmuel
SUSim wrote:из модального редактора я запустил копирование файла (бакап типа сделал) - lua команда os.execute.
У os.execute могут быть проблемы с юникодными именами (не пробовал, но подозреваю).
Для копирования лучше использовать win.CopyFile.

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Posted: Sat 06 Oct, 2012 08:59
by SUSim
тогда win.ShellExecute лучше os.execute?
почему то в Lua_5_1_Man.chm не нашел описание win библиотеки, дайте плиз ссылку на русском.

простой самоучитель LUA http://zserge.wordpress.com/2012/02/23/lua-за-60-минут/

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Posted: Sat 06 Oct, 2012 09:07
by Shmuel
SUSim wrote:тогда win.ShellExecute лучше os.execute?
почему то в Lua_5_1_Man.chm не нашел описание win библиотеки, дайте плиз ссылку на русском.
win.ShellExecute - не лучше и не хуже, но он юникодный.
Но для копирования файлов используйте win.CopyFile
Ссылка на мануал библиотеки LuaFAR (не на русском): https://github.com/shmuz/Spring/downloads

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Wed 10 Oct, 2012 18:15
by SUSim
string. в lua тоже не юникодные?
и шаблоны это как-то не регэкспы? хотя в фармакросах и такого не было :)



всё таки, раздел про обсуждение самого языка lua нужен!

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Wed 10 Oct, 2012 18:58
by Shmuel
SUSim wrote:string. в lua тоже не юникодные?
и шаблоны это как-то не регэкспы? хотя в фармакросах и такого не было :)
Эти вопросы уже задавались: http://forum.farmanager.com/viewtopic.p ... 381#p98381

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Wed 10 Oct, 2012 19:47
by SUSim
Shmuel wrote:Эти вопросы уже задавались: http://forum.farmanager.com/viewtopic.p ... 381#p98381
со вторым вопросом (про регэкспы) понятно!

а вот с первым не совсем... я спрашивал не про строки а про библиотеку string.

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Wed 10 Oct, 2012 19:49
by Aidar
SUSim wrote:... я спрашивал не про строки а про библиотеку string.
В LuaFAR string оставлена как есть в lua, для utf8 используется unicode.utf8.

Re: Spring — внедрение Lua в качестве макроязыка

Posted: Wed 10 Oct, 2012 20:30
by Shmuel
SUSim wrote:я спрашивал не про строки а про библиотеку string.
Библиотека string - не юникодная.
Если пользоваться двоеточием вместо точки - будут использоваться функции из unicode.utf8.

Примеры:

Code: Select all

string.sub(text,5,10) -- получить подстроку от 5 до 10 байта (длина = 6 байт)
text:sub(5,10)        -- получить подстроку от 5 до 10 символа (длина = 6 символов)
text = "Привет"
print(#text)            --> 12
print(string.len(text)) --> 12
print(text:len())       --> 6