forked from karthik/Rtools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRoxygen.py
61 lines (49 loc) · 2.05 KB
/
Roxygen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import sublime
import sublime_plugin
import os
import subprocess
import string
class RoxygenCommand(sublime_plugin.TextCommand):
def run(self, edit):
sel = self.view.sel()[0]
params_reg = self.view.find('(?<=\()(.|\n)*?(?=\))', sel.begin())
params_txt = self.view.substr(params_reg)
params = extract_param(params_txt)
snippet = "#' Title\n#'\n"
for p in params:
snippet += "#' @param %s \n" % p
snippet += "#'\n#' @return \n#' \n#' @export\n#' \n#' @examples\n#' "
self.view.insert(edit, sel.begin(), snippet)
class RcommentCommand(sublime_plugin.TextCommand):
def run(self, edit):
sel = self.view.sel()[0]
params_reg = self.view.find('(?<=\()(.|\n)*?(?=\))', sel.begin())
params_txt = self.view.substr(params_reg)
params = extract_param(params_txt)
snippet = "# \n"
for p in params:
snippet += "# @param %s \n" % p
snippet += "# @return "
self.view.insert(edit, sel.begin(), snippet)
def extract_param(text):
params = text.split(',')
params = [p.strip("\n") for p in params]
params = [p.split("=")[0] for p in params]
params = [s.strip() for s in params]
length_max = max([len(str) for str in params])
params = [p + " " * (length_max - len(p)) for p in params]
return(params)
class RcppCommand(sublime_plugin.TextCommand):
def run(self, edit):
sel = self.view.sel()[0]
params_reg = self.view.find('(?<=\()(.|\n)*?(?=\))', sel.begin())
params_txt = self.view.substr(params_reg)
params = extract_param(params_txt)
params = [p.split()[-1].replace("&", "") for p in params]
length_max = max([len(str) for str in params])
params = [p + " " * (length_max - len(p)) for p in params]
snippet = "//' Title\n//'\n"
for p in params:
snippet += "//' @param %s \n" % p
snippet += "//'\n//' @return \n//' \n//' @export\n//' \n//' @examples\n//' \n// [[Rcpp::export]]"
self.view.insert(edit, sel.begin(), snippet)