@@ -34,13 +34,30 @@ global !p
34
34
NORMAL = 0x 1
35
35
DOXYGEN = 0x 2
36
36
SPHINX = 0x 3
37
+ GOOGLE = 0x 4
37
38
38
39
SINGLE_QUOTES = 0x 1
39
40
DOUBLE_QUOTES = 0x 2
40
41
42
+
43
+ class Arg (object ):
44
+ def __init__ (self , arg ):
45
+ self .arg = arg
46
+ self .name = arg.split(' =' )[0 ].strip()
47
+
48
+ def __str__ (self ):
49
+ return self .name
50
+
51
+ def __unicode__ (self ):
52
+ return self .name
53
+
54
+ def is_kwarg (self ):
55
+ return ' =' in self .arg
56
+
57
+
41
58
def get_args (arglist ):
42
- args = [arg.split( ' = ' )[ 0 ].strip( ) for arg in arglist.split(' ,' ) if arg]
43
- args = [arg for arg in args if arg and arg != " self" ]
59
+ args = [Arg(arg ) for arg in arglist.split(' ,' ) if arg]
60
+ args = [arg for arg in args if arg.name != ' self' ]
44
61
45
62
return args
46
63
@@ -61,6 +78,7 @@ def get_style(snip):
61
78
62
79
if style == " doxygen" : return DOXYGEN
63
80
elif style == " sphinx" : return SPHINX
81
+ elif style == " google" : return GOOGLE
64
82
else : return NORMAL
65
83
66
84
@@ -71,13 +89,17 @@ def format_arg(arg, style):
71
89
return " :param %s : @todo" % arg
72
90
elif style == NORMAL :
73
91
return " :%s : @todo" % arg
92
+ elif style == GOOGLE :
93
+ return " %s (@todo): @todo" % arg
74
94
75
95
76
96
def format_return (style ):
77
97
if style == DOXYGEN :
78
98
return " @return: @todo"
79
99
elif style in (NORMAL , SPHINX ):
80
100
return " :returns: @todo"
101
+ elif style == GOOGLE :
102
+ return " Returns: @todo"
81
103
82
104
83
105
def write_docstring_args (args , snip ):
@@ -89,8 +111,32 @@ def write_docstring_args(args, snip):
89
111
90
112
style = get_style(snip)
91
113
92
- for arg in args:
93
- snip += format_arg(arg, style)
114
+ if style == GOOGLE :
115
+ write_google_docstring_args(args, snip)
116
+ else :
117
+ for arg in args:
118
+ snip += format_arg(arg, style)
119
+
120
+
121
+ def write_google_docstring_args (args , snip ):
122
+ kwargs = [arg for arg in args if arg.is_kwarg()]
123
+ args = [arg for arg in args if not arg.is_kwarg()]
124
+
125
+ if args:
126
+ snip += " Args:"
127
+ snip.shift()
128
+ for arg in args:
129
+ snip += format_arg(arg, GOOGLE )
130
+ snip.unshift()
131
+ snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
132
+
133
+ if kwargs:
134
+ snip += " Kwargs:"
135
+ snip.shift()
136
+ for kwarg in kwargs:
137
+ snip += format_arg(kwarg, GOOGLE )
138
+ snip.unshift()
139
+ snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
94
140
95
141
96
142
def write_init_body (args , parents , snip ):
0 commit comments