# -*- coding: utf-8 -*-
# name: class
# contributor: Orestis Markou
# contributor: Nishio Hirokazu
# contributor: Yasser González Fernández <yglez@uh.cu>
# --
class ${1:ClassName}(${2:object}):
    """$3
    """

    def __init__(self, $4):
        """$5
        ${4:$
        (let* ((indent
                (concat "\n" (make-string (current-column) 32)))
               (args
                (mapconcat
                 '(lambda (x)
                    (if (not (string= (nth 0 x) ""))
                        (concat "- " (char-to-string 96) (nth 0 x)
                                (char-to-string 96) ":")))
                 (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 text ",")))
                 indent)))
          (if (string= args "")
              (make-string 3 34)
            (mapconcat
             'identity
             (list "" "Arguments:" args (make-string 3 34))
             indent)))
        }
        ${4:$
        (let* ((indent (concat "\n" (make-string (current-column) 32)))
              (self-vars (mapconcat
                   '(lambda (x)
                      (if (not (string= (nth 0 x) ""))
                          (concat "self._" (nth 0 x) " = " (nth 0 x))))
                   (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 text ",")))
                   (concat indent))))
  (if (string= self-vars "")
      indent
    self-vars))        
        }
        $0
