diff options
Diffstat (limited to 'src/tg')
| -rw-r--r-- | src/tg/message-entity.lisp | 6 | ||||
| -rw-r--r-- | src/tg/message.lisp | 2 | ||||
| -rw-r--r-- | src/tg/method-macros.lisp | 10 | ||||
| -rw-r--r-- | src/tg/type-macros.lisp | 13 | ||||
| -rw-r--r-- | src/tg/update.lisp | 2 |
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 |