Mq (mq_elixir v0.1.21)
View SourceElixir bindings for the mq markdown processing library.
Features
- Process markdown, MDX, HTML, and plain text
- Full mq query language support
- Multiple input and output format options
- Configurable rendering options
Installation
Add mq to your list of dependencies in mix.exs:
def deps do
[
{:mq, "~> 0.5.9"}
]
endUsage
# Raw query string
{:ok, result} = Mq.run(".h1", "# Hello\n## World")
IO.inspect(result.values) # ["# Hello"]
# Query builder — use Mq directly as the entry point
{:ok, result} =
Mq.h2()
|> Mq.select(Mq.Filter.contains("Feature"))
|> Mq.to_text()
|> Mq.run(content)
# With options
options = %Mq.Options{input_format: :markdown}
{:ok, result} = Mq.run(".h2", markdown_content, options)
# HTML to Markdown conversion
{:ok, markdown} = Mq.html_to_markdown("<h1>Hello</h1>")
Summary
Functions
See Mq.Query.abs/1.
See Mq.Query.add/1.
See Mq.Query.align/0.
See Mq.Query.alt/0.
See Mq.Query.alt/1.
See Mq.Query.code/0.
See Mq.Query.depth/0.
See Mq.Query.done/0.
See Mq.Query.exp/1.
See Mq.Query.fence/0.
See Mq.Query.h1/0.
See Mq.Query.h2/0.
See Mq.Query.h3/0.
See Mq.Query.h4/0.
See Mq.Query.h5/0.
See Mq.Query.h6/0.
See Mq.Query.hr/0.
See Mq.Query.html/0.
Convert HTML to Markdown.
See Mq.Query.image/0.
See Mq.Query.lang/0.
See Mq.Query.len/1.
See Mq.Query.level/0.
See Mq.Query.link/0.
See Mq.Query.list/0.
See Mq.Query.ln/1.
See Mq.Query.math/0.
See Mq.Query.md5/1.
See Mq.Query.meta/0.
See Mq.Query.row/0.
See Mq.Query.row/1.
Run an mq query on the provided content.
See Mq.Query.table/0.
See Mq.Query.task/0.
See Mq.Query.text/0.
See Mq.Query.todo/0.
See Mq.Query.toml/0.
See Mq.Query.url/0.
See Mq.Query.url/1.
See Mq.Query.value/0.
See Mq.Query.yaml/0.
Functions
See Mq.Query.abs/1.
See Mq.Query.add/1.
See Mq.Query.align/0.
See Mq.Query.align/1.
See Mq.Query.alt/0.
See Mq.Query.alt/1.
See Mq.Query.attr/2.
See Mq.Query.base64/1.
See Mq.Query.base64d/1.
See Mq.Query.base64url/1.
See Mq.Query.basename/1.
See Mq.Query.capture/2.
See Mq.Query.ceil/1.
See Mq.Query.checked/0.
See Mq.Query.checked/1.
See Mq.Query.children/1.
See Mq.Query.coalesce/2.
See Mq.Query.code/0.
See Mq.Query.column/0.
See Mq.Query.column/1.
See Mq.Query.compact/1.
See Mq.Query.debug/1.
See Mq.Query.del/2.
See Mq.Query.delete/0.
See Mq.Query.depth/0.
See Mq.Query.depth/1.
See Mq.Query.dirname/1.
See Mq.Query.done/0.
See Mq.Query.downcase/1.
See Mq.Query.emphasis/0.
See Mq.Query.empty/1.
See Mq.Query.entries/1.
See Mq.Query.exp/1.
See Mq.Query.explode/1.
See Mq.Query.extname/1.
See Mq.Query.fence/0.
See Mq.Query.fence/1.
See Mq.Query.first/1.
See Mq.Query.flatten/1.
See Mq.Query.floor/1.
See Mq.Query.footnote/0.
See Mq.Query.from_hex/1.
See Mq.Query.get/2.
See Mq.Query.get_title/1.
See Mq.Query.get_url/1.
See Mq.Query.gsub/3.
See Mq.Query.h1/0.
See Mq.Query.h2/0.
See Mq.Query.h3/0.
See Mq.Query.h4/0.
See Mq.Query.h5/0.
See Mq.Query.h6/0.
See Mq.Query.heading/0.
See Mq.Query.hr/0.
See Mq.Query.html/0.
@spec html_to_markdown(String.t(), Mq.ConversionOptions.t() | nil) :: {:ok, String.t()} | {:error, String.t()}
Convert HTML to Markdown.
Parameters
content- The HTML content to convertoptions- Optional conversion options
Returns
{:ok, markdown_string}on success{:error, reason}on failure
Examples
iex> Mq.html_to_markdown("<h1>Hello</h1><p>World</p>")
{:ok, "# Hello\n\nWorld"}
iex> html_content = "<html><head><title>Title</title></head><body><h1>Content</h1></body></html>"
iex> opts = %Mq.ConversionOptions{use_title_as_h1: true}
iex> {:ok, markdown} = Mq.html_to_markdown(html_content, opts)
{:ok, markdown}
See Mq.Query.ident/1.
See Mq.Query.image/0.
See Mq.Query.image_ref/0.
See Mq.Query.implode/1.
See Mq.Query.index/2.
See Mq.Query.insert/3.
See Mq.Query.intern/1.
See Mq.Query.join/2.
See Mq.Query.keys/1.
See Mq.Query.label/1.
See Mq.Query.lang/0.
See Mq.Query.lang/1.
See Mq.Query.last/1.
See Mq.Query.len/1.
See Mq.Query.length/1.
See Mq.Query.level/0.
See Mq.Query.level/1.
See Mq.Query.limit/2.
See Mq.Query.link/0.
See Mq.Query.link_ref/0.
See Mq.Query.list/0.
See Mq.Query.list_at/1.
See Mq.Query.ln/1.
See Mq.Query.log10/1.
See Mq.Query.ltrim/1.
See Mq.Query.map/2.
See Mq.Query.math/0.
See Mq.Query.max/2.
See Mq.Query.md5/1.
See Mq.Query.mdx_name/1.
See Mq.Query.meta/0.
See Mq.Query.meta/1.
See Mq.Query.min/2.
See Mq.Query.nan?/1.
See Mq.Query.negate/1.
See Mq.Query.nth/2.
See Mq.Query.ordered/0.
See Mq.Query.ordered/1.
See Mq.Query.paragraph/0.
See Mq.Query.path_join/2.
See Mq.Query.pow/2.
See Mq.Query.property/1.
See Mq.Query.property/2.
See Mq.Query.range/2.
See Mq.Query.recursive/0.
See Mq.Query.repeat/2.
See Mq.Query.replace/3.
See Mq.Query.reverse/1.
See Mq.Query.rindex/2.
See Mq.Query.round/1.
See Mq.Query.row/0.
See Mq.Query.row/1.
See Mq.Query.rtrim/1.
@spec run(String.t() | Mq.Query.t(), String.t(), Mq.Options.t() | nil) :: {:ok, Mq.Result.t()} | {:error, String.t()}
Run an mq query on the provided content.
Accepts either a raw query string or an Mq.Query struct built with the
query builder functions on this module.
Parameters
code- The mq query string or an%Mq.Query{}structcontent- The markdown/HTML/text content to processoptions- Optional configuration (defaults to%Mq.Options{})
Returns
{:ok, %Mq.Result{}}on success{:error, reason}on failure
Examples
iex> Mq.run(".h1", "# Title\n## Subtitle")
{:ok, %Mq.Result{values: ["# Title"], text: "# Title"}}
iex> options = %Mq.Options{input_format: :text}
iex> {:ok, _result} = Mq.run("select(contains(\"test\"))", "line1\ntest line\nline3", options)
{:ok, %Mq.Result{values: ["test line"], text: "test line"}}
iex> {:ok, result} = Mq.h2() |> Mq.select(Mq.Filter.contains("World")) |> Mq.run("# Hello\n## World\n## Other")
iex> result.values
["## World"]
See Mq.Query.select/1.
See Mq.Query.select/2.
See Mq.Query.set/3.
See Mq.Query.set_attr/3.
See Mq.Query.set_check/2.
See Mq.Query.set_ref/2.
See Mq.Query.sha256/1.
See Mq.Query.sha512/1.
See Mq.Query.slice/3.
See Mq.Query.sort/1.
See Mq.Query.split/2.
See Mq.Query.sqrt/1.
See Mq.Query.stem/1.
See Mq.Query.stringify/1.
See Mq.Query.strong/0.
See Mq.Query.table/0.
See Mq.Query.table_col/1.
See Mq.Query.table_row/1.
See Mq.Query.task/0.
See Mq.Query.test/2.
See Mq.Query.text/0.
See Mq.Query.title/1.
See Mq.Query.to_array/1.
See Mq.Query.to_bytes/1.
See Mq.Query.to_code/1.
See Mq.Query.to_code/2.
See Mq.Query.to_em/1.
See Mq.Query.to_h/2.
See Mq.Query.to_hex/1.
See Mq.Query.to_hr/1.
See Mq.Query.to_html/1.
See Mq.Query.to_image/2.
See Mq.Query.to_image/3.
See Mq.Query.to_image/4.
See Mq.Query.to_link/2.
See Mq.Query.to_link/3.
See Mq.Query.to_link/4.
See Mq.Query.to_math/1.
See Mq.Query.to_mdx/1.
See Mq.Query.to_number/1.
See Mq.Query.to_strong/1.
See Mq.Query.to_text/1.
See Mq.Query.todo/0.
See Mq.Query.toml/0.
See Mq.Query.trim/1.
See Mq.Query.trunc/1.
See Mq.Query.type/1.
See Mq.Query.uniq/1.
See Mq.Query.upcase/1.
See Mq.Query.update/2.
See Mq.Query.url/0.
See Mq.Query.url/1.
See Mq.Query.value/0.
See Mq.Query.value/1.
See Mq.Query.values/1.
See Mq.Query.yaml/0.