21 lines
622 B
Erlang
21 lines
622 B
Erlang
-module(akh_source_map).
|
|
-include("akh_source_map.hrl").
|
|
-export([
|
|
empty/0,
|
|
insert/3,
|
|
get_loc/2
|
|
]).
|
|
|
|
-spec empty() -> source_map().
|
|
empty() -> gb_trees:empty().
|
|
|
|
-spec insert(Offset :: non_neg_integer(), Line :: pos_integer(), source_map()) ->
|
|
source_map().
|
|
insert(Offset, Line, SourceMap) -> gb_trees:insert(Offset, Line, SourceMap).
|
|
|
|
-spec get_loc(Offset :: non_neg_integer(), source_map()) -> #loc{}.
|
|
get_loc(Offset, SourceMap) ->
|
|
case gb_trees:smaller(Offset, SourceMap) of
|
|
{Start, Line} -> #loc{line = Line, col = Offset - Start - 1};
|
|
none -> #loc{line = 0, col = Offset}
|
|
end.
|