Packages
Nitrogen Web Framework Core Library
Current section
Files
Jump to
Current section
Files
src/elements/layout/element_h.erl
% vim: sw=4 ts=4 et ft=erlang
% Nitrogen Web Framework for Erlang
% Copyright (c) 2013 Jesse Gumm
% See MIT-LICENSE for licensing information.
-module (element_h).
-include("wf.hrl").
-export([
reflect/0,
render_element/1
]).
-spec reflect() -> [atom()].
reflect() -> record_info(fields, h).
-spec render_element(H :: #h1{} | #h2{} | #h3{} | #h4{} | #h5{} | #h6{} | #h{}) -> html().
render_element(H) when is_record(H,h1); is_record(H,h2);
is_record(H,h3); is_record(H,h4);
is_record(H,h5); is_record(H,h6) ->
render_element(setelement(1,H,h));
render_element(Rec) ->
Text = wf:html_encode(Rec#h.text, Rec#h.html_encode),
Body = Rec#h.body,
Tag = tag(Rec#h.size),
wf_tags:emit_tag(Tag, [Text, Body], [
{id, Rec#h.html_id},
{class, [Tag, Rec#h.class]},
{title, Rec#h.title},
{style, Rec#h.style},
{data_fields, Rec#h.data_fields}
]).
tag(1) -> h1;
tag(2) -> h2;
tag(3) -> h3;
tag(4) -> h4;
tag(5) -> h5;
tag(6) -> h6;
tag(X) -> throw({error, {invalid_size_for_h_element, X}}).