Packages
mdex
0.6.0
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.5
retired
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Fast and extensible Markdown for Elixir
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/mdex/native.ex
# https://github.com/elixir-explorer/explorer/blob/d11216282bbdb0dcaef2519c2bfefda46c2981e0/lib/explorer/polars_backend/native.ex
defmodule MDEx.Native do
@moduledoc false
mix_config = Mix.Project.config()
version = mix_config[:version]
github_url = mix_config[:package][:links][:GitHub]
mode = if Mix.env() in [:dev, :test], do: :debug, else: :release
use_legacy =
Application.compile_env(
:mdex,
:use_legacy_artifacts,
System.get_env("MDEX_USE_LEGACY_ARTIFACTS") in ["true", "1"]
)
variants_for_linux = [
legacy_cpu: fn ->
# These are the same from the release workflow.
# See the meaning in: https://unix.stackexchange.com/a/43540
needed_caps = ~w[fxsr sse sse2 ssse3 sse4_1 sse4_2 popcnt avx fma]
use_legacy or
(is_nil(use_legacy) and
not MDEx.ComptimeUtils.cpu_with_all_caps?(needed_caps))
end
]
other_variants = [legacy_cpu: fn -> use_legacy end]
use RustlerPrecompiled,
otp_app: :mdex,
crate: "comrak_nif",
version: version,
base_url: "#{github_url}/releases/download/v#{version}",
targets: ~w(
aarch64-apple-darwin
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
arm-unknown-linux-gnueabihf
riscv64gc-unknown-linux-gnu
x86_64-apple-darwin
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
x86_64-unknown-freebsd
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl
),
variants: %{
"x86_64-unknown-linux-gnu" => variants_for_linux,
"x86_64-pc-windows-msvc" => other_variants,
"x86_64-pc-windows-gnu" => other_variants,
"x86_64-unknown-freebsd" => other_variants
},
nif_versions: ["2.15"],
mode: mode,
force_build: System.get_env("MDEX_BUILD") in ["1", "true"]
def safe_html(_unsafe_html, _sanitize, _escape_content, _escape_curly_braces_in_code), do: :erlang.nif_error(:nif_not_loaded)
# markdown
# - to document (parse)
# - to html
# - to xml
def parse_document(_md, _opts), do: :erlang.nif_error(:nif_not_loaded)
def markdown_to_html(_md), do: :erlang.nif_error(:nif_not_loaded)
def markdown_to_html_with_options(_md, _opts), do: :erlang.nif_error(:nif_not_loaded)
def markdown_to_xml(_md), do: :erlang.nif_error(:nif_not_loaded)
def markdown_to_xml_with_options(_md, _opts), do: :erlang.nif_error(:nif_not_loaded)
# document
# - to markdown (commonmark)
# - to html
# - to xml
def document_to_commonmark(_doc), do: :erlang.nif_error(:nif_not_loaded)
def document_to_commonmark_with_options(_doc, _opts), do: :erlang.nif_error(:nif_not_loaded)
def document_to_html(_doc), do: :erlang.nif_error(:nif_not_loaded)
def document_to_html_with_options(_doc, _opts), do: :erlang.nif_error(:nif_not_loaded)
def document_to_xml(_doc), do: :erlang.nif_error(:nif_not_loaded)
def document_to_xml_with_options(_doc, _opts), do: :erlang.nif_error(:nif_not_loaded)
end