#!/usr/bin/env escript
% vim:ft=erlang:
%-
% Copyright (c) 2012-2014 Yakaz
% Copyright (c) 2016 Jean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr>
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
% 1. Redistributions of source code must retain the above copyright
%    notice, this list of conditions and the following disclaimer.
% 2. Redistributions in binary form must reproduce the above copyright
%    notice, this list of conditions and the following disclaimer in the
%    documentation and/or other materials provided with the distribution.
%
% THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
% ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
% FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
% OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
% HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
% OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
% SUCH DAMAGE.

main([Input, Count_S]) ->
    Count = list_to_integer(Count_S),
    {ok, Content} = file:read_file(Input),
    try
        T0 = erlang:now(),
        loop(Content, Count),
        T1 = erlang:now(),
        print_result(Count, T0, T1)
    catch
        _:_ ->
            print_result(0, 0, 0)
    end.

loop(Content, Count) when Count >= 1 ->
    yaml:load(Content, []),
    loop(Content, Count - 1);
loop(_, 0) ->
    ok.

print_result(Count, T0, T1) when Count > 0 ->
    Diff = timer:now_diff(T1, T0),
    io:format("  yamler:           ~8.2f us~n", [Diff / Count]);
print_result(_, _, _) ->
    io:format("  yamler:                n/a~n", []).
