Current section
Files
Jump to
Current section
Files
src/kielet_gen@coder.erl
-module(kielet_gen@coder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/kielet_gen/coder.gleam").
-export([code_file/2, code_files/2]).
-file("src/kielet_gen/coder.gleam", 48).
-spec code_file(binary(), binary()) -> {ok, nil} |
{error, simplifile:file_error()}.
code_file(To, File) ->
Contents@1 = case simplifile_erl:read_bits(File) of
{ok, Contents} -> Contents;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"cannot read input file"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_file"/utf8>>,
line => 49,
value => _assert_fail,
start => 1079,
'end' => 1131,
pattern_start => 1090,
pattern_end => 1102})
end,
Contents@2 = gleam_stdlib:base64_encode(Contents@1, false),
Basename@1 = case begin
_pipe = gleam@string:split(File, <<"/"/utf8>>),
gleam@list:last(_pipe)
end of
{ok, Basename} -> Basename;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_file"/utf8>>,
line => 53,
value => _assert_fail@1,
start => 1225,
'end' => 1287,
pattern_start => 1236,
pattern_end => 1248})
end,
Lang_id@1 = case begin
_pipe@1 = gleam@string:split(Basename@1, <<"."/utf8>>),
gleam@list:first(_pipe@1)
end of
{ok, Lang_id} -> Lang_id;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"language id is taken from filename, cannot find dot in filename"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_file"/utf8>>,
line => 54,
value => _assert_fail@2,
start => 1290,
'end' => 1356,
pattern_start => 1301,
pattern_end => 1312})
end,
simplifile:append(
To,
<<<<<<<<<<<<"
// Load language from "/utf8, Basename@1/binary>>/binary,
" as base64 encoded MO data
let assert Ok(mo_data) = bit_array.base64_decode(\""/utf8>>/binary,
Contents@2/binary>>/binary,
"\")
let assert Ok(lang) = kielet.load_language(\""/utf8>>/binary,
Lang_id@1/binary>>/binary,
"\",mo_data)
let db = db |> kielet.add_language(lang)
"/utf8>>
).
-file("src/kielet_gen/coder.gleam", 6).
-spec code_files(binary(), list(binary())) -> nil.
code_files(To, Files) ->
Path = gleam@string:split(To, <<"/"/utf8>>),
Directory = begin
_pipe = Path,
_pipe@1 = gleam@list:take(_pipe, erlang:length(Path) - 1),
gleam@string:join(_pipe@1, <<"/"/utf8>>)
end,
case simplifile:create_directory_all(Directory) of
{ok, _} -> nil;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"cannot create directory for output"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_files"/utf8>>,
line => 12,
value => _assert_fail,
start => 261,
'end' => 322,
pattern_start => 272,
pattern_end => 277})
end,
case simplifile:write(To, <<""/utf8>>) of
{ok, _} -> nil;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"cannot write to output file"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_files"/utf8>>,
line => 14,
value => _assert_fail@1,
start => 369,
'end' => 426,
pattern_start => 380,
pattern_end => 385})
end,
case simplifile:write(
To,
<<"// Generated automatically for use by kielet
// Do not edit this file directly, changes may be overwritten by the system
import gleam/bit_array
import kielet
pub fn database() -> kielet.Database {
let db = kielet.new_database()
"/utf8>>
) of
{ok, _} -> nil;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"cannot write to output file"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_files"/utf8>>,
line => 18,
value => _assert_fail@2,
start => 489,
'end' => 801,
pattern_start => 500,
pattern_end => 505})
end,
gleam@list:map(Files, fun(File) -> code_file(To, File) end),
case simplifile:append(To, <<"
db
}
"/utf8>>) of
{ok, _} -> nil;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"cannot write to output file"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kielet_gen/coder"/utf8>>,
function => <<"code_files"/utf8>>,
line => 35,
value => _assert_fail@3,
start => 895,
'end' => 984,
pattern_start => 906,
pattern_end => 911})
end,
nil.