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;