별 하나에 추억과 별 하나에 사랑과 별 하나에 쓸쓸함과 별 하나에 동경과 별 하나에 시와 별 하나에 어머니, 어머니, ...
파일 읽기
특정 경로에 있는 파일 목록을 읽는다.
1 2 3 4 5 6 7
local dir = os.getenv("HOME") .. "/.hammerspoon/text/ipsum/" local file_list = io.popen('ls -a "' .. dir .. '"') if file_list == nilthen return end ... file_list:close()
그중에서 .txt 파일만 찾는다. lines_from 함수를 호출하여 파일 내용을 가져온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
local obj = {} obj.text = ""
for file in file_list:lines() do local ext = file:sub(-4) if ext == ".txt"then if (#obj.text ~= 0) then obj.text = obj.text .. " " end
locallines = lines_from(dir .. file) obj.text = obj.text .. lines end end
localfunctionfile_exists(file) local f = io.open(file, "rb") if f then f:close() end return f ~= nil end
localfunctiontrim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end
localfunctionlines_from(file) ifnot file_exists(file) thenreturn""end locallines = "" for line inio.lines(file) do line = trim(line) if (#line ~= 0) then if (#lines ~= 0) then lines = lines .. " " end lines = lines .. line end end returnlines end
한글입숨 만들기
요청시 길이를 전달하여 원하는 길이의 문자열을 만든다.
기본 길이는 10으로 하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
functionutf8.sub(s, i, j) i = utf8.offset(s, i) j = utf8.offset(s, j + 1) - 1 returnstring.sub(s, i, j) end
functionobj:create(len) len = lenor10 local max_len = utf8.len(obj.text) local start = math.random(max_len - len) if (start < 0) then start = 0end local res = utf8.sub(obj.text, start, start + len) res = trim(res) return res end