diff --git a/doc/assets/style.css b/doc/assets/style.css
index 1c7c920..82245c7 100644
--- a/doc/assets/style.css
+++ b/doc/assets/style.css
@@ -296,4 +296,10 @@ td.hljs-ln-numbers {
/* for block of code */
.hljs-ln td.hljs-ln-code {
padding-left: 10px;
+}
+
+model-viewer{
+ /*border: 1px solid #333f67;*/
+ width: 100%;
+ height: 350px;
}
\ No newline at end of file
diff --git a/doc/controllers/doccontroller.lua b/doc/controllers/doccontroller.lua
index 211597a..54235de 100644
--- a/doc/controllers/doccontroller.lua
+++ b/doc/controllers/doccontroller.lua
@@ -7,10 +7,12 @@ end
local pre_process_md = function(str, obj)
local content = str
- for capture in str:gmatch("(%[%[@book:image:.*%]%])") do
- local apath = capture:match("%[%[@book:image:(.*)%]%]")
+ for capture in str:gmatch("(%[%[@book:image:[^\n%]]*%]%])") do
+ local apath = capture:match("%[%[@book:image:([^\n%]]*)%]%]")
local pattern = capture:gsub("%[", "%%["):gsub("%]", "%%]")
if apath then
+ apath = apath:gsub(" ", "%%%%20")
+ print(apath)
content = str:gsub(pattern,
"![](" .. HTTP_ROOT .. "/" .. obj.name ..
"/asset/" .. apath .. ")")
@@ -19,6 +21,24 @@ local pre_process_md = function(str, obj)
return content
end
+local post_process_md = function(str, obj)
+ local content = str
+ local has_model = false
+ for capture in str:gmatch("(%[%[@book:3dmodel:[^\n%]]*%]%])") do
+ local apath = capture:match("%[%[@book:3dmodel:([^\n%]]*)%]%]")
+ local pattern = capture:gsub("%[", "%%["):gsub("%]", "%%]")
+ if apath then
+ --apath = utils.urlencode(apath):gsub("%%", "%%%%")
+ apath = apath:gsub(" ", "%%20")
+ content = str:gsub(pattern,
+ "")
+ has_model = true
+ end
+ end
+ return content, has_model
+end
function DocController:loadTOC()
local path = self.path_map.local_path .. "/meta.json"
local result = {error = false}
@@ -122,19 +142,19 @@ function DocController:index(...)
path = self.path_map.local_path .. "/INTRO.md"
end
if path and ulib.exists(path) then
+ local has_3d = false
local file = io.open(path, "r")
local content = ""
local md = require("md")
- local callback = function(s)
- content = content..s
- end
- md.to_html(file:read("*a"), callback)
+ local callback = function(s) content = content .. s end
+ md.to_html(pre_process_md(file:read("*a"), self), callback)
file.close()
+ content, has_3d = post_process_md(content, self)
-- replace some display plugins
- content = pre_process_md(content, self)
self.template:setView("index", "index")
self.template:set("data", content)
+ self.template:set("has_3d", has_3d)
else
self.template:setView("notfound", "index")
end
diff --git a/doc/router.lua b/doc/router.lua
index 953a75e..ab256b8 100644
--- a/doc/router.lua
+++ b/doc/router.lua
@@ -22,6 +22,8 @@ POST_LIMIT = 10
-- require needed library
require(BASE_FRW.."silk.api")
+POLICY.mimes["model/gltf-binary"] = true
+
if REQUEST.r then
REQUEST.r = REQUEST.r:gsub("%:", "/")
end
diff --git a/doc/views/default/layout.ls b/doc/views/default/layout.ls
index e2abf21..66a3826 100644
--- a/doc/views/default/layout.ls
+++ b/doc/views/default/layout.ls
@@ -1,6 +1,7 @@
@@ -13,10 +14,14 @@ local elinks = __main__:get("elinks")
rel="stylesheet"
type="text/css"
href="=HTTP_ROOT?>/rst/katex/katex.min.css" />
-
+
+
+
+
diff --git a/mimes.json b/mimes.json
index 7cc007c..f4fd73f 100644
--- a/mimes.json
+++ b/mimes.json
@@ -19,5 +19,9 @@
"wasm": {
"mime": "application/wasm",
"binary": true
+ },
+ "glb": {
+ "mime": "model/gltf-binary",
+ "binary": true
}
}
\ No newline at end of file