From 009428ea8d589580764a994a8e84083596dff3e1 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Wed, 4 Apr 2018 15:08:29 +0100 Subject: [PATCH 01/39] fix warnings --- .gitignore | 2 ++ lib/constants.ex | 30 +++++++++++++++--------------- lib/debug.ex | 4 ++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 062f098..26ea165 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ _build/ ebin/ deps/ mix.lock +.idea/ +*.iml diff --git a/lib/constants.ex b/lib/constants.ex index 9f70687..229758d 100644 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -50,7 +50,7 @@ defmodule Quaff.Constants do Enum.map(List.wrap(use_constants), fn(c) -> c = normalize_const(c) - {c,Dict.fetch!(const,c)} + {c,Keyword.fetch!(const,c)} end ) end @@ -129,7 +129,7 @@ defmodule Quaff.Constants do defs = find_defns(tree,ctx) Enum.flat_map(defs, fn({macro,all_arity}) -> - case Dict.get(all_arity,0) do + case Map.get(all_arity,0) do nil -> [] {[],defn} -> case parse_constant(defn) do @@ -190,7 +190,7 @@ defmodule Quaff.Constants do items: [realfile,reason], file: from_file, line: from_line ) end - contents = String.to_char_list(contents) + contents = String.to_charlist(contents) {:ok,h_toks,_} = :erl_scan.string(contents,{1,1}) tokens = mark_keywords(h_toks) {:ok, toks} = :aleppo_parser.parse(tokens) @@ -216,7 +216,7 @@ defmodule Quaff.Constants do resolve_include(incl_type,List.to_string(file),rel,incl_path) end defp resolve_include(:macro_include_lib,file,_,_) do - [app_name|file_path] = :filename.split(String.to_char_list(file)) + [app_name|file_path] = :filename.split(String.to_charlist(file)) case :code.lib_dir(List.to_atom(app_name)) do {:error, _} -> {:error, {:not_found,file}} @@ -261,7 +261,7 @@ defmodule Quaff.Constants do end defp resolve_include(file,[]) do #last ditch effort - case :code.where_is_file(String.to_char_list(file)) do + case :code.where_is_file(String.to_charlist(file)) do :non_existing -> {:error, {:not_found,file}} filename -> {:ok, List.to_string(filename)} end @@ -379,11 +379,11 @@ defmodule Quaff.Constants do ## defs dictionary: defp init_ctx() do - qc_ctx( defs: HashDict.new(), files: [], relative_dirs: [], includes: [] ) + qc_ctx( defs: Map.new(), files: [], relative_dirs: [], includes: [] ) end defp init_ctx(module,file,incls) do defs = [{ {:MODULE,0},{[],[{:atom,{1,1},module}]} }, - { {:MODULE_STRING,0},{[],[{:string,{1,1},Atom.to_char_list(module)}]} }] + { {:MODULE_STRING,0},{[],[{:string,{1,1},Atom.to_charlist(module)}]} }] ctx = qc_ctx(init_ctx(),includes: incls) put_defs( push_file(ctx, file), defs ) end @@ -415,12 +415,12 @@ defmodule Quaff.Constants do end defp get_def(qc_ctx( defs: defs ),{name,arity}) do - all_arity = Dict.fetch!(defs,name) - Dict.fetch!(all_arity,arity) + all_arity = Map.fetch!(defs,name) + Map.fetch!(all_arity,arity) end defp defs_list(qc_ctx(defs: defs)) do - Dict.to_list(defs) + Map.to_list(defs) end defp put_defs( ctx, defs ) when is_list(defs) do @@ -429,19 +429,19 @@ defmodule Quaff.Constants do defp put_def( qc_ctx( defs: defs )=ctx,{name,arity},defn) do all_arity = - case Dict.get(defs,name) do - nil -> HashDict.new() + case Map.get(defs,name) do + nil -> Map.new() aa -> aa end - qc_ctx(ctx, defs: Dict.put(defs,name,Dict.put(all_arity,arity,defn))) + qc_ctx(ctx, defs: Map.put(defs,name,Map.put(all_arity,arity,defn))) end defp has_def?(qc_ctx(defs: defs),name) do - Dict.has_key?(defs,name) + Map.has_key?(defs,name) end defp rm_def(qc_ctx(defs: defs)=ctx,name) do - qc_ctx(ctx, defs: Dict.delete(defs,name)) + qc_ctx(ctx, defs: Map.delete(defs,name)) end end diff --git a/lib/debug.ex b/lib/debug.ex index 76943d1..b8d6c25 100644 --- a/lib/debug.ex +++ b/lib/debug.ex @@ -56,8 +56,8 @@ defmodule Quaff.Debug do mods = Code.load_file(src) Enum.map(mods, fn({mod,beam_bin}) -> - call_i({mod,String.to_char_list(src), - Atom.to_char_list(mod)++'.beam',beam_bin},options) + call_i({mod,String.to_charlist(src), + Atom.to_charlist(mod)++'.beam',beam_bin},options) end) end defp call_i(arg,options) do From 2d1987a20b2e7c54c7315d1c1b160cb9007bf83b Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Wed, 4 Apr 2018 15:11:01 +0100 Subject: [PATCH 02/39] use hex --- mix.exs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mix.exs b/mix.exs index 7733365..a52cb75 100644 --- a/mix.exs +++ b/mix.exs @@ -2,8 +2,10 @@ defmodule Quaff.Mixfile do use Mix.Project def project do - [ app: :quaff, - version: "0.0.1", + [ + app: :quaff, + elixir: "~> 1.6", + version: "0.0.2", deps: deps(Mix.env) ] end @@ -13,10 +15,10 @@ defmodule Quaff.Mixfile do end defp deps(:test) do - [ { :meck, git: "https://github.com/eproxus/meck.git", branch: "master" } | - deps(:prod) ] + [{:meck, "~> 0.8.9"}] ++ deps(:prod) end + defp deps(_) do - [{:aleppo, git: "https://github.com/ChicagoBoss/aleppo.git", tag: "v0.9"}] + [{:aleppo, "~> 0.9.0"}] end end From b685f5284c883fc4b6707d84bd47d54004c89b9a Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Wed, 4 Apr 2018 16:10:27 +0100 Subject: [PATCH 03/39] testing --- lib/constants.ex | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/constants.ex b/lib/constants.ex index 229758d..dd7baed 100644 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -38,8 +38,8 @@ defmodule Quaff.Constants do do_export = options[:export] || false in_module = options[:module] || Macro.expand(quote do __MODULE__ end,__CALLER__) in_dir = options[:relative_to] || Macro.expand(quote do __DIR__ end, __CALLER__) - options = Keyword.put(options,:module,in_module) - options = Keyword.put(options,:relative_to,in_dir) + options = Keyword.put(options, :module, in_module) + options = Keyword.put(options, :relative_to, in_dir) const = Enum.map(get_constants(header,options), fn({c,v}) -> {normalize_const(c),v} @@ -87,8 +87,11 @@ defmodule Quaff.Constants do end defmacro include_lib(header, options) do + opts = Macro.expand(options, __CALLER__) + opts = Keyword.put(opts, :include_lib, true) + IO.inspect(opts) quote do - Quaff.Constants.include(unquote(header),unquote(Keyword.put(options,:include_lib,true))) + Quaff.Constants.include(unquote(header), unquote(opts)) end end From ad5e289055a6d383912e49b458da3e368b49ea19 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Wed, 4 Apr 2018 18:48:42 +0100 Subject: [PATCH 04/39] progress --- include/more_test.hrl | 2 ++ include/test1.hrl | 2 -- lib/constants.ex | 37 ++++++++++++++++++++++++++++++++----- test/constants_test.exs | 6 ++++++ 4 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 include/more_test.hrl delete mode 100644 include/test1.hrl diff --git a/include/more_test.hrl b/include/more_test.hrl new file mode 100644 index 0000000..1c72814 --- /dev/null +++ b/include/more_test.hrl @@ -0,0 +1,2 @@ +-define(SIMPLE_3,3). +-define(simple_4,4). diff --git a/include/test1.hrl b/include/test1.hrl deleted file mode 100644 index 36c7eeb..0000000 --- a/include/test1.hrl +++ /dev/null @@ -1,2 +0,0 @@ --define(SIMPLE_1,1). --define(simple_2,2). diff --git a/lib/constants.ex b/lib/constants.ex index dd7baed..098769d 100644 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -37,9 +37,25 @@ defmodule Quaff.Constants do use_constants = options[:constants] || :all do_export = options[:export] || false in_module = options[:module] || Macro.expand(quote do __MODULE__ end,__CALLER__) - in_dir = options[:relative_to] || Macro.expand(quote do __DIR__ end, __CALLER__) + rel_dir = + cond do + options[:relative_to] && :ok == Macro.validate(options[:relative_to]) -> + {rel_to, []} = options[:relative_to] |> Code.eval_quoted([], __CALLER__) + rel_to + options[:relative_to] -> options[:relative_to] + true -> Macro.expand(quote do __DIR__ end, __CALLER__) + end + inc_dir = + cond do + options[:include] && :ok == Macro.validate(options[:include]) -> + {inc, []} = options[:include] |> Code.eval_quoted([], __CALLER__) + inc + options[:include] -> options[:include] + true -> [Macro.expand(quote do __DIR__ end, __CALLER__)] + end options = Keyword.put(options, :module, in_module) - options = Keyword.put(options, :relative_to, in_dir) + options = Keyword.put(options, :relative_to, rel_dir) + options = Keyword.put(options, :include, inc_dir) const = Enum.map(get_constants(header,options), fn({c,v}) -> {normalize_const(c),v} @@ -87,9 +103,9 @@ defmodule Quaff.Constants do end defmacro include_lib(header, options) do - opts = Macro.expand(options, __CALLER__) - opts = Keyword.put(opts, :include_lib, true) - IO.inspect(opts) + opts = options |> + Macro.expand_once(__CALLER__) |> + Keyword.put(:include_lib, true) quote do Quaff.Constants.include(unquote(header), unquote(opts)) end @@ -177,6 +193,9 @@ defmodule Quaff.Constants do include_path: include_path, from_file: from_file, from_line: from_line ) do + + IO.puts("calling resolve_included(#{incl_type}, #{header_file}, #{relative_dir}, #{include_path})") + {:ok,realfile} = case resolve_include(incl_type,header_file,relative_dir,include_path) do {:ok,_} = res -> res @@ -243,6 +262,14 @@ defmodule Quaff.Constants do end end defp resolve_include(file,relative_to,include_path) when is_binary(relative_to) do + IO.puts("resolving relative file") + + IO.puts("file") + IO.inspect(file) + IO.puts("relative_to") + IO.inspect(relative_to) + + unrelative = Path.expand(file,relative_to) case File.exists?(unrelative) do true -> {:ok, unrelative} diff --git a/test/constants_test.exs b/test/constants_test.exs index 5582603..9f854c0 100644 --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -16,8 +16,14 @@ defmodule Quaff.Constants.Test do #these files include others: C.include_lib("snmp/include/snmp_tables.hrl") C.include_lib("inets/include/httpd.hrl") + #C.include_lib("/public_key.hrl") C.include_lib("public_key/include/public_key.hrl") + C.include_lib("more_test.hrl", relative_to: "../include", include: ["./"]) + + + + test "simple constants" do assert @_SIMPLE_1 == 1 assert @simple_2 == 2 From 5f74cf52f220df657d39f52d547d85a2ab727186 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 15:24:29 +0100 Subject: [PATCH 05/39] more tests --- test/constants_test.exs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/constants_test.exs b/test/constants_test.exs index 9f854c0..3b7d35e 100644 --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -20,6 +20,7 @@ defmodule Quaff.Constants.Test do C.include_lib("public_key/include/public_key.hrl") C.include_lib("more_test.hrl", relative_to: "../include", include: ["./"]) + C.include_lib("more_test.hrl", include: ["../include"]) From e1c3da1f7b537073370a0701176abcaed0a90027 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 16:53:25 +0100 Subject: [PATCH 06/39] woot --- lib/constants.ex | 49 ++++++++++++++++++++++++++++++++--------- test/constants_test.exs | 13 ++++++++--- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/lib/constants.ex b/lib/constants.ex index 098769d..88f8ce8 100644 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -34,6 +34,13 @@ defmodule Quaff.Constants do end defmacro include(header, options) do + header = + cond do + :ok == Macro.validate(header) -> + {hd, []} = header |> Code.eval_quoted([], __CALLER__) + hd + true -> header + end use_constants = options[:constants] || :all do_export = options[:export] || false in_module = options[:module] || Macro.expand(quote do __MODULE__ end,__CALLER__) @@ -56,7 +63,7 @@ defmodule Quaff.Constants do options = Keyword.put(options, :module, in_module) options = Keyword.put(options, :relative_to, rel_dir) options = Keyword.put(options, :include, inc_dir) - const = Enum.map(get_constants(header,options), + const = Enum.map(get_constants(header, options), fn({c,v}) -> {normalize_const(c),v} end) @@ -194,8 +201,7 @@ defmodule Quaff.Constants do from_file: from_file, from_line: from_line ) do - IO.puts("calling resolve_included(#{incl_type}, #{header_file}, #{relative_dir}, #{include_path})") - + IO.puts("calling resolve_include(#{incl_type}, #{header_file}, #{relative_dir}, #{include_path})") {:ok,realfile} = case resolve_include(incl_type,header_file,relative_dir,include_path) do {:ok,_} = res -> res @@ -237,6 +243,33 @@ defmodule Quaff.Constants do defp resolve_include(incl_type,file,rel,incl_path) when is_list(file) do resolve_include(incl_type,List.to_string(file),rel,incl_path) end + + defp resolve_include(:macro_include_lib, ("/"<>_)=abs_file,_,_) do + case File.exists?(abs_file) do + true -> {:ok, abs_file} + _ -> + {:error, {:not_found,abs_file}} + end + end + + defp resolve_include(:macro_include_lib, ("./"<>_)=rel_file,rel,_) do + unrelative = Path.expand(rel_file, rel) + case File.exists?(unrelative) do + true -> {:ok, unrelative} + _ -> + {:error, {:not_found,unrelative}} + end + end + + defp resolve_include(:macro_include_lib, ("../"<>_)=rel_file,rel,_) do + unrelative = Path.expand(rel_file, rel) + case File.exists?(unrelative) do + true -> {:ok, unrelative} + _ -> + {:error, {:not_found,unrelative}} + end + end + defp resolve_include(:macro_include_lib,file,_,_) do [app_name|file_path] = :filename.split(String.to_charlist(file)) case :code.lib_dir(List.to_atom(app_name)) do @@ -246,6 +279,8 @@ defmodule Quaff.Constants do {:ok,List.to_string(:filename.join([app_lib|file_path]))} end end + + defp resolve_include(:macro_include,file,rel,incl_path) do resolve_include(file,rel,incl_path) end @@ -262,14 +297,6 @@ defmodule Quaff.Constants do end end defp resolve_include(file,relative_to,include_path) when is_binary(relative_to) do - IO.puts("resolving relative file") - - IO.puts("file") - IO.inspect(file) - IO.puts("relative_to") - IO.inspect(relative_to) - - unrelative = Path.expand(file,relative_to) case File.exists?(unrelative) do true -> {:ok, unrelative} diff --git a/test/constants_test.exs b/test/constants_test.exs index 3b7d35e..65fa24c 100644 --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -19,9 +19,10 @@ defmodule Quaff.Constants.Test do #C.include_lib("/public_key.hrl") C.include_lib("public_key/include/public_key.hrl") - C.include_lib("more_test.hrl", relative_to: "../include", include: ["./"]) - C.include_lib("more_test.hrl", include: ["../include"]) - + #relative paths + C.include_lib(Path.expand("#{__DIR__}/../include/more_test.hrl")) + C.include_lib("../include/more_test.hrl") + C.include_lib("./test1.hrl") @@ -31,6 +32,12 @@ defmodule Quaff.Constants.Test do assert @_MM == 'Elixir.Quaff.Constants.Test' end + test "dynamic path constants" do + assert @_SIMPLE_3 == 3 + assert @simple_4 == 4 + assert @_MM == 'Elixir.Quaff.Constants.Test' + end + test "constant exporting" do assert _SIMPLE_1 == @_SIMPLE_1 assert simple_2 == @simple_2 From 8e9e88726bf05b316c58b3235e330578673ab445 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 16:57:34 +0100 Subject: [PATCH 07/39] package def --- package.exs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 package.exs diff --git a/package.exs b/package.exs new file mode 100644 index 0000000..5d7ea49 --- /dev/null +++ b/package.exs @@ -0,0 +1,10 @@ +Expm.Package.new( + name: "quaff", + description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", + version: "0.0.2", + keywords: ["Elixir", "erlang", "tools", "utilities"], + licenses: [[name: "Apache License 2.0"]], + maintainers: [ + [name: "Josh Burroughs", email: "josh@qhool.com"], + [name: "Carlos Brito Lage", email: "carlos@carloslage.net"]], + repositories: [[github: "aruki-delivery/quaff", branch: "master"]]) From 30a9cacaf7968b5f79234f7184dad108a5f40526 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 17:00:05 +0100 Subject: [PATCH 08/39] more package --- mix.exs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index a52cb75..2969399 100644 --- a/mix.exs +++ b/mix.exs @@ -6,7 +6,11 @@ defmodule Quaff.Mixfile do app: :quaff, elixir: "~> 1.6", version: "0.0.2", - deps: deps(Mix.env) + deps: deps(Mix.env), + description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", + package: package(), + source_url: "https://github.com/aruki-delivery/quaff", + homepage_url: "https://hex.pm/packages/quaff" ] end @@ -21,4 +25,10 @@ defmodule Quaff.Mixfile do defp deps(_) do [{:aleppo, "~> 0.9.0"}] end + + def package do + [ maintainers: ["cblage"], + licenses: ["Apache License 2.0"], + links: %{"GitHub" => "https://github.com/aruki-delivery/quaff" } ] + end end From dc1c2d2c6b9f2d348567e5ed05b20be00c8b43cb Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 17:00:52 +0100 Subject: [PATCH 09/39] doc --- mix.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index 2969399..d3e0505 100644 --- a/mix.exs +++ b/mix.exs @@ -23,7 +23,8 @@ defmodule Quaff.Mixfile do end defp deps(_) do - [{:aleppo, "~> 0.9.0"}] + [{:aleppo, "~> 0.9.0"}, + {:ex_doc, ">= 0.0.0", only: :dev}] end def package do From cb141e808cd050d63b3f067002c1d86e84354291 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 17:01:32 +0100 Subject: [PATCH 10/39] docs --- doc/.build | 14 ++ doc/404.html | 105 +++++++++ doc/Quaff.Constants.CompileError.html | 216 +++++++++++++++++ doc/Quaff.Constants.html | 328 ++++++++++++++++++++++++++ doc/Quaff.Debug.html | 292 +++++++++++++++++++++++ doc/api-reference.html | 143 +++++++++++ doc/dist/app-480ffdc169.css | 1 + doc/dist/app-9bd040e5e5.js | 8 + doc/dist/sidebar_items-a8f45a4a6d.js | 1 + doc/fonts/icomoon.eot | Bin 0 -> 3096 bytes doc/fonts/icomoon.svg | 18 ++ doc/fonts/icomoon.ttf | Bin 0 -> 2932 bytes doc/fonts/icomoon.woff | Bin 0 -> 3008 bytes doc/index.html | 11 + doc/search.html | 100 ++++++++ 15 files changed, 1237 insertions(+) create mode 100644 doc/.build create mode 100644 doc/404.html create mode 100644 doc/Quaff.Constants.CompileError.html create mode 100644 doc/Quaff.Constants.html create mode 100644 doc/Quaff.Debug.html create mode 100644 doc/api-reference.html create mode 100644 doc/dist/app-480ffdc169.css create mode 100644 doc/dist/app-9bd040e5e5.js create mode 100644 doc/dist/sidebar_items-a8f45a4a6d.js create mode 100644 doc/fonts/icomoon.eot create mode 100644 doc/fonts/icomoon.svg create mode 100644 doc/fonts/icomoon.ttf create mode 100644 doc/fonts/icomoon.woff create mode 100644 doc/index.html create mode 100644 doc/search.html diff --git a/doc/.build b/doc/.build new file mode 100644 index 0000000..ba1bf3d --- /dev/null +++ b/doc/.build @@ -0,0 +1,14 @@ +dist/app-480ffdc169.css +dist/app-9bd040e5e5.js +fonts/icomoon.eot +fonts/icomoon.svg +fonts/icomoon.ttf +fonts/icomoon.woff +dist/sidebar_items-a8f45a4a6d.js +api-reference.html +search.html +404.html +Quaff.Constants.html +Quaff.Debug.html +Quaff.Constants.CompileError.html +index.html diff --git a/doc/404.html b/doc/404.html new file mode 100644 index 0000000..c7d187e --- /dev/null +++ b/doc/404.html @@ -0,0 +1,105 @@ + + + + + + + + 404 – quaff v0.0.2 + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +

Page not found

+ +

Sorry, but the page you were trying to get to, does not exist. You +may want to try searching this site using the sidebar or using our +API Reference page to find what +you were looking for.

+ + +
+
+
+
+ + + + + + + + diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html new file mode 100644 index 0000000..817ae57 --- /dev/null +++ b/doc/Quaff.Constants.CompileError.html @@ -0,0 +1,216 @@ + + + + + + + + Quaff.Constants.CompileError – quaff v0.0.2 + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +

+ quaff v0.0.2 + Quaff.Constants.CompileError exception + + + + View Source + + +

+ + + + +
+

+ + + Link to this section + + Summary +

+ + + +
+

+ Functions +

+
+ + +

Callback implementation for Exception.exception/1

+
+ +
+
+ + +

Callback implementation for Exception.message/1

+
+ +
+ +
+ + + + +
+ + + + + +
+

+ + + Link to this section + + Functions +

+
+ + + +
+

Callback implementation for Exception.exception/1.

+ +
+
+
+ + +
+ + + Link to this function + + message(exception) + + + + View Source + + + + +
+
+

Callback implementation for Exception.message/1.

+ +
+
+ +
+ + + + +
+
+
+
+ + + + + + + + diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html new file mode 100644 index 0000000..2ba03d2 --- /dev/null +++ b/doc/Quaff.Constants.html @@ -0,0 +1,328 @@ + + + + + + + + Quaff.Constants – quaff v0.0.2 + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +

+ quaff v0.0.2 + Quaff.Constants + + + + View Source + + +

+ + + + +
+

+ + + Link to this section + + Summary +

+ + + + + + + + +
+ + + + + +
+

+ + + Link to this section + + Functions +

+
+ + +
+ + + Link to this function + + get_constants(header_file) + + + + View Source + + + + +
+
+ +
+
+
+ + +
+ + + Link to this function + + get_constants(header_file, options) + + + + View Source + + + + +
+
+ +
+
+
+ + +
+ + + Link to this macro + + include(header) + + + + View Source + + + + (macro) + + +
+
+ +
+
+
+ + +
+ + + Link to this macro + + include(header, options) + + + + View Source + + + + (macro) + + +
+
+ +
+
+
+ + +
+ + + Link to this macro + + include_lib(header) + + + + View Source + + + + (macro) + + +
+
+ +
+
+
+ + +
+ + + Link to this macro + + include_lib(header, options) + + + + View Source + + + + (macro) + + +
+
+ +
+
+ +
+ + + + +
+
+
+
+ + + + + + + + diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html new file mode 100644 index 0000000..b6de05a --- /dev/null +++ b/doc/Quaff.Debug.html @@ -0,0 +1,292 @@ + + + + + + + + Quaff.Debug – quaff v0.0.2 + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +

+ quaff v0.0.2 + Quaff.Debug + + + + View Source + + +

+ + + + +
+

+ + + Link to this section + + Summary +

+ + + +
+

+ Functions +

+
+ + +
+ +
+ + +
+ +
+
+ start() +
+ +
+ +
+ + + + +
+ + + + + +
+

+ + + Link to this section + + Functions +

+
+ + + +
+ +
+
+
+ + +
+ + + Link to this function + + load(module, options) + + + + View Source + + + + +
+
+ +
+
+
+ + + +
+ +
+
+
+ + +
+ + + Link to this function + + nload(module, options) + + + + View Source + + + + +
+
+ +
+
+
+ + + +
+ +
+
+ +
+ + + + +
+
+
+
+ + + + + + + + diff --git a/doc/api-reference.html b/doc/api-reference.html new file mode 100644 index 0000000..55cc08a --- /dev/null +++ b/doc/api-reference.html @@ -0,0 +1,143 @@ + + + + + + + + API Reference – quaff v0.0.2 + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +

+ quaff v0.0.2 + API Reference +

+ + +
+

+ + Modules +

+ +
+ + + +
+
+ + + +
+

+ + Exceptions +

