@@ -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
@@ -51,7 +68,7 @@ def get_quoting_style(snip):
51
68
return SINGLE_QUOTES
52
69
return DOUBLE_QUOTES
53
70
54
- def tripple_quotes (snip ):
71
+ def triple_quotes (snip ):
55
72
if get_quoting_style(snip) == SINGLE_QUOTES :
56
73
return " '''"
57
74
return ' """'
@@ -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,26 +89,54 @@ 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 ):
84
106
if not args:
85
- snip.rv += ' {0} ' .format(tripple_quotes (snip))
107
+ snip.rv += ' {0} ' .format(triple_quotes (snip))
86
108
return
87
109
88
110
snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
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 ):
@@ -120,10 +166,10 @@ endglobal
120
166
snippet class " class with docstrings" b
121
167
class ${1: MyClass } (${2: object } ):
122
168
123
- `!p snip.rv = tripple_quotes (snip) ` ${3: Docstring for $1 . } `!p snip.rv = tripple_quotes (snip) `
169
+ `!p snip.rv = triple_quotes (snip) ` ${3: Docstring for $1 . } `!p snip.rv = triple_quotes (snip) `
124
170
125
171
def __init__(self$4 ):
126
- `!p snip.rv = tripple_quotes (snip) ` ${5: @todo: to be defined1. } `!p
172
+ `!p snip.rv = triple_quotes (snip) ` ${5: @todo: to be defined1. } `!p
127
173
snip.rv = " "
128
174
snip >> 2
129
175
@@ -132,7 +178,7 @@ args = get_args(t[4])
132
178
write_docstring_args(args, snip)
133
179
if args:
134
180
snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
135
- snip += ' {0} ' .format(tripple_quotes (snip))
181
+ snip += ' {0} ' .format(triple_quotes (snip))
136
182
137
183
write_init_body(args, t[2 ], snip)
138
184
`
@@ -143,15 +189,15 @@ endsnippet
143
189
snippet slotclass " class with slots and docstrings" b
144
190
class ${1: MyClass } (${2: object } ):
145
191
146
- `!p snip.rv = tripple_quotes (snip) ` ${3: Docstring for $1 . } `!p snip.rv = tripple_quotes (snip) `
192
+ `!p snip.rv = triple_quotes (snip) ` ${3: Docstring for $1 . } `!p snip.rv = triple_quotes (snip) `
147
193
`!p
148
194
snip >> 1
149
195
args = get_args(t[4 ])
150
196
write_slots_args(args, snip)
151
197
`
152
198
153
199
def __init__(self$4 ):
154
- `!p snip.rv = tripple_quotes (snip) ` ${5: @todo: to be defined. } `!p
200
+ `!p snip.rv = triple_quotes (snip) ` ${5: @todo: to be defined. } `!p
155
201
snip.rv = " "
156
202
snip >> 2
157
203
@@ -160,7 +206,7 @@ args = get_args(t[4])
160
206
write_docstring_args(args, snip)
161
207
if args:
162
208
snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
163
- snip += tripple_quotes (snip)
209
+ snip += triple_quotes (snip)
164
210
165
211
write_init_body(args, t[2 ], snip)
166
212
`
@@ -353,7 +399,7 @@ snippet def "function with docstrings" b
353
399
def ${1: function } (`!p
354
400
if snip.indent:
355
401
snip.rv = ' self' + (" , " if len (t[2 ]) else " " ) `${2: arg1 } ):
356
- `!p snip.rv = tripple_quotes (snip) ` ${4: @todo: Docstring for $1 . } `!p
402
+ `!p snip.rv = triple_quotes (snip) ` ${4: @todo: Docstring for $1 . } `!p
357
403
snip.rv = " "
358
404
snip >> 1
359
405
@@ -364,7 +410,7 @@ if args:
364
410
style = get_style(snip)
365
411
snip += format_return(style)
366
412
snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
367
- snip += tripple_quotes (snip) `
413
+ snip += triple_quotes (snip) `
368
414
${0: pass }
369
415
endsnippet
370
416
@@ -390,7 +436,7 @@ endsnippet
390
436
391
437
snippet rwprop " Read write property" b
392
438
def ${1: name } ():
393
- `!p snip.rv = tripple_quotes (snip) if t[2 ] else ' '
439
+ `!p snip.rv = triple_quotes (snip) if t[2 ] else ' '
394
440
` ${2: @todo: Docstring for $1 . } `!p
395
441
if t[2 ]:
396
442
snip >> 1
@@ -399,7 +445,7 @@ if t[2]:
399
445
snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
400
446
snip += format_return(style)
401
447
snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
402
- snip += tripple_quotes (snip)
448
+ snip += triple_quotes (snip)
403
449
else :
404
450
snip.rv = " " `
405
451
def fget(self):
@@ -518,7 +564,7 @@ endsnippet
518
564
snippet testcase " pyunit testcase" b
519
565
class Test${1: Class } (${2: unittest.TestCase } ):
520
566
521
- `!p snip.rv = tripple_quotes (snip) ` ${3: Test case docstring. } `!p snip.rv = tripple_quotes (snip) `
567
+ `!p snip.rv = triple_quotes (snip) ` ${3: Test case docstring. } `!p snip.rv = triple_quotes (snip) `
522
568
523
569
def setUp(self):
524
570
${4: pass }
0 commit comments