EarmarkTagCloud (EarmarkTagCloud v0.2.0-pre) View Source

CI Coverage Status Hex.pm Hex.pm Hex.pm

  • Make Tag Clouds from a simple DSL added as annotations to paragraphs

    e.g.

      12 16 100 # translates to style="color: #000000; font-size: 16pt; font-weight: 100;"
      #ffdd00 3em bb # style="color: #ffdd00; font-size: 3em; font-weight: 800;"
  • Elixir Tools to create Tag clouds

    iex(1)> dsl_to_attributes("12 16 100")
    [{"style", "color: #000000; font-size: 16pt; font-weight: 100;"}]
  • Earmark Integration (needs v1.4.16-pre2 or greater)

    The most general way to integrate with Earmark is with make_tag_clouds iex(2)> markdown = [ ...(2)> "Elixir %tc: 12 20 800", "", ...(2)> "Erlang %tc: 10/red 2em", "", ...(2)> "Phoenix %tc: 8/sandybrown" ] ...(2)> render_html(markdown) ...(2)> markdown ...(2)> |> Earmark.as_ast!(annotations: "%tc:", inner_html: true) ...(2)> |> make_tag_clouds ...(2)> |> Earmark.transform "<span style=\"color: #000000; font-size: 20pt; font-weight: 800;\">\nElixir </span>\n<span style=\"color: #ff7171; font-size: 2em;\">\nErlang </span>\n<span style=\"color: #ed6d00;\">\nPhoenix </span>\n" We can render to html directly with render_html, which is a shortcut for the above iex(3)> markdown = [ ...(3)> "Elixir %tc: 12 20 800", "", ...(3)> "Erlang %tc: 10/red 2em", "", ...(3)> "Phoenix %tc: 8/sandybrown" ] ...(3)> render_html(markdown) "<span style=\"color: #000000; font-size: 20pt; font-weight: 800;\">\nElixir </span>\n<span style=\"color: #ff7171; font-size: 2em;\">\nErlang </span>\n<span style=\"color: #ed6d00;\">\nPhoenix </span>\n" Or just transform the AST iex(4)> markdown = [ ...(4)> "Elixir %tc: 12 20 800", "", ...(4)> "Erlang %tc: 10/red 2em", "", ...(4)> "Phoenix %tc: 8/sandybrown" ] ...(4)> render_ast(markdown) [

    {"span", [{"style", "color: #000000; font-size: 20pt; font-weight: 800;"}], ["Elixir "], %{annotation: "%tc: 12 20 800"}},
    {"span", [{"style", "color: #ff7171; font-size: 2em;"}], ["Erlang "], %{annotation: "%tc: 10/red 2em"}},
    {"span", [{"style", "color: #ed6d00;"}], ["Phoenix "], %{annotation: "%tc: 8/sandybrown"}}

    ] which is a shortcut for this iex(5)> markdown = [ ...(5)> "Elixir %tc: 12 20 800", "", ...(5)> "Erlang %tc: 10/red 2em", "", ...(5)> "Phoenix %tc: 8/sandybrown" ] ...(5)> markdown ...(5)> |> Earmark.as_ast!(annotations: "%tc:", inner_html: true) ...(5)> |> make_tag_clouds [

    {"span", [{"style", "color: #000000; font-size: 20pt; font-weight: 800;"}], ["Elixir "], %{annotation: "%tc: 12 20 800"}},
    {"span", [{"style", "color: #ff7171; font-size: 2em;"}], ["Erlang "], %{annotation: "%tc: 10/red 2em"}},
    {"span", [{"style", "color: #ed6d00;"}], ["Phoenix "], %{annotation: "%tc: 8/sandybrown"}}

    ] Of course not annotated blocks are not effected iex(6)> markdown = [ ...(6)> "Elixir %tc: 12 20 800", "", ...(6)> "Erlang", "", ...(6)> "Phoenix %tc: 8/sandybrown" ] ...(6)> render_ast(markdown) [

    {"span", [{"style", "color: #000000; font-size: 20pt; font-weight: 800;"}], ["Elixir "], %{annotation: "%tc: 12 20 800"}},
    {"p", [], ["Erlang"], %{}},
    {"span", [{"style", "color: #ed6d00;"}], ["Phoenix "], %{annotation: "%tc: 8/sandybrown"}}

    ] And different annotations can be used, but than make_tag_clouds becomes a NOP iex(7)> markdown = [ ...(7)> "Elixir %%%: 12 20 800", "", ...(7)> "Erlang %%%: 10/red 2em", "", ...(7)> "Phoenix %%%: 8/sandybrown" ] ...(7)> markdown ...(7)> |> Earmark.as_ast!(annotations: "%%%:", inner_html: true) ...(7)> |> make_tag_clouds [

    {"p", [], ["Elixir "], %{annotation: "%%%: 12 20 800"}},
    {"p", [], ["Erlang "], %{annotation: "%%%: 10/red 2em"}},
    {"p", [], ["Phoenix "], %{annotation: "%%%: 8/sandybrown"}}

    ]

Link to this section Summary

Link to this section Functions

Link to this function

dsl_to_attributes(description)

View Source

See TagCloud.Compiler.ast_style/1.

Link to this function

make_tag_clouds(ast, options \\ [annotation: "%tc:"])

View Source

See EarmarkTagCloud.EarmarkAst.make_tag_clouds/2.

See EarmarkTagCloud.EarmarkAst.render_ast/1.

See EarmarkTagCloud.EarmarkAst.render_html/1.

Specs

version() :: binary()

A convenience method to access this library's version

iex(8)> {:ok, _} = Version.parse(version())