+ + +
+ + + + + +
+
+
+
+ + + + + + + + diff --git a/doc/dist/app-480ffdc169.css b/doc/dist/app-480ffdc169.css new file mode 100644 index 0000000..c30bd32 --- /dev/null +++ b/doc/dist/app-480ffdc169.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css?family=Lato:300,700|Merriweather:300italic,300|Inconsolata:400,700);.hljs,article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}.hljs-strong,b,optgroup,strong{font-weight:700}.hljs-emphasis,dfn{font-style:italic}img,legend{border:0}#search ul,.sidebar ul{list-style:none}.night-mode-toggle:focus,.sidebar .sidebar-search .search-input:focus,.sidebar .sidebar-search .search-input:hover,.sidebar-button:active,.sidebar-button:focus,.sidebar-button:hover,a:active,a:hover{outline:0}.content-inner .footer a,.content-inner a,body.night-mode .content-inner a{-webkit-text-decoration-skip:ink;text-decoration-skip:ink}.hljs-comment,.hljs-quote{color:#8e908c}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#c82829}.hljs-built_in,.hljs-builtin-name,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#f5871f}.hljs-attribute{color:#eab700}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#718c00}.hljs-section,.hljs-title{color:#4271ae}.hljs-keyword,.hljs-selector-tag{color:#8959a8}.hljs{overflow-x:auto;background:#fff;color:#4d4d4c;padding:.5em}legend,td,th{padding:0}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}.content-outer,body{background-color:#fff}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.content,.main,.sidebar,body,html{height:100%}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}table{border-collapse:collapse;border-spacing:0}@font-face{font-family:icomoon;src:url(../fonts/icomoon.eot?h5z89e);src:url(../fonts/icomoon.eot?#iefixh5z89e) format('embedded-opentype'),url(../fonts/icomoon.ttf?h5z89e) format('truetype'),url(../fonts/icomoon.woff?h5z89e) format('woff'),url(../fonts/icomoon.svg?h5z89e#icomoon) format('svg');font-weight:400;font-style:normal}.icon-elem,[class*=" icon-"],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sidebar,body{font-family:Lato,sans-serif}.icon-link:before{content:"\e005"}.icon-search:before{content:"\e036"}.icon-cross:before{content:"\e117"}@media screen and (max-width:768px){.icon-menu{font-size:1em}}@media screen and (min-width:769px){.icon-menu{font-size:1.25em}}@media screen and (min-width:1281px){.icon-menu{font-size:1.5em}}.icon-menu:before{content:"\e120"}.icon-angle-right:before{content:"\f105"}.icon-code:before{content:"\f121"}body,html{box-sizing:border-box;width:100%}body{margin:0;font-size:16px;line-height:1.6875em}*,:after,:before{box-sizing:inherit}.main{display:-ms-flexbox;display:-ms-flex;display:flex;-ms-flex-pack:end;justify-content:flex-end}.sidebar{display:-ms-flexbox;display:-ms-flex;display:flex;min-height:0;-moz-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:300px;position:fixed;top:0;left:0;z-index:4}.content{width:100%;padding-left:300px;overflow-y:auto;-webkit-overflow-scrolling:touch;position:relative;z-index:3}@media screen and (max-width:768px){body .content{z-index:0;padding-left:0}body .sidebar{z-index:3;transform:translateX(-102%);will-change:transform}}body.sidebar-closed .sidebar,body.sidebar-closing .sidebar,body.sidebar-opening .sidebar{z-index:0}body.sidebar-opened .sidebar-button,body.sidebar-opening .sidebar-button{transform:translateX(250px)}@media screen and (max-width:768px){body.sidebar-opened .sidebar,body.sidebar-opening .sidebar{transform:translateX(0)}}body.sidebar-closed .content,body.sidebar-closing .content{padding-left:0}body.sidebar-closed .sidebar-button,body.sidebar-closing .sidebar-button{transform:none}body.sidebar-closed .sidebar-button{color:#000}body.sidebar-opening .sidebar-button{transition:transform .3s ease-in-out}body.sidebar-opening .content{padding-left:300px;transition:padding-left .3s ease-in-out}@media screen and (max-width:768px){body.sidebar-opening .content{padding-left:0}body.sidebar-opening .sidebar{transition:transform .3s ease-in-out;z-index:3}}body.sidebar-closing .sidebar-button{transition:transform .3s ease-in-out}body.sidebar-closing .content{transition:padding-left .3s ease-in-out}@media screen and (max-width:768px){body.sidebar-closing .sidebar{z-index:3;transition:transform .3s ease-in-out;transform:translateX(-102%)}}.sidebar a,.sidebar-button{transition:color .3s ease-in-out}body.sidebar-closed .sidebar{visibility:hidden}.content-inner{max-width:949px;margin:0 auto;padding:3px 60px}.content-outer{min-height:100%}@media screen and (max-width:768px){.content-inner{padding:27px 20px 27px 40px}}.sidebar-button{position:fixed;z-index:99;left:18px;color:#e1e1e1;background-color:transparent;border:none;padding:0;font-size:16px;will-change:transform;transform:translateX(250px)}.sidebar-button:hover{color:#e1e1e1}.sidebar-button .sidebar-toggle{top:8px}@media screen and (max-width:768px){.sidebar-button{transform:translateX(0);left:5px;top:5px}.sidebar-opened .sidebar-button{left:18px}}.sidebar{font-size:15px;line-height:18px;background:#373f52;color:#d5dae6;overflow:hidden}.sidebar .gradient{background:linear-gradient(#373f52,rgba(55,63,82,0));height:20px;margin-top:-20px;pointer-events:none;position:relative;top:20px;z-index:100}.sidebar ul li{margin:0;padding:0 10px}.sidebar a{color:#d5dae6;text-decoration:none}.sidebar a:hover{color:#fff}.sidebar .sidebar-projectLink{margin:18px 30px 0}.sidebar .sidebar-projectDetails{display:inline-block;text-align:right;vertical-align:top;margin-top:6px}.sidebar .sidebar-projectImage{display:inline-block;max-width:64px;max-height:64px;margin-left:15px;vertical-align:bottom}.sidebar .sidebar-projectName{font-weight:700;font-size:24px;line-height:30px;color:#fff;margin:0;padding:0;max-width:230px;word-wrap:break-word}.sidebar .sidebar-projectVersion{margin:0;padding:0;font-weight:300;font-size:16px;line-height:20px;color:#fff}.sidebar .sidebar-listNav{padding:10px 30px 20px;margin:0}.sidebar .sidebar-listNav li,.sidebar .sidebar-listNav li a{text-transform:uppercase;font-weight:300;font-size:14px}.sidebar .sidebar-listNav li{padding-left:17px;border-left:3px solid transparent;transition:all .3s linear;line-height:27px}.sidebar .sidebar-listNav li.selected,.sidebar .sidebar-listNav li.selected a,.sidebar .sidebar-listNav li:hover,.sidebar .sidebar-listNav li:hover a{border-color:#9768d1;color:#fff}.sidebar .sidebar-search{margin:18px 30px;display:-ms-flexbox;display:-ms-flex;display:flex}.sidebar .sidebar-search .search-button:hover,.sidebar .sidebar-search.selected .search-button{color:#9768d1}.sidebar .sidebar-search .search-button{font-size:14px;color:#d5dae6;background-color:transparent;border:none;padding:2px 0 0;margin:0}.sidebar .sidebar-search .search-input{background-color:transparent;border:none;border-radius:0;border-bottom:1px solid #959595;margin-left:5px;height:20px}.sidebar .sidebar-search .icon-search{font-weight:700}.sidebar #full-list{margin:0 0 0 30px;padding:10px 20px 40px;overflow-y:auto;-webkit-overflow-scrolling:touch;-moz-flex:1 1 .01%;-ms-flex:1 1 .01%;flex:1 1 .01%;-ms-flex-positive:1;-ms-flex-negative:1;-ms-flex-preferred-size:.01%}.sidebar #full-list ul{display:none;margin:9px 15px;padding:0}.sidebar #full-list ul li{font-weight:300;line-height:18px;padding:2px 10px}.sidebar #full-list ul li a.expand:before{content:"+";font-family:monospaced;font-size:15px;float:left;width:13px;margin-left:-13px}.sidebar #full-list ul li.open a.expand:before{content:"−"}.sidebar #full-list ul li ul{display:none;margin:9px 6px}.sidebar #full-list li.open>ul,.sidebar #full-list ul li.open>ul{display:block}.sidebar #full-list ul li ul li{border-left:1px solid #959595;padding:0 10px}.sidebar #full-list ul li ul li.active:before{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f105";margin-left:-10px;font-size:16px;margin-right:5px}.sidebar #full-list li{padding:0;line-height:27px}.sidebar #full-list li.active{border-left:none}.sidebar #full-list li.active>a,.sidebar #full-list li.clicked>a{color:#fff}.sidebar #full-list li.group{text-transform:uppercase;font-weight:700;font-size:.8em;margin:2em 0 0;line-height:1.8em;color:#ddd}@media screen and (max-height:500px){.sidebar{overflow-y:auto}.sidebar #full-list{overflow:visible}}.content-inner{font-family:Merriweather,'Book Antiqua',Georgia,'Century Schoolbook',serif;font-size:1em;line-height:1.6875em}.content-inner h1,.content-inner h2,.content-inner h3,.content-inner h4,.content-inner h5,.content-inner h6{font-family:Lato,sans-serif;font-weight:700;line-height:1.5em;word-wrap:break-word}.content-inner h1{font-size:2em;margin:1em 0 .5em}.content-inner h1.section-heading{margin:1.5em 0 .5em}.content-inner h1 small{font-weight:300}.content-inner h1 a.view-source{font-size:1.2rem}.content-inner h2{font-size:1.6em;margin:1em 0 .5em;font-weight:700}.content-inner h3{font-size:1.375em;margin:1em 0 .5em;font-weight:700}.content-inner a{color:#000;text-decoration:underline}.content-inner a:visited{color:#000}.content-inner ul li{line-height:1.5em}.content-inner ul li>p{margin:0}.content-inner a.view-source{float:right;color:#959595;text-decoration:none;border:none;transition:color .3s ease-in-out;margin-top:1px}.content-inner a.view-source:hover{color:#373f52}.content-inner .note{color:#959595;margin:0 5px;font-size:14px;font-weight:400}.content-inner blockquote{font-style:italic;margin:.5em 0;padding:.25em 1.5em;border-left:3px solid #e1e1e1;display:inline-block}.content-inner blockquote :first-child{padding-top:0;margin-top:0}.content-inner blockquote :last-child{padding-bottom:0;margin-bottom:0}.content-inner table{margin:2em 0}.content-inner th{text-align:left;font-family:Lato,sans-serif;text-transform:uppercase;font-weight:700;padding-bottom:.5em}.content-inner tr{border-bottom:1px solid #d5dae6;vertical-align:bottom;height:2.5em}.content-inner .summary .summary-row .summary-signature a,.content-inner .summary h2 a{border:none;text-decoration:none}.content-inner td,.content-inner th{padding-left:1em;line-height:2em;vertical-align:top}.content-inner .section-heading:hover a.hover-link{opacity:1;text-decoration:none}.content-inner .section-heading a.hover-link{transition:opacity .3s ease-in-out;display:inline-block;opacity:0;padding:.3em .6em .6em;line-height:1em;margin-left:-2.7em;text-decoration:none;border:none;font-size:16px;vertical-align:middle}.content-inner .detail h2.section-heading{margin-left:.3em}.content-inner .visible-xs{display:none!important}@media screen and (max-width:768px){.content-inner .visible-xs{display:block!important}}.content-inner img{max-width:100%}.content-inner .summary h2{font-weight:700}.content-inner .summary .summary-row .summary-signature{font-family:Inconsolata,Menlo,Courier,monospace;font-weight:700}.content-inner .summary .summary-row .summary-synopsis{font-family:Merriweather,'Book Antiqua',Georgia,'Century Schoolbook',serif;font-style:italic;padding:0 1.2em;margin:0 0 .5em}.content-inner .summary .summary-row .summary-synopsis p{margin:0;padding:0}@keyframes blink-background{from{background-color:#f7f7f7}to{background-color:#ff9}}.content-inner .detail:target .detail-header{animation-duration:.55s;animation-name:blink-background;animation-iteration-count:1;animation-timing-function:ease-in-out}.content-inner .detail-header{margin:2em 0 1em;padding:.5em 1em;background:#f7f7f7;border-left:3px solid #9768d1;font-size:1em;font-family:Inconsolata,Menlo,Courier,monospace;position:relative}.content-inner .detail-header .note{float:right}.content-inner .detail-header .signature{font-size:1rem;font-weight:700}.content-inner .detail-header:hover a.detail-link{opacity:1;text-decoration:none}.content-inner .detail-header a.detail-link{transition:opacity .3s ease-in-out;position:absolute;top:0;left:0;display:block;opacity:0;padding:.6em;line-height:1.5em;margin-left:-2.5em;text-decoration:none;border:none}#search h1,.content-inner .footer .line{display:inline-block}.content-inner .specs pre,.content-inner code{font-family:Inconsolata,Menlo,Courier,monospace;font-style:normal;line-height:24px}.content-inner .specs{opacity:.7;padding-bottom:.05em}.content-inner .specs pre{font-size:.9em;white-space:pre-wrap;margin:0;padding:0}.content-inner .docstring{margin:1.2em 0 2.1em 1.2em}.content-inner .docstring h2,.content-inner .docstring h3,.content-inner .docstring h4,.content-inner .docstring h5{font-weight:700}.content-inner .docstring h2{font-size:1.1em}.content-inner .docstring h3{font-size:1em}.content-inner .docstring h4{font-size:.95em}.content-inner .docstring h5{font-size:.9em}.content-inner a.no-underline,.content-inner pre a{color:#9768d1;text-shadow:none;text-decoration:none;background-image:none}.content-inner a.no-underline:active,.content-inner a.no-underline:focus,.content-inner a.no-underline:hover,.content-inner a.no-underline:visited,.content-inner pre a:active,.content-inner pre a:focus,.content-inner pre a:hover,.content-inner pre a:visited{color:#9768d1;text-decoration:none}.content-inner code{font-weight:400;background-color:#f7f9fc;vertical-align:baseline;border-radius:2px;padding:.1em .2em;border:1px solid #d2ddee}.content-inner pre{margin:1.5em 0}.content-inner pre.spec{margin:0}.content-inner pre.spec code{padding:0}.content-inner pre code.hljs{white-space:inherit;padding:.5em 1em;background-color:#f7f9fc}.content-inner .footer{margin:4em auto 1em;text-align:center;font-style:italic;font-size:14px;color:#959595}.content-inner .footer a{color:#959595;text-decoration:underline}.content-inner .footer a:visited{color:#959595}#search{min-height:200px}#search .result-id{font-size:1.2em}#search .result-id a{text-decoration:none;transition:color .3s ease-in-out}#search .result-id a:active,#search .result-id a:focus,#search .result-id a:visited{color:#000}#search .result-id a:hover{color:#9768d1}#search .result-elem em,#search .result-id em{font-style:normal;color:#9768d1}#search ul{margin:0;padding:0}.night-mode-toggle{top:1.5em}.night-mode-toggle .icon-theme::before{content:"\e900"}@media screen and (max-width:768px){.night-mode-toggle .icon-theme::before{font-size:1em}.night-mode-toggle{transform:translateX(0);left:5px;top:1.5em}.sidebar-opened .night-mode-toggle{left:18px}}@media screen and (min-width:769px){.night-mode-toggle .icon-theme::before{font-size:1.25em}}@media screen and (min-width:1281px){.night-mode-toggle .icon-theme::before{font-size:1.5em}}body.night-mode{background:#212127}body.night-mode .hljs-comment,body.night-mode .hljs-quote{color:#969896}body.night-mode .hljs-deletion,body.night-mode .hljs-name,body.night-mode .hljs-regexp,body.night-mode .hljs-selector-class,body.night-mode .hljs-selector-id,body.night-mode .hljs-tag,body.night-mode .hljs-template-variable,body.night-mode .hljs-variable{color:#c66}body.night-mode .hljs-built_in,body.night-mode .hljs-builtin-name,body.night-mode .hljs-link,body.night-mode .hljs-literal,body.night-mode .hljs-meta,body.night-mode .hljs-number,body.night-mode .hljs-params,body.night-mode .hljs-type{color:#de935f}body.night-mode .hljs-attribute{color:#f0c674}body.night-mode .hljs-addition,body.night-mode .hljs-bullet,body.night-mode .hljs-string,body.night-mode .hljs-symbol{color:#b5bd68}body.night-mode .hljs-section,body.night-mode .hljs-title{color:#81a2be}body.night-mode .hljs-keyword,body.night-mode .hljs-selector-tag{color:#b294bb}body.night-mode .hljs{display:block;overflow-x:auto;background:#1d1f21;color:#c5c8c6;padding:.5em}body.night-mode .hljs-emphasis{font-style:italic}body.night-mode .hljs-strong{font-weight:700}body.night-mode .content-outer{background:#212127}body.night-mode .night-mode-toggle .icon-theme::before{content:"\e901"}body.night-mode #search .result-id a:active,body.night-mode #search .result-id a:focus,body.night-mode #search .result-id a:visited{color:#D2D2D2}body.night-mode #search .result-id a:hover{color:#9768d1}body.night-mode .content-inner{color:#B4B4B4}body.night-mode .content-inner a:visited,body.night-mode .content-inner h1,body.night-mode .content-inner h2,body.night-mode .content-inner h3,body.night-mode .content-inner h4,body.night-mode .content-inner h5,body.night-mode .content-inner h6{color:#D2D2D2}body.night-mode .content-inner a{color:#D2D2D2;text-decoration:underline}body.night-mode .content-inner .summary h2 a,body.night-mode .content-inner a.no-underline,body.night-mode .content-inner a.view-source,body.night-mode .content-inner pre a{text-decoration:none}body.night-mode .content-inner a.view-source:hover{color:#fff}@keyframes night-blink-background{from{background-color:#3A4152}to{background-color:#660}}body.night-mode .content-inner .detail:target .detail-header{animation-name:night-blink-background}body.night-mode .content-inner .detail-header{background:#3A4152;color:#D2D2D2}body.night-mode .content-inner .footer,body.night-mode .content-inner .footer a{color:#959595}body.night-mode .content-inner code{background-color:#2C2C31;border-color:#44444c}body.night-mode .content-inner pre code.hljs{background-color:#2C2C31}body.night-mode .content-inner .footer .line{display:inline-block}body.night-mode .sidebar-button,body.night-mode .sidebar-closed .sidebar-button{color:#d5dae6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media print{.main{display:block}.sidebar,.sidebar-button{display:none}.content{padding-left:0;overflow:visible}.summary-row{page-break-inside:avoid}} \ No newline at end of file diff --git a/doc/dist/app-9bd040e5e5.js b/doc/dist/app-9bd040e5e5.js new file mode 100644 index 0000000..e4a0ccf --- /dev/null +++ b/doc/dist/app-9bd040e5e5.js @@ -0,0 +1,8 @@ +!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";var r=n(1)["default"],i=n(2),o=r(i),a=n(3),u=r(a),s=n(4),l=n(86),c=n(89);window.$=o["default"],(0,o["default"])(function(){u["default"].configure({tabReplace:" ",languages:[]}),(0,c.initialize)(),(0,l.initialize)(),(0,s.initialize)(),u["default"].initHighlighting()})},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){var r,i;!function(t,n){"use strict";"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){"use strict";function a(e,t,n){t=t||ce;var r,i=t.createElement("script");if(i.text=e,n)for(r in ke)n[r]&&(i[r]=n[r]);t.head.appendChild(i).parentNode.removeChild(i)}function u(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ve[me.call(e)]||"object":typeof e}function s(e){var t=!!e&&"length"in e&&e.length,n=u(e);return!we(e)&&!Ee(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function l(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function c(e,t,n){return we(t)?Ne.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?Ne.grep(e,function(e){return e===t!==n}):"string"!=typeof t?Ne.grep(e,function(e){return ge.call(t,e)>-1!==n}):Ne.filter(t,e,n)}function f(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function p(e){var t={};return Ne.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function d(e){return e}function h(e){throw e}function g(e,t,n,r){var i;try{e&&we(i=e.promise)?i.call(e).done(t).fail(n):e&&we(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function v(){ce.removeEventListener("DOMContentLoaded",v),n.removeEventListener("load",v),Ne.ready()}function m(e,t){return t.toUpperCase()}function y(e){return e.replace(ze,"ms-").replace(Fe,m)}function b(){this.expando=Ne.expando+b.uid++}function _(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ge.test(e)?JSON.parse(e):e)}function x(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Ve,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=_(n)}catch(i){}Ke.set(e,t,n)}else n=void 0;return n}function w(e,t,n,r){var i,o,a=20,u=r?function(){return r.cur()}:function(){return Ne.css(e,t,"")},s=u(),l=n&&n[3]||(Ne.cssNumber[t]?"":"px"),c=(Ne.cssNumber[t]||"px"!==l&&+s)&&Ze.exec(Ne.css(e,t));if(c&&c[3]!==l){for(s/=2,l=l||c[3],c=+s||1;a--;)Ne.style(e,t,c+l),(1-o)*(1-(o=u()/s||.5))<=0&&(a=0),c/=o;c=2*c,Ne.style(e,t,c+l),n=n||[]}return n&&(c=+c||+s||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function E(e){var t,n=e.ownerDocument,r=e.nodeName,i=et[r];return i?i:(t=n.body.appendChild(n.createElement(r)),i=Ne.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),et[r]=i,i)}function k(e,t){for(var n,r,i=[],o=0,a=e.length;o-1)i&&i.push(o);else if(c=Ne.contains(o.ownerDocument,o),a=C(p.appendChild(o),"script"),c&&N(a),n)for(f=0;o=a[f++];)rt.test(o.type||"")&&n.push(o);return p}function A(){return!0}function S(){return!1}function j(){try{return ce.activeElement}catch(e){}}function O(e,t,n,r,i,o){var a,u;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(u in t)O(e,u,n,r,t[u],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=S;else if(!i)return e;return 1===o&&(a=i,i=function(e){return Ne().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=Ne.guid++)),e.each(function(){Ne.event.add(this,t,i,r,n)})}function M(e,t){return l(e,"table")&&l(11!==t.nodeType?t:t.firstChild,"tr")?Ne(e).children("tbody")[0]||e:e}function D(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function R(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function P(e,t){var n,r,i,o,a,u,s,l;if(1===t.nodeType){if(Ue.hasData(e)&&(o=Ue.access(e),a=Ue.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof h&&!xe.checkClone&&pt.test(h))return e.each(function(i){var o=e.eq(i);g&&(t[0]=h.call(this,i,o.html())),I(o,t,n,r)});if(p&&(i=T(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=Ne.map(C(i,"script"),D),s=u.length;f=0&&(s+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-s-u-.5))),s}function U(e,t,n){var r=gt(e),i=H(e,t,r),o="border-box"===Ne.css(e,"boxSizing",!1,r),a=o;if(ht.test(i)){if(!n)return i;i="auto"}return a=a&&(xe.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===Ne.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),i=parseFloat(i)||0,i+W(e,t,n||(o?"border":"content"),a,r,i)+"px"}function K(e,t,n,r,i){return new K.prototype.init(e,t,n,r,i)}function G(){kt&&(ce.hidden===!1&&n.requestAnimationFrame?n.requestAnimationFrame(G):n.setTimeout(G,Ne.fx.interval),Ne.fx.tick())}function V(){return n.setTimeout(function(){Et=void 0}),Et=Date.now()}function X(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)n=Qe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function Z(e,t,n){for(var r,i=(J.tweeners[t]||[]).concat(J.tweeners["*"]),o=0,a=i.length;o=0&&nE.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[B]=!0,e}function i(e){var t=D.createElement("fieldset");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)E.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function u(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function s(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ke(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function v(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else b=m(b===a?b.splice(h,b.length):b),o?o(null,a,b,s):Y.apply(a,b)})}function b(e){for(var t,n,r,i=e.length,o=E.relative[e[0].type],a=o||E.relative[" "],u=o?1:0,s=h(function(e){return e===t},a,!0),l=h(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==S)||((t=n).nodeType?s(e,n,r):l(e,n,r));return t=null,i}];u1&&g(c),u>1&&d(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(ue,"$1"),n,u0,o=e.length>0,a=function(r,a,u,s,l){var c,f,p,d=0,h="0",g=r&&[],v=[],y=S,b=r||o&&E.find.TAG("*",l),_=z+=null==y?1:Math.random()||.1,x=b.length;for(l&&(S=a===D||a||l);h!==x&&null!=(c=b[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===D||(M(c),u=!P);p=e[f++];)if(p(c,a||D,u)){s.push(c);break}l&&(z=_)}i&&((c=!p&&c)&&d--,r&&g.push(c))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(g,v,a,u);if(r){if(d>0)for(;h--;)g[h]||v[h]||(v[h]=Z.call(s));v=m(v)}Y.apply(s,v),l&&!r&&v.length>0&&d+n.length>1&&t.uniqueSort(s)}return l&&(z=_,S=y),g};return i?r(a):a}var x,w,E,k,C,N,T,A,S,j,O,M,D,R,P,L,I,q,H,B="sizzle"+1*new Date,$=e.document,z=0,F=0,W=n(),U=n(),K=n(),G=function(e,t){return e===t&&(O=!0),0},V={}.hasOwnProperty,X=[],Z=X.pop,Q=X.push,Y=X.push,J=X.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),pe=new RegExp("^"+re+"$"),de={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,ve=/^[^{]+\{\s*\[native \w/,me=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),_e=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},xe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,we=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ee=function(){M()},ke=h(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Y.apply(X=J.call($.childNodes),$.childNodes),X[$.childNodes.length].nodeType}catch(Ce){Y={apply:X.length?function(e,t){Q.apply(e,J.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},M=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:$;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,R=D.documentElement,P=!C(D),$!==D&&(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ee,!1):n.attachEvent&&n.attachEvent("onunload",Ee)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ve.test(D.getElementsByClassName),w.getById=i(function(e){return R.appendChild(e).id=B,!D.getElementsByName||!D.getElementsByName(B).length}),w.getById?(E.filter.ID=function(e){var t=e.replace(be,_e);return function(e){return e.getAttribute("id")===t}},E.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&P){var n=t.getElementById(e);return n?[n]:[]}}):(E.filter.ID=function(e){var t=e.replace(be,_e);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},E.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&P){var n,r,i,o=t.getElementById(e);if(o){if(n=o.getAttributeNode("id"),n&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if(n=o.getAttributeNode("id"),n&&n.value===e)return[o]}return[]}}),E.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},E.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&P)return t.getElementsByClassName(e)},I=[],L=[],(w.qsa=ve.test(D.querySelectorAll))&&(i(function(e){R.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&L.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||L.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+B+"-]").length||L.push("~="),e.querySelectorAll(":checked").length||L.push(":checked"),e.querySelectorAll("a#"+B+"+*").length||L.push(".#.+[+~]")}),i(function(e){e.innerHTML="";var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&L.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&L.push(":enabled",":disabled"),R.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&L.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),L.push(",.*:")})),(w.matchesSelector=ve.test(q=R.matches||R.webkitMatchesSelector||R.mozMatchesSelector||R.oMatchesSelector||R.msMatchesSelector))&&i(function(e){w.disconnectedMatch=q.call(e,"*"),q.call(e,"[s!='']:x"),I.push("!=",oe)}),L=L.length&&new RegExp(L.join("|")),I=I.length&&new RegExp(I.join("|")),t=ve.test(R.compareDocumentPosition),H=t||ve.test(R.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},G=t?function(e,t){if(e===t)return O=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===$&&H($,e)?-1:t===D||t.ownerDocument===$&&H($,t)?1:j?ee(j,e)-ee(j,t):0:4&n?-1:1)}:function(e,t){if(e===t)return O=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,u=[e],s=[t];if(!i||!o)return e===D?-1:t===D?1:i?-1:o?1:j?ee(j,e)-ee(j,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;u[r]===s[r];)r++;return r?a(u[r],s[r]):u[r]===$?-1:s[r]===$?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&M(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&P&&!K[n+" "]&&(!I||!I.test(n))&&(!L||!L.test(n)))try{var r=q.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&M(e),H(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&M(e);var n=E.attrHandle[t.toLowerCase()],r=n&&V.call(E.attrHandle,t.toLowerCase())?n(e,t,!P):void 0;return void 0!==r?r:w.attributes||!P?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(xe,we)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(O=!w.detectDuplicates,j=!w.sortStable&&e.slice(0),e.sort(G),O){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return j=null,e},k=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=k(t);return n},E=t.selectors={cacheLength:50,createPseudo:r,match:de,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,_e),e[3]=(e[3]||e[4]||e[5]||"").replace(be,_e),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,_e).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),u="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,s){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",v=t.parentNode,m=u&&t.nodeName.toLowerCase(),y=!s&&!u,b=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(u?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&y){for(p=v,f=p[B]||(p[B]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),l=c[e]||[],d=l[0]===z&&l[1],b=d&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(b=d=0)||h.pop();)if(1===p.nodeType&&++b&&p===t){c[e]=[z,d,b];break}}else if(y&&(p=t,f=p[B]||(p[B]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),l=c[e]||[],d=l[0]===z&&l[1],b=d),b===!1)for(;(p=++d&&p&&p[g]||(b=d=0)||h.pop())&&((u?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++b||(y&&(f=p[B]||(p[B]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),c[e]=[z,b]),p!==t)););return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,n){var i,o=E.pseudos[e]||E.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[B]?o(n):o.length>1?(i=[e,e,"",n],E.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=T(e.replace(ue,"$1"));return i[B]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),u=e.length;u--;)(o=a[u])&&(e[u]=!(t[u]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n), +t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,_e),function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,_e).toLowerCase(),function(t){var n;do if(n=P?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===R},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:l(!1),disabled:l(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!E.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[n<0?n+t:n]}),even:c(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&9===t.nodeType&&P&&E.relative[o[1].type]){if(t=(E.find.ID(a.matches[0].replace(be,_e),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=de.needsContext.test(e)?0:o.length;i--&&(a=o[i],!E.relative[u=a.type]);)if((s=E.find[u])&&(r=s(a.matches[0].replace(be,_e),ye.test(o[0].type)&&f(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Y.apply(n,r),n;break}}return(l||T(e,c))(r,t,!P,n,!t||ye.test(e)&&f(t.parentNode)||t),n},w.sortStable=B.split("").sort(G).join("")===B,w.detectDuplicates=!!O,M(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("fieldset"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(n);Ne.find=Ae,Ne.expr=Ae.selectors,Ne.expr[":"]=Ne.expr.pseudos,Ne.uniqueSort=Ne.unique=Ae.uniqueSort,Ne.text=Ae.getText,Ne.isXMLDoc=Ae.isXML,Ne.contains=Ae.contains,Ne.escapeSelector=Ae.escape;var Se=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&Ne(e).is(n))break;r.push(e)}return r},je=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Oe=Ne.expr.match.needsContext,Me=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;Ne.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?Ne.find.matchesSelector(r,e)?[r]:[]:Ne.find.matches(e,Ne.grep(t,function(e){return 1===e.nodeType}))},Ne.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(Ne(e).filter(function(){for(t=0;t1?Ne.uniqueSort(n):n},filter:function(e){return this.pushStack(c(this,e||[],!1))},not:function(e){return this.pushStack(c(this,e||[],!0))},is:function(e){return!!c(this,"string"==typeof e&&Oe.test(e)?Ne(e):e||[],!1).length}});var De,Re=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Pe=Ne.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||De,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Re.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof Ne?t[0]:t,Ne.merge(this,Ne.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ce,!0)),Me.test(r[1])&&Ne.isPlainObject(t))for(r in t)we(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=ce.getElementById(r[2]),i&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):we(e)?void 0!==n.ready?n.ready(e):e(Ne):Ne.makeArray(e,this)};Pe.prototype=Ne.fn,De=Ne(ce);var Le=/^(?:parents|prev(?:Until|All))/,Ie={children:!0,contents:!0,next:!0,prev:!0};Ne.fn.extend({has:function(e){var t=Ne(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&Ne.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?Ne.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ge.call(Ne(e),this[0]):ge.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(Ne.uniqueSort(Ne.merge(this.get(),Ne(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),Ne.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return f(e,"nextSibling")},prev:function(e){return f(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return je((e.parentNode||{}).firstChild,e)},children:function(e){return je(e.firstChild)},contents:function(e){return l(e,"iframe")?e.contentDocument:(l(e,"template")&&(e=e.content||e),Ne.merge([],e.childNodes))}},function(e,t){Ne.fn[e]=function(n,r){var i=Ne.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=Ne.filter(r,i)),this.length>1&&(Ie[e]||Ne.uniqueSort(i),Le.test(e)&&i.reverse()),this.pushStack(i)}});var qe=/[^\x20\t\r\n\f]+/g;Ne.Callbacks=function(e){e="string"==typeof e?p(e):Ne.extend({},e);var t,n,r,i,o=[],a=[],s=-1,l=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?Ne.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},Ne.extend({Deferred:function(e){var t=[["notify","progress",Ne.Callbacks("memory"),Ne.Callbacks("memory"),2],["resolve","done",Ne.Callbacks("once memory"),Ne.Callbacks("once memory"),0,"resolved"],["reject","fail",Ne.Callbacks("once memory"),Ne.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return Ne.Deferred(function(n){Ne.each(t,function(t,r){var i=we(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&we(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(e,r,i){function o(e,t,r,i){return function(){var u=this,s=arguments,l=function(){var n,l;if(!(e=a&&(r!==h&&(u=void 0,s=[n]),t.rejectWith(u,s))}};e?c():(Ne.Deferred.getStackHook&&(c.stackTrace=Ne.Deferred.getStackHook()),n.setTimeout(c))}}var a=0;return Ne.Deferred(function(n){t[0][3].add(o(0,n,we(i)?i:d,n.notifyWith)),t[1][3].add(o(0,n,we(e)?e:d)),t[2][3].add(o(0,n,we(r)?r:h))}).promise()},promise:function(e){return null!=e?Ne.extend(e,i):i}},o={};return Ne.each(t,function(e,n){var a=n[2],u=n[5];i[n[1]]=a.add,u&&a.add(function(){r=u},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith}),i.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=pe.call(arguments),o=Ne.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?pe.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(g(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||we(i[n]&&i[n].then)))return o.then();for(;n--;)g(i[n],a(n),o.reject);return o.promise()}});var He=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;Ne.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&He.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},Ne.readyException=function(e){n.setTimeout(function(){throw e})};var Be=Ne.Deferred();Ne.fn.ready=function(e){return Be.then(e)["catch"](function(e){Ne.readyException(e)}),this},Ne.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--Ne.readyWait:Ne.isReady)||(Ne.isReady=!0,e!==!0&&--Ne.readyWait>0||Be.resolveWith(ce,[Ne]))}}),Ne.ready.then=Be.then,"complete"===ce.readyState||"loading"!==ce.readyState&&!ce.documentElement.doScroll?n.setTimeout(Ne.ready):(ce.addEventListener("DOMContentLoaded",v),n.addEventListener("load",v));var $e=function(e,t,n,r,i,o,a){var s=0,l=e.length,c=null==n;if("object"===u(n)){i=!0;for(s in n)$e(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,we(r)||(a=!0),c&&(a?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(Ne(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Ke.remove(this,e)})}}),Ne.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Ue.get(e,t),n&&(!r||Array.isArray(n)?r=Ue.access(e,t,Ne.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=Ne.queue(e,t),r=n.length,i=n.shift(),o=Ne._queueHooks(e,t),a=function(){Ne.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Ue.get(e,n)||Ue.access(e,n,{empty:Ne.Callbacks("once memory").add(function(){Ue.remove(e,[t+"queue",n])})})}}),Ne.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,rt=/^$|^module$|\/(?:java|ecma)script/i,it={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};it.optgroup=it.option,it.tbody=it.tfoot=it.colgroup=it.caption=it.thead,it.th=it.td;var ot=/<|&#?\w+;/;!function(){var e=ce.createDocumentFragment(),t=e.appendChild(ce.createElement("div")),n=ce.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),xe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",xe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var at=ce.documentElement,ut=/^key/,st=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,lt=/^([^.]*)(?:\.(.+)|)/;Ne.event={global:{},add:function(e,t,n,r,i){var o,a,u,s,l,c,f,p,d,h,g,v=Ue.get(e);if(v)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&Ne.find.matchesSelector(at,i),n.guid||(n.guid=Ne.guid++),(s=v.events)||(s=v.events={}),(a=v.handle)||(a=v.handle=function(t){return"undefined"!=typeof Ne&&Ne.event.triggered!==t.type?Ne.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],l=t.length;l--;)u=lt.exec(t[l])||[],d=g=u[1],h=(u[2]||"").split(".").sort(),d&&(f=Ne.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=Ne.event.special[d]||{},c=Ne.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&Ne.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=s[d])||(p=s[d]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,h,a)!==!1||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),Ne.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,u,s,l,c,f,p,d,h,g,v=Ue.hasData(e)&&Ue.get(e);if(v&&(s=v.events)){for(t=(t||"").match(qe)||[""],l=t.length;l--;)if(u=lt.exec(t[l])||[],d=g=u[1],h=(u[2]||"").split(".").sort(),d){for(f=Ne.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=s[d]||[],u=u[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||u&&!u.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&f.teardown.call(e,h,v.handle)!==!1||Ne.removeEvent(e,d,v.handle),delete s[d])}else for(d in s)Ne.event.remove(e,d+t[l],n,r,!0);Ne.isEmptyObject(s)&&Ue.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,u=Ne.event.fix(e),s=new Array(arguments.length),l=(Ue.get(this,"events")||{})[u.type]||[],c=Ne.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||l.disabled!==!0)){for(o=[],a={},n=0;n-1:Ne.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&u.push({elem:l,handlers:o})}return l=this,s\x20\t\r\n\f]*)[^>]*)\/>/gi,ft=/\s*$/g;Ne.extend({htmlPrefilter:function(e){return e.replace(ct,"<$1>")},clone:function(e,t,n){var r,i,o,a,u=e.cloneNode(!0),s=Ne.contains(e.ownerDocument,e);if(!(xe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||Ne.isXMLDoc(e)))for(a=C(u),o=C(e),r=0,i=o.length;r0&&N(a,!s&&C(e,"script")),u},cleanData:function(e){for(var t,n,r,i=Ne.event.special,o=0;void 0!==(n=e[o]);o++)if(We(n)){if(t=n[Ue.expando]){if(t.events)for(r in t.events)i[r]?Ne.event.remove(n,r):Ne.removeEvent(n,r,t.handle);n[Ue.expando]=void 0}n[Ke.expando]&&(n[Ke.expando]=void 0)}}}),Ne.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return $e(this,function(e){return void 0===e?Ne.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return I(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=M(this,e);t.appendChild(e)}})},prepend:function(){return I(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=M(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return I(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return I(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(Ne.cleanData(C(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return Ne.clone(this,e,t)})},html:function(e){return $e(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ft.test(e)&&!it[(nt.exec(e)||["",""])[1].toLowerCase()]){e=Ne.htmlPrefilter(e);try{for(;n1)}}),Ne.Tween=K,K.prototype={constructor:K,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||Ne.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(Ne.cssNumber[n]?"":"px")},cur:function(){var e=K.propHooks[this.prop];return e&&e.get?e.get(this):K.propHooks._default.get(this)},run:function(e){var t,n=K.propHooks[this.prop];return this.options.duration?this.pos=t=Ne.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):K.propHooks._default.set(this),this}},K.prototype.init.prototype=K.prototype,K.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=Ne.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){Ne.fx.step[e.prop]?Ne.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[Ne.cssProps[e.prop]]&&!Ne.cssHooks[e.prop]?e.elem[e.prop]=e.now:Ne.style(e.elem,e.prop,e.now+e.unit)}}},K.propHooks.scrollTop=K.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},Ne.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},Ne.fx=K.prototype.init,Ne.fx.step={};var Et,kt,Ct=/^(?:toggle|show|hide)$/,Nt=/queueHooks$/;Ne.Animation=Ne.extend(J,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return w(n.elem,e,Ze.exec(t),n),n}]},tweener:function(e,t){we(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each(function(){Ne.removeAttr(this,e)})}}),Ne.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?Ne.prop(e,t,n):(1===o&&Ne.isXMLDoc(e)||(i=Ne.attrHooks[t.toLowerCase()]||(Ne.expr.match.bool.test(t)?Tt:void 0)),void 0!==n?null===n?void Ne.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=Ne.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!xe.radioValue&&"radio"===t&&l(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(qe);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),Tt={set:function(e,t,n){return t===!1?Ne.removeAttr(e,n):e.setAttribute(n,n),n}},Ne.each(Ne.expr.match.bool.source.match(/\w+/g),function(e,t){var n=At[t]||Ne.find.attr;At[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=At[a],At[a]=i,i=null!=n(e,t,r)?a:null,At[a]=o),i}});var St=/^(?:input|select|textarea|button)$/i,jt=/^(?:a|area)$/i;Ne.fn.extend({prop:function(e,t){return $e(this,Ne.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[Ne.propFix[e]||e]})}}),Ne.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&Ne.isXMLDoc(e)||(t=Ne.propFix[t]||t,i=Ne.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=Ne.find.attr(e,"tabindex");return t?parseInt(t,10):St.test(e.nodeName)||jt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),xe.optSelected||(Ne.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),Ne.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){Ne.propFix[this.toLowerCase()]=this}),Ne.fn.extend({addClass:function(e){var t,n,r,i,o,a,u,s=0;if(we(e))return this.each(function(t){Ne(this).addClass(e.call(this,t,te(this)))});if(t=ne(e),t.length)for(;n=this[s++];)if(i=te(n),r=1===n.nodeType&&" "+ee(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");u=ee(r),i!==u&&n.setAttribute("class",u)}return this},removeClass:function(e){var t,n,r,i,o,a,u,s=0;if(we(e))return this.each(function(t){Ne(this).removeClass(e.call(this,t,te(this)))});if(!arguments.length)return this.attr("class","");if(t=ne(e),t.length)for(;n=this[s++];)if(i=te(n),r=1===n.nodeType&&" "+ee(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");u=ee(r),i!==u&&n.setAttribute("class",u)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):we(e)?this.each(function(n){Ne(this).toggleClass(e.call(this,n,te(this),t),t)}):this.each(function(){var t,i,o,a;if(r)for(i=0,o=Ne(this),a=ne(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=te(this),t&&Ue.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Ue.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+ee(te(n))+" ").indexOf(t)>-1)return!0;return!1}});var Ot=/\r/g;Ne.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=we(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,Ne(this).val()):e,null==i?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=Ne.map(i,function(e){return null==e?"":e+""})),t=Ne.valHooks[this.type]||Ne.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=Ne.valHooks[i.type]||Ne.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Ot,""):null==n?"":n)}}}),Ne.extend({valHooks:{option:{get:function(e){var t=Ne.find.attr(e,"value");return null!=t?t:ee(Ne.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,u=a?null:[],s=a?o+1:i.length;for(r=o<0?s:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),Ne.each(["radio","checkbox"],function(){Ne.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=Ne.inArray(Ne(e).val(),t)>-1}},xe.checkOn||(Ne.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),xe.focusin="onfocusin"in n;var Mt=/^(?:focusinfocus|focusoutblur)$/,Dt=function(e){e.stopPropagation()};Ne.extend(Ne.event,{trigger:function(e,t,r,i){var o,a,u,s,l,c,f,p,d=[r||ce],h=ye.call(e,"type")?e.type:e,g=ye.call(e,"namespace")?e.namespace.split("."):[];if(a=p=u=r=r||ce,3!==r.nodeType&&8!==r.nodeType&&!Mt.test(h+Ne.event.triggered)&&(h.indexOf(".")>-1&&(g=h.split("."),h=g.shift(),g.sort()),l=h.indexOf(":")<0&&"on"+h,e=e[Ne.expando]?e:new Ne.Event(h,"object"==typeof e&&e),e.isTrigger=i?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:Ne.makeArray(t,[e]),f=Ne.event.special[h]||{},i||!f.trigger||f.trigger.apply(r,t)!==!1)){if(!i&&!f.noBubble&&!Ee(r)){for(s=f.delegateType||h,Mt.test(s+h)||(a=a.parentNode);a;a=a.parentNode)d.push(a),u=a;u===(r.ownerDocument||ce)&&d.push(u.defaultView||u.parentWindow||n)}for(o=0;(a=d[o++])&&!e.isPropagationStopped();)p=a,e.type=o>1?s:f.bindType||h,c=(Ue.get(a,"events")||{})[e.type]&&Ue.get(a,"handle"),c&&c.apply(a,t),c=l&&a[l],c&&c.apply&&We(a)&&(e.result=c.apply(a,t),e.result===!1&&e.preventDefault());return e.type=h,i||e.isDefaultPrevented()||f._default&&f._default.apply(d.pop(),t)!==!1||!We(r)||l&&we(r[h])&&!Ee(r)&&(u=r[l],u&&(r[l]=null),Ne.event.triggered=h,e.isPropagationStopped()&&p.addEventListener(h,Dt),r[h](),e.isPropagationStopped()&&p.removeEventListener(h,Dt),Ne.event.triggered=void 0,u&&(r[l]=u)),e.result}},simulate:function(e,t,n){var r=Ne.extend(new Ne.Event,n,{type:e,isSimulated:!0});Ne.event.trigger(r,null,t)}}),Ne.fn.extend({trigger:function(e,t){return this.each(function(){Ne.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return Ne.event.trigger(e,t,n,!0)}}),xe.focusin||Ne.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){Ne.event.simulate(t,e.target,Ne.event.fix(e))};Ne.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Ue.access(r,t);i||r.addEventListener(e,n,!0),Ue.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Ue.access(r,t)-1;i?Ue.access(r,t,i):(r.removeEventListener(e,n,!0),Ue.remove(r,t))}}});var Rt=n.location,Pt=Date.now(),Lt=/\?/;Ne.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(r){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||Ne.error("Invalid XML: "+e),t};var It=/\[\]$/,qt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Bt=/^(?:input|select|textarea|keygen)/i;Ne.param=function(e,t){var n,r=[],i=function(e,t){var n=we(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!Ne.isPlainObject(e))Ne.each(e,function(){i(this.name,this.value)});else for(n in e)re(n,e[n],t,i);return r.join("&")},Ne.fn.extend({serialize:function(){return Ne.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=Ne.prop(this,"elements");return e?Ne.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!Ne(this).is(":disabled")&&Bt.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!tt.test(e))}).map(function(e,t){var n=Ne(this).val();return null==n?null:Array.isArray(n)?Ne.map(n,function(e){return{name:t.name,value:e.replace(qt,"\r\n")}}):{name:t.name,value:n.replace(qt,"\r\n")}}).get()}});var $t=/%20/g,zt=/#.*$/,Ft=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ut=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Kt=/^(?:GET|HEAD)$/,Gt=/^\/\//,Vt={},Xt={},Zt="*/".concat("*"),Qt=ce.createElement("a");Qt.href=Rt.href,Ne.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rt.href,type:"GET",isLocal:Ut.test(Rt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":Ne.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ae(ae(e,Ne.ajaxSettings),t):ae(Ne.ajaxSettings,e)},ajaxPrefilter:ie(Vt),ajaxTransport:ie(Xt),ajax:function(e,t){function r(e,t,r,u){var l,p,d,_,x,w=t;c||(c=!0,s&&n.clearTimeout(s),i=void 0,a=u||"",E.readyState=e>0?4:0,l=e>=200&&e<300||304===e,r&&(_=ue(h,E,r)),_=se(h,_,E,l),l?(h.ifModified&&(x=E.getResponseHeader("Last-Modified"),x&&(Ne.lastModified[o]=x),x=E.getResponseHeader("etag"),x&&(Ne.etag[o]=x)),204===e||"HEAD"===h.type?w="nocontent":304===e?w="notmodified":(w=_.state,p=_.data,d=_.error,l=!d)):(d=w,!e&&w||(w="error",e<0&&(e=0))),E.status=e,E.statusText=(t||w)+"",l?m.resolveWith(g,[p,w,E]):m.rejectWith(g,[E,w,d]),E.statusCode(b),b=void 0,f&&v.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),y.fireWith(g,[E,w]),f&&(v.trigger("ajaxComplete",[E,h]),--Ne.active||Ne.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,o,a,u,s,l,c,f,p,d,h=Ne.ajaxSetup({},t),g=h.context||h,v=h.context&&(g.nodeType||g.jquery)?Ne(g):Ne.event,m=Ne.Deferred(),y=Ne.Callbacks("once memory"),b=h.statusCode||{},_={},x={},w="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!u)for(u={};t=Wt.exec(a);)u[t[1].toLowerCase()]=t[2];t=u[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=x[e.toLowerCase()]=x[e.toLowerCase()]||e,_[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||w;return i&&i.abort(t),r(0,t),this}};if(m.promise(E),h.url=((e||h.url||Rt.href)+"").replace(Gt,Rt.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(qe)||[""],null==h.crossDomain){l=ce.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Qt.protocol+"//"+Qt.host!=l.protocol+"//"+l.host}catch(k){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=Ne.param(h.data,h.traditional)),oe(Vt,h,t,E),c)return E;f=Ne.event&&h.global,f&&0===Ne.active++&&Ne.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Kt.test(h.type),o=h.url.replace(zt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace($t,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(Lt.test(o)?"&":"?")+h.data,delete h.data),h.cache===!1&&(o=o.replace(Ft,"$1"),d=(Lt.test(o)?"&":"?")+"_="+Pt++ +d),h.url=o+d),h.ifModified&&(Ne.lastModified[o]&&E.setRequestHeader("If-Modified-Since",Ne.lastModified[o]),Ne.etag[o]&&E.setRequestHeader("If-None-Match",Ne.etag[o])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Zt+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(h.beforeSend.call(g,E,h)===!1||c))return E.abort();if(w="abort",y.add(h.complete),E.done(h.success),E.fail(h.error),i=oe(Xt,h,t,E)){if(E.readyState=1,f&&v.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(s=n.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(_,r)}catch(k){if(c)throw k;r(-1,k)}}else r(-1,"No Transport");return E},getJSON:function(e,t,n){return Ne.get(e,t,n,"json")},getScript:function(e,t){return Ne.get(e,void 0,t,"script")}}),Ne.each(["get","post"],function(e,t){Ne[t]=function(e,n,r,i){return we(n)&&(i=i||r,r=n,n=void 0),Ne.ajax(Ne.extend({url:e,type:t,dataType:i,data:n,success:r},Ne.isPlainObject(e)&&e))}}),Ne._evalUrl=function(e){return Ne.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},Ne.fn.extend({wrapAll:function(e){var t;return this[0]&&(we(e)&&(e=e.call(this[0])),t=Ne(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return we(e)?this.each(function(t){Ne(this).wrapInner(e.call(this,t))}):this.each(function(){var t=Ne(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=we(e);return this.each(function(n){Ne(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){Ne(this).replaceWith(this.childNodes)}),this}}),Ne.expr.pseudos.hidden=function(e){return!Ne.expr.pseudos.visible(e)},Ne.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},Ne.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Jt=Ne.ajaxSettings.xhr();xe.cors=!!Jt&&"withCredentials"in Jt,xe.ajax=Jt=!!Jt,Ne.ajaxTransport(function(e){var t,r;if(xe.cors||Jt&&!e.crossDomain)return{send:function(i,o){var a,u=e.xhr();if(u.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)u[a]=e.xhrFields[a];e.mimeType&&u.overrideMimeType&&u.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)u.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=u.onload=u.onerror=u.onabort=u.ontimeout=u.onreadystatechange=null,"abort"===e?u.abort():"error"===e?"number"!=typeof u.status?o(0,"error"):o(u.status,u.statusText):o(Yt[u.status]||u.status,u.statusText,"text"!==(u.responseType||"text")||"string"!=typeof u.responseText?{binary:u.response}:{text:u.responseText},u.getAllResponseHeaders()))}},u.onload=t(),r=u.onerror=u.ontimeout=t("error"),void 0!==u.onabort?u.onabort=r:u.onreadystatechange=function(){4===u.readyState&&n.setTimeout(function(){t&&r()})},t=t("abort");try{u.send(e.hasContent&&e.data||null)}catch(s){if(t)throw s}},abort:function(){t&&t()}}}),Ne.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),Ne.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return Ne.globalEval(e),e}}}),Ne.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),Ne.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=Ne("",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"meta",variants:[{begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?\w+/,end:/\?>/}]},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},n]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```w*s*$",end:"^```s*$"},{begin:"`.+?`"},{begin:"^( {4}|\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}),e.registerLanguage("sql",function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*#]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t]},e.C_BLOCK_COMMENT_MODE,t]}}),e})},function(e,t,n){"use strict";function r(e){w.forEach(function(t){t===e?(0,v["default"])(t).parent().addClass("selected"):(0,v["default"])(t).parent().removeClass("selected")})}function i(){var e=(0,v["default"])("#full-list"),t=(0,v["default"])("#full-list .clicked");t.length>0&&e.scrollTop(t.offset().top-e.offset().top-40)}function o(e,t){var n=b.getModuleType();t=t||n;var i=e[t]||[],o=(0,v["default"])("#full-list");o.replaceWith((0,x["default"])({nodes:i,group:""})),r(["#",t,"-list"].join("")),(0,v["default"])("#full-list li a").on("click",function(e){var t=(0,v["default"])(e.target);t.hasClass("expand")?(e.preventDefault(),(0,v["default"])(e.target).closest("li").toggleClass("open")):((0,v["default"])("#full-list .clicked li.active").removeClass("active"),(0,v["default"])(e.target).closest("li").addClass("active"))})}function a(e){return function(t){t.preventDefault(),o(sidebarNodes,e),i()}}function u(){E.on("click","#extras-list",a("extras")),E.on("click","#modules-list",a("modules")),E.on("click","#exceptions-list",a("exceptions")),E.on("click","#tasks-list",a("tasks")),(0,v["default"])(".sidebar-search input").on("keydown",function(e){27===e.keyCode?(0,v["default"])(this).val(""):(event.metaKey||event.ctrlKey)&&13===e.keyCode&&((0,v["default"])(this).parent().attr("target","_blank").submit().removeAttr(""),e.preventDefault())});var e=window.location.pathname;"search.html"===e.substr(e.lastIndexOf("/")+1)&&(0,m.search)(s("q"))}function s(e){var t=window.location.href,n=e.replace(/[\[\]]/g,"\\$&"),r=new RegExp("[?&]"+n+"(=([^&#]*)|&|#|$)"),i=r.exec(t);return i&&i[2]?decodeURIComponent(i[2].replace(/\+/g," ")):""}function l(){var e=b.getLocationHash()||"content",t=sidebarNodes[b.getModuleType()],n=b.findSidebarCategory(t,e);(0,v["default"])('#full-list .clicked a.expand[href$="#'+n+'"]').closest("li").addClass("open"),(0,v["default"])('#full-list .clicked a[href$="#'+e+'"]').closest("li").addClass("active")}function c(){k.find("a").has("code").addClass("no-underline"),k.find("a").has("img").addClass("no-underline")}function f(){k.attr("tabindex",-1).focus()}function p(){o(sidebarNodes),u(),i(),l(),c(),f()}var d=n(1)["default"],h=n(5)["default"];Object.defineProperty(t,"__esModule",{value:!0}),t.initialize=p;var g=n(2),v=d(g),m=n(6),y=n(7),b=h(y),_=n(81),x=d(_),w=["#extras-list","#modules-list","#exceptions-list","#tasks-list","#search-list"],E=(0,v["default"])(".sidebar-listNav"),k=(0,v["default"])(".content")},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function r(e){var t=e.index,n=e.index+e[0].length,r=e.input,i=""+e[0]+"";return r.slice(0,t)+i+r.slice(n)}function i(e){return!!e}function o(e,t,n){return(e||[]).map(function(e){var i=(t+"."+e.id).match(n),o=e.id&&e.id.match(n);if(i||o){var a=JSON.parse(JSON.stringify(e));return a.match=o?r(o):e.id,a}}).filter(i)}function a(e,t,n){t.length>0&&e.push({name:n,results:t})}function u(e,t){return e.map(function(e){var n=e.title,i=n&&n.match(t),a=o(e.functions,n,t),u=o(e.macros,n,t),s=o(e.callbacks,n,t),l=o(e.types,n,t),c={id:e.id,match:i?r(i):e.title};if(a.length>0&&(c.functions=a),u.length>0&&(c.macros=u),s.length>0&&(c.callbacks=s),l.length>0&&(c.types=l),i||a.length>0||u.length>0||s.length>0||l.length>0)return c}).filter(i)}function s(e){var t=sidebarNodes;if(""!==e.replace(/\s/,"")){var n=new RegExp(h.escapeText(e),"i"),r=[],i=u(t.modules,n),o=u(t.exceptions,n),s=u(t.tasks,n);a(r,i,"Modules"),a(r,o,"Exceptions"),a(r,s,"Mix Tasks");var l=(0,v["default"])({value:e,levels:r,empty:0===r.length});y.val(e),m.html(l)}}var l=n(1)["default"],c=n(5)["default"];Object.defineProperty(t,"__esModule",{value:!0}),t.findIn=u,t.search=s;var f=n(2),p=l(f),d=n(7),h=c(d),g=n(61),v=l(g),m=(0,p["default"])("#search"),y=(0,p["default"])(".sidebar-search input")},function(e,t,n){"use strict";function r(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function i(){return(0,c["default"])("body").data("type")}function o(e,t){var n=!0,r=!1,i=void 0;try{for(var o,a=u(e);!(n=(o=a.next()).done);n=!0){var s=o.value,l=(0,h["default"])(s,function(e,n){var r=(0,p["default"])(e,function(e){var n=e.anchor;return n===t});return r});if(l)return l}}catch(c){r=!0,i=c}finally{try{!n&&a["return"]&&a["return"]()}finally{if(r)throw i}}}function a(){return window.location.hash.replace(/^#/,"")}var u=n(8)["default"],s=n(1)["default"];Object.defineProperty(t,"__esModule",{value:!0}),t.escapeText=r,t.getModuleType=i,t.findSidebarCategory=o,t.getLocationHash=a;var l=n(2),c=s(l),f=n(46),p=s(f),d=n(59),h=s(d)},function(e,t,n){e.exports={"default":n(9),__esModule:!0}},function(e,t,n){n(10),n(38),e.exports=n(41)},function(e,t,n){n(11);var r=n(14);r.NodeList=r.HTMLCollection=r.Array},function(e,t,n){"use strict";var r=n(12),i=n(13),o=n(14),a=n(15);e.exports=n(19)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):"keys"==t?i(0,n):"values"==t?i(0,e[n]):i(0,[n,e[n]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t){e.exports={}},function(e,t,n){var r=n(16),i=n(18);e.exports=function(e){return r(i(e))}},function(e,t,n){var r=n(17);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){ +var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(20),i=n(21),o=n(26),a=n(27),u=n(32),s=n(14),l=n(33),c=n(34),f=n(28).getProto,p=n(35)("iterator"),d=!([].keys&&"next"in[].keys()),h="@@iterator",g="keys",v="values",m=function(){return this};e.exports=function(e,t,n,y,b,_,x){l(n,t,y);var w,E,k=function(e){if(!d&&e in A)return A[e];switch(e){case g:return function(){return new n(this,e)};case v:return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",N=b==v,T=!1,A=e.prototype,S=A[p]||A[h]||b&&A[b],j=S||k(b);if(S){var O=f(j.call(new e));c(O,C,!0),!r&&u(A,h)&&a(O,p,m),N&&S.name!==v&&(T=!0,j=function(){return S.call(this)})}if(r&&!x||!d&&!T&&A[p]||a(A,p,j),s[t]=j,s[C]=m,b)if(w={values:N?j:k(v),keys:_?j:k(g),entries:N?k("entries"):j},x)for(E in w)E in A||o(A,E,w[E]);else i(i.P+i.F*(d||T),t,w);return w}},function(e,t){e.exports=!0},function(e,t,n){var r=n(22),i=n(23),o=n(24),a="prototype",u=function(e,t,n){var s,l,c,f=e&u.F,p=e&u.G,d=e&u.S,h=e&u.P,g=e&u.B,v=e&u.W,m=p?i:i[t]||(i[t]={}),y=p?r:d?r[t]:(r[t]||{})[a];p&&(n=t);for(s in n)l=!f&&y&&s in y,l&&s in m||(c=l?y[s]:n[s],m[s]=p&&"function"!=typeof y[s]?n[s]:g&&l?o(c,r):v&&y[s]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[a]=e[a],t}(c):h&&"function"==typeof c?o(Function.call,c):c,h&&((m[a]||(m[a]={}))[s]=c))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(25);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){e.exports=n(27)},function(e,t,n){var r=n(28),i=n(29);e.exports=n(30)?function(e,t,n){return r.setDesc(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n=Object;e.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports=!n(31)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";var r=n(28),i=n(29),o=n(34),a={};n(27)(a,n(35)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r.create(a,{next:i(1,n)}),o(e,t+" Iterator")}},function(e,t,n){var r=n(28).setDesc,i=n(32),o=n(35)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){var r=n(36)("wks"),i=n(37),o=n(22).Symbol;e.exports=function(e){return r[e]||(r[e]=o&&o[e]||(o||i)("Symbol."+e))}},function(e,t,n){var r=n(22),i="__core-js_shared__",o=r[i]||(r[i]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){"use strict";var r=n(39)(!0);n(19)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(40),i=n(18);e.exports=function(e){return function(t,n){var o,a,u=String(i(t)),s=r(n),l=u.length;return s<0||s>=l?e?"":void 0:(o=u.charCodeAt(s),o<55296||o>56319||s+1===l||(a=u.charCodeAt(s+1))<56320||a>57343?e?u.charAt(s):o:e?u.slice(s,s+2):(o-55296<<10)+(a-56320)+65536)}}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(42),i=n(44);e.exports=n(23).getIterator=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},function(e,t,n){var r=n(43);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(45),i=n(35)("iterator"),o=n(14);e.exports=n(23).getIteratorMethod=function(e){if(void 0!=e)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){var r=n(17),i=n(35)("toStringTag"),o="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=(t=Object(e))[i])?n:o?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},function(e,t,n){function r(e,t){return function(n,r,o){if(r=i(r,o,3),s(n)){var l=u(n,r,t);return l>-1?n[l]:void 0}return a(n,r,e)}}var i=n(47),o=n(56),a=n(57),u=n(58),s=n(49),l=r(o);e.exports=l},function(e,t,n){function r(e){return null==e?"":e+""}function i(e,t,n){var r=typeof e;return"function"==r?void 0===t?e:w(e,t,n):null==e?b:"object"==r?u(e):void 0===t?_(e):s(e,t)}function o(e,t,n){if(null!=e){void 0!==n&&n in g(e)&&(t=[n]);for(var r=0,i=t.length;null!=e&&ri?0:i+t),n=void 0===n||n>i?i:+n||0,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++rl))return!1;for(;++s-1&&e%1==0&&e<=m}function o(e){return a(e)&&h.call(e)==l}function a(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function u(e){return null!=e&&(o(e)?g.test(p.call(e)):n(e)&&c.test(e))}var s="[object Array]",l="[object Function]",c=/^\[object .+?Constructor\]$/,f=Object.prototype,p=Function.prototype.toString,d=f.hasOwnProperty,h=f.toString,g=RegExp("^"+p.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),v=r(Array,"isArray"),m=9007199254740991,y=v||function(e){return n(e)&&i(e.length)&&h.call(e)==s};e.exports=y},function(e,t){function n(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=o}function r(e){return!!e&&"object"==typeof e}function i(e){return r(e)&&n(e.length)&&!!j[M.call(e)]}var o=9007199254740991,a="[object Arguments]",u="[object Array]",s="[object Boolean]",l="[object Date]",c="[object Error]",f="[object Function]",p="[object Map]",d="[object Number]",h="[object Object]",g="[object RegExp]",v="[object Set]",m="[object String]",y="[object WeakMap]",b="[object ArrayBuffer]",_="[object DataView]",x="[object Float32Array]",w="[object Float64Array]",E="[object Int8Array]",k="[object Int16Array]",C="[object Int32Array]",N="[object Uint8Array]",T="[object Uint8ClampedArray]",A="[object Uint16Array]",S="[object Uint32Array]",j={};j[x]=j[w]=j[E]=j[k]=j[C]=j[N]=j[T]=j[A]=j[S]=!0,j[a]=j[u]=j[b]=j[s]=j[_]=j[l]=j[c]=j[f]=j[p]=j[d]=j[h]=j[g]=j[v]=j[m]=j[y]=!1;var O=Object.prototype,M=O.toString;e.exports=i},function(e,t,n){function r(e){return function(t){return null==t?void 0:t[e]}}function i(e){return null!=e&&a(y(e))}function o(e,t){return e="number"==typeof e||d.test(e)?+e:-1,t=null==t?m:t,e>-1&&e%1==0&&e-1&&e%1==0&&e<=m}function u(e){for(var t=l(e),n=t.length,r=n&&e.length,i=!!r&&a(r)&&(p(e)||f(e)),u=-1,s=[];++u0;++r-1&&e%1==0&&e<=l}function u(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function s(e){return!!e&&"object"==typeof e}var l=9007199254740991,c="[object Arguments]",f="[object Function]",p="[object GeneratorFunction]",d=Object.prototype,h=d.hasOwnProperty,g=d.toString,v=d.propertyIsEnumerable;e.exports=n},function(e,t){function n(e,t,n){if("function"!=typeof e)return r;if(void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 3:return function(n,r,i){return e.call(t,n,r,i)};case 4:return function(n,r,i,o){return e.call(t,n,r,i,o)};case 5:return function(n,r,i,o,a){return e.call(t,n,r,i,o,a)}}return function(){return e.apply(t,arguments)}}function r(e){return e}e.exports=n},function(e,t,n){function r(e){return i(e)?e:Object(e)}function i(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function o(e){e=r(e);for(var t=-1,n=a(e),i=n.length,o=Array(i);++t-1&&e%1==0&&e<=f}function s(e){return l(e)?e:Object(e)}function l(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}var c=n(51),f=9007199254740991,p=o(r),d=a(),h=i("length");e.exports=p},function(e,t){function n(e,t,n,r){var i;return n(e,function(e,n,o){if(t(e,n,o))return i=r?n:e,!1}),i}e.exports=n},function(e,t){function n(e,t,n){for(var r=e.length,i=n?r:-1;n?i--:++iSorry, we couldn't find anything for "+e.escapeExpression((o=null!=(o=n.value||(null!=t?t.value:t))?o:n.helperMissing,"function"==typeof o?o.call(null!=t?t:e.nullContext||{},{name:"value",hash:{},data:i}):o))+".

