From bd2660f6e090e88556baf203b2769b9319a780d5 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sun, 8 Feb 2015 18:42:05 -0600 Subject: [PATCH] update for rebar3 --- .gitignore | 6 +- Makefile | 25 -- rebar | Bin 148324 -> 0 bytes rebar.config | 28 +- rebar.lock | 16 ++ src/conf_parse.erl | 431 ++++++++++++++++++++++++++++++ src/cuttlefish_duration_parse.erl | 338 +++++++++++++++++++++++ tools.mk | 48 ---- 8 files changed, 799 insertions(+), 93 deletions(-) delete mode 100644 Makefile delete mode 100755 rebar create mode 100644 rebar.lock create mode 100644 src/conf_parse.erl create mode 100644 src/cuttlefish_duration_parse.erl delete mode 100644 tools.mk diff --git a/.gitignore b/.gitignore index 2b8be612..c009caec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,15 @@ +.rebar3 +_build .DS_Store generated.config generated.conf ebin/* .eunit -src/conf_parse.erl deps cuttlefish *.sublime-project *.sublime-workspace log .local_dialyzer_plt -src/cuttlefish_duration_parse.erl erln8.config -test_fixtures/escript_prune_test/generated.config/* \ No newline at end of file +test_fixtures/escript_prune_test/generated.config/* diff --git a/Makefile b/Makefile deleted file mode 100644 index 9fe9f832..00000000 --- a/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \ - public_key mnesia syntax_tools compiler -COMBO_PLT = $(HOME)/.cuttlefish_combo_dialyzer_plt - -.PHONY: deps - -all: deps compile - ./rebar skip_deps=true escriptize - -deps: - ./rebar get-deps - -docsclean: - @rm -rf doc/*.png doc/*.html doc/*.css doc/edoc-info - -compile: deps - ./rebar compile - -clean: - @./rebar clean - -distclean: clean - @rm -rf cuttlefish deps - -include tools.mk diff --git a/rebar b/rebar deleted file mode 100755 index d8aef5789ab1300d5a9c74ce83139ada24437a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148324 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
5>jejWHTbci)7i@O+y{{)_d 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%0DjB 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 z z9QeX22ruew?ubP;Do@+gSNIBzkjzNtQN4Uj7Z)MPQ3zJ9Ht4A;Ljh?xc)IGM!N3BYiq#RiKc1zu|jOEr{h&C zbwkv8v*DXVU!iE&msc5Z=p@`u_qp_NWmC)DP~N={@@`p%)G6-8+{RD{^0hFPc!Vj? zP)Orcqn(JFzHK&a>-E*td+C|K24nV>>f zUhqBY;5rmCu#KCbRTfh`SEWm@$$|<(&B2YpC{a^Ld&S+Mxh!)>a@TZ9*X0-?g)VR_ zK|PX{PtP(Zg2cwnyOnH`X>iHAi|mYa`vWeS)UU zqTQcmwPJ@HQEl!lU7r~$s@g8qmKQiu13`rqouVilou#8QG7-d42Q$G)s)0STeX#<~ z7YYB8eWJd^G(c5F&rrQIr-(a-VS6I!p??})Ja&!=WZF7mlUhC4-c?8Q zfyXrpr@-Y6{IYxlLSomP&7h#A8kk_h;e*G6&T^fLRFtarSWtU`nK{nK=i>NR87j%r z$=qMuIf4x4JzM$7g9OtRmp|^H$+Qzd!m>9uHr8IVTsvPGeto{&kZ4xPkj>Tnn8fDd zYkc5-RwWa<*K>BMnZCnD3vxKkKtwAGtIuiRQtEnm{amR;JVD=B9eDPtP&}jY0zmxw0lX zkr`p-b2pJR?(tI;~Ji@rkx-6}Aa zp*Gj}1hJ`NWIwgvEc8M8%)0PIjEcx$)w^br`O?IZvPE1M%*OMRr2)#gY^iynNgDDfRcF9QiD9)bCzHou`+ag; z;mI(4x$o<}7!G^SkElpwueU6wEUj8Uy@W^((UnSG#qYxJh&wtu^c*;PIVqN4ysno& zNUo$+vYV^iwG~}Na>)XgwAd4E$tra;SO@Mj-Y|HhcV(Z9HYMjop;;A_XL{W9-Dh4O zTMJI^c!V!9-kt~zhwo$TjsEu$(!0BH6cg-o45K8@wgM0vv28ITF@qZ<(z^NVZ0lejZA1hrgO)Ef| z@cUN2)iN~u*Mq-wi17RM#|VHv>??3Mh<@imiMtQ#0|71;Hh*Q5 zy8ZHBjOteI^?Klh$R8*JfC4`Me0ebN=fA$()D{>WwGDn<;BG;7?rxDBWMv#oyBcRd| zVSl~Z-4^9N?|%{Mnp$Rh+UnZorWS@Kx>omA&aQ(r;}$?0LHeZ{xh1XwdS+0ge(DR< zZ?E70HIGRWd4~|FpNU7m#*SMUB+y*@lA-bb=F zWBhYDpL-8l?*mSt0kqv+V3XQCKtSNC`)An=-Vb!tu`&5`Va+kraAJXq69BUD{gj2> zR$lw{eav66ufOqBZ1#DoU7$s0_VSmLg-Pa0GvJyRlfS+jqgAvi4O1n(F7iDQ{Xr-%e zXKi+`&%xE9Hi`k$5^yd2Ux^!TUDq+=9-Os-u8GOLAe0lRQ(B-;2>=axw}{u-_knD+ zbPTQTpUm5YpX-{gWl=eZ{v0L~6YU_D@XzeN_*7+1M@W zx>^Cvc6tla-n<9&zuc#{oc}JZfvW#k2YP$*;Fsj+Pmche{jW!y|9Rw} z`uv$*=AUKx{Rw7n?auk{!~e_qp$&=wO%`&CAvyos>{}cDhXLLnK|!DyDsDmN7rzJn z!v>{+=9jpo`Ca~p_OEOcpd3(P^(|-W$8R~mGYV7~eGAjR`48+?a{RYU8q_pU$?`1? z0}T9rjoMGr?~DVL8QObPQ@7sI>Q%7X0A%#;N};^aZ7XYFck;tKh$({jG2X zC4uTHZ%NsZe<1y?(m)lGx45TJzrp>jmjpEoRQPyHO8yh+cZPvV7H@GZz@Fj%EnoyS z4^)SE%PamJ4@8v+N(7Z?-4eIpeq-TZ#NP*xrS272~;OIsoS6YcgS7?cQlzIsa>BKZ^XcWw!KHhIfi zBmEQa?~_VU^FYtsZgGm_f5QFu1P+u8y19N!?xX(yA>Y|*2Ze)fv);n-XnzC$d(#z^ kqy(}xcuOj$`vd8=d7yyRCm7f>;NLQ^NaLXgHo3t5A9hN7e*gdg diff --git a/rebar.config b/rebar.config index add37dd1..86111511 100644 --- a/rebar.config +++ b/rebar.config @@ -1,23 +1,17 @@ -{require_otp_vsn, "R16|17|18"}. +{minimum_otp_vsn, "R16"}. -{erl_opts, [warnings_as_errors, {parse_transform, lager_transform}, debug_info, warn_untyped_record]}. +{erl_opts, [warnings_as_errors, + {parse_transform, lager_transform}, + debug_info, + warn_untyped_record]}. -{eunit_opts, [verbose]}. -{cover_enabled, true}. +{deps, [getopt, lager, neotoma]}. {escript_emu_args, "%%! -escript main cuttlefish_escript -smp disable +A 0\n"}. -{escript_incl_apps, [goldrush, getopt, lager]}. - -{xref_checks, []}. -{xref_queries, [{"(XC - UC) || (XU - X - B - \"(rebar.*|mustache)\" : Mod)", []}]}. +{escript_incl_apps, [goldrush, getopt, lager, cuttlefish]}. +{escript_main_app, cuttlefish}. -{deps, [ - {getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v0.8.2"}}}, - {lager, "(2.0|2.1|2.2).*", {git, "git://github.com/basho/lager.git", {tag, "2.2.0"}}}, - {neotoma, "1.7.3", {git, "git://github.com/seancribbs/neotoma.git", {tag, "1.7.3"}}} - ]}. +{provider_hooks, [{post, [{compile, escriptize}]}]}. -{post_hooks, [ - {"-win32", compile, "rebar escriptize"}, - {"^((?!-win32).)*$", compile, "./rebar escriptize"} - ]}. +{eunit_opts, [verbose]}. +{cover_enabled, true}. diff --git a/rebar.lock b/rebar.lock new file mode 100644 index 00000000..a942b559 --- /dev/null +++ b/rebar.lock @@ -0,0 +1,16 @@ +[{<<"goldrush">>, + {git,"git://github.com/DeadZen/goldrush.git", + {ref,"71e63212f12c25827e0c1b4198d37d5d018a7fec"}}, + 1}, + {<<"neotoma">>, + {git,"git://github.com/seancribbs/neotoma.git", + {ref,"760928ec8870da02eb11bccb501e2700925d06c6"}}, + 0}, + {<<"lager">>, + {git,"git://github.com/basho/lager.git", + {ref,"b6b6cebcb27ccff8acc59ae775acebc2f52e4926"}}, + 0}, + {<<"getopt">>, + {git,"git://github.com/jcomellas/getopt.git", + {ref,"659a28f4145bc9843598972854299dc4ea77e4cb"}}, + 0}]. diff --git a/src/conf_parse.erl b/src/conf_parse.erl new file mode 100644 index 00000000..c6e2a286 --- /dev/null +++ b/src/conf_parse.erl @@ -0,0 +1,431 @@ +-module(conf_parse). +-export([parse/1,file/1]). +-define(p_anything,true). +-define(p_charclass,true). +-define(p_choose,true). +-define(p_label,true). +-define(p_not,true). +-define(p_one_or_more,true). +-define(p_optional,true). +-define(p_scan,true). +-define(p_seq,true). +-define(p_string,true). +-define(p_zero_or_more,true). + + + + +%% ------------------------------------------------------------------- +%% +%% conf_parse: for all your .conf parsing needs. +%% +%% Copyright (c) 2013 Basho Technologies, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% ------------------------------------------------------------------- + +%% This module implements the parser for a sysctl-style +%% configuration format. Example: +%% +%% ``` +%% riak.local.node = riak@127.0.0.1 +%% riak.local.http = 127.0.0.1:8098 +%% riak.local.pb = 127.0.0.1:8087 +%% riak.local.storage.backend = bitcask''' +%% +%% This would parse into the following flat proplist: +%% +%% ``` +%% [{<<"riak.local.node">>,<<"riak@127.0.0.1">>}, +%% {<<"riak.local.http">>,<<"127.0.0.1:8098">>}, +%% {<<"riak.local.pb">>,<<"127.0.0.1:8087">>}, +%% {<<"riak.local.storage.backend">>,<<"bitcask">>}]''' +%% +%% Other modules in this application interpret and validate the +%% result of a successful parse. +%% @end +-define(line, true). +-define(FMT(F,A), lists:flatten(io_lib:format(F,A))). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). +-compile(export_all). +-endif. + +%% @doc Only let through lines that are not comments or whitespace. +is_setting(ws) -> false; +is_setting(comment) -> false; +is_setting(_) -> true. + +%% @doc Removes escaped dots from keys +unescape_dots([$\\,$.|Rest]) -> + [$.|unescape_dots(Rest)]; +unescape_dots([]) -> []; +unescape_dots([C|Rest]) -> + [C|unescape_dots(Rest)]. + +-ifdef(TEST). +file_test() -> + Conf = conf_parse:file("../test/riak.conf"), + ?assertEqual([ + {["ring_size"],"32"}, + {["anti_entropy"],"debug"}, + {["log","error","file"],"/var/log/error.log"}, + {["log","console","file"],"/var/log/console.log"}, + {["log","syslog"],"on"}, + {["listener","http","internal"],"127.0.0.1:8098"}, + {["listener","http","external"],"10.0.0.1:80"} + ], Conf), + ok. + +utf8_test() -> + Conf = conf_parse:parse("setting = thingÅ’\n"), + ?assertEqual([{["setting"], + {error, {conf_to_latin1, 1}} + }], Conf), + ok. +-endif. + +-spec file(file:name()) -> any(). +file(Filename) -> case file:read_file(Filename) of {ok,Bin} -> parse(Bin); Err -> Err end. + +-spec parse(binary() | list()) -> any(). +parse(List) when is_list(List) -> parse(list_to_binary(List)); +parse(Input) when is_binary(Input) -> + _ = setup_memo(), + Result = case 'config'(Input,{{line,1},{column,1}}) of + {AST, <<>>, _Index} -> AST; + Any -> Any + end, + release_memo(), Result. + +-spec 'config'(input(), index()) -> parse_result(). +'config'(Input, Index) -> + p(Input, Index, 'config', fun(I,D) -> (p_zero_or_more(fun 'line'/2))(I,D) end, fun(Node, _Idx) -> + [ L || L <- Node, is_setting(L) ] + end). + +-spec 'line'(input(), index()) -> parse_result(). +'line'(Input, Index) -> + p(Input, Index, 'line', fun(I,D) -> (p_choose([p_seq([p_choose([fun 'setting'/2, fun 'comment'/2, p_one_or_more(fun 'ws'/2)]), p_choose([fun 'crlf'/2, fun 'eof'/2])]), fun 'crlf'/2]))(I,D) end, fun(Node, _Idx) -> + case Node of + [ Line, _EOL ] -> Line; + Line -> Line + end + end). + +-spec 'setting'(input(), index()) -> parse_result(). +'setting'(Input, Index) -> + p(Input, Index, 'setting', fun(I,D) -> (p_seq([p_zero_or_more(fun 'ws'/2), fun 'key'/2, p_zero_or_more(fun 'ws'/2), p_string(<<"=">>), p_zero_or_more(fun 'ws'/2), fun 'value'/2, p_zero_or_more(fun 'ws'/2), p_optional(fun 'comment'/2)]))(I,D) end, fun(Node, _Idx) -> + [ _, Key, _, _Eq, _, Value, _, _ ] = Node, + {Key, Value} + end). + +-spec 'key'(input(), index()) -> parse_result(). +'key'(Input, Index) -> + p(Input, Index, 'key', fun(I,D) -> (p_seq([p_label('head', fun 'word'/2), p_label('tail', p_zero_or_more(p_seq([p_string(<<".">>), fun 'word'/2])))]))(I,D) end, fun(Node, _Idx) -> + [{head, H}, {tail, T}] = Node, + [unicode:characters_to_list(H)| [ unicode:characters_to_list(W) || [_, W] <- T]] + end). + +-spec 'value'(input(), index()) -> parse_result(). +'value'(Input, Index) -> + p(Input, Index, 'value', fun(I,D) -> (p_one_or_more(p_seq([p_not(p_choose([p_seq([p_zero_or_more(fun 'ws'/2), fun 'crlf'/2]), fun 'comment'/2])), p_anything()])))(I,D) end, fun(Node, Idx) -> + case unicode:characters_to_binary(Node, utf8, latin1) of + {_Status, _Begining, _Rest} -> + {error, {conf_to_latin1, line(Idx)}}; + Bin -> + binary_to_list(Bin) + end + end). + +-spec 'comment'(input(), index()) -> parse_result(). +'comment'(Input, Index) -> + p(Input, Index, 'comment', fun(I,D) -> (p_seq([p_zero_or_more(fun 'ws'/2), p_string(<<"#">>), p_zero_or_more(p_seq([p_not(fun 'crlf'/2), p_anything()]))]))(I,D) end, fun(_Node, _Idx) ->comment end). + +-spec 'word'(input(), index()) -> parse_result(). +'word'(Input, Index) -> + p(Input, Index, 'word', fun(I,D) -> (p_one_or_more(p_choose([p_string(<<"\\.">>), p_charclass(<<"[A-Za-z0-9_-]">>)])))(I,D) end, fun(Node, _Idx) -> + unescape_dots(unicode:characters_to_list(Node)) + end). + +-spec 'crlf'(input(), index()) -> parse_result(). +'crlf'(Input, Index) -> + p(Input, Index, 'crlf', fun(I,D) -> (p_seq([p_optional(p_string(<<"\r">>)), p_string(<<"\n">>)]))(I,D) end, fun(_Node, _Idx) ->ws end). + +-spec 'eof'(input(), index()) -> parse_result(). +'eof'(Input, Index) -> + p(Input, Index, 'eof', fun(I,D) -> (p_not(p_anything()))(I,D) end, fun(_Node, _Idx) ->ws end). + +-spec 'ws'(input(), index()) -> parse_result(). +'ws'(Input, Index) -> + p(Input, Index, 'ws', fun(I,D) -> (p_charclass(<<"[\s\t]">>))(I,D) end, fun(_Node, _Idx) ->ws end). + + + +-file("peg_includes.hrl", 1). +-type index() :: {{line, pos_integer()}, {column, pos_integer()}}. +-type input() :: binary(). +-type parse_failure() :: {fail, term()}. +-type parse_success() :: {term(), input(), index()}. +-type parse_result() :: parse_failure() | parse_success(). +-type parse_fun() :: fun((input(), index()) -> parse_result()). +-type xform_fun() :: fun((input(), index()) -> term()). + +-spec p(input(), index(), atom(), parse_fun(), xform_fun()) -> parse_result(). +p(Inp, StartIndex, Name, ParseFun, TransformFun) -> + case get_memo(StartIndex, Name) of % See if the current reduction is memoized + {ok, Memo} -> %Memo; % If it is, return the stored result + Memo; + _ -> % If not, attempt to parse + Result = case ParseFun(Inp, StartIndex) of + {fail,_} = Failure -> % If it fails, memoize the failure + Failure; + {Match, InpRem, NewIndex} -> % If it passes, transform and memoize the result. + Transformed = TransformFun(Match, StartIndex), + {Transformed, InpRem, NewIndex} + end, + memoize(StartIndex, Name, Result), + Result + end. + +-spec setup_memo() -> ets:tid(). +setup_memo() -> + put({parse_memo_table, ?MODULE}, ets:new(?MODULE, [set])). + +-spec release_memo() -> true. +release_memo() -> + ets:delete(memo_table_name()). + +-spec memoize(index(), atom(), parse_result()) -> true. +memoize(Index, Name, Result) -> + Memo = case ets:lookup(memo_table_name(), Index) of + [] -> []; + [{Index, Plist}] -> Plist + end, + ets:insert(memo_table_name(), {Index, [{Name, Result}|Memo]}). + +-spec get_memo(index(), atom()) -> {ok, term()} | {error, not_found}. +get_memo(Index, Name) -> + case ets:lookup(memo_table_name(), Index) of + [] -> {error, not_found}; + [{Index, Plist}] -> + case proplists:lookup(Name, Plist) of + {Name, Result} -> {ok, Result}; + _ -> {error, not_found} + end + end. + +-spec memo_table_name() -> ets:tid(). +memo_table_name() -> + get({parse_memo_table, ?MODULE}). + +-ifdef(p_eof). +-spec p_eof() -> parse_fun(). +p_eof() -> + fun(<<>>, Index) -> {eof, [], Index}; + (_, Index) -> {fail, {expected, eof, Index}} end. +-endif. + +-ifdef(p_optional). +-spec p_optional(parse_fun()) -> parse_fun(). +p_optional(P) -> + fun(Input, Index) -> + case P(Input, Index) of + {fail,_} -> {[], Input, Index}; + {_, _, _} = Success -> Success + end + end. +-endif. + +-ifdef(p_not). +-spec p_not(parse_fun()) -> parse_fun(). +p_not(P) -> + fun(Input, Index)-> + case P(Input,Index) of + {fail,_} -> + {[], Input, Index}; + {Result, _, _} -> {fail, {expected, {no_match, Result},Index}} + end + end. +-endif. + +-ifdef(p_assert). +-spec p_assert(parse_fun()) -> parse_fun(). +p_assert(P) -> + fun(Input,Index) -> + case P(Input,Index) of + {fail,_} = Failure-> Failure; + _ -> {[], Input, Index} + end + end. +-endif. + +-ifdef(p_seq). +-spec p_seq([parse_fun()]) -> parse_fun(). +p_seq(P) -> + fun(Input, Index) -> + p_all(P, Input, Index, []) + end. + +-spec p_all([parse_fun()], input(), index(), [term()]) -> parse_result(). +p_all([], Inp, Index, Accum ) -> {lists:reverse( Accum ), Inp, Index}; +p_all([P|Parsers], Inp, Index, Accum) -> + case P(Inp, Index) of + {fail, _} = Failure -> Failure; + {Result, InpRem, NewIndex} -> p_all(Parsers, InpRem, NewIndex, [Result|Accum]) + end. +-endif. + +-ifdef(p_choose). +-spec p_choose([parse_fun()]) -> parse_fun(). +p_choose(Parsers) -> + fun(Input, Index) -> + p_attempt(Parsers, Input, Index, none) + end. + +-spec p_attempt([parse_fun()], input(), index(), none | parse_failure()) -> parse_result(). +p_attempt([], _Input, _Index, Failure) -> Failure; +p_attempt([P|Parsers], Input, Index, FirstFailure)-> + case P(Input, Index) of + {fail, _} = Failure -> + case FirstFailure of + none -> p_attempt(Parsers, Input, Index, Failure); + _ -> p_attempt(Parsers, Input, Index, FirstFailure) + end; + Result -> Result + end. +-endif. + +-ifdef(p_zero_or_more). +-spec p_zero_or_more(parse_fun()) -> parse_fun(). +p_zero_or_more(P) -> + fun(Input, Index) -> + p_scan(P, Input, Index, []) + end. +-endif. + +-ifdef(p_one_or_more). +-spec p_one_or_more(parse_fun()) -> parse_fun(). +p_one_or_more(P) -> + fun(Input, Index)-> + Result = p_scan(P, Input, Index, []), + case Result of + {[_|_], _, _} -> + Result; + _ -> + {fail, {expected, Failure, _}} = P(Input,Index), + {fail, {expected, {at_least_one, Failure}, Index}} + end + end. +-endif. + +-ifdef(p_label). +-spec p_label(atom(), parse_fun()) -> parse_fun(). +p_label(Tag, P) -> + fun(Input, Index) -> + case P(Input, Index) of + {fail,_} = Failure -> + Failure; + {Result, InpRem, NewIndex} -> + {{Tag, Result}, InpRem, NewIndex} + end + end. +-endif. + +-ifdef(p_scan). +-spec p_scan(parse_fun(), input(), index(), [term()]) -> {[term()], input(), index()}. +p_scan(_, <<>>, Index, Accum) -> {lists:reverse(Accum), <<>>, Index}; +p_scan(P, Inp, Index, Accum) -> + case P(Inp, Index) of + {fail,_} -> {lists:reverse(Accum), Inp, Index}; + {Result, InpRem, NewIndex} -> p_scan(P, InpRem, NewIndex, [Result | Accum]) + end. +-endif. + +-ifdef(p_string). +-spec p_string(binary()) -> parse_fun(). +p_string(S) -> + Length = erlang:byte_size(S), + fun(Input, Index) -> + try + <> = Input, + {S, Rest, p_advance_index(S, Index)} + catch + error:{badmatch,_} -> {fail, {expected, {string, S}, Index}} + end + end. +-endif. + +-ifdef(p_anything). +-spec p_anything() -> parse_fun(). +p_anything() -> + fun(<<>>, Index) -> {fail, {expected, any_character, Index}}; + (Input, Index) when is_binary(Input) -> + <> = Input, + {<>, Rest, p_advance_index(<>, Index)} + end. +-endif. + +-ifdef(p_charclass). +-spec p_charclass(string() | binary()) -> parse_fun(). +p_charclass(Class) -> + {ok, RE} = re:compile(Class, [unicode, dotall]), + fun(Inp, Index) -> + case re:run(Inp, RE, [anchored]) of + {match, [{0, Length}|_]} -> + {Head, Tail} = erlang:split_binary(Inp, Length), + {Head, Tail, p_advance_index(Head, Index)}; + _ -> {fail, {expected, {character_class, binary_to_list(Class)}, Index}} + end + end. +-endif. + +-ifdef(p_regexp). +-spec p_regexp(binary()) -> parse_fun(). +p_regexp(Regexp) -> + {ok, RE} = re:compile(Regexp, [unicode, dotall, anchored]), + fun(Inp, Index) -> + case re:run(Inp, RE) of + {match, [{0, Length}|_]} -> + {Head, Tail} = erlang:split_binary(Inp, Length), + {Head, Tail, p_advance_index(Head, Index)}; + _ -> {fail, {expected, {regexp, binary_to_list(Regexp)}, Index}} + end + end. +-endif. + +-ifdef(line). +-spec line(index() | term()) -> pos_integer() | undefined. +line({{line,L},_}) -> L; +line(_) -> undefined. +-endif. + +-ifdef(column). +-spec column(index() | term()) -> pos_integer() | undefined. +column({_,{column,C}}) -> C; +column(_) -> undefined. +-endif. + +-spec p_advance_index(input() | unicode:charlist() | pos_integer(), index()) -> index(). +p_advance_index(MatchedInput, Index) when is_list(MatchedInput) orelse is_binary(MatchedInput)-> % strings + lists:foldl(fun p_advance_index/2, Index, unicode:characters_to_list(MatchedInput)); +p_advance_index(MatchedInput, Index) when is_integer(MatchedInput) -> % single characters + {{line, Line}, {column, Col}} = Index, + case MatchedInput of + $\n -> {{line, Line+1}, {column, 1}}; + _ -> {{line, Line}, {column, Col+1}} + end. diff --git a/src/cuttlefish_duration_parse.erl b/src/cuttlefish_duration_parse.erl new file mode 100644 index 00000000..2f26ae95 --- /dev/null +++ b/src/cuttlefish_duration_parse.erl @@ -0,0 +1,338 @@ +-module(cuttlefish_duration_parse). +-export([parse/1,file/1]). +-define(p_charclass,true). +-define(p_choose,true). +-define(p_one_or_more,true). +-define(p_scan,true). +-define(p_seq,true). +-define(p_string,true). +-define(p_zero_or_more,true). + + + + +%% ------------------------------------------------------------------- +%% +%% cuttlefish_duration_parse: parses duration strings +%% +%% Copyright (c) 2014 Basho Technologies, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% ------------------------------------------------------------------- + +-include("cuttlefish_duration.hrl"). + +-define(FLATTEN(S), binary_to_list(iolist_to_binary(S))). + +-spec file(file:name()) -> any(). +file(Filename) -> case file:read_file(Filename) of {ok,Bin} -> parse(Bin); Err -> Err end. + +-spec parse(binary() | list()) -> any(). +parse(List) when is_list(List) -> parse(list_to_binary(List)); +parse(Input) when is_binary(Input) -> + _ = setup_memo(), + Result = case 'duration'(Input,{{line,1},{column,1}}) of + {AST, <<>>, _Index} -> AST; + Any -> Any + end, + release_memo(), Result. + +-spec 'duration'(input(), index()) -> parse_result(). +'duration'(Input, Index) -> + p(Input, Index, 'duration', fun(I,D) -> (p_one_or_more(fun 'duration_segment'/2))(I,D) end, fun(Node, _Idx) ->lists:sum(Node) end). + +-spec 'duration_segment'(input(), index()) -> parse_result(). +'duration_segment'(Input, Index) -> + p(Input, Index, 'duration_segment', fun(I,D) -> (p_seq([p_choose([fun 'float'/2, fun 'integer'/2]), fun 'unit'/2]))(I,D) end, fun(Node, _Idx) -> + [Amount, Span] = Node, + {Span, Multiplier} = lists:keyfind(Span, 1, ?MULTIPLIERS), + Amount * Multiplier + end). + +-spec 'integer'(input(), index()) -> parse_result(). +'integer'(Input, Index) -> + p(Input, Index, 'integer', fun(I,D) -> (p_seq([p_charclass(<<"[1-9]">>), p_zero_or_more(p_charclass(<<"[0-9]">>))]))(I,D) end, fun(Node, _Idx) ->list_to_integer(?FLATTEN(Node)) end). + +-spec 'unit'(input(), index()) -> parse_result(). +'unit'(Input, Index) -> + p(Input, Index, 'unit', fun(I,D) -> (p_choose([p_string(<<"f">>), p_string(<<"w">>), p_string(<<"d">>), p_string(<<"h">>), p_string(<<"ms">>), p_string(<<"m">>), p_string(<<"s">>)]))(I,D) end, fun(Node, _Idx) ->binary_to_atom(Node, latin1) end). + +-spec 'float'(input(), index()) -> parse_result(). +'float'(Input, Index) -> + p(Input, Index, 'float', fun(I,D) -> (p_choose([p_seq([p_one_or_more(p_charclass(<<"[0-9]">>)), p_string(<<".">>), p_one_or_more(p_charclass(<<"[0-9]">>))]), p_seq([p_string(<<".">>), p_one_or_more(p_charclass(<<"[0-9]">>))])]))(I,D) end, fun(Node, _Idx) -> + case Node of + [<<".">>, Mantissa] -> + list_to_float(?FLATTEN(["0.", Mantissa])); + _ -> + list_to_float(?FLATTEN(Node)) + end + end). + + + +-file("peg_includes.hrl", 1). +-type index() :: {{line, pos_integer()}, {column, pos_integer()}}. +-type input() :: binary(). +-type parse_failure() :: {fail, term()}. +-type parse_success() :: {term(), input(), index()}. +-type parse_result() :: parse_failure() | parse_success(). +-type parse_fun() :: fun((input(), index()) -> parse_result()). +-type xform_fun() :: fun((input(), index()) -> term()). + +-spec p(input(), index(), atom(), parse_fun(), xform_fun()) -> parse_result(). +p(Inp, StartIndex, Name, ParseFun, TransformFun) -> + case get_memo(StartIndex, Name) of % See if the current reduction is memoized + {ok, Memo} -> %Memo; % If it is, return the stored result + Memo; + _ -> % If not, attempt to parse + Result = case ParseFun(Inp, StartIndex) of + {fail,_} = Failure -> % If it fails, memoize the failure + Failure; + {Match, InpRem, NewIndex} -> % If it passes, transform and memoize the result. + Transformed = TransformFun(Match, StartIndex), + {Transformed, InpRem, NewIndex} + end, + memoize(StartIndex, Name, Result), + Result + end. + +-spec setup_memo() -> ets:tid(). +setup_memo() -> + put({parse_memo_table, ?MODULE}, ets:new(?MODULE, [set])). + +-spec release_memo() -> true. +release_memo() -> + ets:delete(memo_table_name()). + +-spec memoize(index(), atom(), parse_result()) -> true. +memoize(Index, Name, Result) -> + Memo = case ets:lookup(memo_table_name(), Index) of + [] -> []; + [{Index, Plist}] -> Plist + end, + ets:insert(memo_table_name(), {Index, [{Name, Result}|Memo]}). + +-spec get_memo(index(), atom()) -> {ok, term()} | {error, not_found}. +get_memo(Index, Name) -> + case ets:lookup(memo_table_name(), Index) of + [] -> {error, not_found}; + [{Index, Plist}] -> + case proplists:lookup(Name, Plist) of + {Name, Result} -> {ok, Result}; + _ -> {error, not_found} + end + end. + +-spec memo_table_name() -> ets:tid(). +memo_table_name() -> + get({parse_memo_table, ?MODULE}). + +-ifdef(p_eof). +-spec p_eof() -> parse_fun(). +p_eof() -> + fun(<<>>, Index) -> {eof, [], Index}; + (_, Index) -> {fail, {expected, eof, Index}} end. +-endif. + +-ifdef(p_optional). +-spec p_optional(parse_fun()) -> parse_fun(). +p_optional(P) -> + fun(Input, Index) -> + case P(Input, Index) of + {fail,_} -> {[], Input, Index}; + {_, _, _} = Success -> Success + end + end. +-endif. + +-ifdef(p_not). +-spec p_not(parse_fun()) -> parse_fun(). +p_not(P) -> + fun(Input, Index)-> + case P(Input,Index) of + {fail,_} -> + {[], Input, Index}; + {Result, _, _} -> {fail, {expected, {no_match, Result},Index}} + end + end. +-endif. + +-ifdef(p_assert). +-spec p_assert(parse_fun()) -> parse_fun(). +p_assert(P) -> + fun(Input,Index) -> + case P(Input,Index) of + {fail,_} = Failure-> Failure; + _ -> {[], Input, Index} + end + end. +-endif. + +-ifdef(p_seq). +-spec p_seq([parse_fun()]) -> parse_fun(). +p_seq(P) -> + fun(Input, Index) -> + p_all(P, Input, Index, []) + end. + +-spec p_all([parse_fun()], input(), index(), [term()]) -> parse_result(). +p_all([], Inp, Index, Accum ) -> {lists:reverse( Accum ), Inp, Index}; +p_all([P|Parsers], Inp, Index, Accum) -> + case P(Inp, Index) of + {fail, _} = Failure -> Failure; + {Result, InpRem, NewIndex} -> p_all(Parsers, InpRem, NewIndex, [Result|Accum]) + end. +-endif. + +-ifdef(p_choose). +-spec p_choose([parse_fun()]) -> parse_fun(). +p_choose(Parsers) -> + fun(Input, Index) -> + p_attempt(Parsers, Input, Index, none) + end. + +-spec p_attempt([parse_fun()], input(), index(), none | parse_failure()) -> parse_result(). +p_attempt([], _Input, _Index, Failure) -> Failure; +p_attempt([P|Parsers], Input, Index, FirstFailure)-> + case P(Input, Index) of + {fail, _} = Failure -> + case FirstFailure of + none -> p_attempt(Parsers, Input, Index, Failure); + _ -> p_attempt(Parsers, Input, Index, FirstFailure) + end; + Result -> Result + end. +-endif. + +-ifdef(p_zero_or_more). +-spec p_zero_or_more(parse_fun()) -> parse_fun(). +p_zero_or_more(P) -> + fun(Input, Index) -> + p_scan(P, Input, Index, []) + end. +-endif. + +-ifdef(p_one_or_more). +-spec p_one_or_more(parse_fun()) -> parse_fun(). +p_one_or_more(P) -> + fun(Input, Index)-> + Result = p_scan(P, Input, Index, []), + case Result of + {[_|_], _, _} -> + Result; + _ -> + {fail, {expected, Failure, _}} = P(Input,Index), + {fail, {expected, {at_least_one, Failure}, Index}} + end + end. +-endif. + +-ifdef(p_label). +-spec p_label(atom(), parse_fun()) -> parse_fun(). +p_label(Tag, P) -> + fun(Input, Index) -> + case P(Input, Index) of + {fail,_} = Failure -> + Failure; + {Result, InpRem, NewIndex} -> + {{Tag, Result}, InpRem, NewIndex} + end + end. +-endif. + +-ifdef(p_scan). +-spec p_scan(parse_fun(), input(), index(), [term()]) -> {[term()], input(), index()}. +p_scan(_, <<>>, Index, Accum) -> {lists:reverse(Accum), <<>>, Index}; +p_scan(P, Inp, Index, Accum) -> + case P(Inp, Index) of + {fail,_} -> {lists:reverse(Accum), Inp, Index}; + {Result, InpRem, NewIndex} -> p_scan(P, InpRem, NewIndex, [Result | Accum]) + end. +-endif. + +-ifdef(p_string). +-spec p_string(binary()) -> parse_fun(). +p_string(S) -> + Length = erlang:byte_size(S), + fun(Input, Index) -> + try + <> = Input, + {S, Rest, p_advance_index(S, Index)} + catch + error:{badmatch,_} -> {fail, {expected, {string, S}, Index}} + end + end. +-endif. + +-ifdef(p_anything). +-spec p_anything() -> parse_fun(). +p_anything() -> + fun(<<>>, Index) -> {fail, {expected, any_character, Index}}; + (Input, Index) when is_binary(Input) -> + <> = Input, + {<>, Rest, p_advance_index(<>, Index)} + end. +-endif. + +-ifdef(p_charclass). +-spec p_charclass(string() | binary()) -> parse_fun(). +p_charclass(Class) -> + {ok, RE} = re:compile(Class, [unicode, dotall]), + fun(Inp, Index) -> + case re:run(Inp, RE, [anchored]) of + {match, [{0, Length}|_]} -> + {Head, Tail} = erlang:split_binary(Inp, Length), + {Head, Tail, p_advance_index(Head, Index)}; + _ -> {fail, {expected, {character_class, binary_to_list(Class)}, Index}} + end + end. +-endif. + +-ifdef(p_regexp). +-spec p_regexp(binary()) -> parse_fun(). +p_regexp(Regexp) -> + {ok, RE} = re:compile(Regexp, [unicode, dotall, anchored]), + fun(Inp, Index) -> + case re:run(Inp, RE) of + {match, [{0, Length}|_]} -> + {Head, Tail} = erlang:split_binary(Inp, Length), + {Head, Tail, p_advance_index(Head, Index)}; + _ -> {fail, {expected, {regexp, binary_to_list(Regexp)}, Index}} + end + end. +-endif. + +-ifdef(line). +-spec line(index() | term()) -> pos_integer() | undefined. +line({{line,L},_}) -> L; +line(_) -> undefined. +-endif. + +-ifdef(column). +-spec column(index() | term()) -> pos_integer() | undefined. +column({_,{column,C}}) -> C; +column(_) -> undefined. +-endif. + +-spec p_advance_index(input() | unicode:charlist() | pos_integer(), index()) -> index(). +p_advance_index(MatchedInput, Index) when is_list(MatchedInput) orelse is_binary(MatchedInput)-> % strings + lists:foldl(fun p_advance_index/2, Index, unicode:characters_to_list(MatchedInput)); +p_advance_index(MatchedInput, Index) when is_integer(MatchedInput) -> % single characters + {{line, Line}, {column, Col}} = Index, + case MatchedInput of + $\n -> {{line, Line+1}, {column, 1}}; + _ -> {{line, Line}, {column, Col+1}} + end. diff --git a/tools.mk b/tools.mk deleted file mode 100644 index 8e0e1b9a..00000000 --- a/tools.mk +++ /dev/null @@ -1,48 +0,0 @@ -test: compile - ./rebar eunit skip_deps=true - -docs: - ./rebar doc skip_deps=true - -xref: compile - ./rebar xref skip_deps=true - -PLT ?= $(HOME)/.riak_combo_dialyzer_plt -LOCAL_PLT = .local_dialyzer_plt -DIALYZER_FLAGS ?= -Wunmatched_returns - -${PLT}: compile -ifneq (,$(wildcard $(PLT))) - dialyzer --check_plt --plt $(PLT) --apps $(DIALYZER_APPS) && \ - dialyzer --add_to_plt --plt $(PLT) --output_plt $(PLT) --apps $(DIALYZER_APPS) ; test $$? -ne 1 -else - dialyzer --build_plt --output_plt $(PLT) --apps $(DIALYZER_APPS); test $$? -ne 1 -endif - -${LOCAL_PLT}: compile -ifneq (,$(wildcard deps/*)) -ifneq (,$(wildcard $(LOCAL_PLT))) - dialyzer --check_plt --plt $(LOCAL_PLT) deps/*/ebin && \ - dialyzer --add_to_plt --plt $(LOCAL_PLT) --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1 -else - dialyzer --build_plt --output_plt $(LOCAL_PLT) deps/*/ebin ; test $$? -ne 1 -endif -endif - -dialyzer: ${PLT} ${LOCAL_PLT} - @echo "==> $(shell basename $(shell pwd)) (dialyzer)" - @if [ -f $(LOCAL_PLT) ]; then \ - dialyzer $(DIALYZER_FLAGS) --plts $(PLT) $(LOCAL_PLT) -c ebin; \ - else \ - dialyzer $(DIALYZER_FLAGS) --plts $(PLT) -c ebin; \ - fi - -cleanplt: - @echo - @echo "Are you sure? It takes several minutes to re-build." - @echo Deleting $(PLT) and $(LOCAL_PLT) in 5 seconds. - @echo - sleep 5 - rm $(PLT) - rm $(LOCAL_PLT) -