shahryarjb
Hello friends, I have a blog section in my website that use NimblePublisher and get data from .md file.
Also, I have a series of components that are stateless Phoenix components.
For example, a series of components related to typography
What I need to implement?
If you use <.link navigate="/">Home</.link> in your heex , it converted to something like this
<a href="/" data-phx-link="redirect" data-phx-link-state="push">
Home
</a>
No I need to convert my phoenix component to html in NimblePublisher parser
For example I get this code from kobrakai_elixir project
# I got this code from: https://github.com/LostKobrakai/kobrakai_elixir
def parse(_path, contents) do
["---\n" <> yaml, body] =
contents
|> String.replace("\r\n", "\n")
|> :binary.split(["\n---\n"])
{:ok, attrs} = YamlElixir.read_from_string(yaml)
attrs = Map.new(attrs, fn {k, v} -> {String.to_atom(k), v} end)
attrs =
case :binary.split(body, ["\n<!-- excerpt -->\n"]) do
[excerpt | [_ | _]] -> Map.put(attrs, :excerpt, String.trim(excerpt))
_ -> attrs
end
# `body` should be changed before save in a module
{attrs, body}
end
I think this is the place I need to convert body to compiled html version (for onetime).
I got help from Slack, but I was not successful to implement this ![]()
The suggestions from the friends, which some has error from me that I could not fix
This is the code from here (elixir forum) but how can converted to html not using inside heex
source = "<.link navigate=\"/\">Hi</.link navigate=\"/\">\n"
{result, _result_binding} =
EEx.compile_string(source, engine: Phoenix.LiveView.Engine, caller: __ENV__, source: source)
|> Code.eval_quoted(assigns: %{})
Or this code which I think need to have __CALER__, ( I have error from this code)
EEx.compile_string(
"<CustomTypography.heading1>Hi</CustomTypography.heading1>",
engine: Phoenix.LiveView.TagEngine,
tag_handler: Phoenix.LiveView.HTMLEngine,
caller: MishkaWeb.Components.CustomContent,
source:
"<Components.CustomTypography.heading1>Hi</CustomTypography.heading1>"
)
Or Other code
options = [
engine: Phoenix.LiveView.TagEngine,
file: __CALLER__.file,
line: __CALLER__.line + 1,
caller: __CALLER__,
indentation: meta[:indentation] || 0,
source: expr,
tag_handler: Phoenix.LiveView.HTMLEngine
]
EEx.compile_string(expr, options)
OR this code i am forced to put . before the component name
EEx.compile_string(
"<.CustomTypography.heading1>Hi</.CustomTypography.heading1>",
engine: Phoenix.LiveView.Engine,
caller: __ENV__,
source:
"<.CustomTypography.heading1>Hi</..CustomTypography.heading1>"
)
|> Code.eval_quoted(assigns: %{})
So if these work, but these are no compiled html, and returns structs, so how can have compiled html before saving in module
Thank you in advance
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 1- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
shahryarjb
Hello friends, the mdex lib creates this
https://github.com/leandrocp/mdex/blob/main/examples/heex.exs
tweet link:
https://x.com/leandrocesquini/status/1844388784743514129