-module(inlay@twitter). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/inlay/twitter.gleam"). -export([detect/1, render/2]). -file("src/inlay/twitter.gleam", 44). -spec detect_tweet(gleam@uri:uri()) -> gleam@option:option(inlay@embed:embed()). detect_tweet(Url) -> case gleam@uri:path_segments(erlang:element(6, Url)) of [Handle, <<"status"/utf8>>, Id] -> {some, {tweet, Handle, Id}}; _ -> none end. -file("src/inlay/twitter.gleam", 8). -spec detect(gleam@uri:uri()) -> gleam@option:option(inlay@embed:embed()). detect(Url) -> case erlang:element(4, Url) of {some, <<"twitter.com"/utf8>>} -> detect_tweet(Url); {some, <<"www.twitter.com"/utf8>>} -> detect_tweet(Url); {some, <<"x.com"/utf8>>} -> detect_tweet(Url); {some, <<"www.x.com"/utf8>>} -> detect_tweet(Url); _ -> none end. -file("src/inlay/twitter.gleam", 18). -spec render(inlay@embed:embed(), inlay@embed:config()) -> {ok, lustre@vdom@vnode:element(any())} | {error, nil}. render(Embed, _) -> case Embed of {tweet, Handle, Id} -> Tweet_url = <<<<<<"https://twitter.com/"/utf8, Handle/binary>>/binary, "/status/"/utf8>>/binary, Id/binary>>, {ok, lustre@element@html:'div'( [], [lustre@element@html:blockquote( [lustre@attribute:class(<<"twitter-tweet"/utf8>>)], [lustre@element@html:a( [lustre@attribute:href(Tweet_url)], [lustre@element:text(Tweet_url)] )] ), lustre@element@html:script( [lustre@attribute:src( <<"https://platform.twitter.com/widgets.js"/utf8>> ), lustre@attribute:attribute( <<"async"/utf8>>, <<"true"/utf8>> ), lustre@attribute:attribute( <<"charset"/utf8>>, <<"utf-8"/utf8>> )], <<""/utf8>> )] )}; _ -> {error, nil} end.