Function: majutsu-template--apply-method-segment
majutsu-template--apply-method-segment is a natively compiled function
defined in majutsu-template.el.
Signature
(majutsu-template--apply-method-segment RECEIVER-NODE RECEIVER-TYPE METHOD-NAME ARGS)
Documentation
Apply METHOD-NAME with ARGS to RECEIVER-NODE of RECEIVER-TYPE.
Return a new template node representing the segment result. Native/rendered methods produce a raw method-call node. Local lowering methods invoke their registered Elisp body and return its rewritten node.
Source Code
;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-template.el
(defun majutsu-template--apply-method-segment (receiver-node receiver-type method-name args)
"Apply METHOD-NAME with ARGS to RECEIVER-NODE of RECEIVER-TYPE.
Return a new template node representing the segment result. Native/rendered
methods produce a raw method-call node. Local lowering methods invoke their
registered Elisp body and return its rewritten node."
(let* ((dispatch (majutsu-template--method-dispatch-info receiver-type method-name))
(dispatch-type (or (car-safe dispatch) receiver-type))
(meta (cdr-safe dispatch))
(prepared-args (majutsu-template--check-method-segment-args
receiver-type method-name args)))
(if (majutsu-template--method-lowering-meta-p meta)
(let ((dispatch-object (if dispatch-type
(majutsu-template--node-with-type receiver-node dispatch-type)
receiver-node)))
(apply (majutsu-template--fn-symbol meta)
dispatch-object
prepared-args))
(let* ((object-str (majutsu-template--render-node receiver-node))
(arg-str (mapconcat #'majutsu-template--render-node prepared-args ", "))
(result-type (majutsu-template--method-segment-result-type
receiver-type method-name prepared-args))
(deferred-props (and (null dispatch)
(majutsu-template--node-has-deferred-type-p receiver-node)
'(:deferred-type t))))
(majutsu-template--raw-node
(if (= (length arg-str) 0)
(format "%s.%s()" object-str method-name)
(format "%s.%s(%s)" object-str method-name arg-str))
result-type
deferred-props)))))