Перейти к содержимому

miner7

Пользователи
  • Публикации

    11
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем miner7


  1. Всем привет! Есть такая задача: на входе строка с экранированными управляющими символами: "Lorem ipsum \\n dolor sit amet", на выходе она должна быть такой "Lorem ipsum \n dolor sit amet". Как можно сделать это максимально компактно? Заранее благодарен)

    • Спасибо 1

  2.  

    where-is.thumb.jpg.7b9dc3fd417daa49714d351091f1acbd.jpg

      Привет, мир! Мой первый пост на этом форуме, и первый скрипт, хоть сколько-то дописанный до конца) Для интереса было решено написать небольшую утилиту поиска. Алгоритм простой: рекурсивно перебирать все файлы, начиная с рабочей директории; если найдено совпадение с запросом - добавить в таблицу результатов. Буду благодарен за любую конструктивную критику)

      Установка:

    Скрытый текст

    pastebin get 6WM5ufWE /bin/where-is.lua

      Код: 

    Скрытый текст
    
    local fs = require("filesystem")
    local shell = require("shell")
    
    local args, opts = shell.parse(...)
    local pwd = shell.getWorkingDirectory()
    
    if #args < 1 then
    	error("Not enough arguments")
    end
    
    if pwd ~= "/" then
    	pwd = pwd.."/"
    end
    
    
    Queue = {}
    Queue.__index = Queue
    
    function Queue:new(firstValue)
    	local obj = {firstValue, first = 1, last = 1}
    	setmetatable(obj, self)
    	return obj
    end
    
    function Queue:push(value)
    	local last = self.last + 1
    	self.last = last
    	self[last] = value
    end
    
    function Queue:shift()
    	local first = self.first
    	if first > self.last then error("queue is empty") end
    	local value = self[first]
    	self[first] = nil
    	self.first = first + 1
    	return value
    end
    
    
    local queue = Queue:new(pwd)
    local results = {}
    
    while queue.last >= queue.first do
    	local currentDir = queue:shift()
    	for file in fs.list(currentDir) do
    		local filePath = currentDir..file
    
    		if string.find(file, args[1]) then
    			results[#results+1] = filePath
    		end
    
    		if fs.isDirectory(filePath) and not string.find(file, "mnt") then
    			queue:push(filePath)
    		end
    	end	
    end
    
    print("Found " .. #results .. " file(s)")
    for i,v in ipairs(results) do
    	print(" - "..v)
    end

     

     

    • Нравится 4
    • Спасибо 1

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

×
×
  • Создать...