adabots_1.8.1_d1ac6d8b/src/adabots_nodetypes.adb

 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
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
with Ada.Strings;
with Adabots_Exceptions;

package body Adabots_Nodetypes is
   function Replace_First (Value : String; Target, Replacement : Character) return String is
      use all type Ada.Strings.Membership;
      F      : Positive;
      L      : Natural;
      Output : String := Value;
   begin
      Ada.Strings.Fixed.Find_Token (Value, Ada.Strings.Maps.To_Set (Target), Inside, F, L);
      if L > 0
      then
         Output (F) := Replacement;
      end if;
      return Output;
   end Replace_First;

   function Convert (Value : String) return Node is
      use Adabots_Exceptions;
   begin
      return Node'Value (Replace_First (Value, ':', '_'));
   exception
      when Constraint_Error =>
         raise Unknown_Nodetype with "Unknown node type: " & Value;
   end Convert;

   function Convert (Value : Node) return String is
   begin
      return Replace_First (Value'Image, '_', ':');
   end Convert;
end Adabots_Nodetypes;