Remove need for ARGUMENTS AND VALUES when there are none
[sheep] / src / main / func.lisp
index d3540a6a7f97f4b712cd1a218bc720bc6afa6513..45bd970eeab2e26a0aeb93f1e22ff07c2485462f 100644 (file)
         (text-item)
         (cond
          ((not (stringp text-item)) (list text-item))
-         ((not (cl-ppcre:scan (car remaining-keywords) text-item)) (list text-item))
+         ((not (cl-ppcre:scan (cl-ppcre:quote-meta-chars (car remaining-keywords)) text-item)) (list text-item))
          (t
           (let
-           ((split-text (cl-ppcre:split (car remaining-keywords) text-item :limit 1000)))
+           ((split-text (cl-ppcre:split (cl-ppcre:quote-meta-chars (car remaining-keywords)) text-item :limit 1000)))
            (apply #'append
             (list (car split-text))
             (mapcar (lambda (ti) (list (list :keyword (car remaining-keywords)) ti)) (cdr split-text)))))))
      (append
       (when types (list types))
       (list
-       (parse-arguments-and-values args-to-be-defined)
+       (when args-to-be-defined (parse-arguments-and-values args-to-be-defined))
        (parse-description))
       (when (more) (list (parse-examples)))))))))
 
     (case (car type)
      (:list (format nil "(~{~(~A~)~^ ~})" (mapcar #'cadr (cadr type))))
      (:or (format nil "~{~(~A~)~^ | ~}" (mapcar #'cadr (cadr type))))
-     (:asterisk (format nil "~(~A~)*" (cadr (car (cadr type))))))))
+     (:asterisk (format nil "~(~A~)*" (cadr (car (cadr type)))))
+     (:symbol (format nil "~(~A~)" (cadr (car (cadr type))))))))
   (if (not types)
    ""
    (format nil "~{~A~%~}~%"
   (format nil "~A~A~A~A~A"
    (format-header (get-section :function))
    (format-types (get-section :types))
-   (format-args-and-values (get-section :arguments-and-values))
+   (if
+    (get-section :arguments-and-values)
+    (format-args-and-values (get-section :arguments-and-values))
+    "")
    (format-description (get-section :description))
    (format-examples (get-section :examples)))))
+
+(defun ast->category-name (ast)
+ (declare (ignore ast))
+ "function")
+
+(defun ast->short-name (ast)
+ (format nil "~(~A~)" (second (find :function ast :key #'car))))
+
+(defun ast->link (ast)
+ (format nil "function-~(~A~)" (second (find :function ast :key #'car))))
+
+(defun ast->short-desc (ast)
+ (format-text (car (cadr (find :description ast :key #'car)))))