------------------------------------------------------------------------------
-- Copyright (C) 2020 by Heisenbug Ltd. (gh+spat@heisenbug.eu)
--
-- This work is free. You can redistribute it and/or modify it under the
-- terms of the Do What The Fuck You Want To Public License, Version 2,
-- as published by Sam Hocevar. See the LICENSE file for more details.
------------------------------------------------------------------------------
pragma License (Unrestricted);
with Ada.Strings.Fixed;
package body SPAT.Entity_Location is
---------------------------------------------------------------------------
-- "<"
--
-- Compares to locations and returns True for the one which comes first,
-- either by file name, line number and then column number.
---------------------------------------------------------------------------
not overriding
function "<" (Left : in T;
Right : in T) return Boolean is
begin
if Left.Source_File = Right.Source_File then
if Left.Source_Line = Right.Source_Line then
return Left.Column < Right.Column;
end if;
return Left.Source_Line < Right.Source_Line;
end if;
return Left.Source_File < Right.Source_File;
end "<";
---------------------------------------------------------------------------
-- Create
---------------------------------------------------------------------------
overriding
function Create (Object : in JSON_Value) return T is
(Entity_Line.Create (Object => Object) with
Column => Object.Get (Field => Field_Names.Column));
---------------------------------------------------------------------------
-- Image
---------------------------------------------------------------------------
overriding
function Image (This : T) return String is
begin
return
Entity_Line.T (This).Image & ":" &
Ada.Strings.Fixed.Trim (Source => This.Column'Image,
Side => Ada.Strings.Both);
end Image;
end SPAT.Entity_Location;