Packages
orb
0.0.40
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
0.0.51
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
retired
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
DSL for WebAssembly
Current section
Files
Jump to
Current section
Files
lib/orb/to_wat.ex
defprotocol Orb.ToWat do
@doc "Protocol for converting to WebAssembly text format (.wat)"
def to_wat(data, indent)
end
defmodule Orb.ToWat.Error do
defexception [:message, :exception]
@impl Exception
def exception(opts) do
exception = Keyword.fetch!(opts, :exception)
value = Keyword.fetch!(opts, :value)
msg = Exception.message(exception) <> " | Source AST: #{inspect(value)}"
%__MODULE__{message: msg, exception: exception}
end
end
defmodule Orb.ToWat.Helpers do
alias Orb.CustomType
def do_type(type) do
case type do
:i64 ->
"i64"
:i32 ->
"i32"
:f64 ->
"f64"
:f32 ->
"f32"
# e.g. {I32, I32} or {F32, F32, F32}
tuple when is_tuple(tuple) ->
tuple
|> Tuple.to_list()
|> Enum.map(&do_type/1)
|> Enum.join(" ")
type ->
CustomType.resolve!(type) |> to_string()
end
end
end