@@ -216,6 +216,16 @@ pkg_news = function(
216
216
for (i in 2 : 1 ) res = sub(sprintf(' ^(#{%d} .+)' , i ), paste0(' #\\ 1' , a ), res )
217
217
# shorten headings
218
218
res = gsub(' ^## CHANGES IN ([^ ]+) VERSION( .+)' , ' ## \\ 1\\ 2' , res )
219
+ # link Github @username and #issue
220
+ if (length(u <- github_link(dirname(path )))) {
221
+ r1 = ' ([[:alnum:]-]+)' ; r2 = ' ([0-9]+)'
222
+ res = gsub(paste0(' @' , r1 ), ' [@\\ 1](https://github.com/\\ 1)' , res )
223
+ res = gsub(paste0(' #' , r2 ), sprintf(' [#\\ 1](%sissues/\\ 1)' , u ), res )
224
+ res = gsub(
225
+ sprintf(' %s/%s#%s' , r1 , r1 , r2 ),
226
+ ' [\\ 1/\\ 2#\\ 3](https://github.com/\\ 1/\\ 2/issues/\\ 3)' , res
227
+ )
228
+ }
219
229
}
220
230
new_asis(res )
221
231
}
@@ -247,11 +257,7 @@ pkg_code = function(
247
257
) {
248
258
if (! isTRUE(dir.exists(path ))) return ()
249
259
a = header_class(toc , number_sections )
250
- if (isTRUE(link )) {
251
- u = read.dcf(file.path(path , ' DESCRIPTION' ), ' BugReports' )[1 , 1 ]
252
- u = grep_sub(' ^(https://github.com/[^/]+/[^/]+/).*' , ' \\ 1blob/HEAD/%s' , u )
253
- if (length(u )) link = u
254
- }
260
+ if (isTRUE(link ) && length(u <- github_link(path ))) link = paste0(u , ' blob/HEAD/%s' )
255
261
ds = c(' R' , ' src' )
256
262
ds = ds [ds %in% list.dirs(path , FALSE , FALSE )]
257
263
flat = length(ds ) == 1 # if only one dir exists, list files in a flat structure
@@ -270,6 +276,12 @@ pkg_code = function(
270
276
new_asis(unlist(code ))
271
277
}
272
278
279
+ # retrieve Github repo link from DESCRIPTION
280
+ github_link = function (path ) {
281
+ u = read.dcf(file.path(path , ' DESCRIPTION' ), ' BugReports' )[1 , 1 ]
282
+ grep_sub(' ^(https://github.com/[^/]+/[^/]+/).*' , ' \\ 1' , u )
283
+ }
284
+
273
285
# ' @return `pkg_citation()` returns the package citation in both the plain-text
274
286
# ' and BibTeX formats.
275
287
# ' @rdname pkg_desc
0 commit comments