-
Notifications
You must be signed in to change notification settings - Fork 0
/
pageutil.lua
50 lines (42 loc) · 1.33 KB
/
pageutil.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- ページの作成からdropまでの実際の操作を行う
local md5 = require "md5"
local lfs = require "lfs"
page = {}
local function exists(name)
if type(name) ~= "string" then return false end
return os.rename(name, name) and true or false
end
function cp(source, dest)
local fh = assert(io.open(source, "rb"))
local dfh = assert(io.open(dest, "wb"))
dfh:write(fh:read("a"))
io.close(fh)
io.close(dfh)
end
local function formatfilename(number, ext)
return string.format("%03d.%s", number, ext)
end
function page.create(number, template)
local path = formatfilename(number, info.template_ext)
cp(template, path)
return true
end
-- ページを下書きへ落とす
function page.drop(number)
-- id の生成
-- 時刻を用いて生成した乱数で乱数を生成する
math.randomseed(os.time())
math.randomseed(math.random(math.maxinteger))
local seed = math.random(math.maxinteger)
local m = md5.new()
m:update(tostring(number))
m:update(tostring(seed))
local id = md5.tohex(m:finish())
-- ディレクトリがあるかを調べる
if not exists(".drop") then
lfs.mkdir(".drop")
end
local originpath = formatfilename(number, info.template_ext)
os.rename(originpath, ".drop/" .. id .. "." .. info.template_ext)
return id
end