1
0
Эх сурвалжийг харах

[banks] split last entries list

Innocenty Enikeew 8 жил өмнө
parent
commit
56460134ad

+ 10 - 4
plugins/raiffeisen.lisp

@@ -221,8 +221,14 @@
                collect (cons (cons :account (node->alist account t))
                              (node->alist move)))))
 
-(defun format-changes (entries)
-  (format nil "```~%~{~A~^~%~%~}```" (mapcar #'pta-ledger:render entries)))
+(defun format-entries (changes)
+  (loop for entry in changes
+     for text = (pta-ledger:render entry)
+     with page
+     when (> (+ (length page) (length text) 2)
+             2048)
+     collect (format nil "```~%~A```" page) and do (setf page nil)
+     do (setf page (format nil "~@[~A~%~%~]~A" page text))))
 
 (defun format-balance (accounts)
   (format nil "```~%~{~A~^~%~}```" (mapcar #'account->balance accounts)))
@@ -267,7 +273,7 @@
                                        (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
                   (dolist (entry changes)
                     (funcall new-chat-entry chat-id entry)))
-                (bot-send-message chat-id (format-changes changes) :parse-mode "markdown"))))
+                (bot-send-message chat-id (format-entries changes) :parse-mode "markdown"))))
         (setf (gethash chat-id *last-entries*) new)))))
 
 (def-message-cmd-handler handler-raif (:raif)
@@ -275,4 +281,4 @@
     (if (string= arg "bal")
         (bot-send-message chat-id (format-balance (get-chat-accounts chat-id)) :parse-mode "markdown")
         (let ((last (get-chat-last-entries chat-id (* (if arg (parse-integer arg) 7) +day+))))
-          (bot-send-message chat-id (format-changes last) :parse-mode "markdown")))))
+          (bot-send-message chat-id (format-entries last) :parse-mode "markdown")))))

+ 7 - 1
plugins/tinkoff.lisp

@@ -192,7 +192,13 @@
     (api/accounts)))
 
 (defun format-entries (changes)
-  (format nil "```~%~{~A~^~%~%~}```" (mapcar #'pta-ledger:render changes)))
+  (loop for entry in changes
+     for text = (pta-ledger:render entry)
+     with page
+     when (> (+ (length page) (length text) 2)
+             2048)
+     collect (format nil "```~%~A```" page) and do (setf page nil)
+     do (setf page (format nil "~@[~A~%~%~]~A" page text))))
 
 (defun format-accounts (accounts)
   (with-output-to-string (s)