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", 49).
-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 => 50,
value => _assert_fail,
start => 1106,
'end' => 1158,
pattern_start => 1117,
pattern_end => 1129})
end,
Contents@2 = gleam_stdlib:bit_array_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 => 54,
value => _assert_fail@1,
start => 1252,
'end' => 1314,
pattern_start => 1263,
pattern_end => 1275})
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 => 55,
value => _assert_fail@2,
start => 1317,
'end' => 1383,
pattern_start => 1328,
pattern_end => 1339})
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) = language.load(\""/utf8>>/binary,
Lang_id@1/binary>>/binary,
"\",mo_data)
let db = db |> database.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/database
import kielet/language
pub fn database() -> database.Database {
let db = database.new()
"/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' => 828,
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 => 36,
value => _assert_fail@3,
start => 922,
'end' => 1011,
pattern_start => 933,
pattern_end => 938})
end,
nil.