\n"},3:function(e,t,n,r,i,o,a){var u;return null!=(u=n.each.call(null!=t?t:e.nullContext||{},null!=t?t.levels:t,{name:"each",hash:{},fn:e.program(4,i,0,o,a),inverse:e.noop,data:i}))?u:""},4:function(e,t,n,r,i,o,a){var u,s,l=null!=t?t:e.nullContext||{};return'

'+e.escapeExpression((s=null!=(s=n.name||(null!=t?t.name:t))?s:n.helperMissing,"function"==typeof s?s.call(l,{name:"name",hash:{},data:i}):s))+"

\n"+(null!=(u=n.each.call(l,null!=t?t.results:t,{name:"each",hash:{},fn:e.program(5,i,0,o,a),inverse:e.noop,data:i}))?u:"")},5:function(e,t,n,r,i,o,a){var u,s,l=null!=t?t:e.nullContext||{},c=n.helperMissing,f="function";return'
\n

\n '+(null!=(s=null!=(s=n.match||(null!=t?t.match:t))?s:c,u=typeof s===f?s.call(l,{name:"match",hash:{},data:i}):s)?u:"")+'\n

\n
    \n'+(null!=(u=n.each.call(l,null!=t?t.functions:t,{name:"each",hash:{},fn:e.program(6,i,0,o,a),inverse:e.noop,data:i}))?u:"")+'
\n
    \n'+(null!=(u=n.each.call(l,null!=t?t.macros:t,{name:"each",hash:{},fn:e.program(6,i,0,o,a),inverse:e.noop,data:i}))?u:"")+'
\n
    \n'+(null!=(u=n.each.call(l,null!=t?t.callbacks:t,{name:"each",hash:{},fn:e.program(8,i,0,o,a),inverse:e.noop,data:i}))?u:"")+'
\n
    \n'+(null!=(u=n.each.call(l,null!=t?t.types:t,{name:"each",hash:{},fn:e.program(10,i,0,o,a),inverse:e.noop,data:i}))?u:"")+"
