summaryrefslogtreecommitdiff
path: root/src/tg
diff options
context:
space:
mode:
Diffstat (limited to 'src/tg')
-rw-r--r--src/tg/message-entity.lisp6
-rw-r--r--src/tg/message.lisp2
-rw-r--r--src/tg/method-macros.lisp10
-rw-r--r--src/tg/type-macros.lisp13
-rw-r--r--src/tg/update.lisp2
5 files changed, 20 insertions, 13 deletions
diff --git a/src/tg/message-entity.lisp b/src/tg/message-entity.lisp
index 3413763..c7e6ba1 100644
--- a/src/tg/message-entity.lisp
+++ b/src/tg/message-entity.lisp
@@ -37,7 +37,7 @@
37 37
38(defun message-entity-extract (entity text) 38(defun message-entity-extract (entity text)
39 (with-slots (length offset) entity 39 (with-slots (length offset) entity
40 (if (= length 0) 40 (if (zerop length)
41 "" 41 ""
42 (let* ((start (iterate 42 (let* ((start (iterate
43 (with curr-idx16 = 0) 43 (with curr-idx16 = 0)
@@ -46,7 +46,7 @@
46 (when (or (= curr-idx16 offset) 46 (when (or (= curr-idx16 offset)
47 (> (+ curr-idx16 curr-width) offset)) 47 (> (+ curr-idx16 curr-width) offset))
48 (return curr-idx32)) 48 (return curr-idx32))
49 (setq curr-idx16 (+ curr-idx16 curr-width)) 49 (incf curr-idx16 curr-width)
50 (finally (return (length text))))) 50 (finally (return (length text)))))
51 (end (iterate 51 (end (iterate
52 (with curr-len16 = 0) 52 (with curr-len16 = 0)
@@ -54,6 +54,6 @@
54 (for curr-width = (utf16-width ch)) 54 (for curr-width = (utf16-width ch))
55 (when (>= curr-len16 length) 55 (when (>= curr-len16 length)
56 (return curr-idx32)) 56 (return curr-idx32))
57 (setq curr-len16 (+ curr-len16 curr-width)) 57 (incf curr-len16 curr-width)
58 (finally (return (length text)))))) 58 (finally (return (length text))))))
59 (subseq text start end))))) 59 (subseq text start end)))))
diff --git a/src/tg/message.lisp b/src/tg/message.lisp
index 4707c57..e7043bc 100644
--- a/src/tg/message.lisp
+++ b/src/tg/message.lisp
@@ -160,7 +160,7 @@
160 ;; (video-chat-participants-invited (or video-chat-participants-invited null) nil) 160 ;; (video-chat-participants-invited (or video-chat-participants-invited null) nil)
161 ;; (web-app-data (or web-app-data null) nil) 161 ;; (web-app-data (or web-app-data null) nil)
162 ;; (reply-markup (or inline-keyboard-markup null) nil) 162 ;; (reply-markup (or inline-keyboard-markup null) nil)
163 ) 163 ) ; lint:suppress closing-parens-same-line whitespace-before-close-paren
164 164
165(defun message-id (msg) 165(defun message-id (msg)
166 (message-message-id msg)) 166 (message-message-id msg))
diff --git a/src/tg/method-macros.lisp b/src/tg/method-macros.lisp
index 3599328..e614db9 100644
--- a/src/tg/method-macros.lisp
+++ b/src/tg/method-macros.lisp
@@ -2,6 +2,7 @@
2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com> 2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com>
3(defpackage :ukkoclot/tg/method-macros 3(defpackage :ukkoclot/tg/method-macros
4 (:use :c2cl :iterate) 4 (:use :c2cl :iterate)
5 (:import-from :serapeum :take)
5 (:import-from :ukkoclot/state :bot) 6 (:import-from :ukkoclot/state :bot)
6 (:import-from :ukkoclot/strings :ends-with :lisp->camel-case) 7 (:import-from :ukkoclot/strings :ends-with :lisp->camel-case)
7 (:import-from :ukkoclot/transport :do-call) 8 (:import-from :ukkoclot/transport :do-call)
@@ -13,7 +14,10 @@
13 14
14 (defparameter +unique+ (gensym)) 15 (defparameter +unique+ (gensym))
15 16
16 (defun make-param (name type &optional (default +unique+) &key (skip-if-default (not (eq default +unique+)))) 17 ;; TODO: Fix optional-and-key !
18 (defun make-param (name type ; lint:suppress avoid-optional-and-key
19 &optional (default +unique+)
20 &key (skip-if-default (not (eq default +unique+))))
17 (let ((default (if (eq default +unique+) 21 (let ((default (if (eq default +unique+)
18 `(error ,(format nil "No value given for ~A" name)) 22 `(error ,(format nil "No value given for ~A" name))
19 default))) 23 default)))
@@ -29,7 +33,7 @@
29 (defun path-from-name (name) 33 (defun path-from-name (name)
30 (let ((str (lisp->camel-case (symbol-name name)))) 34 (let ((str (lisp->camel-case (symbol-name name))))
31 (if (ends-with str "%") 35 (if (ends-with str "%")
32 (subseq str 0 (- (length str) 1)) 36 (take (- (length str) 1) str)
33 str))) 37 str)))
34 38
35 (defun emit-append-to-args (param args) 39 (defun emit-append-to-args (param args)
@@ -46,7 +50,7 @@
46 (let ((revparams (reverse params)) 50 (let ((revparams (reverse params))
47 (args (gensym "ARGS")) 51 (args (gensym "ARGS"))
48 (bot (gensym "BOT"))) 52 (bot (gensym "BOT")))
49 `(defun ,name (,bot &key ,@(iter (for param in params) 53 `(defun ,name (,bot &key ,@(iter (for param in params) ; lint:suppress lambda-list-invalid
50 (collect (emit-defun-arg param)))) 54 (collect (emit-defun-arg param))))
51 (let (,args) 55 (let (,args)
52 ,@(iter (for param in revparams) 56 ,@(iter (for param in revparams)
diff --git a/src/tg/type-macros.lisp b/src/tg/type-macros.lisp
index 552c908..b9d649c 100644
--- a/src/tg/type-macros.lisp
+++ b/src/tg/type-macros.lisp
@@ -15,7 +15,10 @@
15 15
16 (defparameter +unique+ (gensym)) 16 (defparameter +unique+ (gensym))
17 17
18 (defun make-field (name type &optional (default +unique+) &key (skip-if-default (not (eq default +unique+)))) 18 ;; TODO: Fix optional-and-key !
19 (defun make-field (name type ; lint:suppress avoid-optional-and-key
20 &optional (default +unique+)
21 &key (skip-if-default (not (eq default +unique+))))
19 (let ((default (if (eq default +unique+) 22 (let ((default (if (eq default +unique+)
20 `(error ,(format nil "No value given for ~A" name)) 23 `(error ,(format nil "No value given for ~A" name))
21 default))) 24 default)))
@@ -70,7 +73,7 @@
70 ,@(emit-collect-nondefault-fields 73 ,@(emit-collect-nondefault-fields
71 name fields obj 74 name fields obj
72 (lambda (field value) 75 (lambda (field value)
73 `(setf ,result (cons ,(emit-coerced-field field value) ,result)))) 76 `(push ,(emit-coerced-field field value) ,result)))
74 ,result)))) 77 ,result))))
75 78
76 (defun emit-let-gethash (field source) 79 (defun emit-let-gethash (field source)
@@ -81,8 +84,8 @@
81 (let ((type-sym (gensym "TYPE-SYM")) 84 (let ((type-sym (gensym "TYPE-SYM"))
82 (source (gensym "SOURCE"))) 85 (source (gensym "SOURCE")))
83 `(defmethod parse-value ((,type-sym (eql ',name)) ,source) 86 `(defmethod parse-value ((,type-sym (eql ',name)) ,source)
84 (let ,(iter (for field in fields) 87 (let (,@(iter (for field in fields)
85 (collect (emit-let-gethash field source))) 88 (collect (emit-let-gethash field source))))
86 (,(type-constructor name) 89 (,(type-constructor name)
87 ,@(iter (for field in fields) 90 ,@(iter (for field in fields)
88 (appending (emit-constructor-args field)))))))) 91 (appending (emit-constructor-args field))))))))
@@ -92,7 +95,7 @@
92 (stream (gensym "STREAM")) 95 (stream (gensym "STREAM"))
93 (depth (gensym "DEPTH")) 96 (depth (gensym "DEPTH"))
94 (pprint-args (gensym "PPRINT-ARGS"))) 97 (pprint-args (gensym "PPRINT-ARGS")))
95 `(defun ,printer-name (,obj ,stream ,depth) 98 `(defun ,printer-name (,obj ,stream ,depth) ; lint:suppress lambda-list-invalid
96 (declare (ignore ,depth)) 99 (declare (ignore ,depth))
97 (let (,pprint-args) 100 (let (,pprint-args)
98 ,@(emit-collect-nondefault-fields 101 ,@(emit-collect-nondefault-fields
diff --git a/src/tg/update.lisp b/src/tg/update.lisp
index 1c4ae46..90535ed 100644
--- a/src/tg/update.lisp
+++ b/src/tg/update.lisp
@@ -49,4 +49,4 @@
49 ;; (chat-join-request (or chat-join-request null) nil) 49 ;; (chat-join-request (or chat-join-request null) nil)
50 ;; (chat-boost (or chat-boost-updated null) nil) 50 ;; (chat-boost (or chat-boost-updated null) nil)
51 ;; (removed-chat-boost (or chat-boost-removed) nil) 51 ;; (removed-chat-boost (or chat-boost-removed) nil)
52 ) 52 ) ; lint:suppress closing-parens-same-line whitespace-before-close-paren