Skip to content

Commit 4ca6b4f

Browse files
authored
More sophisticated detection for re-exported functions (#144)
Fixes #134
1 parent 36c7e5d commit 4ca6b4f

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

NEWS.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# downlit (development version)
22

3+
* Re-exports detection no longer relies on name of `.Rd` file (#134).
4+
35
* Adds support for new R pipe `|>` syntax (#126).
46

57
* Very long strings or other tokens are no longer truncated

R/link.R

+16-11
Original file line numberDiff line numberDiff line change
@@ -201,26 +201,31 @@ href_topic_remote <- function(topic, package) {
201201
return(NA_character_)
202202
}
203203

204-
if (rdname == "reexports") {
205-
return(href_topic_reexported(topic, package))
204+
if (is_reexported(topic, package)) {
205+
href_topic_reexported(topic, package)
206+
} else {
207+
paste0(href_package_ref(package), "/", rdname, ".html")
206208
}
209+
}
207210

208-
paste0(href_package_ref(package), "/", rdname, ".html")
211+
is_reexported <- function(name, package) {
212+
is_imported <- env_has(ns_imports_env(package), name)
213+
is_exported <- name %in% getNamespaceExports(ns_env(package))
214+
215+
is_imported && is_exported
209216
}
210217

211218
# If it's a re-exported function, we need to work a little harder to
212219
# find out its source so that we can link to it.
213220
href_topic_reexported <- function(topic, package) {
214221
ns <- ns_env(package)
215-
exports <- .getNamespaceInfo(ns, "exports")
216-
217-
if (!env_has(exports, topic)) {
218-
NA_character_
219-
} else {
220-
obj <- env_get(ns, topic, inherit = TRUE)
221-
package <- find_reexport_source(obj, ns, topic)
222-
href_topic_remote(topic, package)
222+
if (!env_has(ns, topic, inherit = TRUE)) {
223+
return(NA_character_)
223224
}
225+
226+
obj <- env_get(ns, topic, inherit = TRUE)
227+
ex_package <- find_reexport_source(obj, ns, topic)
228+
href_topic_remote(topic, ex_package)
224229
}
225230

226231
find_reexport_source <- function(obj, ns, topic) {

0 commit comments

Comments
 (0)