RStudio addin для разбора входных строковых литералов путем замены обратных косых черт (как в 'C:\Marketing') на прямые косые черты

осветление

Решение этой проблемы с помощью функции было невозможно, что @IInspectable любезно подтвердило в комментариях к старому удаленному вопросу. Короче говоря: обратные слеши должны быть экранированы в строковых литералах, т.е. 'C:\\Marketing' должен быть передан вместо 'C:\Marketing' , Я полностью осведомлен об этом и этом вопросе, и мой нижеприведенный ответ не относится к ошибкам, ручным решениям или использованию другого программного обеспечения (например, AutoHotkey), как указано в других смежных вопросах.

Обратите внимание, что вопрос является продолжением другого, спасибо @IInspectable за ваши ценные комментарии.

"Windows" пути...

Я работаю с путями в формате Windows (например, C:\Marketing) довольно часто, вставляя их в код R. Изменение обратной косой черты каждый раз очень раздражает, поэтому я попытался написать для них функцию анализа. Желаемое использование состояло в том, чтобы использовать эту функцию в коде с скопированным путем в качестве параметра, т.е. path_parse('C:\Marketing'), Мой первый подход, основанный на ответе @Tyler Rinker, заключался в следующем:

path_parse <- function(path = 'clipboard') {
  path <- if (path == 'clipboard') readClipboard() else path
  return(chartr('\\', '/', path))
}

и он работал хорошо с путем, скопированным в буфер обмена, но, к сожалению, выдавал сообщение об ошибке an unrecognized escape in character string Как, например, в этом вопросе, при использовании вставленных строковых литералов:

> path_parse('C:\Marketing')
Error: '\M' is an unrecognized escape in character string starting "'C:\M"

Конечно, вручную изменяя все входные строковые литералы (как при передаче 'C:\\Marketing' или же 'C:/Marketing' вместо 'C:\Marketing') здесь не вариант, так как именно поэтому я хочу как-то автоматизировать его.

Один тесно связанный с этим вопрос находится здесь, но он основан на графическом интерфейсе Tinn-R и программном обеспечении AutoHotkey, которое я не хочу устанавливать.

Аддинс на помощь

Решение было ближе, чем я думал, надстройка RStudio (см., Например, здесь, как их использовать), анализировав выделенный текст (т.е. вставленный путь "Windows"), изменив все обратные косые черты на прямые косые черты и вставив их обратно в код. Код и скриншоты в ответе ниже.

1 ответ

Решение

Рабочее решение (или, скорее, обходной путь, так как изначально я хотел решить это с помощью функции)

Как я писал в приведенном выше вопросе, решить эту проблему с помощью функции было невозможно, поэтому я попробовал другое решение, которое делает именно то, что я хотел, и может быть полезно и для других. Я собрал пакет дополнений ( хорошая статья RStudio) со следующей функцией:

#' Parse selected "Windows" path to an "R-usable" one
#'
#' @return
#' @export
#' @importFrom rstudioapi getActiveDocumentContext
#' @importFrom magrittr '%>%'
#'
#' @examples
path_parse <- function() {
  getActiveDocumentContext()[['selection']][[1]][['text']] %>%
  { gsub('\\\\', '/', .) } %>%
  { gsub('//', '/', .) } %>%    # To remove double f. slashes
  { ifelse(check_for_quotes(.), insertText(.), insertText(paste0('\'', ., '\''))) }
}
### Old function:
# path_parse <- function() {
#   getActiveDocumentContext()[['selection']][[1]][['text']] %>%
#   { chartr('\\', '/', .) } %>% { insertText(paste0('\'', ., '\'')) }
# }

и назначил Ctrl+Alt+P ярлык к нему.

Что он делает, в основном, анализирует выделенный текст (то есть вставленный путь "Windows"), превращая все обратные косые черты в прямые косые черты и вставляя их обратно в код:

Аддин скриншоты

Другие вопросы по тегам