Просмотр исходного кода

fix: encoding special chars for file paths

Tienson Qin 3 лет назад
Родитель
Сommit
b4f7d93c5b

+ 1 - 1
src/main/frontend/handler/extract.cljs

@@ -32,7 +32,7 @@
             file-name (when-let [file-name (last (string/split file #"/"))]
                         (let [result (first (gp-util/split-last "." file-name))]
                           (if (config/mldoc-support? (string/lower-case (util/get-file-ext file)))
-                            (string/replace result "." "/")
+                            (util/url-decode (string/replace result "." "/"))
                             result)))]
         (or property-name
             (if (= (state/page-name-order) "heading")

+ 4 - 1
src/main/frontend/modules/file/core.cljs

@@ -31,7 +31,10 @@
   [{:block/keys [collapsed? format pre-block? unordered content heading-level left page parent properties]} level {:keys [heading-to-list?]}]
   (let [content (or content "")
         first-block? (= left page)
-        pre-block? (and first-block? pre-block?)
+        pre-block? (or pre-block?
+                       (and (= page parent left) ; first block
+                            (= :markdown format)
+                            (string/includes? (first (string/split-lines content)) ":: ")))
         markdown? (= format :markdown)
         content (cond
                   pre-block?

+ 6 - 5
src/main/frontend/util.cljc

@@ -936,7 +936,7 @@
                       (remove-boundary-slashes)
                       (normalize))]
      (if replace-slash?
-       (string/replace page #"/" ".")
+       (string/replace page #"/" "%2A")
        page))))
 
 (defn file-name-sanity
@@ -944,11 +944,12 @@
   [page-name]
   (some-> page-name
           page-name-sanity
-          ;; Windows reserved path characters
-          (string/replace windows-reserved-chars "_")
           ;; for android filesystem compatiblity
-          (string/replace #"[\\#|%]+" "_")
-          (string/replace #"/" ".")))
+          (string/replace #"[\\#|%]+" url-encode)
+          ;; Windows reserved path characters
+          (string/replace windows-reserved-chars url-encode)
+          (string/replace #"/" url-encode)
+          (string/replace "*" "%2A")))
 
 (defn page-name-sanity-lc
   "Sanitize the query string for a page name (mandate for :block/name)"