Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function trim(s)
- return s:match "^%s*(.-)%s*$"
- end
- function parseMD(mdStr)
- local mdTable = {parent=mdTable}
- local mdLevel = 0
- local curObj = mdTable
- for line in mdStr:gmatch("[^\r\n]+") do
- local trimmedLine = trim(line):lower()
- local part,name = trimmedLine:match("([^%s]+)%s+(.*)")
- local partType,partLevel = part:sub(1,1),#part
- if partType == "#" then
- if partLevel < mdLevel then
- while partLevel < mdLevel do
- curObj = curObj.parent
- mdLevel = mdLevel - 1
- end
- end
- if partLevel == mdLevel then
- curObj.parent[name] = {parent=curObj.parent}
- curObj = curObj.parent[name]
- elseif partLevel > mdLevel then
- curObj[name] = {parent=curObj}
- curObj = curObj[name]
- mdLevel = mdLevel + 1
- end
- elseif partType == "*" then
- local amount,partName = name:match("(%d+)%sx%s(.*)")
- curObj[partName] = amount
- end
- end
- --[[
- local f = fs.open("out","w")
- local ser
- ser = function(t)
- local s = "{"
- for k,v in pairs(t) do
- if k ~= "parent" then
- if type(v) == "table" then
- s= s .. "[\""..k.."\"]="..ser(v)..","
- else
- s = s.."[\""..k.."\"]="..v..","
- end
- end
- end
- return s.."}"
- end
- f.write(ser(mdTable))
- f.close()--]]
- return mdTable
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement