Size: a a a

2020 July 09

S

Snusmumriken in pro.lua
"Wait, forgot to escape a space. Wheeeee[taptaptap]eeeee"
источник

S

Snusmumriken in pro.lua
захар который
это не типичные задачи?
Это типичные задачи, но слишком общие. Писать под них библиотеку нерационально, проще ручками наговнякать однострочники, как это я и сделал. Регулярки — не просто так существуют.
источник

S

Snusmumriken in pro.lua
Библиотека для этого — всё равно что npm-пакет для отбивки пробелами строк, чтобы они были фиксированной длины. Ах да. https://habr.com/ru/post/280099/
источник

IB

Ivan Bessarabov in pro.lua
Snusmumriken
"Wait, forgot to escape a space. Wheeeee[taptaptap]eeeee"
обычно пробел не нужно эскепить
источник

S

Snusmumriken in pro.lua
Это текст из оригинального стрипа xkcd, если мышку навести на картинку на оф сайте. Типа, скрытые от взгляда дополнительные смехуёчки.
источник

S

Snusmumriken in pro.lua
Snusmumriken
Библиотека для этого — всё равно что npm-пакет для отбивки пробелами строк, чтобы они были фиксированной длины. Ах да. https://habr.com/ru/post/280099/
Каеф
источник

LL

Lämppi Lütti in pro.lua
Snusmumriken
Библиотека для этого — всё равно что npm-пакет для отбивки пробелами строк, чтобы они были фиксированной длины. Ах да. https://habr.com/ru/post/280099/
источник

S

Snusmumriken in pro.lua
Тут не так много звёзд, зато целых 11 форков.
источник

LL

Lämppi Lütti in pro.lua
А, там есть мой любимый
источник

D

Dika in pro.lua
Snusmumriken
Каеф
источник

S

Snusmumriken in pro.lua
Ну в общем, для общих задач в луях есть общие решения ))
А для конкретных — берём общие и делаем конкретные.

Надо кстати переписать питоновую либу path, она хороша и нормально работает с кучей осей. Пути, на самом деле, та ещё морока, особенно если делать кроссплатформу.
Я конечно написал сейчас регулярочку, но она весьма узкоспециализированная.
источник

зк

захар который... in pro.lua
Snusmumriken
— преобразовать все имена файлов в нижний регистр;
lower работает только для латиницы.
local dir, file, fmt = path:match("(.*/)(.*)(%..*)"):lower()

— заменить пробелы на нижнее подчёркивание;
file = file:gsub("%s+", "_")

— взять из прежнего имени диапазон символов (например, только символы с 3-го по 13-й);
Если есть не-ascii — придётся подгрести либу utf8.
file = file:sub(3, 13)

— исключить определённые слова из имени (например если встречаются слова «orange», «green», «cyan»);
list = {orange = "", green = "", cyan = ""}
file = file:gsub("%w+", list)

— добавить к имени слово;
file = file .. "_myword"

— определить настоящее расширение (если файл подписан как *.bmp, когда на самом деле он является *.tiff);
Никак. Точнее через задницу, анализировать содержимое файла по сигнатурам.

— добавить в конец имени дату (в формате: год_месяц_день час-минута-секунда);
file = file .. "_" .. os.date("%y_%m_%d %H-%M-%S", os.time())

— добавить в конец имени счётчик.
file = file .. i

os.rename(path, dir .. file .. fmt)
Что-то я видимо не так записываю, ничего не работает.

Файловый менеджер передаёт скрипту в параметрах пути к файлам — params[1].

Если я делаю так:

local params = {...};

local dt = os.date('%y%m%d')
local p = SysUtils.ExtractFilePath(params[1])
local e = SysUtils.ExtractFileExt(params[1])
local n = SysUtils.ExtractFileName(params[1])
n = string.sub(n, 1, string.len(n) - string.len(e))

os.rename(params[1], n .. dt .. e);

то как и задумано добавляется дата.
источник

зк

захар который... in pro.lua
но если пытаюсь использовать твой пример для удаления пробелов:

local params = {...};

local n = SysUtils.ExtractFileName(params[1])
n = string.sub(n, 1, string.len(n) - string.len(e))

local file = n:gsub("%s+", "_")

os.rename(params[1], file .. e);

то ничего не происходит.
источник

зк

захар который... in pro.lua
Где я делаю неправильно?
источник
2020 July 10

S

Snusmumriken in pro.lua
захар который
но если пытаюсь использовать твой пример для удаления пробелов:

local params = {...};

local n = SysUtils.ExtractFileName(params[1])
n = string.sub(n, 1, string.len(n) - string.len(e))

local file = n:gsub("%s+", "_")

os.rename(params[1], file .. e);

то ничего не происходит.
А путь до директории ты куда дел? Используй абсолютные пути когда это возможно.

Первое что ты должен сделать прежде чем задавать вопросы — вывести содержимое params[1] и file .. e. Посмотреть, что ты переименовываешь и во что. Я ведь не гадалка, и ты тоже.

Если нет print'а для отладки — записывай в лог-файл, или если есть — посмотри аналог MsgBox.
источник

S

Snusmumriken in pro.lua
Вдобавок, os.rename возвращает два аргумента: success и error_text. Их тоже можно вывести ))
источник

зк

захар который... in pro.lua
Snusmumriken
А путь до директории ты куда дел? Используй абсолютные пути когда это возможно.

Первое что ты должен сделать прежде чем задавать вопросы — вывести содержимое params[1] и file .. e. Посмотреть, что ты переименовываешь и во что. Я ведь не гадалка, и ты тоже.

Если нет print'а для отладки — записывай в лог-файл, или если есть — посмотри аналог MsgBox.
В params[1] файловый менеджер передаёт через параметры полный путь к выделенным файлам (т. е. переменное значение).

file .. e

.. e
 — это расширение, а вот file — я не знаю.  Думал это внутренняя функция какая-то.  Что он должен в себе содержать?

Я там в приведённых примерах вывел вообще весь код.  Т. е. это не фрагмент.
источник

S

Snusmumriken in pro.lua
Нет.
источник

S

Snusmumriken in pro.lua
"вывести содержимое " — имеется ввиду не "описание того что делает код", это и так все знают, а что там конкретно в строке. Что будет если это вывести print'ом или аналогом.
источник

S

Snusmumriken in pro.lua
В этой твоей фиговине есть print? Если нет — см
"Если нет print'а для отладки — записывай в лог-файл, или если есть — посмотри аналог MsgBox"
источник