File: test_callback.adb

package info (click to toggle)
libtemplates-parser 25.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 3,404 kB
  • sloc: ada: 12,020; python: 658; makefile: 351; sh: 37
file content (136 lines) | stat: -rw-r--r-- 4,268 bytes parent folder | download | duplicates (6)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
------------------------------------------------------------------------------
--                             Templates Parser                             --
--                                                                          --
--                      Copyright (C) 2005-2012, AdaCore                    --
--                                                                          --
--  This is free software;  you can redistribute it  and/or modify it       --
--  under terms of the  GNU General Public License as published  by the     --
--  Free Software  Foundation;  either version 3,  or (at your option) any  --
--  later version.  This software is distributed in the hope  that it will  --
--  be useful, but WITHOUT ANY WARRANTY;  without even the implied warranty --
--  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU     --
--  General Public License for  more details.                               --
--                                                                          --
--  You should have  received  a copy of the GNU General  Public  License   --
--  distributed  with  this  software;   see  file COPYING3.  If not, go    --
--  to http://www.gnu.org/licenses for a complete copy of the license.      --
------------------------------------------------------------------------------

with Ada.Text_IO;

package body Test_Callback is

   ---------------
   -- Dimension --
   ---------------

   overriding function Dimension
     (C   : not null access Cursor_Tag;
      Var : String) return Natural is
   begin
      if Var = "CURSOR" then
         return 2;
      elsif Var = "C_MAT3" then
         return 3;
      else
         return 0;
      end if;
   end Dimension;

   ------------
   -- Length --
   ------------

   overriding function Length
     (C    : not null access Cursor_Tag;
      Var  : String;
      Path : Templates_Parser.Dynamic.Path) return Natural is
   begin
      if Var = "CURSOR" then
         if Path'Length = 1 then
            return 3;
         elsif Path'Length /= 2 then
            raise Constraint_Error;
         else
            return Path (Path'Last);
         end if;

      elsif Var = "C_MAT3" then
         if Path'Length = 1 then
            return 3;
         elsif Path'Length = 2 then
            return 2;
         elsif Path'Length /= 3 then
            raise Constraint_Error;
         else
            return Path (Path'Last) + 2;
         end if;

      else
         return 0;
      end if;
   end Length;

   --------------
   -- Callback --
   --------------

   overriding procedure Value
     (L   : not null access Lazy_Tag;
      Var : String;
      S   : in out Templates_Parser.Translate_Set)
   is
      use Templates_Parser;
   begin
      if Var = "VAR1" then
         Insert (S, Assoc ("VAR1", "Callback value"));
      elsif Var = "DYNAMIC" then
         Insert (S, Assoc ("DYNAMIC", "This is a dynamic tag"));
      elsif Var = "N" then
         Insert (S, Assoc ("N", Integer'Image (L.N)));
         L.N := L.N + 1;
      elsif Var = "DYN_VECT" then
         Insert (S, Assoc ("DYN_VECT", +"12" & "89" & "90" & "2"));
      elsif Var = "TMPLT_NAME" then
         Insert (S, Assoc (Var, +"incl.tmplt"));
      end if;
   end Value;

   overriding procedure Value
     (L   : not null access Log_Context;
      Var : String;
      S   : in out Templates_Parser.Translate_Set)
   is
      pragma Unreferenced (L, S);
   begin
      Ada.Text_IO.Put_Line ("Tag " & Var & " missing.");
   end Value;

   overriding function Value
     (C    : not null access Cursor_Tag;
      Var  : String;
      Path : Templates_Parser.Dynamic.Path) return String is
   begin
      if Var = "CURSOR" then
         if Path'Length = 2 then
            return "CT" & Path (Path'First)'Img & Path (Path'First + 1)'Img;
         else
            raise Constraint_Error;
         end if;

      elsif Var = "C_MAT3" then
         if Path'Length = 3 then
            return "CMAT"
              & Path (Path'First)'Img
              & Path (Path'First + 1)'Img
              & Path (Path'First + 2)'Img;
         else
            raise Constraint_Error;
         end if;

      else
         raise Constraint_Error;
      end if;
   end Value;

end Test_Callback;