| # -*- mode: snippet -*- | |
| # -*- coding: utf-8 -*- | |
| # name: docstring function | |
| # contributor: Andrea Giugliano | |
| # key: docfun | |
| # inspired by a snippet by Tibor Simko et al. | |
| # -- | |
| /** | |
|  * $1 | |
|  * ${3:$ | |
|     (let* ((indent | |
|             (concat "\n * ")) | |
|            (args | |
|             (mapconcat | |
|              '(lambda (x) | |
|                 (if (not (string= (nth 0 x) "")) | |
|                     ;; in Scala I get a separator : for the type | |
|                     (let ((par-type (mapcar 'string-trim (split-string (nth 0 x) ":")))) (concat "@param " (first par-type) indent "@tparam " (second par-type) indent)) | |
|                     )) | |
|              (mapcar | |
|               '(lambda (x) | |
|                  (mapcar | |
|                   '(lambda (x) | |
|                      (replace-regexp-in-string "[[:blank:]]*$" "" | |
|                       (replace-regexp-in-string "^[[:blank:]]*" "" x))) | |
|                   x)) | |
|               (mapcar '(lambda (x) (split-string x "=")) | |
|                       (split-string yas-text ","))) | |
|              indent))) | |
|       (if (string= args "") | |
|           (concat indent "@return: " indent "@rtype: " indent (make-string 3 34)) | |
|         (mapconcat | |
|          'identity | |
|          (list "" args ) | |
|          indent))) | |
|     } | |
|  * @return ${4:$(yas-text)} | |
|  * | |
|  **/ | |
| def ${2:name}($3): $4 = $0 |