From 8b297f203b31b0dab6af86d98100dac395dd40f7 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 19 Sep 2016 11:26:23 +0200 Subject: [PATCH] Support strong/basic_validation options in yaws_compile Because these options don't generate binary code, the corresponding '' block is ignored. So, in the result of yaws_compile:compile/2, following spec {mod, Line, Script, NumChars, Mod, Fun} will be replaced by {skip, NumChars} --- src/yaws_compile.erl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/yaws_compile.erl b/src/yaws_compile.erl index d2e8f7dc7..6627b9c9c 100644 --- a/src/yaws_compile.erl +++ b/src/yaws_compile.erl @@ -397,6 +397,9 @@ compile_erl(N, Bin, Comp, Spec) -> numchars = 0, erlcode = undefined}, case handle_erlang_block(Comp) of + skip -> + S = {skip, Comp#comp.numchars+N}, + compile_file(Bin, NewComp, html, [S|Spec]); {ok, Mod, Fun} -> {Line, _, _, _} = Comp#comp.erlcode, S = {mod, Line, Comp#comp.script, Comp#comp.numchars+N, Mod, Fun}, @@ -590,14 +593,20 @@ compile_and_load_erlang_block(File, Comp) -> compile_erlang_block(File, Comp) -> case compile:file(File, Comp#comp.comp_opts) of - {ok, Module, Binary} -> + {ok, Module} -> + {ok, Module, <<>>, []}; + {ok, Module, Binary} when is_binary(Binary) -> {ok, Module, Binary, []}; + {ok, Module, Warnings} -> + {ok, Module, <<>>, Warnings}; {ok, Module, Binary, Warnings} -> {ok, Module, Binary, Warnings}; {error, Errors, Warnings} -> {error, Errors, Warnings} end. +load_erlang_block(_Mod, <<>>, _Comp) -> + skip; load_erlang_block(Mod, Bin, Comp) -> {Line, _, _, _} = Comp#comp.erlcode, case code:load_binary(Mod, "", Bin) of