mirror of https://github.com/logseq/logseq
Decouple graph-parser util from app util usage
For tiny util heavily used fns like safe-re-find and uuid-string?, decouple graph-parser from so much of the apppull/5299/head
parent
b9bbd0c605
commit
5b0d5fb8b5
|
@ -517,7 +517,7 @@
|
|||
|
||||
(defn compute-pos-delta-when-change-marker
|
||||
[edit-content marker pos]
|
||||
(let [old-marker (some->> (first (gp-util/safe-re-find marker/bare-marker-pattern edit-content))
|
||||
(let [old-marker (some->> (first (util/safe-re-find marker/bare-marker-pattern edit-content))
|
||||
(string/trim))
|
||||
pos-delta (- (count marker)
|
||||
(count old-marker))
|
||||
|
@ -542,7 +542,7 @@
|
|||
(if-let [matches (seq (util/re-pos new-line-re-pattern prefix))]
|
||||
(let [[start-pos content] (last matches)]
|
||||
(+ start-pos (count content)))
|
||||
(count (gp-util/safe-re-find re-pattern prefix))))
|
||||
(count (util/safe-re-find re-pattern prefix))))
|
||||
new-value (str (subs edit-content 0 pos)
|
||||
(string/replace-first (subs edit-content pos)
|
||||
(marker/marker-pattern format)
|
||||
|
@ -583,7 +583,7 @@
|
|||
(let [edit-content (gobj/get current-input "value")
|
||||
heading-pattern #"^#+\s+"
|
||||
new-value (cond
|
||||
(gp-util/safe-re-find heading-pattern edit-content)
|
||||
(util/safe-re-find heading-pattern edit-content)
|
||||
(string/replace-first edit-content
|
||||
heading-pattern
|
||||
(str heading " "))
|
||||
|
|
|
@ -683,7 +683,7 @@
|
|||
[config id label]
|
||||
(when (and
|
||||
(not (string/blank? id))
|
||||
(gp-util/uuid-string? id))
|
||||
(util/uuid-string? id))
|
||||
(let [block-id (uuid id)
|
||||
block (db/pull-block block-id)
|
||||
block-type (keyword (get-in block [:block/properties :ls-type]))
|
||||
|
@ -961,7 +961,7 @@
|
|||
(= "Complex" protocol)
|
||||
(= (string/lower-case (:protocol path)) "id")
|
||||
(string? (:link path))
|
||||
(gp-util/uuid-string? (:link path))) ; org mode id
|
||||
(util/uuid-string? (:link path))) ; org mode id
|
||||
(let [id (uuid (:link path))
|
||||
block (db/entity [:block/uuid id])]
|
||||
(if (:block/pre-block? block)
|
||||
|
@ -1077,7 +1077,7 @@
|
|||
string/trim)]
|
||||
(when-let [id (and s
|
||||
(let [s (string/trim s)]
|
||||
(and (gp-util/uuid-string? s)
|
||||
(and (util/uuid-string? s)
|
||||
(uuid s))))]
|
||||
(block-embed (assoc config :link-depth (inc link-depth)) id)))
|
||||
|
||||
|
@ -1088,7 +1088,7 @@
|
|||
[_config arguments]
|
||||
(when-let [url (first arguments)]
|
||||
(let [Vimeo-regex #"^((?:https?:)?//)?((?:www).)?((?:player.vimeo.com|vimeo.com)?)((?:/video/)?)([\w-]+)(\S+)?$"]
|
||||
(when-let [vimeo-id (nth (gp-util/safe-re-find Vimeo-regex url) 5)]
|
||||
(when-let [vimeo-id (nth (util/safe-re-find Vimeo-regex url) 5)]
|
||||
(when-not (string/blank? vimeo-id)
|
||||
(let [width (min (- (util/get-width) 96)
|
||||
560)
|
||||
|
@ -1109,7 +1109,7 @@
|
|||
(when-let [id (cond
|
||||
(<= (count url) 15) url
|
||||
:else
|
||||
(last (gp-util/safe-re-find id-regex url)))]
|
||||
(last (util/safe-re-find id-regex url)))]
|
||||
(when-not (string/blank? id)
|
||||
(let [width (min (- (util/get-width) 96)
|
||||
560)
|
||||
|
@ -1239,7 +1239,7 @@
|
|||
(when-let [youtube-id (cond
|
||||
(== 11 (count url)) url
|
||||
:else
|
||||
(nth (gp-util/safe-re-find YouTube-regex url) 5))]
|
||||
(nth (util/safe-re-find YouTube-regex url) 5))]
|
||||
(when-not (string/blank? youtube-id)
|
||||
(youtube/youtube-video youtube-id)))))
|
||||
|
||||
|
@ -1270,7 +1270,7 @@
|
|||
(when-let [id (cond
|
||||
(<= (count url) 15) url
|
||||
:else
|
||||
(last (gp-util/safe-re-find id-regex url)))]
|
||||
(last (util/safe-re-find id-regex url)))]
|
||||
(ui/tweet-embed id))))
|
||||
|
||||
(= name "embed")
|
||||
|
@ -2858,7 +2858,7 @@
|
|||
|
||||
["Paragraph" l]
|
||||
;; TODO: speedup
|
||||
(if (gp-util/safe-re-find #"\"Export_Snippet\" \"embed\"" (str l))
|
||||
(if (util/safe-re-find #"\"Export_Snippet\" \"embed\"" (str l))
|
||||
(->elem :div (map-inline config l))
|
||||
(->elem :div.is-paragraph (map-inline config l)))
|
||||
|
||||
|
|
|
@ -363,7 +363,7 @@
|
|||
e
|
||||
(custom-context-menu-content))
|
||||
|
||||
(and block-id (gp-util/uuid-string? block-id))
|
||||
(and block-id (util/uuid-string? block-id))
|
||||
(let [block (.closest target ".ls-block")]
|
||||
(when block
|
||||
(util/select-highlight! [block]))
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
(when page-e
|
||||
(let [page-name (or (:block/name page-e)
|
||||
(str (:block/uuid page-e)))
|
||||
block? (gp-util/uuid-string? page-name)
|
||||
block? (util/uuid-string? page-name)
|
||||
block-id (and block? (uuid page-name))
|
||||
page-blocks (get-blocks repo page-name block-id)]
|
||||
(if (empty? page-blocks)
|
||||
|
@ -317,7 +317,7 @@
|
|||
(let [current-repo (state/sub :git/current-repo)
|
||||
repo (or repo current-repo)
|
||||
page-name (util/page-name-sanity-lc path-page-name)
|
||||
block? (gp-util/uuid-string? page-name)
|
||||
block? (util/uuid-string? page-name)
|
||||
block-id (and block? (uuid page-name))
|
||||
format (let [page (if block-id
|
||||
(:block/name (:block/page (db/entity [:block/uuid block-id])))
|
||||
|
@ -640,7 +640,7 @@
|
|||
(date/today))
|
||||
theme (:ui/theme @state/state)
|
||||
dark? (= theme "dark")
|
||||
graph (if (gp-util/uuid-string? page)
|
||||
graph (if (util/uuid-string? page)
|
||||
(graph-handler/build-block-graph (uuid page) theme)
|
||||
(graph-handler/build-page-graph page theme))]
|
||||
(when (seq (:nodes graph))
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
[frontend.handler.shell :as shell]
|
||||
[frontend.handler.plugin :as plugin-handler]
|
||||
[frontend.mobile.util :as mobile-util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[electron.ipc :as ipc]
|
||||
[frontend.config :as config]
|
||||
[frontend.handler.user :as user-handler]
|
||||
|
@ -64,7 +63,7 @@
|
|||
repo (state/sub :git/current-repo)
|
||||
page (db/entity repo [:block/name page-name])
|
||||
page-original-name (:block/original-name page)
|
||||
block? (and page (gp-util/uuid-string? page-name))
|
||||
block? (and page (util/uuid-string? page-name))
|
||||
contents? (= page-name "contents")
|
||||
properties (:block/properties page)
|
||||
public? (true? (:public properties))
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
[frontend.state :as state]
|
||||
[frontend.ui :as ui]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[medley.core :as medley]
|
||||
[rum.core :as rum]))
|
||||
|
||||
|
@ -83,7 +82,7 @@
|
|||
default-collapsed? (>= (count refed-blocks-ids) threshold)
|
||||
filters-atom (get state ::filters)
|
||||
filter-state (rum/react filters-atom)
|
||||
block? (gp-util/uuid-string? page-name)
|
||||
block? (util/uuid-string? page-name)
|
||||
block-id (and block? (uuid page-name))
|
||||
page-name (string/lower-case page-name)
|
||||
journal? (date/valid-journal-title? (string/capitalize page-name))
|
||||
|
@ -170,7 +169,7 @@
|
|||
(ui/catch-error
|
||||
(ui/component-error "Linked References: Unexpected error")
|
||||
(ui/lazy-visible
|
||||
(if (or sidebar? (gp-util/uuid-string? page-name))
|
||||
(if (or sidebar? (util/uuid-string? page-name))
|
||||
nil
|
||||
"loading references...")
|
||||
(fn []
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
[clojure.string :as string]
|
||||
[frontend.context.i18n :refer [t]]
|
||||
[frontend.date :as date]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[reitit.frontend.easy :as rfe]
|
||||
[frontend.modules.shortcut.core :as shortcut]))
|
||||
|
||||
|
@ -33,7 +32,7 @@
|
|||
lc-content (util/search-normalize content)
|
||||
lc-q (util/search-normalize q)]
|
||||
(if (and (string/includes? lc-content lc-q)
|
||||
(not (gp-util/safe-re-find #" " q)))
|
||||
(not (util/safe-re-find #" " q)))
|
||||
(let [i (string/index-of lc-content lc-q)
|
||||
[before after] [(subs content 0 i) (subs content (+ i (count q)))]]
|
||||
[:div
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
|
||||
(def mobile?
|
||||
(when-not util/node-test?
|
||||
(gp-util/safe-re-find #"Mobi" js/navigator.userAgent)))
|
||||
(util/safe-re-find #"Mobi" js/navigator.userAgent)))
|
||||
|
||||
;; TODO: protocol design for future formats support
|
||||
|
||||
|
|
|
@ -912,7 +912,7 @@
|
|||
|
||||
(defn get-page
|
||||
[page-name]
|
||||
(if (gp-util/uuid-string? page-name)
|
||||
(if (util/uuid-string? page-name)
|
||||
(db-utils/entity [:block/uuid (uuid page-name)])
|
||||
(db-utils/entity [:block/name (util/page-name-sanity-lc page-name)])))
|
||||
|
||||
|
@ -1221,7 +1221,7 @@
|
|||
|
||||
(defn get-referenced-blocks-ids
|
||||
[page-name-or-block-uuid]
|
||||
(if (gp-util/uuid-string? (str page-name-or-block-uuid))
|
||||
(if (util/uuid-string? (str page-name-or-block-uuid))
|
||||
(let [id (uuid page-name-or-block-uuid)]
|
||||
(get-block-referenced-blocks-ids id))
|
||||
(get-page-referenced-blocks-ids page-name-or-block-uuid)))
|
||||
|
|
|
@ -14,8 +14,7 @@
|
|||
[frontend.db.rules :as rules]
|
||||
[frontend.template :as template]
|
||||
[logseq.graph-parser.text :as text]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]))
|
||||
[frontend.util :as util]))
|
||||
|
||||
|
||||
;; Query fields:
|
||||
|
@ -449,7 +448,7 @@ Some bindings in this fn:
|
|||
(remove string/blank?)
|
||||
(map (fn [x]
|
||||
(if (or (contains? #{"+" "-"} (first x))
|
||||
(and (gp-util/safe-re-find #"\d" (first x))
|
||||
(and (util/safe-re-find #"\d" (first x))
|
||||
(some #(string/ends-with? x %) ["y" "m" "d" "h" "min"])))
|
||||
(keyword (name x))
|
||||
x)))
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
[frontend.state :as state]
|
||||
[logseq.graph-parser.text :as text]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[lambdaisland.glogi :as log]))
|
||||
|
||||
(defn resolve-input
|
||||
|
@ -32,12 +31,12 @@
|
|||
;; This sometimes runs when there isn't a current page e.g. :home route
|
||||
(some-> (state/get-current-page) string/lower-case)
|
||||
(and (keyword? input)
|
||||
(gp-util/safe-re-find #"^\d+d(-before)?$" (name input)))
|
||||
(util/safe-re-find #"^\d+d(-before)?$" (name input)))
|
||||
(let [input (name input)
|
||||
days (util/parse-int (subs input 0 (dec (count input))))]
|
||||
(date->int (t/minus (t/today) (t/days days))))
|
||||
(and (keyword? input)
|
||||
(gp-util/safe-re-find #"^\d+d(-after)?$" (name input)))
|
||||
(util/safe-re-find #"^\d+d(-after)?$" (name input)))
|
||||
(let [input (name input)
|
||||
days (util/parse-int (subs input 0 (dec (count input))))]
|
||||
(date->int (t/plus (t/today) (t/days days))))
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
[frontend.db.utils :as db-utils]
|
||||
[frontend.state :as state]
|
||||
[frontend.util :as util :refer [react]]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[cljs.spec.alpha :as s]
|
||||
[clojure.core.async :as async]))
|
||||
|
||||
|
@ -230,7 +229,7 @@
|
|||
affected-keys (concat
|
||||
(mapcat
|
||||
(fn [block-id]
|
||||
(let [block-id (if (and (string? block-id) (gp-util/uuid-string? block-id))
|
||||
(let [block-id (if (and (string? block-id) (util/uuid-string? block-id))
|
||||
[:block/uuid block-id]
|
||||
block-id)]
|
||||
(when-let [block (db-utils/entity block-id)]
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
[clojure.walk :as walk]
|
||||
[frontend.config :as config]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[hickory.core :as hickory]))
|
||||
|
||||
(defonce *inside-pre? (atom false))
|
||||
|
@ -75,7 +74,7 @@
|
|||
:h6 (block-transform 6 children)
|
||||
:a (let [href (:href attrs)
|
||||
label (map-join children)
|
||||
has-img-tag? (gp-util/safe-re-find #"\[:img" (str x))]
|
||||
has-img-tag? (util/safe-re-find #"\[:img" (str x))]
|
||||
(if has-img-tag?
|
||||
(export-hiccup x)
|
||||
(case format
|
||||
|
|
|
@ -257,7 +257,7 @@
|
|||
(defn- another-block-with-same-id-exists?
|
||||
[current-id block-id]
|
||||
(and (string? block-id)
|
||||
(gp-util/uuid-string? block-id)
|
||||
(util/uuid-string? block-id)
|
||||
(not= current-id (cljs.core/uuid block-id))
|
||||
(db/entity [:block/uuid (cljs.core/uuid block-id)])))
|
||||
|
||||
|
@ -338,7 +338,7 @@
|
|||
(if (and (state/enable-timetracking?)
|
||||
(not= (:block/content block) value))
|
||||
(let [format (:block/format block)
|
||||
new-marker (last (gp-util/safe-re-find (marker/marker-pattern format) (or value "")))
|
||||
new-marker (last (util/safe-re-find (marker/marker-pattern format) (or value "")))
|
||||
new-value (with-marker-time value block format
|
||||
new-marker
|
||||
(:block/marker block))]
|
||||
|
@ -483,10 +483,10 @@
|
|||
(let [current-page (state/get-current-page)
|
||||
block-id (or
|
||||
(and (:id config)
|
||||
(gp-util/uuid-string? (:id config))
|
||||
(util/uuid-string? (:id config))
|
||||
(:id config))
|
||||
(and current-page
|
||||
(gp-util/uuid-string? current-page)
|
||||
(util/uuid-string? current-page)
|
||||
current-page))]
|
||||
(= uuid (and block-id (medley/uuid block-id)))))
|
||||
|
||||
|
@ -1147,7 +1147,7 @@
|
|||
[]
|
||||
(when-let [page (get-nearest-page)]
|
||||
(let [page-name (string/lower-case page)
|
||||
block? (gp-util/uuid-string? page-name)]
|
||||
block? (util/uuid-string? page-name)]
|
||||
(when-let [page (db/get-page page-name)]
|
||||
(if block?
|
||||
(state/sidebar-add-block!
|
||||
|
@ -1177,7 +1177,7 @@
|
|||
(let [page (state/get-current-page)
|
||||
block-id (and
|
||||
(string? page)
|
||||
(gp-util/uuid-string? page)
|
||||
(util/uuid-string? page)
|
||||
(medley/uuid page))]
|
||||
(when block-id
|
||||
(let [block-parent (db/get-block-parent block-id)]
|
||||
|
@ -2040,7 +2040,7 @@
|
|||
(defn- last-top-level-child?
|
||||
[{:keys [id]} current-node]
|
||||
(when id
|
||||
(when-let [entity (if (gp-util/uuid-string? (str id))
|
||||
(when-let [entity (if (util/uuid-string? (str id))
|
||||
(db/entity [:block/uuid (uuid id)])
|
||||
(db/entity [:block/name (util/page-name-sanity-lc id)]))]
|
||||
(= (:block/uuid entity) (tree/-get-parent-id current-node)))))
|
||||
|
@ -2867,7 +2867,7 @@
|
|||
(string/join "\n"
|
||||
(mapv (fn [p] (->> (string/trim p)
|
||||
((fn [p]
|
||||
(if (gp-util/safe-re-find (if (= format :org)
|
||||
(if (util/safe-re-find (if (= format :org)
|
||||
#"\s*\*+\s+"
|
||||
#"\s*-\s+") p)
|
||||
p
|
||||
|
@ -2932,9 +2932,9 @@
|
|||
;; from external
|
||||
(let [format (or (db/get-page-format (state/get-current-page)) :markdown)]
|
||||
(match [format
|
||||
(nil? (gp-util/safe-re-find #"(?m)^\s*(?:[-+*]|#+)\s+" text))
|
||||
(nil? (gp-util/safe-re-find #"(?m)^\s*\*+\s+" text))
|
||||
(nil? (gp-util/safe-re-find #"(?:\r?\n){2,}" text))]
|
||||
(nil? (util/safe-re-find #"(?m)^\s*(?:[-+*]|#+)\s+" text))
|
||||
(nil? (util/safe-re-find #"(?m)^\s*\*+\s+" text))
|
||||
(nil? (util/safe-re-find #"(?:\r?\n){2,}" text))]
|
||||
[:markdown false _ _]
|
||||
(paste-text-parseable format text)
|
||||
|
||||
|
@ -3219,7 +3219,7 @@
|
|||
:or {collapse? false expanded? false incremental? true root-block nil}}]
|
||||
(when-let [page (or (state/get-current-page)
|
||||
(date/today))]
|
||||
(let [block? (gp-util/uuid-string? page)
|
||||
(let [block? (util/uuid-string? page)
|
||||
block-id (or root-block (and block? (uuid page)))
|
||||
blocks (if block-id
|
||||
(db/get-block-and-children (state/get-current-repo) block-id)
|
||||
|
|
|
@ -4,8 +4,7 @@
|
|||
[frontend.db :as db]
|
||||
[frontend.db.default :as default-db]
|
||||
[frontend.state :as state]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]))
|
||||
[frontend.util :as util]))
|
||||
|
||||
(defn- build-links
|
||||
[links]
|
||||
|
@ -46,7 +45,7 @@
|
|||
;; slow
|
||||
(defn- uuid-or-asset?
|
||||
[id]
|
||||
(or (gp-util/uuid-string? id)
|
||||
(or (util/uuid-string? id)
|
||||
(string/starts-with? id "../assets/")
|
||||
(= id "..")
|
||||
(string/starts-with? id "assets/")
|
||||
|
|
|
@ -637,7 +637,7 @@
|
|||
(->> (db/get-all-pages repo)
|
||||
(remove (fn [p]
|
||||
(let [name (:block/name p)]
|
||||
(or (gp-util/uuid-string? name)
|
||||
(or (util/uuid-string? name)
|
||||
(gp-config/draw? name)
|
||||
(db/built-in-pages-names (string/upper-case name))))))
|
||||
(common-handler/fix-pages-timestamps)))
|
||||
|
@ -691,7 +691,7 @@
|
|||
chosen (if (string/starts-with? chosen "New page: ") ;; FIXME: What if a page named "New page: XXX"?
|
||||
(subs chosen 10)
|
||||
chosen)
|
||||
chosen (if (and (gp-util/safe-re-find #"\s+" chosen) (not wrapped?))
|
||||
chosen (if (and (util/safe-re-find #"\s+" chosen) (not wrapped?))
|
||||
(util/format "[[%s]]" chosen)
|
||||
chosen)
|
||||
q (if @editor-handler/*selected-text "" q)
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
[frontend.state :as state]
|
||||
[logseq.graph-parser.text :as text]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[medley.core :as medley]
|
||||
[reitit.frontend.easy :as rfe]))
|
||||
|
||||
|
@ -79,7 +78,7 @@
|
|||
"Create a new page"
|
||||
:page
|
||||
(let [name (:name path-params)
|
||||
block? (gp-util/uuid-string? name)]
|
||||
block? (util/uuid-string? name)]
|
||||
(if block?
|
||||
(if-let [block (db/entity [:block/uuid (medley/uuid name)])]
|
||||
(let [content (text/remove-level-spaces (:block/content block)
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
[clojure.string :as string]
|
||||
[rum.core :as rum]
|
||||
[frontend.mobile.util :as mobile]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[electron.ipc :as ipc]))
|
||||
|
||||
(defn- get-css-var-value
|
||||
|
@ -112,7 +111,7 @@
|
|||
(let [id (and
|
||||
(> (count fragment) 36)
|
||||
(subs fragment (- (count fragment) 36)))]
|
||||
(if (and id (gp-util/uuid-string? id))
|
||||
(if (and id (util/uuid-string? id))
|
||||
(let [elements (array-seq (js/document.getElementsByClassName id))]
|
||||
(when (first elements)
|
||||
(util/scroll-to-element (gobj/get (first elements) "id")))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
(ns frontend.modules.outliner.tree
|
||||
(:require [frontend.db :as db]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[frontend.util :as util]
|
||||
[clojure.string :as string]
|
||||
[frontend.state :as state]))
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
|||
(defn- get-root-and-page
|
||||
[repo root-id]
|
||||
(if (string? root-id)
|
||||
(if (gp-util/uuid-string? root-id)
|
||||
(if (util/uuid-string? root-id)
|
||||
[false (db/entity repo [:block/uuid (uuid root-id)])]
|
||||
[true (db/entity repo [:block/name (string/lower-case root-id)])])
|
||||
[false root-id]))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
(ns frontend.security
|
||||
(:require [clojure.walk :as walk]
|
||||
[logseq.graph-parser.util :as gp-util]))
|
||||
[frontend.util :as util]))
|
||||
|
||||
;; To prevent from cross-site scripting vulnerability, we should add security checks for both hiccup and raw html.
|
||||
;; Hiccup: [:a {:href "javascript:alert('hei')"} "click me"]
|
||||
|
@ -12,7 +12,7 @@
|
|||
(= :a (first f))
|
||||
(:href (second f))
|
||||
(:href (second f))
|
||||
(gp-util/safe-re-find #"(?i)javascript" (:href (second f)))))
|
||||
(util/safe-re-find #"(?i)javascript" (:href (second f)))))
|
||||
|
||||
(defn remove-javascript-links-in-href
|
||||
[hiccup]
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
[goog.object :as gobj]
|
||||
[promesa.core :as p]
|
||||
[rum.core :as rum]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[frontend.mobile.util :as mobile-util]))
|
||||
|
||||
(defonce ^:large-vars/data-var state
|
||||
|
@ -452,7 +451,7 @@
|
|||
(or
|
||||
(when-let [workflow (:preferred-workflow (get-config))]
|
||||
(let [workflow (name workflow)]
|
||||
(if (gp-util/safe-re-find #"now|NOW" workflow)
|
||||
(if (util/safe-re-find #"now|NOW" workflow)
|
||||
:now
|
||||
:todo)))
|
||||
(get-in @state [:me :preferred_workflow] :now))))
|
||||
|
|
|
@ -39,6 +39,23 @@
|
|||
#?(:cljs (defn app-scroll-container-node []
|
||||
(gdom/getElement "main-content-container")))
|
||||
|
||||
#?(:cljs
|
||||
(defn safe-re-find
|
||||
[pattern s]
|
||||
(when-not (string? s)
|
||||
;; TODO: sentry
|
||||
(js/console.trace))
|
||||
(when (string? s)
|
||||
(re-find pattern s))))
|
||||
|
||||
#?(:cljs
|
||||
(do
|
||||
(def uuid-pattern "[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}")
|
||||
(defonce exactly-uuid-pattern (re-pattern (str "(?i)^" uuid-pattern "$")))
|
||||
(defn uuid-string?
|
||||
[s]
|
||||
(safe-re-find exactly-uuid-pattern s))))
|
||||
|
||||
#?(:cljs
|
||||
(defn ios?
|
||||
[]
|
||||
|
@ -55,7 +72,7 @@
|
|||
(defn mobile?
|
||||
[]
|
||||
(when-not node-test?
|
||||
(gp-util/safe-re-find #"Mobi" js/navigator.userAgent))))
|
||||
(safe-re-find #"Mobi" js/navigator.userAgent))))
|
||||
|
||||
#?(:cljs
|
||||
(defn electron?
|
||||
|
@ -349,7 +366,7 @@
|
|||
#?(:cljs
|
||||
(defn scroll-to-element
|
||||
[elem-id]
|
||||
(when-not (gp-util/safe-re-find #"^/\d+$" elem-id)
|
||||
(when-not (safe-re-find #"^/\d+$" elem-id)
|
||||
(when elem-id
|
||||
(when-let [elem (gdom/getElement elem-id)]
|
||||
(.scroll (app-scroll-container-node)
|
||||
|
@ -829,8 +846,8 @@
|
|||
[]
|
||||
(let [user-agent js/navigator.userAgent
|
||||
vendor js/navigator.vendor]
|
||||
(and (gp-util/safe-re-find #"Chrome" user-agent)
|
||||
(gp-util/safe-re-find #"Google Inc" vendor)))))
|
||||
(and (safe-re-find #"Chrome" user-agent)
|
||||
(safe-re-find #"Google Inc" vendor)))))
|
||||
|
||||
#?(:cljs
|
||||
(defn indexeddb-check?
|
||||
|
@ -871,7 +888,7 @@
|
|||
[block-id]
|
||||
(when block-id
|
||||
(let [block-id (str block-id)]
|
||||
(when (gp-util/uuid-string? block-id)
|
||||
(when (uuid-string? block-id)
|
||||
(first (array-seq (js/document.getElementsByClassName block-id))))))))
|
||||
|
||||
#?(:cljs
|
||||
|
@ -890,7 +907,7 @@
|
|||
(do
|
||||
(defn include-windows-reserved-chars?
|
||||
[s]
|
||||
(gp-util/safe-re-find windows-reserved-chars s))
|
||||
(safe-re-find windows-reserved-chars s))
|
||||
|
||||
(defn create-title-property?
|
||||
[s]
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
(ns frontend.util.drawer
|
||||
(:require [clojure.string :as string]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[logseq.graph-parser.mldoc :as gp-mldoc]
|
||||
[logseq.graph-parser.property :as gp-property]
|
||||
[frontend.format.mldoc :as mldoc]))
|
||||
|
@ -88,8 +87,8 @@
|
|||
|
||||
(defn contains-logbook?
|
||||
[content]
|
||||
(and (gp-util/safe-re-find (re-pattern (str "(?i)" logbook-start)) content)
|
||||
(gp-util/safe-re-find (re-pattern (str "(?i)" drawer-end)) content)))
|
||||
(and (util/safe-re-find (re-pattern (str "(?i)" logbook-start)) content)
|
||||
(util/safe-re-find (re-pattern (str "(?i)" drawer-end)) content)))
|
||||
|
||||
;; TODO: DRY
|
||||
(defn remove-logbook
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
(ns frontend.util.marker
|
||||
(:require [clojure.string :as string]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]))
|
||||
[frontend.util :as util]))
|
||||
|
||||
(defn marker-pattern [format]
|
||||
(re-pattern
|
||||
|
@ -21,7 +20,7 @@
|
|||
(if-let [matches (seq (util/re-pos new-line-re-pattern content))]
|
||||
(let [[start-pos content] (last matches)]
|
||||
(+ start-pos (count content)))
|
||||
(count (gp-util/safe-re-find re-pattern content)))
|
||||
(count (util/safe-re-find re-pattern content)))
|
||||
new-content
|
||||
(str (subs content 0 pos)
|
||||
(string/replace-first (subs content pos)
|
||||
|
@ -60,6 +59,6 @@
|
|||
(let [content (string/triml content)
|
||||
new-marker (or new-marker
|
||||
(cycle-marker-state (or marker
|
||||
(last (gp-util/safe-re-find (marker-pattern format) content))) ; Returns the last matching group (last vec)
|
||||
(last (util/safe-re-find (marker-pattern format) content))) ; Returns the last matching group (last vec)
|
||||
preferred-workflow))]
|
||||
[(add-or-update-marker content format new-marker) new-marker]))
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
(ns frontend.util.priority
|
||||
(:require [clojure.string :as string]
|
||||
[frontend.util :as util]
|
||||
[logseq.graph-parser.util :as gp-util]
|
||||
[frontend.util.marker :as marker]))
|
||||
|
||||
(defn cycle-priority-state
|
||||
[content]
|
||||
(let [priority-reg #"\[#([ABC]{1})\]\s{1}"
|
||||
priority (last (gp-util/safe-re-find priority-reg content))
|
||||
priority (last (util/safe-re-find priority-reg content))
|
||||
next-priority (case priority
|
||||
"A" "B"
|
||||
|
||||
|
@ -29,7 +28,7 @@
|
|||
(if-let [matches (seq (util/re-pos new-line-re-pattern content))]
|
||||
(let [[start-pos content] (last matches)]
|
||||
(+ start-pos (count content)))
|
||||
(count (gp-util/safe-re-find re-pattern content)))
|
||||
(count (util/safe-re-find re-pattern content)))
|
||||
skip-marker-pos
|
||||
(if-let [matches (seq (util/re-pos marker/bare-marker-pattern (subs content skip-hash-pos)))]
|
||||
(let [[start-pos content] (last matches)]
|
||||
|
|
|
@ -45,28 +45,28 @@
|
|||
[line]
|
||||
(boolean
|
||||
(and (string? line)
|
||||
(gp-util/safe-re-find #"^\s?[^ ]+:: " line))))
|
||||
(util/safe-re-find #"^\s?[^ ]+:: " line))))
|
||||
|
||||
(defn front-matter-property?
|
||||
[line]
|
||||
(boolean
|
||||
(and (string? line)
|
||||
(gp-util/safe-re-find #"^\s*[^ ]+: " line))))
|
||||
(util/safe-re-find #"^\s*[^ ]+: " line))))
|
||||
|
||||
(defn get-property-key
|
||||
[line format]
|
||||
(and (string? line)
|
||||
(when-let [key (last
|
||||
(if (= format :org)
|
||||
(gp-util/safe-re-find #"^\s*:([^: ]+): " line)
|
||||
(gp-util/safe-re-find #"^\s*([^ ]+):: " line)))]
|
||||
(util/safe-re-find #"^\s*:([^: ]+): " line)
|
||||
(util/safe-re-find #"^\s*([^ ]+):: " line)))]
|
||||
(keyword key))))
|
||||
|
||||
(defn org-property?
|
||||
[line]
|
||||
(boolean
|
||||
(and (string? line)
|
||||
(gp-util/safe-re-find #"^\s*:[^: ]+: " line)
|
||||
(util/safe-re-find #"^\s*:[^: ]+: " line)
|
||||
(when-let [key (get-property-key line :org)]
|
||||
(not (contains? #{:PROPERTIES :END} key))))))
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
(defonce exactly-uuid-pattern (re-pattern (str "(?i)^" uuid-pattern "$")))
|
||||
|
||||
(defn safe-re-find
|
||||
"Copy of frontend.util/safe-re-find. Too basic to couple to main app"
|
||||
[pattern s]
|
||||
(when-not (string? s)
|
||||
;; TODO: sentry
|
||||
|
@ -16,6 +17,7 @@
|
|||
(re-find pattern s)))
|
||||
|
||||
(defn uuid-string?
|
||||
"Copy of frontend.util/uuid-string?. Too basic to couple to main app"
|
||||
[s]
|
||||
(safe-re-find exactly-uuid-pattern s))
|
||||
|
||||
|
|
Loading…
Reference in New Issue