\n
\n"},6:function(e,t,n,r,i,o,a){var u,s,l=null!=t?t:e.nullContext||{},c=n.helperMissing,f="function";return'
  • '+(null!=(s=null!=(s=n.match||(null!=t?t.match:t))?s:c,u=typeof s===f?s.call(l,{name:"match",hash:{},data:i}):s)?u:"")+"
  • \n"},8:function(e,t,n,r,i,o,a){var u,s,l=null!=t?t:e.nullContext||{},c=n.helperMissing,f="function";return'
  • '+(null!=(s=null!=(s=n.match||(null!=t?t.match:t))?s:c,u=typeof s===f?s.call(l,{name:"match",hash:{},data:i}):s)?u:"")+" (callback)
  • \n"},10:function(e,t,n,r,i,o,a){var u,s,l=null!=t?t:e.nullContext||{},c=n.helperMissing,f="function";return'
  • '+(null!=(s=null!=(s=n.match||(null!=t?t.match:t))?s:c,u=typeof s===f?s.call(l,{name:"match",hash:{},data:i}):s)?u:"")+" (type)
  • \n"},compiler:[7,">= 4.0.0"],main:function(e,t,n,r,i,o,a){var u,s,l=null!=t?t:e.nullContext||{};return"

    Search Results for "+e.escapeExpression((s=null!=(s=n.value||(null!=t?t.value:t))?s:n.helperMissing,"function"==typeof s?s.call(l,{name:"value",hash:{},data:i}):s))+"

    \n\n"+(null!=(u=n["if"].call(l,null!=t?t.empty:t,{name:"if",hash:{},fn:e.program(1,i,0,o,a),inverse:e.program(3,i,0,o,a),data:i}))?u:"")},useData:!0,useDepths:!0})},function(e,t,n){e.exports=n(63)["default"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t}function o(){var e=new u.HandlebarsEnvironment;return d.extend(e,u),e.SafeString=l["default"],e.Exception=f["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=g,e.template=function(t){return g.template(t,e)},e}t.__esModule=!0;var a=n(64),u=i(a),s=n(78),l=r(s),c=n(66),f=r(c),p=n(65),d=i(p),h=n(79),g=i(h),v=n(80),m=r(v),y=o();y.create=o,m["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},s.registerDefaultHelpers(this),l.registerDefaultDecorators(this)}t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(65),a=n(66),u=r(a),s=n(67),l=n(75),c=n(77),f=r(c),p="4.0.10";t.VERSION=p;var d=7;t.COMPILER_REVISION=d;var h={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=h;var g="[object Object]";i.prototype={constructor:i,logger:f["default"],log:f["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===g){if(t)throw new u["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===g)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new u["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===g){if(t)throw new u["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var v=f["default"].log;t.log=v,t.createFrame=o.createFrame,t.logger=f["default"]},function(e,t){"use strict";function n(e){return c[e]}function r(e){for(var t=1;t":">",'"':""","'":"'","`":"`","=":"="},f=/[&<>"'`=]/g,p=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var h=function(e){return"function"==typeof e};h(/x/)&&(t.isFunction=h=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=h;var g=Array.isArray||function(e){return!(!e||"object"!=typeof e)&&"[object Array]"===d.call(e)};t.isArray=g},function(e,t){"use strict";function n(e,t){var i=t&&t.loc,o=void 0,a=void 0;i&&(o=i.start.line,a=i.start.column,e+=" - "+o+":"+a);for(var u=Error.prototype.constructor.call(this,e),s=0;s0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):i(this);if(n.data&&n.ids){var a=r.createFrame(n.data);a.contextPath=r.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(65),o=n(66),a=r(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){l&&(l.key=t,l.index=n,l.first=0===n,l.last=!!o,c&&(l.contextPath=c+t)),s+=r(e[t],{data:l,blockParams:i.blockParams([e[t],t],[c+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var r=t.fn,o=t.inverse,u=0,s="",l=void 0,c=void 0;if(t.data&&t.ids&&(c=i.appendContextPath(t.data.contextPath,t.ids[0])+"."),i.isFunction(e)&&(e=e.call(this)),t.data&&(l=i.createFrame(t.data)),e&&"object"==typeof e)if(i.isArray(e))for(var f=e.length;u=0?t:parseInt(e,10)}return e},log:function(e){if(e=i.lookupLevel(e),"undefined"!=typeof console&&i.lookupLevel(i.level)<=e){var t=i.methodMap[e];console[t]||(t="log");for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o\n\n\n '+p(f(null!=(l=u[0][0])?l.title:l,t))+'\n\n
      \n
    • \n Top\n
    • \n\n'+(null!=(l=r(n(84)).call(c,null!=(l=u[0][0])?l.headers:l,{name:"isArray",hash:{},fn:e.program(6,a,0,u,s),inverse:e.program(9,a,0,u,s),data:a,blockParams:u}))?l:"")+"
    \n \n"},2:function(e,t,n,r,i,o){var a;return'
  • '+e.escapeExpression(e.lambda(null!=(a=o[1][0])?a.group:a,t))+"
  • \n"},4:function(e,t,n,r,i){return"clicked open"},6:function(e,t,n,r,i,o){var a;return null!=(a=n.each.call(null!=t?t:e.nullContext||{},null!=(a=o[1][0])?a.headers:a,{name:"each",hash:{},fn:e.program(7,i,0,o),inverse:e.noop,data:i,blockParams:o}))?a:""},7:function(e,t,n,r,i,o){var a,u=e.lambda,s=e.escapeExpression;return'
  • \n '+s(u(null!=t?t.id:t,t))+"\n
  • \n"},9:function(e,t,i,o,a,u){var s,l=null!=t?t:e.nullContext||{};return(null!=(s=r(n(85)).call(l,u[1][0],{name:"showSummary",hash:{},fn:e.program(10,a,0,u),inverse:e.noop,data:a,blockParams:u}))?s:"")+(null!=(s=i["if"].call(l,null!=(s=u[1][0])?s.types:s,{name:"if",hash:{},fn:e.program(12,a,0,u),inverse:e.noop,data:a,blockParams:u}))?s:"")+(null!=(s=i["if"].call(l,null!=(s=u[1][0])?s.functions:s,{name:"if",hash:{},fn:e.program(15,a,0,u),inverse:e.noop,data:a,blockParams:u}))?s:"")+(null!=(s=i["if"].call(l,null!=(s=u[1][0])?s.macros:s,{name:"if",hash:{},fn:e.program(17,a,0,u),inverse:e.noop,data:a,blockParams:u}))?s:"")+(null!=(s=i["if"].call(l,null!=(s=u[1][0])?s.callbacks:s,{name:"if",hash:{},fn:e.program(20,a,0,u),inverse:e.noop,data:a,blockParams:u}))?s:"")},10:function(e,t,n,r,i,o){var a;return'
  • \n Summary\n
  • \n'},12:function(e,t,n,r,i,o){var a;return'
  • \n Types\n
      \n'+(null!=(a=n.each.call(null!=t?t:e.nullContext||{},null!=(a=o[2][0])?a.types:a,{name:"each",hash:{},fn:e.program(13,i,0,o),inverse:e.noop,data:i,blockParams:o}))?a:"")+"
    \n
  • \n"},13:function(e,t,n,r,i,o){var a,u=e.lambda,s=e.escapeExpression;return'
  • \n '+s(u(null!=t?t.id:t,t))+"\n
  • \n"},15:function(e,t,n,r,i,o){var a;return'
  • \n Functions\n
      \n'+(null!=(a=n.each.call(null!=t?t:e.nullContext||{},null!=(a=o[2][0])?a.functions:a,{name:"each",hash:{},fn:e.program(13,i,0,o),inverse:e.noop,data:i,blockParams:o}))?a:"")+"
    \n
  • \n"},17:function(e,t,n,r,i,o){var a;return'
  • \n Macros\n
      \n'+(null!=(a=n.each.call(null!=t?t:e.nullContext||{},null!=(a=o[2][0])?a.macros:a,{name:"each",hash:{},fn:e.program(18,i,0,o),inverse:e.noop,data:i,blockParams:o}))?a:"")+"
    \n
  • \n"},18:function(e,t,n,r,i,o){var a,u=e.lambda,s=e.escapeExpression;return'
  • \n '+s(u(null!=t?t.id:t,t))+"\n
  • \n"},20:function(e,t,n,r,i,o){var a;return'
  • \n Callbacks\n
      \n'+(null!=(a=n.each.call(null!=t?t:e.nullContext||{},null!=(a=o[2][0])?a.callbacks:a,{name:"each",hash:{},fn:e.program(18,i,0,o),inverse:e.noop,data:i,blockParams:o}))?a:"")+"
    \n
  • \n"},compiler:[7,">= 4.0.0"],main:function(e,t,n,r,i,o,a){var u;return'
      \n'+(null!=(u=n.each.call(null!=t?t:e.nullContext||{},null!=t?t.nodes:t,{name:"each",hash:{},fn:e.program(1,i,2,o,a),inverse:e.noop,data:i,blockParams:o}))?u:"")+"
    \n"},useData:!0,useDepths:!0,useBlockParams:!0})},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=function(e,t,n){var r=t||"";if(e.group!==r)return e.group=r,n.fn(this)},e.exports=t["default"]},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=function(e,t){var n=window.location.pathname.split("/");return e+=".html",e===n[n.length-1]?t.fn(this):t.inverse(this)},e.exports=t["default"]},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=function(e,t){return Array.isArray(e)?t.fn(this):t.inverse(this)},e.exports=t["default"]},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=function(e,t){if(e.types||e.functions||e.macros||e.callbacks)return t.fn(this)},e.exports=t["default"]},function(e,t,n){"use strict";function r(){p.addClass(y).removeClass(g).removeClass(v),_=setTimeout(function(){return p.addClass(m).removeClass(y)},h)}function i(){p.addClass(v).removeClass(m).removeClass(y),_=setTimeout(function(){return p.addClass(g).removeClass(v)},h)}function o(){var e=p.attr("class")||"";clearTimeout(_),e.includes(m)||e.includes(y)?i():r()}function a(){p.removeClass(b),p.addClass(window.innerWidth>d?g:m)}function u(){a();var e=window.innerWidth;(0,c["default"])(window).resize((0,f.throttle)(function(){e!==window.innerWidth&&(e=window.innerWidth,a())},100)),(0,c["default"])(".sidebar-toggle").click(function(){o()})}var s=n(1)["default"];Object.defineProperty(t,"__esModule",{value:!0}),t.initialize=u;var l=n(2),c=s(l),f=n(87),p=(0,c["default"])("body"),d=768,h=300,g="sidebar-opened",v="sidebar-opening",m="sidebar-closed",y="sidebar-closing",b=[g,v,m,y].join(" "),_=void 0;t.breakpoint=d,t.closeSidebar=r},function(e,t,n){var r;(function(e,i){(function(){function o(e,t){if(e!==t){var n=null===e,r=e===T,i=e===e,o=null===t,a=t===T,u=t===t;if(e>t&&!o||!i||n&&!a&&u||r&&u)return 1;if(e-1;);return n}function f(e,t){for(var n=e.length;n--&&t.indexOf(e.charAt(n))>-1;);return n}function p(e,t){return o(e.criteria,t.criteria)||e.index-t.index}function d(e,t,n){for(var r=-1,i=e.criteria,a=t.criteria,u=i.length,s=n.length;++r=s)return l;var c=n[r];return l*("asc"===c||c===!0?1:-1)}}return e.index-t.index}function h(e){return Ke[e]}function g(e){return Ge[e]}function v(e,t,n){return t?e=Ze[e]:n&&(e=Qe[e]),"\\"+e}function m(e){return"\\"+Qe[e]}function y(e,t,n){for(var r=e.length,i=t+(n?0:-1);n?i--:++i=9&&e<=13||32==e||160==e||5760==e||6158==e||e>=8192&&(e<=8202||8232==e||8233==e||8239==e||8287==e||12288==e||65279==e)}function x(e,t){for(var n=-1,r=e.length,i=-1,o=[];++n=z?gn(t):null,l=t.length;s&&(o=Qe,a=!1,t=s);e:for(;++ii?0:i+n),r=r===T||r>i?i:+r||0,r<0&&(r+=i),i=n>r?0:r>>>0,n>>>=0;ni?0:i+t),n=n===T||n>i?i:+n||0,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=$o(i);++r=z,s=a?gn():null,l=[];s?(r=Qe,o=!1):(a=!1,s=t?[]:l);e:for(;++n>>1,a=e[o];(n?a<=t:a2?n[i-2]:T,a=i>2?n[2]:T,u=i>1?n[i-1]:T;for("function"==typeof o?(o=an(o,u,5),i-=2):(o="function"==typeof u?u:T,i-=o?1:0),a&&Jn(n[0],n[1],a)&&(o=i<3?T:o,i=1);++r-1?n[o]:T}return At(n,r,e)}}function wn(e){return function(t,n,r){return t&&t.length?(n=$n(n,r,3),a(t,n,e)):-1}}function En(e){return function(t,n,r){return n=$n(n,r,3),At(t,n,e,!0)}}function kn(e){return function(){for(var t,n=arguments.length,i=e?n:-1,o=0,a=$o(n);e?i--:++i=z)return t.plant(r).value();for(var i=0,o=n?a[i].apply(this,e):r;++i=t||!_a(t))return"";var i=t-r;return n=null==n?" ":n+"",mo(n,va(i/n.length)).slice(0,i)}function Rn(e,t,n,r){function i(){for(var t=-1,u=arguments.length,s=-1,l=r.length,c=$o(l+u);++ss))return!1;for(;++u-1&&e%1==0&&e-1&&e%1==0&&e<=Ma}function rr(e){return e===e&&!Ri(e)}function ir(e,t){var n=e[1],r=t[1],i=n|r,o=i-1;)da.call(t,o,1);return t}function Sr(e,t,n){var r=[];if(!e||!e.length)return r;var i=-1,o=[],a=e.length;for(t=$n(t,n,3);++i-1:!!i&&Fn(e,t,n)>-1}function ei(e,t,n){var r=Su(e)?st:qt;return t=$n(t,n,3),r(e,t)}function ti(e,t){return ei(e,Ro(t))}function ni(e,t,n){var r=Su(e)?ut:Tt;return t=$n(t,n,3),r(e,function(e,n,r){return!t(e,n,r)})}function ri(e,t,n){if(n?Jn(e,t,n):null==t){e=cr(e);var r=e.length;return r>0?e[Kt(0,r-1)]:T}var i=-1,o=Gi(e),r=o.length,a=r-1;for(t=Ea(t<0?0:+t||0,r);++i0&&(n=t.apply(this,arguments)),e<=1&&(t=T),n}}function di(e,t,n){function r(){d&&ua(d),l&&ua(l),g=0,l=d=h=T}function i(t,n){n&&ua(n),l=d=h=T,t&&(g=gu(),c=e.apply(p,s),d||l||(s=p=T))}function o(){var e=t-(gu()-f);e<=0||e>t?i(h,l):d=pa(o,e)}function a(){i(m,d)}function u(){if(s=arguments,f=gu(),p=this,h=m&&(d||!y),v===!1)var n=y&&!d;else{l||y||(g=f);var r=v-(f-g),i=r<=0||r>v;i?(l&&(l=ua(l)),g=f,c=e.apply(p,s)):l||(l=pa(a,r))}return i&&d?d=ua(d):d||t===v||(d=pa(o,t)),n&&(i=!0,c=e.apply(p,s)),!i||d||l||(s=p=T),c}var s,l,c,f,p,d,h,g=0,v=!1,m=!0;if("function"!=typeof e)throw new Zo(U);if(t=t<0?0:+t||0,n===!0){var y=!0;m=!1}else Ri(n)&&(y=!!n.leading,v="maxWait"in n&&wa(+n.maxWait||0,t),m="trailing"in n?!!n.trailing:m);return u.cancel=r,u}function hi(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new Zo(U);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a),a};return n.cache=new hi.Cache,n}function gi(e){if("function"!=typeof e)throw new Zo(U);return function(){return!e.apply(this,arguments)}}function vi(e){return pi(2,e)}function mi(e,t){if("function"!=typeof e)throw new Zo(U);return t=wa(t===T?e.length-1:+t||0,0),function(){for(var n=arguments,r=-1,i=wa(n.length-t,0),o=$o(i);++rt}function ki(e,t){return e>=t}function Ci(e){return b(e)&&Qn(e)&&ta.call(e,"callee")&&!ca.call(e,"callee")}function Ni(e){return e===!0||e===!1||b(e)&&ra.call(e)==X}function Ti(e){return b(e)&&ra.call(e)==Z}function Ai(e){return!!e&&1===e.nodeType&&b(e)&&!Bi(e)}function Si(e){return null==e||(Qn(e)&&(Su(e)||zi(e)||Ci(e)||b(e)&&Di(e.splice))?!e.length:!Bu(e).length)}function ji(e,t,n,r){n="function"==typeof n?an(n,r,3):T;var i=n?n(e,t):T;return i===T?Pt(e,t,n):!!i}function Oi(e){return b(e)&&"string"==typeof e.message&&ra.call(e)==Q}function Mi(e){return"number"==typeof e&&_a(e)}function Di(e){return Ri(e)&&ra.call(e)==Y}function Ri(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Pi(e,t,n,r){return n="function"==typeof n?an(n,r,3):T,It(e,Wn(t),n)}function Li(e){return Hi(e)&&e!=+e}function Ii(e){return null!=e&&(Di(e)?oa.test(ea.call(e)):b(e)&&Le.test(e))}function qi(e){return null===e}function Hi(e){return"number"==typeof e||b(e)&&ra.call(e)==ee}function Bi(e){var t;if(!b(e)||ra.call(e)!=te||Ci(e)||!ta.call(e,"constructor")&&(t=e.constructor,"function"==typeof t&&!(t instanceof t)))return!1;var n;return jt(e,function(e,t){n=t}),n===T||ta.call(e,n)}function $i(e){return Ri(e)&&ra.call(e)==ne}function zi(e){return"string"==typeof e||b(e)&&ra.call(e)==ie}function Fi(e){return b(e)&&nr(e.length)&&!!We[ra.call(e)]}function Wi(e){return e===T}function Ui(e,t){return e0;++r=Ea(t,n)&&e=0&&e.indexOf(t,n)==n}function po(e){return e=l(e),e&&we.test(e)?e.replace(_e,g):e}function ho(e){return e=l(e),e&&je.test(e)?e.replace(Se,v):e||"(?:)"}function go(e,t,n){e=l(e),t=+t;var r=e.length;if(r>=t||!_a(t))return e;var i=(t-r)/2,o=ya(i),a=va(i);return n=Dn("",a,n),n.slice(0,o)+e+n}function vo(e,t,n){return(n?Jn(e,t,n):null==t)?t=0:t&&(t=+t),e=_o(e),Ca(e,t||(Pe.test(e)?16:10))}function mo(e,t){var n="";if(e=l(e),t=+t,t<1||!e||!_a(t))return n;do t%2&&(n+=e),t=ya(t/2),e+=e;while(t);return n}function yo(e,t,n){return e=l(e),n=null==n?0:Ea(n<0?0:+n||0,e.length),e.lastIndexOf(t,n)==n}function bo(e,n,r){var i=t.templateSettings;r&&Jn(e,n,r)&&(n=r=T),e=l(e),n=vt(mt({},r||n),i,gt);var o,a,u=vt(mt({},n.imports),i.imports,gt),s=Bu(u),c=en(u,s),f=0,p=n.interpolate||He,d="__p += '",h=Vo((n.escape||He).source+"|"+p.source+"|"+(p===Ce?De:He).source+"|"+(n.evaluate||He).source+"|$","g"),g="//# sourceURL="+("sourceURL"in n?n.sourceURL:"lodash.templateSources["+ ++Fe+"]")+"\n";e.replace(h,function(t,n,r,i,u,s){return r||(r=i),d+=e.slice(f,s).replace(Be,m),n&&(o=!0,d+="' +\n__e("+n+") +\n'"),u&&(a=!0,d+="';\n"+u+";\n__p += '"),r&&(d+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=s+t.length,t}),d+="';\n";var v=n.variable;v||(d="with (obj) {\n"+d+"\n}\n"),d=(a?d.replace(ve,""):d).replace(me,"$1").replace(ye,"$1;"),d="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var y=Qu(function(){return Wo(s,g+"return "+d).apply(T,c)});if(y.source=d,Oi(y))throw y;return y}function _o(e,t,n){var r=e;return(e=l(e))?(n?Jn(r,t,n):null==t)?e.slice(E(e),k(e)+1):(t+="",e.slice(c(e,t),f(e,t)+1)):e}function xo(e,t,n){var r=e;return e=l(e),e?(n?Jn(r,t,n):null==t)?e.slice(E(e)):e.slice(c(e,t+"")):e}function wo(e,t,n){var r=e;return e=l(e),e?(n?Jn(r,t,n):null==t)?e.slice(0,k(e)+1):e.slice(0,f(e,t+"")+1):e}function Eo(e,t,n){n&&Jn(e,t,n)&&(t=T);var r=q,i=H;if(null!=t)if(Ri(t)){var o="separator"in t?t.separator:o;r="length"in t?+t.length||0:r,i="omission"in t?l(t.omission):i}else r=+t||0;if(e=l(e),r>=e.length)return e;var a=r-i.length;if(a<1)return i;var u=e.slice(0,a);if(null==o)return u+i;if($i(o)){if(e.slice(a).search(o)){var s,c,f=e.slice(0,a);for(o.global||(o=Vo(o.source,(Re.exec(o)||"")+"g")),o.lastIndex=0;s=o.exec(f);)c=s.index;u=u.slice(0,null==c?a:c)}}else if(e.indexOf(o,a)!=a){var p=u.lastIndexOf(o);p>-1&&(u=u.slice(0,p))}return u+i}function ko(e){return e=l(e),e&&xe.test(e)?e.replace(be,C):e}function Co(e,t,n){return n&&Jn(e,t,n)&&(t=T),e=l(e),e.match(t||$e)||[]}function No(e,t,n){return n&&Jn(e,t,n)&&(t=T),b(e)?So(e):_t(e,t)}function To(e){return function(){return e}}function Ao(e){return e}function So(e){return Ht(xt(e,!0))}function jo(e,t){return Bt(e,xt(t,!0))}function Oo(e,t,n){if(null==n){var r=Ri(t),i=r?Bu(t):T,o=i&&i.length?Dt(t,i):T;(o?o.length:r)||(o=!1,n=t,t=e,e=this)}o||(o=Dt(t,Bu(t)));var a=!0,u=-1,s=Di(e),l=o.length;n===!1?a=!1:Ri(n)&&"chain"in n&&(a=n.chain);for(;++u>>1,Ma=9007199254740991,Da=ga&&new ga,Ra={};t.support={};t.templateSettings={escape:Ee,evaluate:ke,interpolate:Ce,variable:"",imports:{_:t}};var Pa=function(){function e(){}return function(t){if(Ri(t)){e.prototype=t;var n=new e;e.prototype=T}return n||{}}}(),La=pn(Ot),Ia=pn(Mt,!0),qa=dn(),Ha=dn(!0),Ba=Da?function(e,t){return Da.set(e,t),e}:Ao,$a=Da?function(e){return Da.get(e)}:Do,za=Ft("length"),Fa=function(){var e=0,t=0;return function(n,r){var i=gu(),o=$-(i-t);if(t=i,o>0){if(++e>=B)return n}else e=0;return Ba(n,r)}}(),Wa=mi(function(e,t){return b(e)&&Qn(e)?Et(e,St(t,!1,!0)):[]}),Ua=wn(),Ka=wn(!0),Ga=mi(function(e){for(var t=e.length,n=t,r=$o(f),i=Fn(),o=i==u,a=[];n--;){var s=e[n]=Qn(s=e[n])?s:[];r[n]=o&&s.length>=120?gn(n&&s):null}var l=e[0],c=-1,f=l?l.length:0,p=r[0];e:for(;++c2?e[t-2]:T,r=t>1?e[t-1]:T;return t>2&&"function"==typeof n?t-=2:(n=t>1&&"function"==typeof r?(--t,r):T,r=T),e.length=t,qr(e,n,r)}),tu=mi(function(e){return e=St(e),this.thru(function(t){return Je(Su(t)?t:[fr(t)],e)})}),nu=mi(function(e,t){return yt(e,St(t))}),ru=cn(function(e,t,n){ta.call(e,n)?++e[n]:e[n]=1}),iu=xn(La),ou=xn(Ia,!0),au=Cn(tt,La),uu=Cn(nt,Ia),su=cn(function(e,t,n){ta.call(e,n)?e[n].push(t):e[n]=[t]}),lu=cn(function(e,t,n){e[n]=t}),cu=mi(function(e,t,n){var r=-1,i="function"==typeof t,o=er(t),a=Qn(e)?$o(e.length):[];return La(e,function(e){var u=i?t:o&&null!=e?e[t]:T;a[++r]=u?u.apply(e,n):Zn(e,t,n)}),a}),fu=cn(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),pu=On(ct,La),du=On(ft,Ia),hu=mi(function(e,t){if(null==e)return[];var n=t[2];return n&&Jn(t[0],t[1],n)&&(t.length=1),Qt(e,St(t),[])}),gu=ka||function(){return(new zo).getTime()},vu=mi(function(e,t,n){var r=S;if(n.length){var i=x(n,vu.placeholder);r|=R}return In(e,r,t,n,i)}),mu=mi(function(e,t){t=t.length?St(t):Zi(e);for(var n=-1,r=t.length;++n0||t<0)?new i(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==T&&(t=+t||0,n=t<0?n.dropRight(-t):n.take(t-e)),n)},i.prototype.takeRightWhile=function(e,t){return this.reverse().takeWhile(e,t).reverse()},i.prototype.toArray=function(){return this.take(Aa)},Ot(i.prototype,function(e,n){var o=/^(?:filter|map|reject)|While$/.test(n),a=/^(?:first|last)$/.test(n),u=t[a?"take"+("last"==n?"Right":""):n];u&&(t.prototype[n]=function(){var t=a?[1]:arguments,n=this.__chain__,s=this.__wrapped__,l=!!this.__actions__.length,c=s instanceof i,f=t[0],p=c||Su(s);p&&o&&"function"==typeof f&&1!=f.length&&(c=p=!1);var d=function(e){return a&&n?u(e,1)[0]:u.apply(T,lt([e],t))},h={func:Fr,args:[d],thisArg:T},g=c&&!l;if(a&&!n)return g?(s=s.clone(),s.__actions__.push(h),e.call(s)):u.call(T,this.value())[0];if(!a&&p){s=g?s:new i(this);var v=e.apply(s,t);return v.__actions__.push(h),new r(v,n)}return this.thru(d)})}),tt(["join","pop","push","replace","shift","sort","splice","split","unshift"],function(e){var n=(/^(?:replace|split)$/.test(e)?Jo:Qo)[e],r=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:join|pop|replace|shift)$/.test(e);t.prototype[e]=function(){var e=arguments;return i&&!this.__chain__?n.apply(this.value(),e):this[r](function(t){return n.apply(t,e)})}}),Ot(i.prototype,function(e,n){var r=t[n];if(r){var i=r.name,o=Ra[i]||(Ra[i]=[]);o.push({name:n,func:r})}}),Ra[Mn(T,j).name]=[{name:"wrapper",func:T}],i.prototype.clone=_,i.prototype.reverse=J,i.prototype.value=re,t.prototype.chain=Wr,t.prototype.commit=Ur,t.prototype.concat=tu,t.prototype.plant=Kr,t.prototype.reverse=Gr,t.prototype.toString=Vr,t.prototype.run=t.prototype.toJSON=t.prototype.valueOf=t.prototype.value=Xr,t.prototype.collect=t.prototype.map,t.prototype.head=t.prototype.first,t.prototype.select=t.prototype.filter,t.prototype.tail=t.prototype.rest,t}var T,A="3.10.1",S=1,j=2,O=4,M=8,D=16,R=32,P=64,L=128,I=256,q=30,H="...",B=150,$=16,z=200,F=1,W=2,U="Expected a function",K="__lodash_placeholder__",G="[object Arguments]",V="[object Array]",X="[object Boolean]",Z="[object Date]",Q="[object Error]",Y="[object Function]",J="[object Map]",ee="[object Number]",te="[object Object]",ne="[object RegExp]",re="[object Set]",ie="[object String]",oe="[object WeakMap]",ae="[object ArrayBuffer]",ue="[object Float32Array]",se="[object Float64Array]",le="[object Int8Array]",ce="[object Int16Array]",fe="[object Int32Array]",pe="[object Uint8Array]",de="[object Uint8ClampedArray]",he="[object Uint16Array]",ge="[object Uint32Array]",ve=/\b__p \+= '';/g,me=/\b(__p \+=) '' \+/g,ye=/(__e\(.*?\)|\b__t\)) \+\n'';/g,be=/&(?:amp|lt|gt|quot|#39|#96);/g,_e=/[&<>"'`]/g,xe=RegExp(be.source),we=RegExp(_e.source),Ee=/<%-([\s\S]+?)%>/g,ke=/<%([\s\S]+?)%>/g,Ce=/<%=([\s\S]+?)%>/g,Ne=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,Te=/^\w*$/,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,Se=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,je=RegExp(Se.source),Oe=/[\u0300-\u036f\ufe20-\ufe23]/g,Me=/\\(\\)?/g,De=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Re=/\w*$/,Pe=/^0[xX]/,Le=/^\[object .+?Constructor\]$/,Ie=/^\d+$/,qe=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,He=/($^)/,Be=/['\n\r\u2028\u2029\\]/g,$e=function(){var e="[A-Z\\xc0-\\xd6\\xd8-\\xde]",t="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(e+"+(?="+e+t+")|"+e+"?"+t+"|"+e+"+|[0-9]+","g")}(),ze=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","isFinite","parseFloat","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap"],Fe=-1,We={};We[ue]=We[se]=We[le]=We[ce]=We[fe]=We[pe]=We[de]=We[he]=We[ge]=!0,We[G]=We[V]=We[ae]=We[X]=We[Z]=We[Q]=We[Y]=We[J]=We[ee]=We[te]=We[ne]=We[re]=We[ie]=We[oe]=!1;var Ue={};Ue[G]=Ue[V]=Ue[ae]=Ue[X]=Ue[Z]=Ue[ue]=Ue[se]=Ue[le]=Ue[ce]=Ue[fe]=Ue[ee]=Ue[te]=Ue[ne]=Ue[ie]=Ue[pe]=Ue[de]=Ue[he]=Ue[ge]=!0,Ue[Q]=Ue[Y]=Ue[J]=Ue[re]=Ue[oe]=!1;var Ke={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},Ge={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Ve={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},Xe={"function":!0,object:!0},Ze={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"},Qe={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ye=Xe[typeof t]&&t&&!t.nodeType&&t,Je=Xe[typeof e]&&e&&!e.nodeType&&e,et=Ye&&Je&&"object"==typeof i&&i&&i.Object&&i,tt=Xe[typeof self]&&self&&self.Object&&self,nt=Xe[typeof window]&&window&&window.Object&&window,rt=(Je&&Je.exports===Ye&&Ye,et||nt!==(this&&this.window)&&nt||tt||this),it=N();rt._=it,r=function(){return it}.call(t,n,t,e),!(r!==T&&(e.exports=r))}).call(this)}).call(t,n(88)(e),function(){return this}())},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,n){"use strict";function r(){f.addClass(p);try{localStorage.setItem(p,!0)}catch(e){}}function i(){f.removeClass(p);try{localStorage.removeItem(p)}catch(e){}}function o(){try{localStorage.getItem(p)&&r()}catch(e){}}function a(){f.hasClass(p)?i():r()}function u(){o(),d.click(function(){a()})}var s=n(1)["default"];Object.defineProperty(t,"__esModule",{value:!0}),t.initialize=u;var l=n(2),c=s(l),f=(0,c["default"])("body"),p="night-mode",d=(0,c["default"])(".night-mode-toggle")}]); +//# sourceMappingURL=app-9bd040e5e5.js.map diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js new file mode 100644 index 0000000..72acc97 --- /dev/null +++ b/doc/dist/sidebar_items-a8f45a4a6d.js @@ -0,0 +1 @@ +sidebarNodes={"extras":[{"id":"api-reference","title":"API Reference","group":"","headers":[{"id":"Modules","anchor":"modules"},{"id":"Exceptions","anchor":"exceptions"}]}],"exceptions":[{"id":"Quaff.Constants.CompileError","title":"Quaff.Constants.CompileError","group":"","functions":[{"id":"exception/1","anchor":"exception/1"},{"id":"message/1","anchor":"message/1"}]}],"modules":[{"id":"Quaff.Constants","title":"Quaff.Constants","group":"","functions":[{"id":"get_constants/1","anchor":"get_constants/1"},{"id":"get_constants/2","anchor":"get_constants/2"},{"id":"include/1","anchor":"include/1"},{"id":"include/2","anchor":"include/2"},{"id":"include_lib/1","anchor":"include_lib/1"},{"id":"include_lib/2","anchor":"include_lib/2"}]},{"id":"Quaff.Debug","title":"Quaff.Debug","group":"","functions":[{"id":"load/1","anchor":"load/1"},{"id":"load/2","anchor":"load/2"},{"id":"nload/1","anchor":"nload/1"},{"id":"nload/2","anchor":"nload/2"},{"id":"start/0","anchor":"start/0"}]}],"tasks":[]} \ No newline at end of file diff --git a/doc/fonts/icomoon.eot b/doc/fonts/icomoon.eot new file mode 100644 index 0000000000000000000000000000000000000000..2786a1e5b0e9ee7a593e544f2bc840cf821af61a GIT binary patch literal 3096 zcma)8O>7&-6@Ig`JIh@zx%~f=#Qz`HvSgX0$ka`2ra&DylHtIK5~K)FF|s1LF-2LH zfCwlGqp%&IhsHf5Xwpjqni=_g{O(1V51EhdrqCmzJ5ty{VeJ^N)9f%zb zyZ+nz*YCq<9P;&*?$veB5aeHg`c^J)zi{KHe?AZSZ6f`-)#dKRzDy;%fU^X}jVEJ8bxAkH2!~7@go_4P=_|IVAcsRgmA7_J) zbA#L;v!7-Ep7hyT@Kg90jqP;w8b%DB>=8XSQ~R5a`9Ytr#}tYWcG*AK9r`xiz%c8{ zg#5*0y0Dqh@hcT;Rs32FN7bmeTc=s8-I{GWaJ5vFmXf%5Lw8+x{aiKN#AB{!*FmCD zZ@2+G_tn{^=eXT!uou(GR3vJcrWxrdJd#KxCo-{6$Owdm?hnUPp-{-`Sh^6pWq}We z?7&n!$#t%DBB@mRwg1~XnoMSfv5cq}i`_BI$WQ|;orbrqakU1q&)q=p@au9kxheDp3owTfp?n?OiHhW6NFlRiynDn?{FSlS3EA zo=5+uyyzr{4I<}kK%>&NQ9-W%6e-B@HdUxiRHapZJ7rlwP4bCa5%Ur$82=$)yb4>i_G z>3|)t;Qld*20IF|9eg2@$h$$`p=a=M*`%BFGpuqEdlH8nJF%)4G0nI>FzbTXTaU0N zZVNHNVu`3rU?xGHb%xh!9%ohT>sXFy9z9T0n$=0y_qSNRRe>Lbku2hrG<3pLz#VQV zTu(*4vd`i&b99Vm=jLW*E!FEKSxvv+9I0<|A6I=`*C%vbHhPv#3rQz{IdFFGuHT$A zEX$ZQ{p>X~p1AkJtgdsPivI*wJuFyW)j2Q`hA*8N8e5o~ZO+d(XXke6rE+bWFNUwu z486+(A)>$4Aazh^)EIr-i9+Fwro=?`-FF2zYm;UwVQv;Uk!ALso*iaaf( zq#Q4j9Tv;=Fs;D!c?7OOs-hrCs&}`w81sPVxvp#ovcUI>WBEQ&4In{i zTwVdc;_)2(BOb4U|AEJAcpu@F=JXZ7FL=C3O?vCnQoq;luRZvpeR_H0>ZSf#{>1dm z;m_DZdmRd1SYFw>+}%LXk@xYTmS_5FoB5UHwdIZO=JLh-^V|8eOZ{`mZJN$FPv}jI kVg+v2P&e?*-UPh}?0MQod)9f9pYxvN)0l7hQv90oU%@nu1ONa4 literal 0 HcmV?d00001 diff --git a/doc/fonts/icomoon.svg b/doc/fonts/icomoon.svg new file mode 100644 index 0000000..0998daf --- /dev/null +++ b/doc/fonts/icomoon.svg @@ -0,0 +1,18 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/fonts/icomoon.ttf b/doc/fonts/icomoon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..538fce7b3e34530ac4af0c2d8b5c3447b3020a87 GIT binary patch literal 2932 zcma)8TWnm#8UE+YIdk@$J?pdgo9(?{(l~aU-SsX_Az3OlQR+lNDFziG)r+&(DOs=M z*b4Sj>dJ(E3#7j`U{pOsr@wQmd z*`4{X^Z)~Br`hA+ob=!~l%lIrZ=^AV{ok!kbUV*>20N5v=n%@i7`B{)NN=)FK;}a3Xibnx zE8xem8=M4qxgBk%`B~z#+~3)4?RI|f@4>*au*avnd^Y$ZJIH>R`B&!4gwNK-{s9}K zzMYBQz=*+;Jt9|#T0eHw_vU;*Podaghy9b?q@U6?EVGt~%U>+23!4cYzha?U!LM0& zMD<#$d7L#{&AEodt`rMWQv#P?*Ig6dJXZ`ev8Zd=H4v}Y>aGLNd}XfT8E!S}?1@w& z8IBmHX@=Vh569z)$#gUrGy)-^`$Ms0Fc`GjmM(;DS-?XHpS_ zBogVNFC*glVmA#lJd}VJ^cevo7>opzu-}5q_RuE?U0BnCsqkwWFIuJ@j9N+vS|R`~ zI~1~mRzRQyriIGda!E!coJgip$wZ{h)S%Btw08yvX`U!Dat6A46ve_}c^IR6)xsIn zW7vH88{J$fxO+I;)lxB?wr#%|+k&EDh^Ye8>69G|+NpG@Sj|j~N23;6G&(+! z$&OD9sfqC{yJ_3$RH;%PlreMhI>W>@6Wg|X|wAEXzZ;E*74&jvI~T^S|h z`A?IA7;jLST14dvPP9;+VXb2fV{we>B9Xy{C62OstqE?cQK{-0vp_NZg=BuhuA5FIlCmzw&W7E<6OmX3Wk^WR=S}K)W zIiv=JCiLFvLq9rjJQh_`$?^Fq&CjpKBV6=O)XoO$tHo5nj+Jr$m_&nZh1fP;hy>!U z)6eK(>e2>Xr_`(9GO_r3)p5{AJ}!lYt8#u1Gj~kWYKuU1yGYro^h7fY#e44 za(v3tWZ51N)Uuo6eZ%nZ^$ zBr;#SV94B(YKS50jD~4Fmw}d)W-v#HuZD=r#(6QkO0)D1J40!_5vV_0CfMg;)nUVA z*~Me;@M~P(Nls#aPNTvBj{oE}k^<#;!csQx?0AsplHxRepS{cEJQ8d4R7J;A^Zt4#R=Vo?>F z^GgWMR#X`>zu$=w8pFshVYbTIk=^H1g)xnRVwW)6L2nJUM%Tyjtjl*)_Fvx9`IUX| zH{{22iuTFTk3QIgsDvac0pC5SWw&9D^Zh`ItQJy|julVn0Bfi!Dd_@q%HbxW|khpO|wpyp#TBw96|2Q z?mKH==DF_j=EcrBoOTiDCS9Zst?#ROqQAP4TkfuQ*E<{C^SQ^ia;KL1XAs*Aop5|_ m!22@HtU3{OaQ}7bJa~`M7RFP~0?xP#K#cAeqqFh*5B~v!Lw&9Q literal 0 HcmV?d00001 diff --git a/doc/fonts/icomoon.woff b/doc/fonts/icomoon.woff new file mode 100644 index 0000000000000000000000000000000000000000..a27a656044f41d8a567a5ffa9ed74c75ceae77f8 GIT binary patch literal 3008 zcma)8U2Ggz6+U{O-{;fWW>9 zxgv=_(4uRDt>=Ng0r`}q$h-8%Yr_?3_b%kDBs*OOgjf04wYnd+qm9?-l;U?i=@uqkoS^(8JFG zP6s#}{XRd+|1$UY+#gaCt}*%Nz^m%;p^6cMCs#%FRT@#}Q!3TNd_Nx3C^6b&e_?m& zF}j6eHd0CXOTE=fz-_;}OwT?GAnHQXfP zzGvS-ve{_*0Rs26g;wCW({8foGO2VlX4$qK?P@%lOr~bCanG~D5n+ZRiL~c=PS-Jo zFdYYc#B;-Qi4-@v){UmqnOFXA>sTt49mld_K`eIHvZG@SFmJ*NTb>sSYtfK{klk@i z2&Qo61k(}MwqAB@*NZz^1XdypD>o8xJtr(s!gE4rT{$Ex7EPrynRF`FWx6+k<8-(N z$7zWuc4Q4qe<{kPlX5YR&Q%9%&`e<9qB-bop>k|bgfq^ z8Mr?#`@;I6p0GccagOe=Z93-futeNthXeD+wa_}p>S`A>8+j%-!OIpF_{A5o$cTFT zwy-`dvuyzoDnBi0DvgvWShTnYXqFb(F1t(-D$9E*R>btm?OiTnW6NFlQKa(`n`W22 zAcroj{haWPnI zT=JUhn7FriBv=)|j8|6x) zQ7JbVDL=}^{vF3YZab=C6^??QIc)!k$o<1_#^8=LLk@XWTekC34pvf|LmwgjHfDSn z>&5UYoub#-MftvVaQ<+aV4laP4ihGiT{7`Hzr}UVCpq8PP>l}Y9!CWXijC_W4b(7` zZw{yM=mRayz5&1UbRNFtaSl8OKF6mW+sG79)oYy?E-8e=o<3qOkK;iiaq}lCAOhpB zLduL@`wF(U9?><8J;wk?b*B9cx#*h9`E?}cYPw9BKdN$s#W?fp=&f^hdjBO|W6WTX z*md+)?7gwo(eZIS>+&6y^o39MzT|%9eG1_@MfuH{U;W~+#YsrxB*v?6S#EX z(5v!XqNr|)JFF(@%^(LxCSch^TAFk@;5qnq!0X_*1Kz+HPXxRGz7+5_*8E%Y`$V^Z zOhV)H8u-dJ619In$Ttbqdj1qWjhkkZZomKv_&JTecj}?N9tu9yU){de+eFYl65Xb2)T7OZS}qRPw+gHM z_5NmWtAC~N>`vkQ%J3p`o2Nw;dkfK5;bvWB)WiMPrz^mor5)7g)c`K~13-@QynJl= E4 + + + + quaff v0.0.2 – Documentation + + + + + + diff --git a/doc/search.html b/doc/search.html new file mode 100644 index 0000000..dc75264 --- /dev/null +++ b/doc/search.html @@ -0,0 +1,100 @@ + + + + + + + + Search – quaff v0.0.2 + + + + + + + + + + + + + +
    + + + + +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + + + From 6eb4afe7bc7bde81d7eff18a8b233d8e7745e429 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 17:07:34 +0100 Subject: [PATCH 11/39] remove io call --- lib/constants.ex | 2 -- mix.exs | 2 +- package.exs | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/constants.ex b/lib/constants.ex index 88f8ce8..428f163 100644 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -200,8 +200,6 @@ defmodule Quaff.Constants do include_path: include_path, from_file: from_file, from_line: from_line ) do - - IO.puts("calling resolve_include(#{incl_type}, #{header_file}, #{relative_dir}, #{include_path})") {:ok,realfile} = case resolve_include(incl_type,header_file,relative_dir,include_path) do {:ok,_} = res -> res diff --git a/mix.exs b/mix.exs index d3e0505..15ec688 100644 --- a/mix.exs +++ b/mix.exs @@ -5,7 +5,7 @@ defmodule Quaff.Mixfile do [ app: :quaff, elixir: "~> 1.6", - version: "0.0.2", + version: "0.1.0", deps: deps(Mix.env), description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", package: package(), diff --git a/package.exs b/package.exs index 5d7ea49..99e56d1 100644 --- a/package.exs +++ b/package.exs @@ -1,7 +1,7 @@ Expm.Package.new( name: "quaff", description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", - version: "0.0.2", + version: "0.1.0", keywords: ["Elixir", "erlang", "tools", "utilities"], licenses: [[name: "Apache License 2.0"]], maintainers: [ From 16fec8d8bdc06879d86a3a540d90c3bbc2145c3e Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Thu, 5 Apr 2018 17:08:20 +0100 Subject: [PATCH 12/39] new docs --- doc/404.html | 4 ++-- doc/Quaff.Constants.CompileError.html | 6 +++--- doc/Quaff.Constants.html | 6 +++--- doc/Quaff.Debug.html | 6 +++--- doc/api-reference.html | 6 +++--- doc/index.html | 2 +- doc/search.html | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/doc/404.html b/doc/404.html index c7d187e..f3a6bca 100644 --- a/doc/404.html +++ b/doc/404.html @@ -5,7 +5,7 @@ - 404 – quaff v0.0.2 + 404 – quaff v0.1.0 @@ -37,7 +37,7 @@

    quaff

    diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html index 817ae57..831da49 100644 --- a/doc/Quaff.Constants.CompileError.html +++ b/doc/Quaff.Constants.CompileError.html @@ -5,7 +5,7 @@ - Quaff.Constants.CompileError – quaff v0.0.2 + Quaff.Constants.CompileError – quaff v0.1.0 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.0.2 + quaff v0.1.0 Quaff.Constants.CompileError exception diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html index 2ba03d2..37a7a69 100644 --- a/doc/Quaff.Constants.html +++ b/doc/Quaff.Constants.html @@ -5,7 +5,7 @@ - Quaff.Constants – quaff v0.0.2 + Quaff.Constants – quaff v0.1.0 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.0.2 + quaff v0.1.0 Quaff.Constants diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html index b6de05a..00148cb 100644 --- a/doc/Quaff.Debug.html +++ b/doc/Quaff.Debug.html @@ -5,7 +5,7 @@ - Quaff.Debug – quaff v0.0.2 + Quaff.Debug – quaff v0.1.0 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.0.2 + quaff v0.1.0 Quaff.Debug diff --git a/doc/api-reference.html b/doc/api-reference.html index 55cc08a..2b870fa 100644 --- a/doc/api-reference.html +++ b/doc/api-reference.html @@ -5,7 +5,7 @@ - API Reference – quaff v0.0.2 + API Reference – quaff v0.1.0 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.0.2 + quaff v0.1.0 API Reference

    diff --git a/doc/index.html b/doc/index.html index f14c0e2..67260aa 100644 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - quaff v0.0.2 – Documentation + quaff v0.1.0 – Documentation diff --git a/doc/search.html b/doc/search.html index dc75264..871b459 100644 --- a/doc/search.html +++ b/doc/search.html @@ -5,7 +5,7 @@ - Search – quaff v0.0.2 + Search – quaff v0.1.0 @@ -37,7 +37,7 @@

    quaff

    From 91890dfe0a4499e37ec4c767f30edda400972b15 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 00:14:05 +0100 Subject: [PATCH 13/39] detect windows abs paths --- lib/constants.ex | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/constants.ex b/lib/constants.ex index 428f163..353b70e 100644 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -242,6 +242,14 @@ defmodule Quaff.Constants do resolve_include(incl_type,List.to_string(file),rel,incl_path) end + defp resolve_include(:macro_include_lib, (c <>":/"<>_)=abs_file,_,_) when c in ["c","d", "e", "f"] do + case File.exists?(abs_file) do + true -> {:ok, abs_file} + _ -> + {:error, {:not_found,abs_file}} + end + end + defp resolve_include(:macro_include_lib, ("/"<>_)=abs_file,_,_) do case File.exists?(abs_file) do true -> {:ok, abs_file} From ef02b04d4dfbefdc368e6ba8ed9f8c8737a85728 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 00:14:16 +0100 Subject: [PATCH 14/39] remove --- rebar.config.script | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 rebar.config.script diff --git a/rebar.config.script b/rebar.config.script deleted file mode 100644 index d2aeb2d..0000000 --- a/rebar.config.script +++ /dev/null @@ -1,29 +0,0 @@ -ElixirVersion = case os:getenv("ELIXIR_VERSION") of - false -> {branch, "stable"}; - V -> V - end, -MainDeps = -[ { elixir, ".*", - {git, "git://github.com/elixir-lang/elixir", ElixirVersion}}, - {aleppo, ".*", - {git, "https://github.com/ChicagoBoss/aleppo.git", {branch, "master"}}}, - { rebar_elixir_plugin, ".*", - {git, "git://github.com/qhool/rebar_elixir_plugin", {branch, "elixir_0.15"}}} -], -Env = case os:getenv("REBAR_ENV") of - false -> dev; - E -> list_to_atom(E) - end, -Deps = case Env of - test -> - [ {meck, ".*", - {git, "https://github.com/eproxus/meck.git", {branch, "master"}}} | MainDeps ]; - _ -> MainDeps - end, -[ {deps, Deps}, - %% get access to mark_keywords in aleppo - {plugins, [rebar_elixir_compiler] ++ case Env of - test -> [rebar_exunit]; - _ -> [] - end}, - {lib_dirs, ["deps/elixir/lib"]} ]. From 8931b825dc6c8b2fe98599373f685fad7497a28e Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 00:15:05 +0100 Subject: [PATCH 15/39] version --- mix.exs | 2 +- package.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index 15ec688..5335b6f 100644 --- a/mix.exs +++ b/mix.exs @@ -5,7 +5,7 @@ defmodule Quaff.Mixfile do [ app: :quaff, elixir: "~> 1.6", - version: "0.1.0", + version: "0.1.1", deps: deps(Mix.env), description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", package: package(), diff --git a/package.exs b/package.exs index 99e56d1..70294ff 100644 --- a/package.exs +++ b/package.exs @@ -1,7 +1,7 @@ Expm.Package.new( name: "quaff", description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", - version: "0.1.0", + version: "0.1.1", keywords: ["Elixir", "erlang", "tools", "utilities"], licenses: [[name: "Apache License 2.0"]], maintainers: [ From 00d32b5ed924e962bac9272c91f4254b40227dbf Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 00:20:10 +0100 Subject: [PATCH 16/39] linux --- .gitignore | 0 .travis.yml | 0 LICENSE | 0 README.md | 0 doc/.build | 0 doc/404.html | 0 doc/Quaff.Constants.CompileError.html | 0 doc/Quaff.Constants.html | 0 doc/Quaff.Debug.html | 0 doc/api-reference.html | 0 doc/dist/app-480ffdc169.css | 0 doc/dist/app-9bd040e5e5.js | 0 doc/dist/sidebar_items-a8f45a4a6d.js | 0 doc/fonts/icomoon.eot | Bin doc/fonts/icomoon.svg | 0 doc/fonts/icomoon.ttf | Bin doc/fonts/icomoon.woff | Bin doc/index.html | 0 doc/search.html | 0 include/more_test.hrl | 0 lib/constants.ex | 0 lib/debug.ex | 0 mix.exs | 0 package.exs | 0 src/quaff.app.src | 0 test/constants_test.exs | 0 test/debug_test.exs | 0 test/dummy.ex | 0 test/test1.hrl | 0 test/test2.hrl | 0 test/test3_inc.hrl | 0 test/test3a.hrl | 0 test/test3b.hrl | 0 test/test_helper.exs | 0 34 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .travis.yml mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 doc/.build mode change 100644 => 100755 doc/404.html mode change 100644 => 100755 doc/Quaff.Constants.CompileError.html mode change 100644 => 100755 doc/Quaff.Constants.html mode change 100644 => 100755 doc/Quaff.Debug.html mode change 100644 => 100755 doc/api-reference.html mode change 100644 => 100755 doc/dist/app-480ffdc169.css mode change 100644 => 100755 doc/dist/app-9bd040e5e5.js mode change 100644 => 100755 doc/dist/sidebar_items-a8f45a4a6d.js mode change 100644 => 100755 doc/fonts/icomoon.eot mode change 100644 => 100755 doc/fonts/icomoon.svg mode change 100644 => 100755 doc/fonts/icomoon.ttf mode change 100644 => 100755 doc/fonts/icomoon.woff mode change 100644 => 100755 doc/index.html mode change 100644 => 100755 doc/search.html mode change 100644 => 100755 include/more_test.hrl mode change 100644 => 100755 lib/constants.ex mode change 100644 => 100755 lib/debug.ex mode change 100644 => 100755 mix.exs mode change 100644 => 100755 package.exs mode change 100644 => 100755 src/quaff.app.src mode change 100644 => 100755 test/constants_test.exs mode change 100644 => 100755 test/debug_test.exs mode change 100644 => 100755 test/dummy.ex mode change 100644 => 100755 test/test1.hrl mode change 100644 => 100755 test/test2.hrl mode change 100644 => 100755 test/test3_inc.hrl mode change 100644 => 100755 test/test3a.hrl mode change 100644 => 100755 test/test3b.hrl mode change 100644 => 100755 test/test_helper.exs diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/doc/.build b/doc/.build old mode 100644 new mode 100755 diff --git a/doc/404.html b/doc/404.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html old mode 100644 new mode 100755 diff --git a/doc/api-reference.html b/doc/api-reference.html old mode 100644 new mode 100755 diff --git a/doc/dist/app-480ffdc169.css b/doc/dist/app-480ffdc169.css old mode 100644 new mode 100755 diff --git a/doc/dist/app-9bd040e5e5.js b/doc/dist/app-9bd040e5e5.js old mode 100644 new mode 100755 diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.eot b/doc/fonts/icomoon.eot old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.svg b/doc/fonts/icomoon.svg old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.ttf b/doc/fonts/icomoon.ttf old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.woff b/doc/fonts/icomoon.woff old mode 100644 new mode 100755 diff --git a/doc/index.html b/doc/index.html old mode 100644 new mode 100755 diff --git a/doc/search.html b/doc/search.html old mode 100644 new mode 100755 diff --git a/include/more_test.hrl b/include/more_test.hrl old mode 100644 new mode 100755 diff --git a/lib/constants.ex b/lib/constants.ex old mode 100644 new mode 100755 diff --git a/lib/debug.ex b/lib/debug.ex old mode 100644 new mode 100755 diff --git a/mix.exs b/mix.exs old mode 100644 new mode 100755 diff --git a/package.exs b/package.exs old mode 100644 new mode 100755 diff --git a/src/quaff.app.src b/src/quaff.app.src old mode 100644 new mode 100755 diff --git a/test/constants_test.exs b/test/constants_test.exs old mode 100644 new mode 100755 diff --git a/test/debug_test.exs b/test/debug_test.exs old mode 100644 new mode 100755 diff --git a/test/dummy.ex b/test/dummy.ex old mode 100644 new mode 100755 diff --git a/test/test1.hrl b/test/test1.hrl old mode 100644 new mode 100755 diff --git a/test/test2.hrl b/test/test2.hrl old mode 100644 new mode 100755 diff --git a/test/test3_inc.hrl b/test/test3_inc.hrl old mode 100644 new mode 100755 diff --git a/test/test3a.hrl b/test/test3a.hrl old mode 100644 new mode 100755 diff --git a/test/test3b.hrl b/test/test3b.hrl old mode 100644 new mode 100755 diff --git a/test/test_helper.exs b/test/test_helper.exs old mode 100644 new mode 100755 From 70b616f54f0866cff9e654b4ba5facca03cefa6f Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 01:12:50 +0100 Subject: [PATCH 17/39] fix usage for c drive on windows abs paths --- .gitignore | 0 .travis.yml | 0 LICENSE | 0 README.md | 0 doc/.build | 0 doc/404.html | 0 doc/Quaff.Constants.CompileError.html | 0 doc/Quaff.Constants.html | 0 doc/Quaff.Debug.html | 0 doc/api-reference.html | 0 doc/dist/app-480ffdc169.css | 0 doc/dist/app-9bd040e5e5.js | 0 doc/dist/sidebar_items-a8f45a4a6d.js | 0 doc/fonts/icomoon.eot | Bin doc/fonts/icomoon.svg | 0 doc/fonts/icomoon.ttf | Bin doc/fonts/icomoon.woff | Bin doc/index.html | 0 doc/search.html | 0 include/more_test.hrl | 0 lib/constants.ex | 18 +++++++++++++----- lib/debug.ex | 0 mix.exs | 0 package.exs | 0 src/quaff.app.src | 0 test/constants_test.exs | 2 ++ test/debug_test.exs | 0 test/dummy.ex | 0 test/test1.hrl | 0 test/test2.hrl | 0 test/test3_inc.hrl | 0 test/test3a.hrl | 0 test/test3b.hrl | 0 test/test_helper.exs | 0 34 files changed, 15 insertions(+), 5 deletions(-) mode change 100755 => 100644 .gitignore mode change 100755 => 100644 .travis.yml mode change 100755 => 100644 LICENSE mode change 100755 => 100644 README.md mode change 100755 => 100644 doc/.build mode change 100755 => 100644 doc/404.html mode change 100755 => 100644 doc/Quaff.Constants.CompileError.html mode change 100755 => 100644 doc/Quaff.Constants.html mode change 100755 => 100644 doc/Quaff.Debug.html mode change 100755 => 100644 doc/api-reference.html mode change 100755 => 100644 doc/dist/app-480ffdc169.css mode change 100755 => 100644 doc/dist/app-9bd040e5e5.js mode change 100755 => 100644 doc/dist/sidebar_items-a8f45a4a6d.js mode change 100755 => 100644 doc/fonts/icomoon.eot mode change 100755 => 100644 doc/fonts/icomoon.svg mode change 100755 => 100644 doc/fonts/icomoon.ttf mode change 100755 => 100644 doc/fonts/icomoon.woff mode change 100755 => 100644 doc/index.html mode change 100755 => 100644 doc/search.html mode change 100755 => 100644 include/more_test.hrl mode change 100755 => 100644 lib/constants.ex mode change 100755 => 100644 lib/debug.ex mode change 100755 => 100644 mix.exs mode change 100755 => 100644 package.exs mode change 100755 => 100644 src/quaff.app.src mode change 100755 => 100644 test/constants_test.exs mode change 100755 => 100644 test/debug_test.exs mode change 100755 => 100644 test/dummy.ex mode change 100755 => 100644 test/test1.hrl mode change 100755 => 100644 test/test2.hrl mode change 100755 => 100644 test/test3_inc.hrl mode change 100755 => 100644 test/test3a.hrl mode change 100755 => 100644 test/test3b.hrl mode change 100755 => 100644 test/test_helper.exs diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/.travis.yml b/.travis.yml old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/doc/.build b/doc/.build old mode 100755 new mode 100644 diff --git a/doc/404.html b/doc/404.html old mode 100755 new mode 100644 diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html old mode 100755 new mode 100644 diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html old mode 100755 new mode 100644 diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html old mode 100755 new mode 100644 diff --git a/doc/api-reference.html b/doc/api-reference.html old mode 100755 new mode 100644 diff --git a/doc/dist/app-480ffdc169.css b/doc/dist/app-480ffdc169.css old mode 100755 new mode 100644 diff --git a/doc/dist/app-9bd040e5e5.js b/doc/dist/app-9bd040e5e5.js old mode 100755 new mode 100644 diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.eot b/doc/fonts/icomoon.eot old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.svg b/doc/fonts/icomoon.svg old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.ttf b/doc/fonts/icomoon.ttf old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.woff b/doc/fonts/icomoon.woff old mode 100755 new mode 100644 diff --git a/doc/index.html b/doc/index.html old mode 100755 new mode 100644 diff --git a/doc/search.html b/doc/search.html old mode 100755 new mode 100644 diff --git a/include/more_test.hrl b/include/more_test.hrl old mode 100755 new mode 100644 diff --git a/lib/constants.ex b/lib/constants.ex old mode 100755 new mode 100644 index 353b70e..9b53ec4 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -13,6 +13,7 @@ # limitations under the License. defmodule Quaff.Constants do require Record + require Logger defmodule CompileError do defexception message: nil @@ -242,12 +243,19 @@ defmodule Quaff.Constants do resolve_include(incl_type,List.to_string(file),rel,incl_path) end - defp resolve_include(:macro_include_lib, (c <>":/"<>_)=abs_file,_,_) when c in ["c","d", "e", "f"] do - case File.exists?(abs_file) do - true -> {:ok, abs_file} - _ -> - {:error, {:not_found,abs_file}} + #TODO make macro to generate is_windows based on drive_list + defp resolve_include(:macro_include_lib, "c:/" <> windows_abs_file,x,y) do + resolve_windows_include = fn (:macro_include_lib, drive, abs_file,_,_) -> + windows_abs_file = drive <> ":/" <> abs_file + windows_abs_file |> + File.exists?() |> + case do + true -> {:ok, windows_abs_file} + _ -> + {:error, {:not_found, windows_abs_file}} + end end + resolve_windows_include.(:macro_include_lib, "c", windows_abs_file,x,y) end defp resolve_include(:macro_include_lib, ("/"<>_)=abs_file,_,_) do diff --git a/lib/debug.ex b/lib/debug.ex old mode 100755 new mode 100644 diff --git a/mix.exs b/mix.exs old mode 100755 new mode 100644 diff --git a/package.exs b/package.exs old mode 100755 new mode 100644 diff --git a/src/quaff.app.src b/src/quaff.app.src old mode 100755 new mode 100644 diff --git a/test/constants_test.exs b/test/constants_test.exs old mode 100755 new mode 100644 index 65fa24c..9e74292 --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -24,6 +24,8 @@ defmodule Quaff.Constants.Test do C.include_lib("../include/more_test.hrl") C.include_lib("./test1.hrl") + C.include_lib(Path.absname("#{__DIR__}/../include/more_test.hrl")) + test "simple constants" do diff --git a/test/debug_test.exs b/test/debug_test.exs old mode 100755 new mode 100644 diff --git a/test/dummy.ex b/test/dummy.ex old mode 100755 new mode 100644 diff --git a/test/test1.hrl b/test/test1.hrl old mode 100755 new mode 100644 diff --git a/test/test2.hrl b/test/test2.hrl old mode 100755 new mode 100644 diff --git a/test/test3_inc.hrl b/test/test3_inc.hrl old mode 100755 new mode 100644 diff --git a/test/test3a.hrl b/test/test3a.hrl old mode 100755 new mode 100644 diff --git a/test/test3b.hrl b/test/test3b.hrl old mode 100755 new mode 100644 diff --git a/test/test_helper.exs b/test/test_helper.exs old mode 100755 new mode 100644 From 6ad7278a8f36ad90f3c82e8aeb7716922f5c214b Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 01:13:59 +0100 Subject: [PATCH 18/39] linux --- .gitignore | 0 .travis.yml | 0 LICENSE | 0 README.md | 0 doc/.build | 0 doc/404.html | 0 doc/Quaff.Constants.CompileError.html | 0 doc/Quaff.Constants.html | 0 doc/Quaff.Debug.html | 0 doc/api-reference.html | 0 doc/dist/app-480ffdc169.css | 0 doc/dist/app-9bd040e5e5.js | 0 doc/dist/sidebar_items-a8f45a4a6d.js | 0 doc/fonts/icomoon.eot | Bin doc/fonts/icomoon.svg | 0 doc/fonts/icomoon.ttf | Bin doc/fonts/icomoon.woff | Bin doc/index.html | 0 doc/search.html | 0 include/more_test.hrl | 0 lib/constants.ex | 0 lib/debug.ex | 0 mix.exs | 0 package.exs | 0 src/quaff.app.src | 0 test/constants_test.exs | 0 test/debug_test.exs | 0 test/dummy.ex | 0 test/test1.hrl | 0 test/test2.hrl | 0 test/test3_inc.hrl | 0 test/test3a.hrl | 0 test/test3b.hrl | 0 test/test_helper.exs | 0 34 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .travis.yml mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 doc/.build mode change 100644 => 100755 doc/404.html mode change 100644 => 100755 doc/Quaff.Constants.CompileError.html mode change 100644 => 100755 doc/Quaff.Constants.html mode change 100644 => 100755 doc/Quaff.Debug.html mode change 100644 => 100755 doc/api-reference.html mode change 100644 => 100755 doc/dist/app-480ffdc169.css mode change 100644 => 100755 doc/dist/app-9bd040e5e5.js mode change 100644 => 100755 doc/dist/sidebar_items-a8f45a4a6d.js mode change 100644 => 100755 doc/fonts/icomoon.eot mode change 100644 => 100755 doc/fonts/icomoon.svg mode change 100644 => 100755 doc/fonts/icomoon.ttf mode change 100644 => 100755 doc/fonts/icomoon.woff mode change 100644 => 100755 doc/index.html mode change 100644 => 100755 doc/search.html mode change 100644 => 100755 include/more_test.hrl mode change 100644 => 100755 lib/constants.ex mode change 100644 => 100755 lib/debug.ex mode change 100644 => 100755 mix.exs mode change 100644 => 100755 package.exs mode change 100644 => 100755 src/quaff.app.src mode change 100644 => 100755 test/constants_test.exs mode change 100644 => 100755 test/debug_test.exs mode change 100644 => 100755 test/dummy.ex mode change 100644 => 100755 test/test1.hrl mode change 100644 => 100755 test/test2.hrl mode change 100644 => 100755 test/test3_inc.hrl mode change 100644 => 100755 test/test3a.hrl mode change 100644 => 100755 test/test3b.hrl mode change 100644 => 100755 test/test_helper.exs diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/doc/.build b/doc/.build old mode 100644 new mode 100755 diff --git a/doc/404.html b/doc/404.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html old mode 100644 new mode 100755 diff --git a/doc/api-reference.html b/doc/api-reference.html old mode 100644 new mode 100755 diff --git a/doc/dist/app-480ffdc169.css b/doc/dist/app-480ffdc169.css old mode 100644 new mode 100755 diff --git a/doc/dist/app-9bd040e5e5.js b/doc/dist/app-9bd040e5e5.js old mode 100644 new mode 100755 diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.eot b/doc/fonts/icomoon.eot old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.svg b/doc/fonts/icomoon.svg old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.ttf b/doc/fonts/icomoon.ttf old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.woff b/doc/fonts/icomoon.woff old mode 100644 new mode 100755 diff --git a/doc/index.html b/doc/index.html old mode 100644 new mode 100755 diff --git a/doc/search.html b/doc/search.html old mode 100644 new mode 100755 diff --git a/include/more_test.hrl b/include/more_test.hrl old mode 100644 new mode 100755 diff --git a/lib/constants.ex b/lib/constants.ex old mode 100644 new mode 100755 diff --git a/lib/debug.ex b/lib/debug.ex old mode 100644 new mode 100755 diff --git a/mix.exs b/mix.exs old mode 100644 new mode 100755 diff --git a/package.exs b/package.exs old mode 100644 new mode 100755 diff --git a/src/quaff.app.src b/src/quaff.app.src old mode 100644 new mode 100755 diff --git a/test/constants_test.exs b/test/constants_test.exs old mode 100644 new mode 100755 diff --git a/test/debug_test.exs b/test/debug_test.exs old mode 100644 new mode 100755 diff --git a/test/dummy.ex b/test/dummy.ex old mode 100644 new mode 100755 diff --git a/test/test1.hrl b/test/test1.hrl old mode 100644 new mode 100755 diff --git a/test/test2.hrl b/test/test2.hrl old mode 100644 new mode 100755 diff --git a/test/test3_inc.hrl b/test/test3_inc.hrl old mode 100644 new mode 100755 diff --git a/test/test3a.hrl b/test/test3a.hrl old mode 100644 new mode 100755 diff --git a/test/test3b.hrl b/test/test3b.hrl old mode 100644 new mode 100755 diff --git a/test/test_helper.exs b/test/test_helper.exs old mode 100644 new mode 100755 From ca766b6ee7ee582a90f06c2f7524a76c2ca1a525 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 01:50:13 +0100 Subject: [PATCH 19/39] fix windows compatibility --- .gitignore | 0 .travis.yml | 0 LICENSE | 0 README.md | 0 doc/.build | 0 doc/404.html | 0 doc/Quaff.Constants.CompileError.html | 0 doc/Quaff.Constants.html | 0 doc/Quaff.Debug.html | 0 doc/api-reference.html | 0 doc/dist/app-480ffdc169.css | 0 doc/dist/app-9bd040e5e5.js | 0 doc/dist/sidebar_items-a8f45a4a6d.js | 0 doc/fonts/icomoon.eot | Bin doc/fonts/icomoon.svg | 0 doc/fonts/icomoon.ttf | Bin doc/fonts/icomoon.woff | Bin doc/index.html | 0 doc/search.html | 0 include/more_test.hrl | 0 lib/constants.ex | 56 +++++++++++++++----------- lib/debug.ex | 0 mix.exs | 0 package.exs | 0 src/quaff.app.src | 0 test/constants_test.exs | 3 +- test/debug_test.exs | 0 test/dummy.ex | 0 test/test1.hrl | 0 test/test2.hrl | 0 test/test3_inc.hrl | 0 test/test3a.hrl | 0 test/test3b.hrl | 0 test/test_helper.exs | 0 34 files changed, 34 insertions(+), 25 deletions(-) mode change 100755 => 100644 .gitignore mode change 100755 => 100644 .travis.yml mode change 100755 => 100644 LICENSE mode change 100755 => 100644 README.md mode change 100755 => 100644 doc/.build mode change 100755 => 100644 doc/404.html mode change 100755 => 100644 doc/Quaff.Constants.CompileError.html mode change 100755 => 100644 doc/Quaff.Constants.html mode change 100755 => 100644 doc/Quaff.Debug.html mode change 100755 => 100644 doc/api-reference.html mode change 100755 => 100644 doc/dist/app-480ffdc169.css mode change 100755 => 100644 doc/dist/app-9bd040e5e5.js mode change 100755 => 100644 doc/dist/sidebar_items-a8f45a4a6d.js mode change 100755 => 100644 doc/fonts/icomoon.eot mode change 100755 => 100644 doc/fonts/icomoon.svg mode change 100755 => 100644 doc/fonts/icomoon.ttf mode change 100755 => 100644 doc/fonts/icomoon.woff mode change 100755 => 100644 doc/index.html mode change 100755 => 100644 doc/search.html mode change 100755 => 100644 include/more_test.hrl mode change 100755 => 100644 lib/constants.ex mode change 100755 => 100644 lib/debug.ex mode change 100755 => 100644 mix.exs mode change 100755 => 100644 package.exs mode change 100755 => 100644 src/quaff.app.src mode change 100755 => 100644 test/constants_test.exs mode change 100755 => 100644 test/debug_test.exs mode change 100755 => 100644 test/dummy.ex mode change 100755 => 100644 test/test1.hrl mode change 100755 => 100644 test/test2.hrl mode change 100755 => 100644 test/test3_inc.hrl mode change 100755 => 100644 test/test3a.hrl mode change 100755 => 100644 test/test3b.hrl mode change 100755 => 100644 test/test_helper.exs diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/.travis.yml b/.travis.yml old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/doc/.build b/doc/.build old mode 100755 new mode 100644 diff --git a/doc/404.html b/doc/404.html old mode 100755 new mode 100644 diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html old mode 100755 new mode 100644 diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html old mode 100755 new mode 100644 diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html old mode 100755 new mode 100644 diff --git a/doc/api-reference.html b/doc/api-reference.html old mode 100755 new mode 100644 diff --git a/doc/dist/app-480ffdc169.css b/doc/dist/app-480ffdc169.css old mode 100755 new mode 100644 diff --git a/doc/dist/app-9bd040e5e5.js b/doc/dist/app-9bd040e5e5.js old mode 100755 new mode 100644 diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.eot b/doc/fonts/icomoon.eot old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.svg b/doc/fonts/icomoon.svg old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.ttf b/doc/fonts/icomoon.ttf old mode 100755 new mode 100644 diff --git a/doc/fonts/icomoon.woff b/doc/fonts/icomoon.woff old mode 100755 new mode 100644 diff --git a/doc/index.html b/doc/index.html old mode 100755 new mode 100644 diff --git a/doc/search.html b/doc/search.html old mode 100755 new mode 100644 diff --git a/include/more_test.hrl b/include/more_test.hrl old mode 100755 new mode 100644 diff --git a/lib/constants.ex b/lib/constants.ex old mode 100755 new mode 100644 index 9b53ec4..c961e31 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -239,26 +239,12 @@ defmodule Quaff.Constants do end)) end + defp resolve_include(incl_type,file,rel,incl_path) when is_list(file) do resolve_include(incl_type,List.to_string(file),rel,incl_path) end - #TODO make macro to generate is_windows based on drive_list - defp resolve_include(:macro_include_lib, "c:/" <> windows_abs_file,x,y) do - resolve_windows_include = fn (:macro_include_lib, drive, abs_file,_,_) -> - windows_abs_file = drive <> ":/" <> abs_file - windows_abs_file |> - File.exists?() |> - case do - true -> {:ok, windows_abs_file} - _ -> - {:error, {:not_found, windows_abs_file}} - end - end - resolve_windows_include.(:macro_include_lib, "c", windows_abs_file,x,y) - end - - defp resolve_include(:macro_include_lib, ("/"<>_)=abs_file,_,_) do + defp resolve_include(:macro_include_lib, ("/"<>_)=abs_file,_,_) do case File.exists?(abs_file) do true -> {:ok, abs_file} _ -> @@ -284,16 +270,38 @@ defmodule Quaff.Constants do end end - defp resolve_include(:macro_include_lib,file,_,_) do - [app_name|file_path] = :filename.split(String.to_charlist(file)) - case :code.lib_dir(List.to_atom(app_name)) do - {:error, _} -> - {:error, {:not_found,file}} - app_lib -> - {:ok,List.to_string(:filename.join([app_lib|file_path]))} + defp resolve_include(:macro_include_lib, file,_,_) do + #TODO make macro to generate is_windows based on drive_list + is_window_file = fn (f) -> + f |> + case do + "c:/" <> _-> true + _ -> false + end end - end + cond do + is_window_file.(file) -> + resolve_windows_include = fn (:macro_include_lib) -> + file |> + File.exists?() |> + case do + true -> {:ok, file} + _ -> + {:error, {:not_found, file}} + end + end + resolve_windows_include.(:macro_include_lib) + true -> + [app_name|file_path] = :filename.split(String.to_charlist(file)) + case :code.lib_dir(List.to_atom(app_name)) do + {:error, _} -> + {:error, {:not_found,file}} + app_lib -> + {:ok,List.to_string(:filename.join([app_lib|file_path]))} + end + end + end defp resolve_include(:macro_include,file,rel,incl_path) do resolve_include(file,rel,incl_path) diff --git a/lib/debug.ex b/lib/debug.ex old mode 100755 new mode 100644 diff --git a/mix.exs b/mix.exs old mode 100755 new mode 100644 diff --git a/package.exs b/package.exs old mode 100755 new mode 100644 diff --git a/src/quaff.app.src b/src/quaff.app.src old mode 100755 new mode 100644 diff --git a/test/constants_test.exs b/test/constants_test.exs old mode 100755 new mode 100644 index 9e74292..28c83dd --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -20,7 +20,8 @@ defmodule Quaff.Constants.Test do C.include_lib("public_key/include/public_key.hrl") #relative paths - C.include_lib(Path.expand("#{__DIR__}/../include/more_test.hrl")) + C.include_lib(Path.expand("#{__DIR__}/../include/more_test.hrl"), + include: Path.expand("#{__DIR__}/../include/")) C.include_lib("../include/more_test.hrl") C.include_lib("./test1.hrl") diff --git a/test/debug_test.exs b/test/debug_test.exs old mode 100755 new mode 100644 diff --git a/test/dummy.ex b/test/dummy.ex old mode 100755 new mode 100644 diff --git a/test/test1.hrl b/test/test1.hrl old mode 100755 new mode 100644 diff --git a/test/test2.hrl b/test/test2.hrl old mode 100755 new mode 100644 diff --git a/test/test3_inc.hrl b/test/test3_inc.hrl old mode 100755 new mode 100644 diff --git a/test/test3a.hrl b/test/test3a.hrl old mode 100755 new mode 100644 diff --git a/test/test3b.hrl b/test/test3b.hrl old mode 100755 new mode 100644 diff --git a/test/test_helper.exs b/test/test_helper.exs old mode 100755 new mode 100644 From 0b641fe959e67ff474414b049105b77a675b66a0 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 01:50:47 +0100 Subject: [PATCH 20/39] linux --- .gitignore | 0 .travis.yml | 0 LICENSE | 0 README.md | 0 doc/.build | 0 doc/404.html | 0 doc/Quaff.Constants.CompileError.html | 0 doc/Quaff.Constants.html | 0 doc/Quaff.Debug.html | 0 doc/api-reference.html | 0 doc/dist/app-480ffdc169.css | 0 doc/dist/app-9bd040e5e5.js | 0 doc/dist/sidebar_items-a8f45a4a6d.js | 0 doc/fonts/icomoon.eot | Bin doc/fonts/icomoon.svg | 0 doc/fonts/icomoon.ttf | Bin doc/fonts/icomoon.woff | Bin doc/index.html | 0 doc/search.html | 0 include/more_test.hrl | 0 lib/constants.ex | 0 lib/debug.ex | 0 mix.exs | 0 package.exs | 0 src/quaff.app.src | 0 test/constants_test.exs | 0 test/debug_test.exs | 0 test/dummy.ex | 0 test/test1.hrl | 0 test/test2.hrl | 0 test/test3_inc.hrl | 0 test/test3a.hrl | 0 test/test3b.hrl | 0 test/test_helper.exs | 0 34 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .travis.yml mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 doc/.build mode change 100644 => 100755 doc/404.html mode change 100644 => 100755 doc/Quaff.Constants.CompileError.html mode change 100644 => 100755 doc/Quaff.Constants.html mode change 100644 => 100755 doc/Quaff.Debug.html mode change 100644 => 100755 doc/api-reference.html mode change 100644 => 100755 doc/dist/app-480ffdc169.css mode change 100644 => 100755 doc/dist/app-9bd040e5e5.js mode change 100644 => 100755 doc/dist/sidebar_items-a8f45a4a6d.js mode change 100644 => 100755 doc/fonts/icomoon.eot mode change 100644 => 100755 doc/fonts/icomoon.svg mode change 100644 => 100755 doc/fonts/icomoon.ttf mode change 100644 => 100755 doc/fonts/icomoon.woff mode change 100644 => 100755 doc/index.html mode change 100644 => 100755 doc/search.html mode change 100644 => 100755 include/more_test.hrl mode change 100644 => 100755 lib/constants.ex mode change 100644 => 100755 lib/debug.ex mode change 100644 => 100755 mix.exs mode change 100644 => 100755 package.exs mode change 100644 => 100755 src/quaff.app.src mode change 100644 => 100755 test/constants_test.exs mode change 100644 => 100755 test/debug_test.exs mode change 100644 => 100755 test/dummy.ex mode change 100644 => 100755 test/test1.hrl mode change 100644 => 100755 test/test2.hrl mode change 100644 => 100755 test/test3_inc.hrl mode change 100644 => 100755 test/test3a.hrl mode change 100644 => 100755 test/test3b.hrl mode change 100644 => 100755 test/test_helper.exs diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/doc/.build b/doc/.build old mode 100644 new mode 100755 diff --git a/doc/404.html b/doc/404.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html old mode 100644 new mode 100755 diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html old mode 100644 new mode 100755 diff --git a/doc/api-reference.html b/doc/api-reference.html old mode 100644 new mode 100755 diff --git a/doc/dist/app-480ffdc169.css b/doc/dist/app-480ffdc169.css old mode 100644 new mode 100755 diff --git a/doc/dist/app-9bd040e5e5.js b/doc/dist/app-9bd040e5e5.js old mode 100644 new mode 100755 diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.eot b/doc/fonts/icomoon.eot old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.svg b/doc/fonts/icomoon.svg old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.ttf b/doc/fonts/icomoon.ttf old mode 100644 new mode 100755 diff --git a/doc/fonts/icomoon.woff b/doc/fonts/icomoon.woff old mode 100644 new mode 100755 diff --git a/doc/index.html b/doc/index.html old mode 100644 new mode 100755 diff --git a/doc/search.html b/doc/search.html old mode 100644 new mode 100755 diff --git a/include/more_test.hrl b/include/more_test.hrl old mode 100644 new mode 100755 diff --git a/lib/constants.ex b/lib/constants.ex old mode 100644 new mode 100755 diff --git a/lib/debug.ex b/lib/debug.ex old mode 100644 new mode 100755 diff --git a/mix.exs b/mix.exs old mode 100644 new mode 100755 diff --git a/package.exs b/package.exs old mode 100644 new mode 100755 diff --git a/src/quaff.app.src b/src/quaff.app.src old mode 100644 new mode 100755 diff --git a/test/constants_test.exs b/test/constants_test.exs old mode 100644 new mode 100755 diff --git a/test/debug_test.exs b/test/debug_test.exs old mode 100644 new mode 100755 diff --git a/test/dummy.ex b/test/dummy.ex old mode 100644 new mode 100755 diff --git a/test/test1.hrl b/test/test1.hrl old mode 100644 new mode 100755 diff --git a/test/test2.hrl b/test/test2.hrl old mode 100644 new mode 100755 diff --git a/test/test3_inc.hrl b/test/test3_inc.hrl old mode 100644 new mode 100755 diff --git a/test/test3a.hrl b/test/test3a.hrl old mode 100644 new mode 100755 diff --git a/test/test3b.hrl b/test/test3b.hrl old mode 100644 new mode 100755 diff --git a/test/test_helper.exs b/test/test_helper.exs old mode 100644 new mode 100755 From 328796f92915904981c436ef8315a8f7387b70b4 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 02:14:47 +0100 Subject: [PATCH 21/39] formatter --- .formatter.exs | 13 + doc/404.html | 4 +- doc/Quaff.Constants.CompileError.html | 12 +- doc/Quaff.Constants.html | 20 +- doc/Quaff.Debug.html | 18 +- doc/api-reference.html | 6 +- doc/index.html | 2 +- doc/search.html | 4 +- lib/constants.ex | 728 ++++++++++++++++---------- lib/debug.ex | 48 +- mix.exs | 14 +- test/constants_test.exs | 21 +- test/debug_test.exs | 117 +++-- test/dummy.ex | 2 +- test/test_helper.exs | 2 +- 15 files changed, 606 insertions(+), 405 deletions(-) create mode 100755 .formatter.exs diff --git a/.formatter.exs b/.formatter.exs new file mode 100755 index 0000000..c3383c3 --- /dev/null +++ b/.formatter.exs @@ -0,0 +1,13 @@ +# Used by "mix format" and to export configuration. +export_locals_without_parens = [ + run: 1, + run: 2, + activity: 1, + activity: 2 +] + +[ + inputs: ["{mix,.formatter,.json}.exs", "{config,lib,test}/**/*.{ex,exs}"], + locals_without_parens: export_locals_without_parens, + export: [locals_without_parens: export_locals_without_parens] +] \ No newline at end of file diff --git a/doc/404.html b/doc/404.html index f3a6bca..e95e9db 100755 --- a/doc/404.html +++ b/doc/404.html @@ -5,7 +5,7 @@ - 404 – quaff v0.1.0 + 404 – quaff v0.1.1 @@ -37,7 +37,7 @@

    quaff

    diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html index 831da49..2dcf66f 100755 --- a/doc/Quaff.Constants.CompileError.html +++ b/doc/Quaff.Constants.CompileError.html @@ -5,7 +5,7 @@ - Quaff.Constants.CompileError – quaff v0.1.0 + Quaff.Constants.CompileError – quaff v0.1.1 @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.0 + quaff v0.1.1 Quaff.Constants.CompileError exception - + View Source @@ -149,7 +149,7 @@

    exception(msg) - + View Source @@ -172,7 +172,7 @@

    message(exception) - + View Source diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html index 37a7a69..3e5b1cf 100755 --- a/doc/Quaff.Constants.html +++ b/doc/Quaff.Constants.html @@ -5,7 +5,7 @@ - Quaff.Constants – quaff v0.1.0 + Quaff.Constants – quaff v0.1.1 @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.0 + quaff v0.1.1 Quaff.Constants - + View Source @@ -167,7 +167,7 @@

    get_constants(header_file) - + View Source @@ -189,7 +189,7 @@

    get_constants(header_file, options) - + View Source @@ -211,7 +211,7 @@

    include(header) - + View Source @@ -235,7 +235,7 @@

    include(header, options) - + View Source @@ -259,7 +259,7 @@

    include_lib(header) - + View Source @@ -283,7 +283,7 @@

    include_lib(header, options) - + View Source diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html index 00148cb..f5de6b8 100755 --- a/doc/Quaff.Debug.html +++ b/doc/Quaff.Debug.html @@ -5,7 +5,7 @@ - Quaff.Debug – quaff v0.1.0 + Quaff.Debug – quaff v0.1.1 @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.0 + quaff v0.1.1 Quaff.Debug - + View Source @@ -161,7 +161,7 @@

    load(module) - + View Source @@ -183,7 +183,7 @@

    load(module, options) - + View Source @@ -205,7 +205,7 @@

    nload(module) - + View Source @@ -227,7 +227,7 @@

    nload(module, options) - + View Source @@ -249,7 +249,7 @@

    start() - + View Source diff --git a/doc/api-reference.html b/doc/api-reference.html index 2b870fa..93638c5 100755 --- a/doc/api-reference.html +++ b/doc/api-reference.html @@ -5,7 +5,7 @@ - API Reference – quaff v0.1.0 + API Reference – quaff v0.1.1 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.0 + quaff v0.1.1 API Reference

    diff --git a/doc/index.html b/doc/index.html index 67260aa..6bbd437 100755 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - quaff v0.1.0 – Documentation + quaff v0.1.1 – Documentation diff --git a/doc/search.html b/doc/search.html index 871b459..d1b9af2 100755 --- a/doc/search.html +++ b/doc/search.html @@ -5,7 +5,7 @@ - Search – quaff v0.1.0 + Search – quaff v0.1.1 @@ -37,7 +37,7 @@

    quaff

    diff --git a/lib/constants.ex b/lib/constants.ex index c961e31..997aefd 100755 --- a/lib/constants.ex +++ b/lib/constants.ex @@ -21,16 +21,15 @@ defmodule Quaff.Constants do def exception(opts) do file = opts[:file] || "" line = opts[:line] || -1 - msg = opts[:message] || - List.to_string(:io_lib.format( opts[:format], opts[:items] )) - msg = msg <> List.to_string(:io_lib.format( "~n at ~s line ~p", [file,line] )) + msg = opts[:message] || List.to_string(:io_lib.format(opts[:format], opts[:items])) + msg = msg <> List.to_string(:io_lib.format("~n at ~s line ~p", [file, line])) %__MODULE__{message: msg} end end defmacro include(header) do quote do - Quaff.Constants.include(unquote(header),[]) + Quaff.Constants.include(unquote(header), []) end end @@ -40,80 +39,121 @@ defmodule Quaff.Constants do :ok == Macro.validate(header) -> {hd, []} = header |> Code.eval_quoted([], __CALLER__) hd - true -> header + + true -> + header end + use_constants = options[:constants] || :all do_export = options[:export] || false - in_module = options[:module] || Macro.expand(quote do __MODULE__ end,__CALLER__) + + in_module = + options[:module] || + Macro.expand( + quote do + __MODULE__ + end, + __CALLER__ + ) + rel_dir = cond do options[:relative_to] && :ok == Macro.validate(options[:relative_to]) -> {rel_to, []} = options[:relative_to] |> Code.eval_quoted([], __CALLER__) rel_to - options[:relative_to] -> options[:relative_to] - true -> Macro.expand(quote do __DIR__ end, __CALLER__) + + options[:relative_to] -> + options[:relative_to] + + true -> + Macro.expand( + quote do + __DIR__ + end, + __CALLER__ + ) end + inc_dir = cond do options[:include] && :ok == Macro.validate(options[:include]) -> {inc, []} = options[:include] |> Code.eval_quoted([], __CALLER__) inc - options[:include] -> options[:include] - true -> [Macro.expand(quote do __DIR__ end, __CALLER__)] + + options[:include] -> + options[:include] + + true -> + [ + Macro.expand( + quote do + __DIR__ + end, + __CALLER__ + ) + ] end + options = Keyword.put(options, :module, in_module) options = Keyword.put(options, :relative_to, rel_dir) options = Keyword.put(options, :include, inc_dir) - const = Enum.map(get_constants(header, options), - fn({c,v}) -> - {normalize_const(c),v} - end) - const = case use_constants do - :all -> const - _ -> - Enum.map(List.wrap(use_constants), - fn(c) -> - c = normalize_const(c) - {c,Keyword.fetch!(const,c)} - end - ) - end + + const = + Enum.map(get_constants(header, options), fn {c, v} -> + {normalize_const(c), v} + end) + + const = + case use_constants do + :all -> + const + + _ -> + Enum.map(List.wrap(use_constants), fn c -> + c = normalize_const(c) + {c, Keyword.fetch!(const, c)} + end) + end + attrs = - Enum.map( const, - fn({c,val}) -> - quote do - Module.put_attribute(__MODULE__, unquote(c), - unquote(Macro.escape(val))) - end - end) + Enum.map(const, fn {c, val} -> + quote do + Module.put_attribute(__MODULE__, unquote(c), unquote(Macro.escape(val))) + end + end) + funs = case do_export do true -> - Enum.map( const, - fn({c,_}) -> - {:ok,ident} = - Code.string_to_quoted(Atom.to_string(c)) - quote do - def unquote(ident) do - @unquote(ident) - end - end - end ) - _ -> [] + Enum.map(const, fn {c, _} -> + {:ok, ident} = Code.string_to_quoted(Atom.to_string(c)) + + quote do + def unquote(ident) do + @unquote ident + end + end + end) + + _ -> + [] end + attrs ++ funs end defmacro include_lib(header) do quote do - Quaff.Constants.include_lib(unquote(header),[]) + Quaff.Constants.include_lib(unquote(header), []) end end defmacro include_lib(header, options) do - opts = options |> - Macro.expand_once(__CALLER__) |> - Keyword.put(:include_lib, true) + opts = + options + |> Macro.expand_once(__CALLER__) + |> Keyword.put(:include_lib, true) + quote do Quaff.Constants.include(unquote(header), unquote(opts)) end @@ -122,405 +162,525 @@ defmodule Quaff.Constants do defp normalize_const(a) when is_atom(a) do normalize_const(Atom.to_string(a)) end + defp normalize_const(name) do c = String.first(name) + normed_str = case String.upcase(c) do - ^c -> "_"<>name + ^c -> "_" <> name _ -> name end + String.to_atom(normed_str) end def get_constants(header_file) do - get_constants(header_file,[]) + get_constants(header_file, []) end - def get_constants(header_file,options) do - incl_type = case options[:include_lib] do - true -> :macro_include_lib - _ -> :macro_include - end + def get_constants(header_file, options) do + incl_type = + case options[:include_lib] do + true -> :macro_include_lib + _ -> :macro_include + end + in_module = options[:module] || caller_module() || __MODULE__ - relative_dir = options[:relative_to] || System.cwd - include_dirs = List.flatten([Keyword.get_values(options,:include), - Keyword.get_values(options,:i)]) - include_dirs = Enum.map(include_dirs, - fn(d) -> Path.expand(d,relative_dir) end) - {:ok, abs_header, tree} = read_header(header_file, inc_type: incl_type, - relative_to: relative_dir, - include_path: include_dirs, - from_file: "x", - from_line: -1 ) - ctx = init_ctx(in_module,abs_header,include_dirs) - defs = find_defns(tree,ctx) - Enum.flat_map(defs, - fn({macro,all_arity}) -> - case Map.get(all_arity,0) do - nil -> [] - {[],defn} -> - case parse_constant(defn) do - nil -> [] - val -> [{macro,val}] - end - end - end) + relative_dir = options[:relative_to] || System.cwd() + + include_dirs = + List.flatten([Keyword.get_values(options, :include), Keyword.get_values(options, :i)]) + + include_dirs = Enum.map(include_dirs, fn d -> Path.expand(d, relative_dir) end) + + {:ok, abs_header, tree} = + read_header( + header_file, + inc_type: incl_type, + relative_to: relative_dir, + include_path: include_dirs, + from_file: "x", + from_line: -1 + ) + + ctx = init_ctx(in_module, abs_header, include_dirs) + defs = find_defns(tree, ctx) + + Enum.flat_map(defs, fn {macro, all_arity} -> + case Map.get(all_arity, 0) do + nil -> + [] + + {[], defn} -> + case parse_constant(defn) do + nil -> [] + val -> [{macro, val}] + end + end + end) end defp parse_constant(defn) do - case :erl_parse.parse_exprs(defn++[{:dot,0}]) do + case :erl_parse.parse_exprs(defn ++ [{:dot, 0}]) do {:ok, exprs} -> - case :erl_eval.exprs(exprs,[]) do + case :erl_eval.exprs(exprs, []) do {:value, val, _} -> case has_funs?(val) do true -> nil _ -> val end - _ -> nil + + _ -> + nil end - _ -> nil + + _ -> + nil end end - #funs don't appear to work as module attrs + # funs don't appear to work as module attrs defp has_funs?(f) when is_function(f) do true end + defp has_funs?(ls) when is_list(ls) do - Enum.any?(ls,&has_funs?/1) + Enum.any?(ls, &has_funs?/1) end + defp has_funs?(t) when is_tuple(t) do has_funs?(Tuple.to_list(t)) end + defp has_funs?(_) do false end - defp read_header(header_file, inc_type: incl_type, - relative_to: relative_dir, - include_path: include_path, - from_file: from_file, - from_line: from_line ) do - {:ok,realfile} = - case resolve_include(incl_type,header_file,relative_dir,include_path) do - {:ok,_} = res -> res - {:error,{:not_found,_}} -> - raise( CompileError, format: "Can't locate header ~s~n relative to: ~s~n include path was: ~p", - items: [header_file,relative_dir,include_path], - file: from_file, line: from_line ) + defp read_header( + header_file, + inc_type: incl_type, + relative_to: relative_dir, + include_path: include_path, + from_file: from_file, + from_line: from_line + ) do + {:ok, realfile} = + case resolve_include(incl_type, header_file, relative_dir, include_path) do + {:ok, _} = res -> + res + + {:error, {:not_found, _}} -> + raise( + CompileError, + format: "Can't locate header ~s~n relative to: ~s~n include path was: ~p", + items: [header_file, relative_dir, include_path], + file: from_file, + line: from_line + ) end - {:ok,contents} = + + {:ok, contents} = case File.read(realfile) do - {:ok,_} = res -> res - {:error,reason} -> - raise( CompileError, format: "Error reading ~s: ~p", - items: [realfile,reason], - file: from_file, line: from_line ) + {:ok, _} = res -> + res + + {:error, reason} -> + raise( + CompileError, + format: "Error reading ~s: ~p", + items: [realfile, reason], + file: from_file, + line: from_line + ) end + contents = String.to_charlist(contents) - {:ok,h_toks,_} = :erl_scan.string(contents,{1,1}) + {:ok, h_toks, _} = :erl_scan.string(contents, {1, 1}) tokens = mark_keywords(h_toks) {:ok, toks} = :aleppo_parser.parse(tokens) {:ok, realfile, toks} end - #this does not work correctly for tail calls + # this does not work correctly for tail calls defp caller_module() do trace = - try do throw(:not_a_problem) - catch :not_a_problem -> - :erlang.get_stacktrace() + try do + throw(:not_a_problem) + catch + :not_a_problem -> + :erlang.get_stacktrace() end - modules = Enum.map(trace,fn({m,_,_,_}) -> m end) - List.first(Enum.filter(modules,fn(__MODULE__) -> - false - (_) -> - true - end)) - end + modules = Enum.map(trace, fn {m, _, _, _} -> m end) - defp resolve_include(incl_type,file,rel,incl_path) when is_list(file) do - resolve_include(incl_type,List.to_string(file),rel,incl_path) + List.first( + Enum.filter(modules, fn + __MODULE__ -> + false + + _ -> + true + end) + ) end - defp resolve_include(:macro_include_lib, ("/"<>_)=abs_file,_,_) do + defp resolve_include(incl_type, file, rel, incl_path) when is_list(file) do + resolve_include(incl_type, List.to_string(file), rel, incl_path) + end + + defp resolve_include(:macro_include_lib, "/" <> _ = abs_file, _, _) do case File.exists?(abs_file) do - true -> {:ok, abs_file} + true -> + {:ok, abs_file} + _ -> - {:error, {:not_found,abs_file}} + {:error, {:not_found, abs_file}} end end - defp resolve_include(:macro_include_lib, ("./"<>_)=rel_file,rel,_) do + defp resolve_include(:macro_include_lib, "./" <> _ = rel_file, rel, _) do unrelative = Path.expand(rel_file, rel) + case File.exists?(unrelative) do - true -> {:ok, unrelative} + true -> + {:ok, unrelative} + _ -> - {:error, {:not_found,unrelative}} + {:error, {:not_found, unrelative}} end end - defp resolve_include(:macro_include_lib, ("../"<>_)=rel_file,rel,_) do + defp resolve_include(:macro_include_lib, "../" <> _ = rel_file, rel, _) do unrelative = Path.expand(rel_file, rel) + case File.exists?(unrelative) do - true -> {:ok, unrelative} + true -> + {:ok, unrelative} + _ -> - {:error, {:not_found,unrelative}} + {:error, {:not_found, unrelative}} end end - defp resolve_include(:macro_include_lib, file,_,_) do - #TODO make macro to generate is_windows based on drive_list - is_window_file = fn (f) -> - f |> - case do - "c:/" <> _-> true - _ -> false - end + defp resolve_include(:macro_include_lib, file, _, _) do + # TODO make macro to generate is_windows based on drive_list + is_window_file = fn f -> + f + |> case do + "c:/" <> _ -> true + _ -> false + end end cond do is_window_file.(file) -> - resolve_windows_include = fn (:macro_include_lib) -> - file |> - File.exists?() |> - case do - true -> {:ok, file} - _ -> - {:error, {:not_found, file}} - end + resolve_windows_include = fn :macro_include_lib -> + file + |> File.exists?() + |> case do + true -> + {:ok, file} + + _ -> + {:error, {:not_found, file}} + end end + resolve_windows_include.(:macro_include_lib) + true -> - [app_name|file_path] = :filename.split(String.to_charlist(file)) + [app_name | file_path] = :filename.split(String.to_charlist(file)) + case :code.lib_dir(List.to_atom(app_name)) do {:error, _} -> - {:error, {:not_found,file}} + {:error, {:not_found, file}} + app_lib -> - {:ok,List.to_string(:filename.join([app_lib|file_path]))} + {:ok, List.to_string(:filename.join([app_lib | file_path]))} end end end - defp resolve_include(:macro_include,file,rel,incl_path) do - resolve_include(file,rel,incl_path) + defp resolve_include(:macro_include, file, rel, incl_path) do + resolve_include(file, rel, incl_path) end - defp resolve_include("$"<>incl,rel,incl_path) do - [_,var_name,suff] = Regex.run( Regex.compile!("(\w+)(.*)$"), incl ) - resolve_include((System.get_env(var_name)||"")<>suff,rel,incl_path) + defp resolve_include("$" <> incl, rel, incl_path) do + [_, var_name, suff] = Regex.run(Regex.compile!("(\w+)(.*)$"), incl) + resolve_include((System.get_env(var_name) || "") <> suff, rel, incl_path) end - defp resolve_include(("/"<>_)=abs_file,_,_) do + + defp resolve_include("/" <> _ = abs_file, _, _) do case File.exists?(abs_file) do - true -> {:ok, abs_file} + true -> + {:ok, abs_file} + _ -> - {:error, {:not_found,abs_file}} + {:error, {:not_found, abs_file}} end end - defp resolve_include(file,relative_to,include_path) when is_binary(relative_to) do - unrelative = Path.expand(file,relative_to) + + defp resolve_include(file, relative_to, include_path) when is_binary(relative_to) do + unrelative = Path.expand(file, relative_to) + case File.exists?(unrelative) do - true -> {:ok, unrelative} + true -> + {:ok, unrelative} + _ -> case file do - "./"<>_ -> {:error, {:not_found,file}} - "../"<>_ -> {:error, {:not_found,file}} - _ -> resolve_include(file,include_path) + "./" <> _ -> {:error, {:not_found, file}} + "../" <> _ -> {:error, {:not_found, file}} + _ -> resolve_include(file, include_path) end end end - defp resolve_include(file,[inc|include_path]) do - full = Path.expand(file,inc) + + defp resolve_include(file, [inc | include_path]) do + full = Path.expand(file, inc) + case File.exists?(full) do - true -> {:ok, full} + true -> + {:ok, full} + _ -> - resolve_include(file,include_path) + resolve_include(file, include_path) end end - defp resolve_include(file,[]) do - #last ditch effort + + defp resolve_include(file, []) do + # last ditch effort case :code.where_is_file(String.to_charlist(file)) do - :non_existing -> {:error, {:not_found,file}} - filename -> {:ok, List.to_string(filename)} + :non_existing -> {:error, {:not_found, file}} + filename -> {:ok, List.to_string(filename)} end end - - defp expand_nested(tokens,ctx) do - expand_nested(tokens,[],ctx) + defp expand_nested(tokens, ctx) do + expand_nested(tokens, [], ctx) end - defp expand_nested([],acc,_) do + + defp expand_nested([], acc, _) do Enum.reverse(acc) end - defp expand_nested([{:macro,{_,loc,:LINE}}|tokens], acc, ctx) do - line = case loc do - {line,_col} -> line - _ -> loc - end - expand_nested(tokens, [{:integer,loc,line}|acc], ctx) + + defp expand_nested([{:macro, {_, loc, :LINE}} | tokens], acc, ctx) do + line = + case loc do + {line, _col} -> line + _ -> loc + end + + expand_nested(tokens, [{:integer, loc, line} | acc], ctx) end - defp expand_nested([{:macro,{_,_,name}}|tokens], acc, ctx) do - {[],def_toks} = get_def(ctx,{name,0}) - expand_nested( tokens, Enum.reverse(def_toks) ++ acc, ctx) + + defp expand_nested([{:macro, {_, _, name}} | tokens], acc, ctx) do + {[], def_toks} = get_def(ctx, {name, 0}) + expand_nested(tokens, Enum.reverse(def_toks) ++ acc, ctx) end - defp expand_nested([{:macro,{_,_,name},args}|tokens], acc, ctx) do - {arg_names,def_toks} = get_def(ctx,{name,length(args)}) - arg_mapping = List.zip([arg_names,args]) + + defp expand_nested([{:macro, {_, _, name}, args} | tokens], acc, ctx) do + {arg_names, def_toks} = get_def(ctx, {name, length(args)}) + arg_mapping = List.zip([arg_names, args]) + filled_in = - Enum.flat_map(def_toks, - fn({:var,_,varname}=tok) -> - case Keyword.get(arg_mapping,varname) do - nil -> [tok] - replacement -> replacement - end - (tok) -> [tok] - end) - expand_nested(tokens,Enum.reverse(filled_in)++acc,ctx) + Enum.flat_map(def_toks, fn + {:var, _, varname} = tok -> + case Keyword.get(arg_mapping, varname) do + nil -> [tok] + replacement -> replacement + end + + tok -> + [tok] + end) + + expand_nested(tokens, Enum.reverse(filled_in) ++ acc, ctx) end - defp expand_nested([other|tokens],acc,ctx) do - expand_nested(tokens,[other|acc],ctx) + + defp expand_nested([other | tokens], acc, ctx) do + expand_nested(tokens, [other | acc], ctx) end - defp find_defns([],ctx) do + defp find_defns([], ctx) do defs_list(ctx) end - defp find_defns([{:eof,_}|tree],ctx) do - find_defns( tree, pop_file(ctx)) - end - defp find_defns([{:macro_define,{_,_,name}}|tree],ctx) do - find_defns( tree, put_def(ctx,{name,0},{[],true}) ) - end - defp find_defns([{:macro_define,{_,_,name},toks}|tree],ctx) do - expanded = expand_nested(toks,ctx) - find_defns( tree, put_def(ctx,{name,0},{[],expanded}) ) - end - defp find_defns([{:macro_define,{_,_,name},args,toks}|tree],ctx) do - expanded = expand_nested(toks,ctx) - arg_names = Enum.map(args, - fn([{:var,_,var_name}]) -> - var_name - end) - find_defns( tree, put_def(ctx,{name,length(args)},{arg_names,expanded}) ) - end - defp find_defns([{:macro_undef,{_,_,name}}|tree],ctx) do - find_defns( tree, rm_def(ctx,name) ) - end - defp find_defns([{incl_type,{:string,loc,file}}|tree],ctx) - when incl_type in [:macro_include,:macro_include_lib] do - {current_file,dir,includes} = get_paths(ctx) - line = case loc do - {ln,_} -> ln - ln -> ln - end - {:ok,abs_file,subtree} = read_header(file, inc_type: incl_type, - relative_to: dir, - include_path: includes, - from_file: current_file, - from_line: line ) - find_defns(subtree++tree,push_file(ctx,abs_file)) - end - defp find_defns([{:macro_ifdef,x,ifbody}|tree],ctx) do - find_defns([{:macro_ifdef,x,ifbody,[]}|tree],ctx) - end - defp find_defns([{:macro_ifndef,x,ifbody}|tree],ctx) do - find_defns([{:macro_ifdef,x,[],ifbody}|tree],ctx) - end - defp find_defns([{:macro_ifndef,x,ifbody,elsebody}|tree],ctx) do - find_defns([{:macro_ifdef,x,elsebody,ifbody}|tree],ctx) - end - defp find_defns([{:macro_ifdef,{_,_,name},ifbody,elsebody}|tree],ctx) do - case has_def?(ctx,name) do - true -> find_defns(ifbody++tree,ctx) - false -> find_defns(elsebody++tree,ctx) + + defp find_defns([{:eof, _} | tree], ctx) do + find_defns(tree, pop_file(ctx)) + end + + defp find_defns([{:macro_define, {_, _, name}} | tree], ctx) do + find_defns(tree, put_def(ctx, {name, 0}, {[], true})) + end + + defp find_defns([{:macro_define, {_, _, name}, toks} | tree], ctx) do + expanded = expand_nested(toks, ctx) + find_defns(tree, put_def(ctx, {name, 0}, {[], expanded})) + end + + defp find_defns([{:macro_define, {_, _, name}, args, toks} | tree], ctx) do + expanded = expand_nested(toks, ctx) + + arg_names = + Enum.map(args, fn [{:var, _, var_name}] -> + var_name + end) + + find_defns(tree, put_def(ctx, {name, length(args)}, {arg_names, expanded})) + end + + defp find_defns([{:macro_undef, {_, _, name}} | tree], ctx) do + find_defns(tree, rm_def(ctx, name)) + end + + defp find_defns([{incl_type, {:string, loc, file}} | tree], ctx) + when incl_type in [:macro_include, :macro_include_lib] do + {current_file, dir, includes} = get_paths(ctx) + + line = + case loc do + {ln, _} -> ln + ln -> ln + end + + {:ok, abs_file, subtree} = + read_header( + file, + inc_type: incl_type, + relative_to: dir, + include_path: includes, + from_file: current_file, + from_line: line + ) + + find_defns(subtree ++ tree, push_file(ctx, abs_file)) + end + + defp find_defns([{:macro_ifdef, x, ifbody} | tree], ctx) do + find_defns([{:macro_ifdef, x, ifbody, []} | tree], ctx) + end + + defp find_defns([{:macro_ifndef, x, ifbody} | tree], ctx) do + find_defns([{:macro_ifdef, x, [], ifbody} | tree], ctx) + end + + defp find_defns([{:macro_ifndef, x, ifbody, elsebody} | tree], ctx) do + find_defns([{:macro_ifdef, x, elsebody, ifbody} | tree], ctx) + end + + defp find_defns([{:macro_ifdef, {_, _, name}, ifbody, elsebody} | tree], ctx) do + case has_def?(ctx, name) do + true -> find_defns(ifbody ++ tree, ctx) + false -> find_defns(elsebody ++ tree, ctx) end end - defp find_defns([_other|tree],ctx) do - find_defns(tree,ctx) + + defp find_defns([_other | tree], ctx) do + find_defns(tree, ctx) end defp mark_keywords(tokens) do - mark_keywords(tokens,[]) + mark_keywords(tokens, []) end - defp mark_keywords([{:"-",{_,1}}=dash,{:atom,loc,kw}|tokens],out) - when kw in [:define,:ifdef,:ifndef,:"else",:endif,:undef,:include,:include_lib] do - keyword = String.to_atom(Atom.to_string(kw)<>"_keyword") - mark_keywords(tokens, [{keyword,loc},dash|out]) + + defp mark_keywords([{:-, {_, 1}} = dash, {:atom, loc, kw} | tokens], out) + when kw in [:define, :ifdef, :ifndef, :else, :endif, :undef, :include, :include_lib] do + keyword = String.to_atom(Atom.to_string(kw) <> "_keyword") + mark_keywords(tokens, [{keyword, loc}, dash | out]) end - defp mark_keywords([tok|tokens],out) do - mark_keywords(tokens,[tok|out]) + + defp mark_keywords([tok | tokens], out) do + mark_keywords(tokens, [tok | out]) end - defp mark_keywords([],out) do + + defp mark_keywords([], out) do Enum.reverse(out) end - Record.defrecordp :qc_ctx, [:defs, :files, :relative_dirs, :includes] + Record.defrecordp(:qc_ctx, [:defs, :files, :relative_dirs, :includes]) ## defs dictionary: defp init_ctx() do - qc_ctx( defs: Map.new(), files: [], relative_dirs: [], includes: [] ) + qc_ctx(defs: Map.new(), files: [], relative_dirs: [], includes: []) end - defp init_ctx(module,file,incls) do - defs = [{ {:MODULE,0},{[],[{:atom,{1,1},module}]} }, - { {:MODULE_STRING,0},{[],[{:string,{1,1},Atom.to_charlist(module)}]} }] - ctx = qc_ctx(init_ctx(),includes: incls) - put_defs( push_file(ctx, file), defs ) + + defp init_ctx(module, file, incls) do + defs = [ + {{:MODULE, 0}, {[], [{:atom, {1, 1}, module}]}}, + {{:MODULE_STRING, 0}, {[], [{:string, {1, 1}, Atom.to_charlist(module)}]}} + ] + + ctx = qc_ctx(init_ctx(), includes: incls) + put_defs(push_file(ctx, file), defs) end - defp push_file(qc_ctx( files: files, - relative_dirs: rels, - includes: incls )=ctx,file) do - ctx=put_def(ctx,{:FILE,0},{[],[{:string,{1,1},file}]}) + defp push_file( + qc_ctx( + files: files, + relative_dirs: rels, + includes: incls + ) = ctx, + file + ) do + ctx = put_def(ctx, {:FILE, 0}, {[], [{:string, {1, 1}, file}]}) dir = Path.dirname(file) - new_incl = Path.expand("../include",dir) - qc_ctx( ctx, files: [file|files], relative_dirs: [dir|rels], includes: [new_incl|incls] ) + new_incl = Path.expand("../include", dir) + qc_ctx(ctx, files: [file | files], relative_dirs: [dir | rels], includes: [new_incl | incls]) end - defp pop_file(qc_ctx( files: [_|files], - relative_dirs: [_|rels], - includes: [_|incls] )=ctx) do + defp pop_file( + qc_ctx( + files: [_ | files], + relative_dirs: [_ | rels], + includes: [_ | incls] + ) = ctx + ) do ctx = case files do - [old_file|_] -> - put_def(ctx,{:FILE,0},{[],[{:string,{1,1},old_file}]}) + [old_file | _] -> + put_def(ctx, {:FILE, 0}, {[], [{:string, {1, 1}, old_file}]}) + [] -> ctx end - qc_ctx( ctx, files: files, relative_dirs: rels, includes: incls ) + + qc_ctx(ctx, files: files, relative_dirs: rels, includes: incls) end - defp get_paths(qc_ctx( files: [f|_], relative_dirs: [rel|_], includes: incls )) do - {f,rel,incls} + defp get_paths(qc_ctx(files: [f | _], relative_dirs: [rel | _], includes: incls)) do + {f, rel, incls} end - defp get_def(qc_ctx( defs: defs ),{name,arity}) do - all_arity = Map.fetch!(defs,name) - Map.fetch!(all_arity,arity) + defp get_def(qc_ctx(defs: defs), {name, arity}) do + all_arity = Map.fetch!(defs, name) + Map.fetch!(all_arity, arity) end defp defs_list(qc_ctx(defs: defs)) do Map.to_list(defs) end - defp put_defs( ctx, defs ) when is_list(defs) do - Enum.reduce(defs,ctx,fn({d,defn},subctx) -> put_def(subctx,d,defn) end) + defp put_defs(ctx, defs) when is_list(defs) do + Enum.reduce(defs, ctx, fn {d, defn}, subctx -> put_def(subctx, d, defn) end) end - defp put_def( qc_ctx( defs: defs )=ctx,{name,arity},defn) do + defp put_def(qc_ctx(defs: defs) = ctx, {name, arity}, defn) do all_arity = - case Map.get(defs,name) do + case Map.get(defs, name) do nil -> Map.new() aa -> aa end - qc_ctx(ctx, defs: Map.put(defs,name,Map.put(all_arity,arity,defn))) - end - defp has_def?(qc_ctx(defs: defs),name) do - Map.has_key?(defs,name) + qc_ctx(ctx, defs: Map.put(defs, name, Map.put(all_arity, arity, defn))) end - defp rm_def(qc_ctx(defs: defs)=ctx,name) do - qc_ctx(ctx, defs: Map.delete(defs,name)) + defp has_def?(qc_ctx(defs: defs), name) do + Map.has_key?(defs, name) end + defp rm_def(qc_ctx(defs: defs) = ctx, name) do + qc_ctx(ctx, defs: Map.delete(defs, name)) + end end diff --git a/lib/debug.ex b/lib/debug.ex index b8d6c25..c8b6bc0 100755 --- a/lib/debug.ex +++ b/lib/debug.ex @@ -15,55 +15,61 @@ defmodule Quaff.Debug do def start() do :debugger.start() end + def load(module) do - load(module,[]) + load(module, []) end + def load(module, options) when is_atom(module) do case Atom.to_string(module) do - "Elixir."<>_ -> - load_ex(module,options) + "Elixir." <> _ -> + load_ex(module, options) + _ -> - call_i(module,options) + call_i(module, options) end end + def load(src, options) when is_binary(src) do case String.reverse(src) do - "xe."<>_ -> - load_ex(src,options) + "xe." <> _ -> + load_ex(src, options) + _ -> - call_i(src,options) + call_i(src, options) end end def nload(module) do - nload(module,[]) + nload(module, []) end def nload(module, options) do - load(module,Keyword.put(options,:all_nodes,true)) + load(module, Keyword.put(options, :all_nodes, true)) end defp load_ex(module, options) when is_atom(module) do mod_info = module.module_info() compiled_src = mod_info[:compile][:source] - {^module,beam_bin,beam_file} = :code.get_object_code(module) - #TODO: use code path to search for src --OR-- + {^module, beam_bin, beam_file} = :code.get_object_code(module) + # TODO: use code path to search for src --OR-- # add source option - #basename = :filename.basename(compiled_src) - call_i({module,compiled_src,beam_file,beam_bin},options) + # basename = :filename.basename(compiled_src) + call_i({module, compiled_src, beam_file, beam_bin}, options) end + defp load_ex(src, options) when is_binary(src) do mods = Code.load_file(src) - Enum.map(mods, - fn({mod,beam_bin}) -> - call_i({mod,String.to_charlist(src), - Atom.to_charlist(mod)++'.beam',beam_bin},options) - end) + + Enum.map(mods, fn {mod, beam_bin} -> + call_i({mod, String.to_charlist(src), Atom.to_charlist(mod) ++ '.beam', beam_bin}, options) + end) end - defp call_i(arg,options) do - case Keyword.get(options,:all_nodes,false) do + + defp call_i(arg, options) do + case Keyword.get(options, :all_nodes, false) do true -> :int.ni(arg) false -> :int.i(arg) end end -end \ No newline at end of file +end diff --git a/mix.exs b/mix.exs index 5335b6f..2e1c9f3 100755 --- a/mix.exs +++ b/mix.exs @@ -6,8 +6,9 @@ defmodule Quaff.Mixfile do app: :quaff, elixir: "~> 1.6", version: "0.1.1", - deps: deps(Mix.env), - description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", + deps: deps(Mix.env()), + description: + "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", package: package(), source_url: "https://github.com/aruki-delivery/quaff", homepage_url: "https://hex.pm/packages/quaff" @@ -23,13 +24,14 @@ defmodule Quaff.Mixfile do end defp deps(_) do - [{:aleppo, "~> 0.9.0"}, - {:ex_doc, ">= 0.0.0", only: :dev}] + [{:aleppo, "~> 0.9.0"}, {:ex_doc, ">= 0.0.0", only: :dev}] end def package do - [ maintainers: ["cblage"], + [ + maintainers: ["cblage"], licenses: ["Apache License 2.0"], - links: %{"GitHub" => "https://github.com/aruki-delivery/quaff" } ] + links: %{"GitHub" => "https://github.com/aruki-delivery/quaff"} + ] end end diff --git a/test/constants_test.exs b/test/constants_test.exs index 28c83dd..0cb3310 100755 --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -4,31 +4,32 @@ defmodule Quaff.Constants.Test do require Quaff.Constants alias Quaff.Constants, as: C - #simple test headers + # simple test headers C.include("test1.hrl", export: true) C.include("test2.hrl") C.include("test3_inc.hrl") - #include various headers from otp, to sanity check basic parsing + # include various headers from otp, to sanity check basic parsing C.include_lib("eunit/include/eunit.hrl") C.include_lib("stdlib/include/erl_bits.hrl") C.include_lib("stdlib/include/erl_compile.hrl") C.include_lib("kernel/include/file.hrl") - #these files include others: + # these files include others: C.include_lib("snmp/include/snmp_tables.hrl") C.include_lib("inets/include/httpd.hrl") - #C.include_lib("/public_key.hrl") + # C.include_lib("/public_key.hrl") C.include_lib("public_key/include/public_key.hrl") - #relative paths - C.include_lib(Path.expand("#{__DIR__}/../include/more_test.hrl"), - include: Path.expand("#{__DIR__}/../include/")) + # relative paths + C.include_lib( + Path.expand("#{__DIR__}/../include/more_test.hrl"), + include: Path.expand("#{__DIR__}/../include/") + ) + C.include_lib("../include/more_test.hrl") C.include_lib("./test1.hrl") C.include_lib(Path.absname("#{__DIR__}/../include/more_test.hrl")) - - test "simple constants" do assert @_SIMPLE_1 == 1 assert @simple_2 == 2 @@ -65,4 +66,4 @@ defmodule Quaff.Constants.Test do assert is_integer(@_SIZEOF_CHAR) assert is_integer(@_SIZEOF_INT) end -end \ No newline at end of file +end diff --git a/test/debug_test.exs b/test/debug_test.exs index 50e6d26..8764fdb 100755 --- a/test/debug_test.exs +++ b/test/debug_test.exs @@ -8,23 +8,26 @@ defmodule Quaff.Debug.Test do setup context do if context[:debugger] do :meck.new(:debugger) - :meck.expect(:debugger,:start,fn() -> {:ok,self()} end) + :meck.expect(:debugger, :start, fn -> {:ok, self()} end) end + if context[:int] do :meck.new(:int) - :meck.expect(:int,:i,fn(_) -> :ok end) - :meck.expect(:int,:ni,fn(_) -> :ok end) + :meck.expect(:int, :i, fn _ -> :ok end) + :meck.expect(:int, :ni, fn _ -> :ok end) end - on_exit(context,fn() -> - :meck.unload() - end) + + on_exit(context, fn -> + :meck.unload() + end) + :ok end @tag :debugger test "debug start" do Dbg.start() - assert :meck.called(:debugger,:start,[]) + assert :meck.called(:debugger, :start, []) assert :meck.validate(:debugger) end @@ -47,57 +50,73 @@ defmodule Quaff.Debug.Test do Dbg.load(Quaff.Constants) ex_pat = Regex.compile!("constants\.ex$") beam_pat = Regex.compile!("Elixir\.Quaff\.Constants\.beam$") - assert called_pattern(:int,:i, - fn([{Quaff.Constants,src,beam,bb}]) - when is_binary(bb) -> - Regex.match?(ex_pat, - List.to_string(src)) and - Regex.match?(beam_pat, - List.to_string(beam)) - (_) -> false - end) + + assert called_pattern(:int, :i, fn + [{Quaff.Constants, src, beam, bb}] + when is_binary(bb) -> + Regex.match?(ex_pat, List.to_string(src)) and + Regex.match?(beam_pat, List.to_string(beam)) + + _ -> + false + end) + assert :meck.validate(:int) end def dummy_was_loaded(f) do - called_pattern(:int,f, - fn([{Dummy1,'test/dummy.ex','Elixir.Dummy1.beam',bb}]) - when is_binary(bb) -> - true - (_) -> false - end) - called_pattern(:int,f, - fn([{Dummy2,'test/dummy.ex','Elixir.Dummy2.beam',bb}]) - when is_binary(bb) -> - true - (_) -> false - end) + called_pattern(:int, f, fn + [{Dummy1, 'test/dummy.ex', 'Elixir.Dummy1.beam', bb}] + when is_binary(bb) -> + true + + _ -> + false + end) + + called_pattern(:int, f, fn + [{Dummy2, 'test/dummy.ex', 'Elixir.Dummy2.beam', bb}] + when is_binary(bb) -> + true + + _ -> + false + end) + true end - - def called_pattern(mod,f,scanner) do + def called_pattern(mod, f, scanner) do hist = :meck.history(mod) - case Enum.reduce( hist, {[],false}, - fn(_,{_,true}) -> - {nil,true} - ({_pid,{mod1,f1,args},_res},{checked,false}) when mod1 == mod and f1 == f -> - case scanner.(args) do - true -> {nil,true} - _ -> {[args|checked],false} - end - (_,acc) -> acc - end ) do - {nil,true} -> + + case Enum.reduce(hist, {[], false}, fn + _, {_, true} -> + {nil, true} + + {_pid, {mod1, f1, args}, _res}, {checked, false} when mod1 == mod and f1 == f -> + case scanner.(args) do + true -> {nil, true} + _ -> {[args | checked], false} + end + + _, acc -> + acc + end) do + {nil, true} -> true - {calls,false} -> - prn_calls = Enum.map(calls, - fn([{a,b,c,x}]) when byte_size(x) > 20 -> - [{a,b,c,:"[binary]"}] - (x) -> x - end) - :io.format("No matching call:~n~p~n",[prn_calls]) + + {calls, false} -> + prn_calls = + Enum.map(calls, fn + [{a, b, c, x}] when byte_size(x) > 20 -> + [{a, b, c, :"[binary]"}] + + x -> + x + end) + + :io.format("No matching call:~n~p~n", [prn_calls]) false end end -end \ No newline at end of file +end diff --git a/test/dummy.ex b/test/dummy.ex index af4e414..5b8ab57 100755 --- a/test/dummy.ex +++ b/test/dummy.ex @@ -12,4 +12,4 @@ defmodule Dummy2 do def x() do 1 end -end \ No newline at end of file +end diff --git a/test/test_helper.exs b/test/test_helper.exs index 8516c83..869559e 100755 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1 +1 @@ -ExUnit.start \ No newline at end of file +ExUnit.start() From addc47051700a5d7f011c320b788bf720cbe1749 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 03:01:22 +0100 Subject: [PATCH 22/39] moar readme --- README.md | 17 +++++++++++++++++ src/quaff.app.src | 6 ------ 2 files changed, 17 insertions(+), 6 deletions(-) delete mode 100755 src/quaff.app.src diff --git a/README.md b/README.md index 6b3a004..fd2541a 100755 --- a/README.md +++ b/README.md @@ -5,6 +5,23 @@ Quaff Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa). +All contributions are welcome. + +Installation +===== + +Using [https://hex.pm/packages/quaff](hex.pm) (recommended way) + +Simply add ```{:quaff, "~> 0.1"}``` to your project's ```mix.exs``` file, in the dependencies list and run ```mix deps.get quaff```. + +### Example +```elixir +defp deps do + [{:quaff, "~> 0.1"},] +end +``` + + Quaff.Constants --------------- diff --git a/src/quaff.app.src b/src/quaff.app.src deleted file mode 100755 index 62228ff..0000000 --- a/src/quaff.app.src +++ /dev/null @@ -1,6 +0,0 @@ -{application,quaff, - [ - { description, "Quaff the Elixir" }, - { vsn, "0.0.1" }, - { modules, [ 'Elixir.Quaff.Constants' ] } -] }. From 1efcdf76eb7f8ad949be5da73ef27101e9a60aa9 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 03:10:03 +0100 Subject: [PATCH 23/39] new formatting --- .formatter.exs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/.formatter.exs b/.formatter.exs index c3383c3..ba9ede7 100755 --- a/.formatter.exs +++ b/.formatter.exs @@ -1,13 +1,21 @@ -# Used by "mix format" and to export configuration. -export_locals_without_parens = [ - run: 1, - run: 2, - activity: 1, - activity: 2 -] - [ - inputs: ["{mix,.formatter,.json}.exs", "{config,lib,test}/**/*.{ex,exs}"], - locals_without_parens: export_locals_without_parens, - export: [locals_without_parens: export_locals_without_parens] + inputs: [ + "lib/*/{lib,unicode,test}/**/*.{ex,exs}", + "lib/*/mix.exs" + ], + + locals_without_parens: [ + # Formatter tests + assert_format: 2, + assert_format: 3, + assert_same: 1, + assert_same: 2, + + # Errors tests + assert_eval_raise: 3, + + # Mix tests + in_fixture: 2, + in_tmp: 2 + ] ] \ No newline at end of file From 5456aa9e4b68d3b8ceb0d929fb5f2b4d5f8d30d5 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 04:10:02 +0100 Subject: [PATCH 24/39] 102 --- docs/all.json | 1 + mix.exs | 28 +++++++++++++++++++--------- package.exs | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) create mode 100755 docs/all.json diff --git a/docs/all.json b/docs/all.json new file mode 100755 index 0000000..510a63d --- /dev/null +++ b/docs/all.json @@ -0,0 +1 @@ +{"args":[],"branch_name":"master","client_name":"inch_ex","client_version":"0.5.6","git_repo_url":"https://github.com/aruki-delivery/quaff.git","language":"elixir","objects":[{"id":"Quaff.Constants","module":"Elixir.Quaff.Constants","moduledoc":null,"object_type":"ModuleObject","source":"lib/constants.ex:14","type":null},{"id":"Quaff.Constants.CompileError","module":"Elixir.Quaff.Constants.CompileError","moduledoc":null,"object_type":"ModuleObject","source":"lib/constants.ex:18","type":"exception"},{"id":"Quaff.Debug","module":"Elixir.Quaff.Debug","moduledoc":null,"object_type":"ModuleObject","source":"lib/debug.ex:14","type":null},{"arity":1,"doc":null,"id":"get_constants/1","module_id":"Quaff.Constants","name":"get_constants","object_type":"FunctionObject","signature":[["header_file",[],null]],"source":"lib/constants.ex:178","type":"def"},{"arity":2,"doc":null,"id":"get_constants/2","module_id":"Quaff.Constants","name":"get_constants","object_type":"FunctionObject","signature":[["header_file",[],null],["options",[],null]],"source":"lib/constants.ex:182","type":"def"},{"arity":1,"doc":null,"id":"include/1","module_id":"Quaff.Constants","name":"include","object_type":"FunctionObject","signature":[["header",[],null]],"source":"lib/constants.ex:30","type":"defmacro"},{"arity":2,"doc":null,"id":"include/2","module_id":"Quaff.Constants","name":"include","object_type":"FunctionObject","signature":[["header",[],null],["options",[],null]],"source":"lib/constants.ex:36","type":"defmacro"},{"arity":1,"doc":null,"id":"include_lib/1","module_id":"Quaff.Constants","name":"include_lib","object_type":"FunctionObject","signature":[["header",[],null]],"source":"lib/constants.ex:145","type":"defmacro"},{"arity":2,"doc":null,"id":"include_lib/2","module_id":"Quaff.Constants","name":"include_lib","object_type":"FunctionObject","signature":[["header",[],null],["options",[],null]],"source":"lib/constants.ex:151","type":"defmacro"},{"arity":1,"doc":null,"id":"exception/1","module_id":"Quaff.Constants.CompileError","name":"exception","object_type":"FunctionObject","signature":[["msg",[],null]],"source":"lib/constants.ex:19","type":"def"},{"arity":1,"doc":null,"id":"message/1","module_id":"Quaff.Constants.CompileError","name":"message","object_type":"FunctionObject","signature":[["exception",[],null]],"source":"lib/constants.ex:19","type":"def"},{"arity":1,"doc":null,"id":"load/1","module_id":"Quaff.Debug","name":"load","object_type":"FunctionObject","signature":[["module",[],null]],"source":"lib/debug.ex:19","type":"def"},{"arity":2,"doc":null,"id":"load/2","module_id":"Quaff.Debug","name":"load","object_type":"FunctionObject","signature":[["module",[],null],["options",[],null]],"source":"lib/debug.ex:23","type":"def"},{"arity":1,"doc":null,"id":"nload/1","module_id":"Quaff.Debug","name":"nload","object_type":"FunctionObject","signature":[["module",[],null]],"source":"lib/debug.ex:43","type":"def"},{"arity":2,"doc":null,"id":"nload/2","module_id":"Quaff.Debug","name":"nload","object_type":"FunctionObject","signature":[["module",[],null],["options",[],null]],"source":"lib/debug.ex:47","type":"def"},{"arity":0,"doc":null,"id":"start/0","module_id":"Quaff.Debug","name":"start","object_type":"FunctionObject","signature":[],"source":"lib/debug.ex:15","type":"def"}],"revision":"1efcdf76eb7f8ad949be5da73ef27101e9a60aa9","shell":true} \ No newline at end of file diff --git a/mix.exs b/mix.exs index 2e1c9f3..e512f26 100755 --- a/mix.exs +++ b/mix.exs @@ -1,31 +1,41 @@ -defmodule Quaff.Mixfile do +defmodule Quaff_012.Mixfile do use Mix.Project + def project do + elixirc_defaults = [debug_info: true, ignore_module_conflict: true, docs: true] [ app: :quaff, elixir: "~> 1.6", - version: "0.1.1", + version: "0.1.2", deps: deps(Mix.env()), + elixirc_options: elixirc_defaults ++ options(Mix.env()), + dialyzer: [paths: ["_build/shared/lib/mqttex/ebin"]], description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", package: package(), source_url: "https://github.com/aruki-delivery/quaff", - homepage_url: "https://hex.pm/packages/quaff" + homepage_url: "https://hex.pm/packages/quaff", + docs: [readme: true], ] end + defp options(env) when env in [:dev, :test], do: [exlager_level: :debug, exlager_truncation_size: 8096] + defp options(_), do: [] + + def application do [] end - defp deps(:test) do - [{:meck, "~> 0.8.9"}] ++ deps(:prod) - end + def deps(:prod), do: aleppo() + def deps(env) when env in [:dev, :test, :docs], do: ex_doc() ++ inch_ex() ++ credo() ++ aleppo() ++ meck() - defp deps(_) do - [{:aleppo, "~> 0.9.0"}, {:ex_doc, ">= 0.0.0", only: :dev}] - end + defp aleppo, do: [{:aleppo, "~> 0.9.0"}] + defp credo, do: [{:credo, github: "cblage/credo", branch: "master", only: [:dev, :test], runtime: false}] + defp inch_ex, do: [{:inch_ex, github: "cblage/inch_ex", branch: "master", only: [:dev, :test], runtime: false}] + defp ex_doc, do: [{:ex_doc, "~> 0.16", only: :dev, runtime: false}] + defp meck, do: [{:meck, "~> 0.8.9"}] def package do [ diff --git a/package.exs b/package.exs index 70294ff..00f7ba5 100755 --- a/package.exs +++ b/package.exs @@ -1,7 +1,7 @@ Expm.Package.new( name: "quaff", description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", - version: "0.1.1", + version: "0.1.2", keywords: ["Elixir", "erlang", "tools", "utilities"], licenses: [[name: "Apache License 2.0"]], maintainers: [ From 684ac4babc300b940fe995c8684b2a5ef1b55a1e Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 04:12:23 +0100 Subject: [PATCH 25/39] docs --- doc/404.html | 4 ++-- doc/Quaff.Constants.CompileError.html | 12 ++++++------ doc/Quaff.Constants.html | 20 ++++++++++---------- doc/Quaff.Debug.html | 18 +++++++++--------- doc/api-reference.html | 6 +++--- doc/index.html | 2 +- doc/search.html | 4 ++-- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/doc/404.html b/doc/404.html index e95e9db..e52971a 100755 --- a/doc/404.html +++ b/doc/404.html @@ -5,7 +5,7 @@ - 404 – quaff v0.1.1 + 404 – quaff v0.1.2 @@ -37,7 +37,7 @@

    quaff

    diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html index 2dcf66f..74c4706 100755 --- a/doc/Quaff.Constants.CompileError.html +++ b/doc/Quaff.Constants.CompileError.html @@ -5,7 +5,7 @@ - Quaff.Constants.CompileError – quaff v0.1.1 + Quaff.Constants.CompileError – quaff v0.1.2 @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.1 + quaff v0.1.2 Quaff.Constants.CompileError exception - + View Source @@ -149,7 +149,7 @@

    exception(msg) - + View Source @@ -172,7 +172,7 @@

    message(exception) - + View Source diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html index 3e5b1cf..8a04e1b 100755 --- a/doc/Quaff.Constants.html +++ b/doc/Quaff.Constants.html @@ -5,7 +5,7 @@ - Quaff.Constants – quaff v0.1.1 + Quaff.Constants – quaff v0.1.2 @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.1 + quaff v0.1.2 Quaff.Constants - + View Source @@ -167,7 +167,7 @@

    get_constants(header_file) - + View Source @@ -189,7 +189,7 @@

    get_constants(header_file, options) - + View Source @@ -211,7 +211,7 @@

    include(header) - + View Source @@ -235,7 +235,7 @@

    include(header, options) - + View Source @@ -259,7 +259,7 @@

    include_lib(header) - + View Source @@ -283,7 +283,7 @@

    include_lib(header, options) - + View Source diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html index f5de6b8..f30e6b6 100755 --- a/doc/Quaff.Debug.html +++ b/doc/Quaff.Debug.html @@ -5,7 +5,7 @@ - Quaff.Debug – quaff v0.1.1 + Quaff.Debug – quaff v0.1.2 @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.1 + quaff v0.1.2 Quaff.Debug - + View Source @@ -161,7 +161,7 @@

    load(module) - + View Source @@ -183,7 +183,7 @@

    load(module, options) - + View Source @@ -205,7 +205,7 @@

    nload(module) - + View Source @@ -227,7 +227,7 @@

    nload(module, options) - + View Source @@ -249,7 +249,7 @@

    start() - + View Source diff --git a/doc/api-reference.html b/doc/api-reference.html index 93638c5..09e81f5 100755 --- a/doc/api-reference.html +++ b/doc/api-reference.html @@ -5,7 +5,7 @@ - API Reference – quaff v0.1.1 + API Reference – quaff v0.1.2 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.1 + quaff v0.1.2 API Reference

    diff --git a/doc/index.html b/doc/index.html index 6bbd437..0b89d3b 100755 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - quaff v0.1.1 – Documentation + quaff v0.1.2 – Documentation diff --git a/doc/search.html b/doc/search.html index d1b9af2..bdac7e6 100755 --- a/doc/search.html +++ b/doc/search.html @@ -5,7 +5,7 @@ - Search – quaff v0.1.1 + Search – quaff v0.1.2 @@ -37,7 +37,7 @@

    quaff

    From 5b3674e463cf7868706c197748996439b64b1b76 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 04:14:54 +0100 Subject: [PATCH 26/39] better travis --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index c6d125b..98f0e39 100755 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ language: erlang otp_release: - 17.1 - 17.0 + - 18.0 + - 19.0 + - 20.0 before_install: - wget http://s3.hex.pm/builds/elixir/v1.0.0.zip - unzip -d elixir v1.0.0.zip From d51de45e412f62a89ea0e404154bbef31a0db325 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 04:19:52 +0100 Subject: [PATCH 27/39] fix travis --- .travis.yml | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 98f0e39..24490d5 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,13 @@ -language: erlang -otp_release: - - 17.1 - - 17.0 - - 18.0 - - 19.0 - - 20.0 -before_install: - - wget http://s3.hex.pm/builds/elixir/v1.0.0.zip - - unzip -d elixir v1.0.0.zip -before_script: - - export PATH=`pwd`/elixir/bin:$PATH - - export MIX_ENV=test - - mix local.hex --force - - mix deps.get - - mix deps.compile -script: mix test +language: elixir +env: MIX_ENV=test +notifications: + recipients: + - carlos@carloslage.net +elixir: + - 1.6 +script: + - mix format --check-formatted + - MIX_ENV=test mix test +after_script: + - MIX_ENV=dev mix deps.get + - MIX_ENV=dev mix inch.report From 0fa5d2f07d4abdf54b8b0b1a4ec41557bb8a4fa7 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 05:44:04 +0100 Subject: [PATCH 28/39] readmes --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fd2541a..6390a5d 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -[![Build Status](https://travis-ci.org/qhool/quaff.png?branch=master)](https://travis-ci.org/qhool/quaff) +[![Hex.pm](https://img.shields.io/hexpm/v/quaff.svg?style=flat-square)](https://hex.pm/packages/quaff) +[![Build Status](https://travis-ci.org/aruki-delivery/quaff.svg?branch=master)](https://travis-ci.org/aruki-delivery/quaff) +[![Inline docs](http://inch-ci.org/github/cblage/elixir-json.svg?branch=develop)](http://inch-ci.org/aruki-delivery/quaff?branch=master) Quaff ===== From 61b56729156f9d2b5a0274cbee47fbe547461b69 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 05:46:13 +0100 Subject: [PATCH 29/39] link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6390a5d..2d24464 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Hex.pm](https://img.shields.io/hexpm/v/quaff.svg?style=flat-square)](https://hex.pm/packages/quaff) -[![Build Status](https://travis-ci.org/aruki-delivery/quaff.svg?branch=master)](https://travis-ci.org/aruki-delivery/quaff) +[![Build Status](https://travis-ci.org/aruki-delivery/quaff.svg?branch=master)](https://travis-ci.org/github/aruki-delivery/quaff) [![Inline docs](http://inch-ci.org/github/cblage/elixir-json.svg?branch=develop)](http://inch-ci.org/aruki-delivery/quaff?branch=master) Quaff From 92f77f8e75e4e8b0bed5660fbf12f79fddad2ef5 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 05:52:46 +0100 Subject: [PATCH 30/39] woop --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d24464..3e94598 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Hex.pm](https://img.shields.io/hexpm/v/quaff.svg?style=flat-square)](https://hex.pm/packages/quaff) [![Build Status](https://travis-ci.org/aruki-delivery/quaff.svg?branch=master)](https://travis-ci.org/github/aruki-delivery/quaff) -[![Inline docs](http://inch-ci.org/github/cblage/elixir-json.svg?branch=develop)](http://inch-ci.org/aruki-delivery/quaff?branch=master) +[![Inline docs](https://inch-ci.org/github/aruki-delivery/quaff.svg)](http://inch-ci.org/aruki-delivery/quaff?branch=master) Quaff ===== From ccdfcf970996a3e2d0c33a53018ffae6d146687c Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 05:54:37 +0100 Subject: [PATCH 31/39] 103 --- docs/all.json | 2 +- mix.exs | 4 ++-- package.exs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/all.json b/docs/all.json index 510a63d..ac12a59 100755 --- a/docs/all.json +++ b/docs/all.json @@ -1 +1 @@ -{"args":[],"branch_name":"master","client_name":"inch_ex","client_version":"0.5.6","git_repo_url":"https://github.com/aruki-delivery/quaff.git","language":"elixir","objects":[{"id":"Quaff.Constants","module":"Elixir.Quaff.Constants","moduledoc":null,"object_type":"ModuleObject","source":"lib/constants.ex:14","type":null},{"id":"Quaff.Constants.CompileError","module":"Elixir.Quaff.Constants.CompileError","moduledoc":null,"object_type":"ModuleObject","source":"lib/constants.ex:18","type":"exception"},{"id":"Quaff.Debug","module":"Elixir.Quaff.Debug","moduledoc":null,"object_type":"ModuleObject","source":"lib/debug.ex:14","type":null},{"arity":1,"doc":null,"id":"get_constants/1","module_id":"Quaff.Constants","name":"get_constants","object_type":"FunctionObject","signature":[["header_file",[],null]],"source":"lib/constants.ex:178","type":"def"},{"arity":2,"doc":null,"id":"get_constants/2","module_id":"Quaff.Constants","name":"get_constants","object_type":"FunctionObject","signature":[["header_file",[],null],["options",[],null]],"source":"lib/constants.ex:182","type":"def"},{"arity":1,"doc":null,"id":"include/1","module_id":"Quaff.Constants","name":"include","object_type":"FunctionObject","signature":[["header",[],null]],"source":"lib/constants.ex:30","type":"defmacro"},{"arity":2,"doc":null,"id":"include/2","module_id":"Quaff.Constants","name":"include","object_type":"FunctionObject","signature":[["header",[],null],["options",[],null]],"source":"lib/constants.ex:36","type":"defmacro"},{"arity":1,"doc":null,"id":"include_lib/1","module_id":"Quaff.Constants","name":"include_lib","object_type":"FunctionObject","signature":[["header",[],null]],"source":"lib/constants.ex:145","type":"defmacro"},{"arity":2,"doc":null,"id":"include_lib/2","module_id":"Quaff.Constants","name":"include_lib","object_type":"FunctionObject","signature":[["header",[],null],["options",[],null]],"source":"lib/constants.ex:151","type":"defmacro"},{"arity":1,"doc":null,"id":"exception/1","module_id":"Quaff.Constants.CompileError","name":"exception","object_type":"FunctionObject","signature":[["msg",[],null]],"source":"lib/constants.ex:19","type":"def"},{"arity":1,"doc":null,"id":"message/1","module_id":"Quaff.Constants.CompileError","name":"message","object_type":"FunctionObject","signature":[["exception",[],null]],"source":"lib/constants.ex:19","type":"def"},{"arity":1,"doc":null,"id":"load/1","module_id":"Quaff.Debug","name":"load","object_type":"FunctionObject","signature":[["module",[],null]],"source":"lib/debug.ex:19","type":"def"},{"arity":2,"doc":null,"id":"load/2","module_id":"Quaff.Debug","name":"load","object_type":"FunctionObject","signature":[["module",[],null],["options",[],null]],"source":"lib/debug.ex:23","type":"def"},{"arity":1,"doc":null,"id":"nload/1","module_id":"Quaff.Debug","name":"nload","object_type":"FunctionObject","signature":[["module",[],null]],"source":"lib/debug.ex:43","type":"def"},{"arity":2,"doc":null,"id":"nload/2","module_id":"Quaff.Debug","name":"nload","object_type":"FunctionObject","signature":[["module",[],null],["options",[],null]],"source":"lib/debug.ex:47","type":"def"},{"arity":0,"doc":null,"id":"start/0","module_id":"Quaff.Debug","name":"start","object_type":"FunctionObject","signature":[],"source":"lib/debug.ex:15","type":"def"}],"revision":"1efcdf76eb7f8ad949be5da73ef27101e9a60aa9","shell":true} \ No newline at end of file +{"args":[],"branch_name":"master","client_name":"inch_ex","client_version":"0.5.6","git_repo_url":"https://github.com/aruki-delivery/quaff.git","language":"elixir","objects":[{"id":"Quaff.Constants","module":"Elixir.Quaff.Constants","moduledoc":null,"object_type":"ModuleObject","source":"lib/constants.ex:14","type":null},{"id":"Quaff.Constants.CompileError","module":"Elixir.Quaff.Constants.CompileError","moduledoc":null,"object_type":"ModuleObject","source":"lib/constants.ex:18","type":"exception"},{"id":"Quaff.Debug","module":"Elixir.Quaff.Debug","moduledoc":null,"object_type":"ModuleObject","source":"lib/debug.ex:14","type":null},{"arity":1,"doc":null,"id":"get_constants/1","module_id":"Quaff.Constants","name":"get_constants","object_type":"FunctionObject","signature":[["header_file",[],null]],"source":"lib/constants.ex:178","type":"def"},{"arity":2,"doc":null,"id":"get_constants/2","module_id":"Quaff.Constants","name":"get_constants","object_type":"FunctionObject","signature":[["header_file",[],null],["options",[],null]],"source":"lib/constants.ex:182","type":"def"},{"arity":1,"doc":null,"id":"include/1","module_id":"Quaff.Constants","name":"include","object_type":"FunctionObject","signature":[["header",[],null]],"source":"lib/constants.ex:30","type":"defmacro"},{"arity":2,"doc":null,"id":"include/2","module_id":"Quaff.Constants","name":"include","object_type":"FunctionObject","signature":[["header",[],null],["options",[],null]],"source":"lib/constants.ex:36","type":"defmacro"},{"arity":1,"doc":null,"id":"include_lib/1","module_id":"Quaff.Constants","name":"include_lib","object_type":"FunctionObject","signature":[["header",[],null]],"source":"lib/constants.ex:145","type":"defmacro"},{"arity":2,"doc":null,"id":"include_lib/2","module_id":"Quaff.Constants","name":"include_lib","object_type":"FunctionObject","signature":[["header",[],null],["options",[],null]],"source":"lib/constants.ex:151","type":"defmacro"},{"arity":1,"doc":null,"id":"exception/1","module_id":"Quaff.Constants.CompileError","name":"exception","object_type":"FunctionObject","signature":[["msg",[],null]],"source":"lib/constants.ex:19","type":"def"},{"arity":1,"doc":null,"id":"message/1","module_id":"Quaff.Constants.CompileError","name":"message","object_type":"FunctionObject","signature":[["exception",[],null]],"source":"lib/constants.ex:19","type":"def"},{"arity":1,"doc":null,"id":"load/1","module_id":"Quaff.Debug","name":"load","object_type":"FunctionObject","signature":[["module",[],null]],"source":"lib/debug.ex:19","type":"def"},{"arity":2,"doc":null,"id":"load/2","module_id":"Quaff.Debug","name":"load","object_type":"FunctionObject","signature":[["module",[],null],["options",[],null]],"source":"lib/debug.ex:23","type":"def"},{"arity":1,"doc":null,"id":"nload/1","module_id":"Quaff.Debug","name":"nload","object_type":"FunctionObject","signature":[["module",[],null]],"source":"lib/debug.ex:43","type":"def"},{"arity":2,"doc":null,"id":"nload/2","module_id":"Quaff.Debug","name":"nload","object_type":"FunctionObject","signature":[["module",[],null],["options",[],null]],"source":"lib/debug.ex:47","type":"def"},{"arity":0,"doc":null,"id":"start/0","module_id":"Quaff.Debug","name":"start","object_type":"FunctionObject","signature":[],"source":"lib/debug.ex:15","type":"def"}],"revision":"92f77f8e75e4e8b0bed5660fbf12f79fddad2ef5","shell":true} \ No newline at end of file diff --git a/mix.exs b/mix.exs index e512f26..be0f78d 100755 --- a/mix.exs +++ b/mix.exs @@ -1,4 +1,4 @@ -defmodule Quaff_012.Mixfile do +defmodule Quaff_013.Mixfile do use Mix.Project @@ -7,7 +7,7 @@ defmodule Quaff_012.Mixfile do [ app: :quaff, elixir: "~> 1.6", - version: "0.1.2", + version: "0.1.3", deps: deps(Mix.env()), elixirc_options: elixirc_defaults ++ options(Mix.env()), dialyzer: [paths: ["_build/shared/lib/mqttex/ebin"]], diff --git a/package.exs b/package.exs index 00f7ba5..67b6c0f 100755 --- a/package.exs +++ b/package.exs @@ -1,7 +1,7 @@ Expm.Package.new( name: "quaff", description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", - version: "0.1.2", + version: "0.1.3", keywords: ["Elixir", "erlang", "tools", "utilities"], licenses: [[name: "Apache License 2.0"]], maintainers: [ From 15479e5ad2a3c950e68963cd4ef5d27e5298ee0e Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 05:55:25 +0100 Subject: [PATCH 32/39] foo --- doc/404.html | 4 ++-- doc/Quaff.Constants.CompileError.html | 6 +++--- doc/Quaff.Constants.html | 6 +++--- doc/Quaff.Debug.html | 6 +++--- doc/api-reference.html | 6 +++--- doc/index.html | 2 +- doc/search.html | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/doc/404.html b/doc/404.html index e52971a..eeab813 100755 --- a/doc/404.html +++ b/doc/404.html @@ -5,7 +5,7 @@ - 404 – quaff v0.1.2 + 404 – quaff v0.1.3 @@ -37,7 +37,7 @@

    quaff

    diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.Constants.CompileError.html index 74c4706..4d7eebc 100755 --- a/doc/Quaff.Constants.CompileError.html +++ b/doc/Quaff.Constants.CompileError.html @@ -5,7 +5,7 @@ - Quaff.Constants.CompileError – quaff v0.1.2 + Quaff.Constants.CompileError – quaff v0.1.3 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.2 + quaff v0.1.3 Quaff.Constants.CompileError exception diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html index 8a04e1b..47c5744 100755 --- a/doc/Quaff.Constants.html +++ b/doc/Quaff.Constants.html @@ -5,7 +5,7 @@ - Quaff.Constants – quaff v0.1.2 + Quaff.Constants – quaff v0.1.3 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.2 + quaff v0.1.3 Quaff.Constants diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html index f30e6b6..dcdeff0 100755 --- a/doc/Quaff.Debug.html +++ b/doc/Quaff.Debug.html @@ -5,7 +5,7 @@ - Quaff.Debug – quaff v0.1.2 + Quaff.Debug – quaff v0.1.3 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.2 + quaff v0.1.3 Quaff.Debug diff --git a/doc/api-reference.html b/doc/api-reference.html index 09e81f5..bc74532 100755 --- a/doc/api-reference.html +++ b/doc/api-reference.html @@ -5,7 +5,7 @@ - API Reference – quaff v0.1.2 + API Reference – quaff v0.1.3 @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.2 + quaff v0.1.3 API Reference

    diff --git a/doc/index.html b/doc/index.html index 0b89d3b..ee53f26 100755 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - quaff v0.1.2 – Documentation + quaff v0.1.3 – Documentation diff --git a/doc/search.html b/doc/search.html index bdac7e6..d009932 100755 --- a/doc/search.html +++ b/doc/search.html @@ -5,7 +5,7 @@ - Search – quaff v0.1.2 + Search – quaff v0.1.3 @@ -37,7 +37,7 @@

    quaff

    From a045d35ca2e42aea39583d7e85f68d0d3d458444 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 06:16:49 +0100 Subject: [PATCH 33/39] new interface --- README.md | 4 +- lib/quaff.ex | 163 ++++++++++++++++++++++ lib/{constants.ex => quaff_constants.ex} | 164 ++--------------------- test/constants_test.exs | 31 +++-- test/debug_test.exs | 2 +- 5 files changed, 190 insertions(+), 174 deletions(-) create mode 100755 lib/quaff.ex rename lib/{constants.ex => quaff_constants.ex} (79%) diff --git a/README.md b/README.md index 3e94598..d2e0f4e 100755 --- a/README.md +++ b/README.md @@ -36,8 +36,8 @@ app/include/app_header.hrl: lib/mymodule.ex: defmodule MyModule - require Quaff.Constants - Quaff.Constants.include_lib("app/include/app_header.hrl") + require Quaff + Quaff.include_lib("app/include/app_header.hrl") def myfunc() do @_CONSTANT_FROM_APP + 10 diff --git a/lib/quaff.ex b/lib/quaff.ex new file mode 100755 index 0000000..1ccec12 --- /dev/null +++ b/lib/quaff.ex @@ -0,0 +1,163 @@ +# Copyright 2018 Carlos Brito Lage + +# Licensed 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. +defmodule Quaff do + @moduledoc false + + require Logger + + defmodule CompileError do + defexception message: nil + + def exception(opts) do + file = opts[:file] || "" + line = opts[:line] || -1 + msg = opts[:message] || List.to_string(:io_lib.format(opts[:format], opts[:items])) + msg = msg <> List.to_string(:io_lib.format("~n at ~s line ~p", [file, line])) + %__MODULE__{message: msg} + end + end + + defmacro include(header) do + quote do + Quaff.include(unquote(header), []) + end + end + + defmacro include(header, options) do + header = + cond do + :ok == Macro.validate(header) -> + {hd, []} = header |> Code.eval_quoted([], __CALLER__) + hd + + true -> + header + end + + use_constants = options[:constants] || :all + do_export = options[:export] || false + + in_module = + options[:module] || + Macro.expand( + quote do + __MODULE__ + end, + __CALLER__ + ) + + rel_dir = + cond do + options[:relative_to] && :ok == Macro.validate(options[:relative_to]) -> + {rel_to, []} = options[:relative_to] |> Code.eval_quoted([], __CALLER__) + rel_to + + options[:relative_to] -> + options[:relative_to] + + true -> + Macro.expand( + quote do + __DIR__ + end, + __CALLER__ + ) + end + + inc_dir = + cond do + options[:include] && :ok == Macro.validate(options[:include]) -> + {inc, []} = options[:include] |> Code.eval_quoted([], __CALLER__) + inc + + options[:include] -> + options[:include] + + true -> + [ + Macro.expand( + quote do + __DIR__ + end, + __CALLER__ + ) + ] + end + + options = Keyword.put(options, :module, in_module) + options = Keyword.put(options, :relative_to, rel_dir) + options = Keyword.put(options, :include, inc_dir) + + const = + Enum.map(Quaff.Constants.get_constants(header, options), fn {c, v} -> + {Quaff.Constants.normalize_const(c), v} + end) + + const = + case use_constants do + :all -> + const + + _ -> + Enum.map(List.wrap(use_constants), fn c -> + c = Quaff.Constants.normalize_const(c) + {c, Keyword.fetch!(const, c)} + end) + end + + attrs = + Enum.map(const, fn {c, val} -> + quote do + Module.put_attribute(__MODULE__, unquote(c), unquote(Macro.escape(val))) + end + end) + + funs = + case do_export do + true -> + Enum.map(const, fn {c, _} -> + {:ok, ident} = Code.string_to_quoted(Atom.to_string(c)) + + quote do + def unquote(ident) do + @unquote ident + end + end + end) + + _ -> + [] + end + + attrs ++ funs + end + + defmacro include_lib(header) do + quote do + Quaff.include_lib(unquote(header), []) + end + end + + defmacro include_lib(header, options) do + opts = + options + |> Macro.expand_once(__CALLER__) + |> Keyword.put(:include_lib, true) + + quote do + Quaff.include(unquote(header), unquote(opts)) + end + end + +end diff --git a/lib/constants.ex b/lib/quaff_constants.ex similarity index 79% rename from lib/constants.ex rename to lib/quaff_constants.ex index 997aefd..da77f36 100755 --- a/lib/constants.ex +++ b/lib/quaff_constants.ex @@ -15,164 +15,18 @@ defmodule Quaff.Constants do require Record require Logger - defmodule CompileError do - defexception message: nil - - def exception(opts) do - file = opts[:file] || "" - line = opts[:line] || -1 - msg = opts[:message] || List.to_string(:io_lib.format(opts[:format], opts[:items])) - msg = msg <> List.to_string(:io_lib.format("~n at ~s line ~p", [file, line])) - %__MODULE__{message: msg} - end - end - - defmacro include(header) do - quote do - Quaff.Constants.include(unquote(header), []) - end - end - - defmacro include(header, options) do - header = - cond do - :ok == Macro.validate(header) -> - {hd, []} = header |> Code.eval_quoted([], __CALLER__) - hd - - true -> - header - end - - use_constants = options[:constants] || :all - do_export = options[:export] || false - - in_module = - options[:module] || - Macro.expand( - quote do - __MODULE__ - end, - __CALLER__ - ) - - rel_dir = - cond do - options[:relative_to] && :ok == Macro.validate(options[:relative_to]) -> - {rel_to, []} = options[:relative_to] |> Code.eval_quoted([], __CALLER__) - rel_to - - options[:relative_to] -> - options[:relative_to] - - true -> - Macro.expand( - quote do - __DIR__ - end, - __CALLER__ - ) - end - - inc_dir = - cond do - options[:include] && :ok == Macro.validate(options[:include]) -> - {inc, []} = options[:include] |> Code.eval_quoted([], __CALLER__) - inc - - options[:include] -> - options[:include] - - true -> - [ - Macro.expand( - quote do - __DIR__ - end, - __CALLER__ - ) - ] - end - - options = Keyword.put(options, :module, in_module) - options = Keyword.put(options, :relative_to, rel_dir) - options = Keyword.put(options, :include, inc_dir) - - const = - Enum.map(get_constants(header, options), fn {c, v} -> - {normalize_const(c), v} - end) - - const = - case use_constants do - :all -> - const - - _ -> - Enum.map(List.wrap(use_constants), fn c -> - c = normalize_const(c) - {c, Keyword.fetch!(const, c)} - end) - end - - attrs = - Enum.map(const, fn {c, val} -> - quote do - Module.put_attribute(__MODULE__, unquote(c), unquote(Macro.escape(val))) - end - end) - - funs = - case do_export do - true -> - Enum.map(const, fn {c, _} -> - {:ok, ident} = Code.string_to_quoted(Atom.to_string(c)) - - quote do - def unquote(ident) do - @unquote ident - end - end - end) - - _ -> - [] - end - - attrs ++ funs - end - - defmacro include_lib(header) do - quote do - Quaff.Constants.include_lib(unquote(header), []) - end - end - - defmacro include_lib(header, options) do - opts = - options - |> Macro.expand_once(__CALLER__) - |> Keyword.put(:include_lib, true) - - quote do - Quaff.Constants.include(unquote(header), unquote(opts)) - end - end - - defp normalize_const(a) when is_atom(a) do + def normalize_const(a) when is_atom(a) do normalize_const(Atom.to_string(a)) end - defp normalize_const(name) do - c = String.first(name) - - normed_str = - case String.upcase(c) do + def normalize_const(name) do + (c = name |> String.first()) |> + String.upcase() |> + case do ^c -> "_" <> name _ -> name - end - - String.to_atom(normed_str) + end |> + String.to_atom() end def get_constants(header_file) do @@ -272,7 +126,7 @@ defmodule Quaff.Constants do {:error, {:not_found, _}} -> raise( - CompileError, + Quaff.CompileError, format: "Can't locate header ~s~n relative to: ~s~n include path was: ~p", items: [header_file, relative_dir, include_path], file: from_file, @@ -287,7 +141,7 @@ defmodule Quaff.Constants do {:error, reason} -> raise( - CompileError, + Quaff.CompileError, format: "Error reading ~s: ~p", items: [realfile, reason], file: from_file, diff --git a/test/constants_test.exs b/test/constants_test.exs index 0cb3310..1f33408 100755 --- a/test/constants_test.exs +++ b/test/constants_test.exs @@ -1,34 +1,33 @@ defmodule Quaff.Constants.Test do use ExUnit.Case - require Quaff.Constants - alias Quaff.Constants, as: C + require Quaff # simple test headers - C.include("test1.hrl", export: true) - C.include("test2.hrl") - C.include("test3_inc.hrl") + Quaff.include("test1.hrl", export: true) + Quaff.include("test2.hrl") + Quaff.include("test3_inc.hrl") # include various headers from otp, to sanity check basic parsing - C.include_lib("eunit/include/eunit.hrl") - C.include_lib("stdlib/include/erl_bits.hrl") - C.include_lib("stdlib/include/erl_compile.hrl") - C.include_lib("kernel/include/file.hrl") + Quaff.include_lib("eunit/include/eunit.hrl") + Quaff.include_lib("stdlib/include/erl_bits.hrl") + Quaff.include_lib("stdlib/include/erl_compile.hrl") + Quaff.include_lib("kernel/include/file.hrl") # these files include others: - C.include_lib("snmp/include/snmp_tables.hrl") - C.include_lib("inets/include/httpd.hrl") + Quaff.include_lib("snmp/include/snmp_tables.hrl") + Quaff.include_lib("inets/include/httpd.hrl") # C.include_lib("/public_key.hrl") - C.include_lib("public_key/include/public_key.hrl") + Quaff.include_lib("public_key/include/public_key.hrl") # relative paths - C.include_lib( + Quaff.include_lib( Path.expand("#{__DIR__}/../include/more_test.hrl"), include: Path.expand("#{__DIR__}/../include/") ) - C.include_lib("../include/more_test.hrl") - C.include_lib("./test1.hrl") + Quaff.include_lib("../include/more_test.hrl") + Quaff.include_lib("./test1.hrl") - C.include_lib(Path.absname("#{__DIR__}/../include/more_test.hrl")) + Quaff.include_lib(Path.absname("#{__DIR__}/../include/more_test.hrl")) test "simple constants" do assert @_SIMPLE_1 == 1 diff --git a/test/debug_test.exs b/test/debug_test.exs index 8764fdb..03c3dcb 100755 --- a/test/debug_test.exs +++ b/test/debug_test.exs @@ -2,7 +2,7 @@ defmodule Quaff.Debug.Test do use ExUnit.Case require Quaff.Debug - require Quaff.Constants + require Quaff alias Quaff.Debug, as: Dbg setup context do From 6195ab23e98eb109013798738256c32f0b83268a Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 06:17:13 +0100 Subject: [PATCH 34/39] woop --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d2e0f4e..6eaa291 100755 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ end ``` -Quaff.Constants +Quaff --------------- This module parses erlang header files, and imports any constants as `@` attributes. A constant means a `-define` macro which evaluates to a constant term, and takes no arguments (though it may use macros which accept arguments). Constants whose names start with a capital letter will have an underscore prepended, for compatibility with Elixir syntax. From 0c38736f9051dfdc9a160b53eac692513723d264 Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 06:18:14 +0100 Subject: [PATCH 35/39] v1.0 --- mix.exs | 2 +- package.exs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index be0f78d..77bd43e 100755 --- a/mix.exs +++ b/mix.exs @@ -7,7 +7,7 @@ defmodule Quaff_013.Mixfile do [ app: :quaff, elixir: "~> 1.6", - version: "0.1.3", + version: "1.0.0", deps: deps(Mix.env()), elixirc_options: elixirc_defaults ++ options(Mix.env()), dialyzer: [paths: ["_build/shared/lib/mqttex/ebin"]], diff --git a/package.exs b/package.exs index 67b6c0f..fefe0ce 100755 --- a/package.exs +++ b/package.exs @@ -1,8 +1,8 @@ Expm.Package.new( name: "quaff", description: "Quaff is a set of tools for integrating Elixir into erlang applications (or vice versa).", - version: "0.1.3", - keywords: ["Elixir", "erlang", "tools", "utilities"], + version: "1.0.0", + keywords: ["Elixir", "erlang", "tools", "utilities", "interoperability"], licenses: [[name: "Apache License 2.0"]], maintainers: [ [name: "Josh Burroughs", email: "josh@qhool.com"], From 714c5086edc7f016d006b4d8d9cf3ca3f5c9ad7c Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 06:18:46 +0100 Subject: [PATCH 36/39] doc --- doc/.build | 4 +- doc/404.html | 6 +- ...pileError.html => Quaff.CompileError.html} | 18 +-- doc/Quaff.Constants.html | 118 ++---------------- doc/Quaff.Debug.html | 8 +- doc/api-reference.html | 10 +- doc/dist/sidebar_items-640897f7aa.js | 1 + doc/dist/sidebar_items-a8f45a4a6d.js | 1 - doc/index.html | 2 +- doc/search.html | 6 +- 10 files changed, 41 insertions(+), 133 deletions(-) rename doc/{Quaff.Constants.CompileError.html => Quaff.CompileError.html} (91%) create mode 100755 doc/dist/sidebar_items-640897f7aa.js delete mode 100755 doc/dist/sidebar_items-a8f45a4a6d.js diff --git a/doc/.build b/doc/.build index ba1bf3d..029da30 100755 --- a/doc/.build +++ b/doc/.build @@ -4,11 +4,11 @@ fonts/icomoon.eot fonts/icomoon.svg fonts/icomoon.ttf fonts/icomoon.woff -dist/sidebar_items-a8f45a4a6d.js +dist/sidebar_items-640897f7aa.js api-reference.html search.html 404.html Quaff.Constants.html Quaff.Debug.html -Quaff.Constants.CompileError.html +Quaff.CompileError.html index.html diff --git a/doc/404.html b/doc/404.html index eeab813..73dc4c6 100755 --- a/doc/404.html +++ b/doc/404.html @@ -5,12 +5,12 @@ - 404 – quaff v0.1.3 + 404 – quaff v1.0.0 - + @@ -37,7 +37,7 @@

    quaff

    diff --git a/doc/Quaff.Constants.CompileError.html b/doc/Quaff.CompileError.html similarity index 91% rename from doc/Quaff.Constants.CompileError.html rename to doc/Quaff.CompileError.html index 4d7eebc..3591591 100755 --- a/doc/Quaff.Constants.CompileError.html +++ b/doc/Quaff.CompileError.html @@ -5,12 +5,12 @@ - Quaff.Constants.CompileError – quaff v0.1.3 + Quaff.CompileError – quaff v1.0.0 - + - + @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.3 - Quaff.Constants.CompileError exception + quaff v1.0.0 + Quaff.CompileError exception - + View Source @@ -149,7 +149,7 @@

    exception(msg) - + View Source @@ -172,7 +172,7 @@

    message(exception) - + View Source diff --git a/doc/Quaff.Constants.html b/doc/Quaff.Constants.html index 47c5744..b978948 100755 --- a/doc/Quaff.Constants.html +++ b/doc/Quaff.Constants.html @@ -5,12 +5,12 @@ - Quaff.Constants – quaff v0.1.3 + Quaff.Constants – quaff v1.0.0 - + @@ -37,7 +37,7 @@

    quaff

    @@ -73,10 +73,10 @@

    - quaff v0.1.3 + quaff v1.0.0 Quaff.Constants - + View Source @@ -115,25 +115,7 @@

    - - - @@ -167,7 +149,7 @@

    get_constants(header_file) - + View Source @@ -189,108 +171,34 @@

    get_constants(header_file, options) - - - View Source - - - - - -
    - -
    - -
    - - -
    - - - Link to this macro - - include(header) - - + View Source - (macro) -
    -
    +
    - + - Link to this macro - - include(header, options) - - - - View Source - - - - (macro) - - -
    -
    - -
    -
    -
    - - -
    - - - Link to this macro - - include_lib(header) - - - - View Source - - - - (macro) - - -
    -
    - -
    -
    -
    - - -
    - - - Link to this macro + Link to this function - include_lib(header, options) + normalize_const(a) - + View Source - (macro) -
    diff --git a/doc/Quaff.Debug.html b/doc/Quaff.Debug.html index dcdeff0..bacd169 100755 --- a/doc/Quaff.Debug.html +++ b/doc/Quaff.Debug.html @@ -5,12 +5,12 @@ - Quaff.Debug – quaff v0.1.3 + Quaff.Debug – quaff v1.0.0 - + @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.3 + quaff v1.0.0 Quaff.Debug diff --git a/doc/api-reference.html b/doc/api-reference.html index bc74532..80d8b75 100755 --- a/doc/api-reference.html +++ b/doc/api-reference.html @@ -5,12 +5,12 @@ - API Reference – quaff v0.1.3 + API Reference – quaff v1.0.0 - + @@ -37,7 +37,7 @@

    quaff

    @@ -73,7 +73,7 @@

    - quaff v0.1.3 + quaff v1.0.0 API Reference

    @@ -107,7 +107,7 @@

    diff --git a/doc/dist/sidebar_items-640897f7aa.js b/doc/dist/sidebar_items-640897f7aa.js new file mode 100755 index 0000000..db69797 --- /dev/null +++ b/doc/dist/sidebar_items-640897f7aa.js @@ -0,0 +1 @@ +sidebarNodes={"extras":[{"id":"api-reference","title":"API Reference","group":"","headers":[{"id":"Modules","anchor":"modules"},{"id":"Exceptions","anchor":"exceptions"}]}],"exceptions":[{"id":"Quaff.CompileError","title":"Quaff.CompileError","group":"","functions":[{"id":"exception/1","anchor":"exception/1"},{"id":"message/1","anchor":"message/1"}]}],"modules":[{"id":"Quaff.Constants","title":"Quaff.Constants","group":"","functions":[{"id":"get_constants/1","anchor":"get_constants/1"},{"id":"get_constants/2","anchor":"get_constants/2"},{"id":"normalize_const/1","anchor":"normalize_const/1"}]},{"id":"Quaff.Debug","title":"Quaff.Debug","group":"","functions":[{"id":"load/1","anchor":"load/1"},{"id":"load/2","anchor":"load/2"},{"id":"nload/1","anchor":"nload/1"},{"id":"nload/2","anchor":"nload/2"},{"id":"start/0","anchor":"start/0"}]}],"tasks":[]} \ No newline at end of file diff --git a/doc/dist/sidebar_items-a8f45a4a6d.js b/doc/dist/sidebar_items-a8f45a4a6d.js deleted file mode 100755 index 72acc97..0000000 --- a/doc/dist/sidebar_items-a8f45a4a6d.js +++ /dev/null @@ -1 +0,0 @@ -sidebarNodes={"extras":[{"id":"api-reference","title":"API Reference","group":"","headers":[{"id":"Modules","anchor":"modules"},{"id":"Exceptions","anchor":"exceptions"}]}],"exceptions":[{"id":"Quaff.Constants.CompileError","title":"Quaff.Constants.CompileError","group":"","functions":[{"id":"exception/1","anchor":"exception/1"},{"id":"message/1","anchor":"message/1"}]}],"modules":[{"id":"Quaff.Constants","title":"Quaff.Constants","group":"","functions":[{"id":"get_constants/1","anchor":"get_constants/1"},{"id":"get_constants/2","anchor":"get_constants/2"},{"id":"include/1","anchor":"include/1"},{"id":"include/2","anchor":"include/2"},{"id":"include_lib/1","anchor":"include_lib/1"},{"id":"include_lib/2","anchor":"include_lib/2"}]},{"id":"Quaff.Debug","title":"Quaff.Debug","group":"","functions":[{"id":"load/1","anchor":"load/1"},{"id":"load/2","anchor":"load/2"},{"id":"nload/1","anchor":"nload/1"},{"id":"nload/2","anchor":"nload/2"},{"id":"start/0","anchor":"start/0"}]}],"tasks":[]} \ No newline at end of file diff --git a/doc/index.html b/doc/index.html index ee53f26..da74b10 100755 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - quaff v0.1.3 – Documentation + quaff v1.0.0 – Documentation diff --git a/doc/search.html b/doc/search.html index d009932..9e9a93c 100755 --- a/doc/search.html +++ b/doc/search.html @@ -5,12 +5,12 @@ - Search – quaff v0.1.3 + Search – quaff v1.0.0 - + @@ -37,7 +37,7 @@

    quaff

    From ff64009688823dcfc8207ae5c66b9e46ba59c23a Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 06:19:47 +0100 Subject: [PATCH 37/39] readme --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6eaa291..65dd50e 100755 --- a/README.md +++ b/README.md @@ -14,12 +14,13 @@ Installation Using [https://hex.pm/packages/quaff](hex.pm) (recommended way) -Simply add ```{:quaff, "~> 0.1"}``` to your project's ```mix.exs``` file, in the dependencies list and run ```mix deps.get quaff```. +Simply add ```{:quaff, "~> 1.0"}``` to your project's ```mix.exs``` file, in the dependencies list and run ```mix +deps.get quaff```. ### Example ```elixir defp deps do - [{:quaff, "~> 0.1"},] + [{:quaff, "~> 1.0"},] end ``` From 6c02a0148ba056c57ddee95565e7ac7bcbc3a42f Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 6 Apr 2018 08:30:39 +0100 Subject: [PATCH 38/39] Update README.md --- README.md | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 65dd50e..9365e5a 100755 --- a/README.md +++ b/README.md @@ -32,34 +32,38 @@ This module parses erlang header files, and imports any constants as `@` attribu app/include/app_header.hrl: - -define(CONSTANT_FROM_APP,5) +```erlang +-define(CONSTANT_FROM_APP,5) +``` lib/mymodule.ex: - defmodule MyModule - require Quaff - Quaff.include_lib("app/include/app_header.hrl") - - def myfunc() do - @_CONSTANT_FROM_APP + 10 - end - end +```elixir +defmodule MyModule + require Quaff + Quaff.include_lib("app/include/app_header.hrl") + def myfunc() do + @_CONSTANT_FROM_APP + 10 + end +end +``` Quaff.Debug ----------- The Debug module provides a simple helper interface for running Elixir code in the erlang graphical debugger, using the technique I described in [this posting](http://qhool.github.io/elixir/2014/02/06/elixir-debug.html). - - Interactive Elixir (0.12.2) - press Ctrl+C to exit (type h() ENTER for help) - iex(1)> Quaff.Debug.start() #start the graphical debugger - {:ok, #PID<0.59.0>} - iex(2)> Quaff.Debug.load("./lib/mymodule.ex") #load all modules in source file - lib/mymodule.ex:1: redefining module My.Module - lib/mymodule.ex:212: redefining module My.OtherModule - [module: My.Module, module: My.OtherModule] - iex(3)> Quaff.Debug.load(Yet.AnotherModule) #load a module by name - {:module, Yet.AnotherModule} +``` +Interactive Elixir (0.12.2) - press Ctrl+C to exit (type h() ENTER for help) +iex(1)> Quaff.Debug.start() #start the graphical debugger +{:ok, #PID<0.59.0>} +iex(2)> Quaff.Debug.load("./lib/mymodule.ex") #load all modules in source file +lib/mymodule.ex:1: redefining module My.Module +lib/mymodule.ex:212: redefining module My.OtherModule +[module: My.Module, module: My.OtherModule] +iex(3)> Quaff.Debug.load(Yet.AnotherModule) #load a module by name +{:module, Yet.AnotherModule} +``` Also provided is `nload(module)` (equivalent to `load(module, all_nodes: true)`), which debugs the module[s] on all known nodes. From 3538bec660642398537488377d57f5212b44414a Mon Sep 17 00:00:00 2001 From: Carlos Brito Lage Date: Fri, 7 Sep 2018 11:03:22 +0100 Subject: [PATCH 39/39] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9365e5a..cbe3e79 100755 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ All contributions are welcome. Installation ===== -Using [https://hex.pm/packages/quaff](hex.pm) (recommended way) +Using [hex.pm](https://hex.pm/packages/quaff) (recommended way) Simply add ```{:quaff, "~> 1.0"}``` to your project's ```mix.exs``` file, in the dependencies list and run ```mix deps.get quaff```.