summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
blob: 55ff7cb2b90ad22330d2b9762101ce67a2b0cb1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
%
% CoDi: Commutative Diagrams for TeX
% Copyright (c) 2015-2024 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
% This file is part of CoDi 1.1.1, released on 2024/03/29 under MIT license.
%

% βάπτω • (báptō)
%   1. I dip, submerge
%   2. I dye, colour
%   3. I baptise

% Bapto is a node labeling mechanism.
% It allows non-invasive relabeling and preprocessing.

% ,-- input           input hook
% `-> controller --.  the controller conditionally
% ,---[overwrite]--'    (depending upon the given overwriting behaviour)
% `-> trigger -----.    calls the trigger
% ,--- ??? <-------'  either short the keys or do preprocessing here
% `-> dispatcher --.  the dispatcher conditionally
% ,---[overwrite]--|    (depending upon the given overwriting behaviour)
% `-> (name|alias) |    assigns the label
%     output <-----'  output hook

%==[ input ]====================================================================

\pgfqkeys{/bapto/input}{
  .forward to=/bapto/controller
}

%==[ controller/dispatcher ]====================================================

\pgfqkeys{/bapto/overwrite}{.is choice,
  false/.style={/bapto/controller/.code={\def\kDTmp{##1}\ifx\kDTmp\empty\else
                                         \tikz@fig@name\ifx\tikz@fig@name\empty
                                         \pgfqkeys{/bapto}{trigger={##1}}\fi\fi},
                /bapto/dispatcher/.code={\pgfqkeys{/tikz}{name=##1}%
                                         \pgfqkeys{/bapto}{output=##1}}},
  alias/.style={/bapto/controller/.code={\def\kDTmp{##1}\ifx\kDTmp\empty\else
                                         \pgfqkeys{/bapto}{trigger={##1}}\fi},
                /bapto/dispatcher/.code={\pgfqkeys{/tikz}{alias=##1}%
                                         \pgfqkeys{/bapto}{output=##1}}},
  true/.style= {/bapto/controller/.code={\def\kDTmp{##1}\ifx\kDTmp\empty\else
                                         \pgfqkeys{/bapto}{trigger={##1}}\fi},
                /bapto/dispatcher/.code={\pgfqkeys{/tikz}{name=##1}%
                                         \pgfqkeys{/bapto}{output=##1}}},
  false, % default is no name overwriting and no aliasing
}

%==[ output ]===================================================================

\pgfqkeys{/bapto/output}{
  .code={}
}