Skip to content

Commit

Permalink
refactored help->:doc and use alter-meta! to set it in a future, always
Browse files Browse the repository at this point in the history
removed flag for it
  • Loading branch information
behrica committed May 12, 2024
1 parent 09d129f commit 3ea82e6
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 35 deletions.
5 changes: 3 additions & 2 deletions src/clojisr/v1/help.clj
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,16 @@
(defn _get-help[function package]
;(println :obtain-help (format "%s/%s " (name package) (un-back-quote (name function))))
(->>
(evl/r (format "capture.output(tools:::Rd2txt(utils:::.getHelpFile(as.character(help(%s,%s))), options=list(underline_titles=FALSE)))"
(evl/r (format
"tryCatch(capture.output(tools:::Rd2txt(utils:::.getHelpFile(as.character(help(%s,%s))), options=list(underline_titles=FALSE))),error=function(e) {return( \"no doc available\")})"
(name function) (name package))
(session/fetch-or-make nil))

(using-sessions/r->java)
(java2clj/java->clj)
(str/join "\n")))

(defonce get-help (memoize _get-help))
(def get-help (memoize _get-help))

(defn help

Expand Down
7 changes: 1 addition & 6 deletions src/clojisr/v1/r.clj
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,7 @@
(functions/apply-function r-function args session)))

(defn require-r [& packages]
(run! require-r-package packages)
(future (run! #(require-r-package
(concat % [ :load-help? true]))
packages))
nil
)
(run! require-r-package packages))

(def function functions/function)

Expand Down
45 changes: 25 additions & 20 deletions src/clojisr/v1/require.clj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[clojisr.v1.session :as session]

[clojisr.v1.using-sessions :as using-sessions]
[clojisr.v1.util :refer [clojurize-r-symbol exception-cause if-assoc-meta]]
[clojisr.v1.util :refer [clojurize-r-symbol exception-cause]]

[clojisr.v1.help :as help]
[clojure.tools.logging.readable :as log]))
Expand Down Expand Up @@ -76,33 +76,39 @@
(seq opt) (list ['& {:keys opt}])
:else '([])))))

(defn safe-help [r-object]
(defn- safe-help [r-object]
(try
(help/help r-object)
(catch Exception e "")))

(defn r-symbol->clj-symbol [ r-symbol r-object load-help?]
(let [arglists (r-object->arglists r-object)]
(defn r-symbol->clj-symbol [ r-symbol r-object]

(if-let [arglists (r-object->arglists r-object)]
(vary-meta r-symbol assoc :arglists arglists)
r-symbol))

(cond-> r-symbol
arglists (vary-meta
assoc
:arglists arglists)

(defn- alter-meta-doc-in-future! [ns-symbol r-symbol r-object]
(future
(Thread/sleep 5000)
(alter-meta!
(get (ns-publics ns-symbol) r-symbol)
assoc :doc (safe-help r-object))))

load-help?
(if-assoc-meta :doc (safe-help r-object )))))

(defn add-to-ns [ ns-symbol r-symbol r-object load-help?]
(defn add-to-ns [ ns-symbol r-symbol r-object]
(intern ns-symbol
(r-symbol->clj-symbol r-symbol r-object load-help?)
r-object))
(r-symbol->clj-symbol r-symbol r-object)
r-object)

(alter-meta-doc-in-future! ns-symbol r-symbol r-object)
ns-symbol)


(defn symbols->add-to-ns [ns-symbol r-symbols load-help?]
(defn symbols->add-to-ns [ns-symbol r-symbols]
(doseq [[r-symbol r-object] r-symbols]
(add-to-ns ns-symbol r-symbol r-object load-help?)))
(add-to-ns ns-symbol r-symbol r-object)))

(defn require-r-package [[package-symbol & {:keys [as refer load-help?]}]]
(defn require-r-package [[package-symbol & {:keys [as refer]}]]
(try
(let [session (session/fetch-or-make nil)]
(evl/eval-form `(library ~package-symbol) session)
Expand All @@ -113,7 +119,7 @@

;; r.package namespace
(find-or-create-ns r-ns-symbol)
(symbols->add-to-ns r-ns-symbol r-symbols load-help?)
(symbols->add-to-ns r-ns-symbol r-symbols)

;; alias namespaces
;; https://clojurians.zulipchat.com/#narrow/stream/224816-clojisr-dev/topic/require-r.20vs.20-require-python
Expand All @@ -127,8 +133,7 @@
this-ns-symbol
(if (= refer :all)
r-symbols
(select-keys r-symbols refer))
load-help?)))))
(select-keys r-symbols refer)))))))
(catch Exception e
(log/warn [::require-r-package {:package-symbol package-symbol
:cause (exception-cause e)}])
Expand Down
6 changes: 0 additions & 6 deletions src/clojisr/v1/util.clj
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,6 @@
x)))


(defn if-assoc-meta
"If value non-nil, assoc it to meta with key"
[s k v]
(if ( some? v)
(vary-meta s assoc k v)
s))

(comment
(-|> 4
Expand Down
1 change: 0 additions & 1 deletion test/clojisr/v1/help_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,3 @@
(r/require-r '[datasets])

)

0 comments on commit 3ea82e6

Please sign in to comment.