Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

active_html_tags

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

active_html_tags

  • 0.1.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

ActiveHtmlTags

A simple helper to simplify the generation of html by bringing content_tag to the next level.

Getting started

Add the gem to your Gemfile. For the last officially released gem:

gem 'active_html_tags'

Now you should be able to use any html tag as a ruby method in your views.

Usage

ActiveHtmlTags is a helper to use any kind of HTML tag as a direct method instead of passing it to content_tag # or tag.#. At the same time it allows for multiple arguments to be given and for smarter options.

# In any view using ApplicationHelper
# for example in app/views/___/___.html.erb
# app/views/layouts/application.html.erb

<%= h1 "This is pretty awesome" %>
<%= tag.h1, "compared to this" %>
<%= content_tag :h1, "or this" %>

The name mappings from html tags to method names are 1:1. Therefore you can create constructs like these:

<%= div do %>
  <%= table do %>
    <%= tr do %>
      <%= th "but it doesn't stop here" %>
      <%= td do %>
         you can make such nice tables
      <% end %>
    <% end %>
    <%= tr(th("very dense tables?"), td(:yes)) %>
  <% end %>

  <%= table tr(th("complete tables?"), td(:yes)) %>
<% end %>

A list of all HTML available and usable tags can be found on w3schools - TAGs.

Currently all these tags are supported:

a, abbr, acronym, address, applet, area, article, aside, audio, b, base, basefont,
bb, bdo, big, blockquote, body, button, canvas, caption, center, cite, code, col,
colgroup, command, datagrid, datalist, dd, del, details, dfn, dialog, dir, div, dl,
dt, em, embed, eventsource, fieldset, figcaption, figure, font, footer, form, frame,
frameset, h1, h2, h3, h4, h5, h6, head, header, hgroup, html, i, iframe, img, input,
ins, isindex, kbd, keygen, label, legend, li, link, map, mark, menu, meta, meter, nav,
noframes, noscript, object, ol, optgroup, option, output, p, param, pre, progress, q,
rp, rt, ruby, s, samp, script, section, select, small, source, span, strike, strong,
style, sub, sup, table, tbody, td, textarea, tfoot, th, thead, time, title, tr, track,
tt, u, ul, var, video, wbr, hr, br

Unlimited arguments

Additionally the content_tag method signature has been improved slightly. Now it supports a list of arguments

<%= h1 "You can add as much", "as you want", small("and what you want") %>
vs
<%= tag.span :h1, safe_join(["this is not very", "sexy", content_tag(:small, "or readable")], " ") %>
<%= content_tag :h1, safe_join(["this is not very", "sexy", content_tag(:small, "or readable")], " ") %>

Advanced options for style

Have you ever wondered why this happens with css? Now you don't have run into this anymore, arrays and hashes are first class citizens in ActiveHtmlTags.

<%= span "this text is actually green", style: {color: :green} %>
# <span style="color: green">this text is actually green</span>
vs
<%= content_tag :span, "this text is sadly not green", style: {color: :green} %>
# <span style="color green">this text is sadly not green</span>

This allows for more complex scenarios

<%= base_style = {"background-color" => "blue"} # Place this logic somewhere nicely %>

<%= span "this text is actually green on blue", style: base_style.merge({color: :green}) %>
# <span style="background-color: blue ; color: green">this text is actually green on blue</span>

Of course arrays are loved too.

<% base_style = ["background-color: blue"]%>

<%= span "this text is actually green on blue", style: base_style + ["color: green"] %>
# <span style="background-color: blue ; color: green">this text is actually green on blue</span>

Boht arrays and hashes are joined using ;

Advanced options for javascript

Options will be joined using ; in case of html attributes who require javascript. A reference of these is also available here: w3schools - HTML Attribute Reference

<%= span "don't click me", onclick: ["1 + 1", "2 + 2"] %>
# <span onclick="1 + 1 ; 2 + 2">don't click me</span>

Only the values will be shown in case of hashes. This allows easier code re-use and overwriting.

<%= span "don't click me", onclick: {base: "1 + 1", feature: "2 + 2"} %>
# <span onclick="1 + 1 ; 2 + 2">don't click me</span>

Advanced options for class and all other attributes

In all other cases, arrays and hash values will be joined using spaces . A reference of all html attributes is also available here: w3schools - HTML Attribute Reference

<% current_color = good_or_bad ? "btn-primary" : "btn-default" %>
<% current_size = nice_or_cool ? "btn-lg" : "btn-sm" %>
<%= span "a nice bootstrap button", class: ["btn", current_state, current_size] %>
# <span class="btn btn-primary btn-lg">a nice boostrap button</span>

In case of hashes, you can override values easier.

<% base_button = {base: :btn, color: "btn-primary"} %>

<%= span "a nice bootstrap button", class: base_button) %>
# <span class="btn btn-primary">a nice boostrap button</span>

<%= span "a nice bootstrap button", class: base_button.merge({color: "btn-danger"}) %>
# <span class="btn btn-danger">a nice boostrap button</span>

Installation

Add this line to your application's Gemfile:

gem 'active_html_tags'

And then execute:

$ bundle

Or install it yourself as:

$ gem install active_html_tags

Contributing

Feel free to create a merge request in case of bugs, features and more.

Test

bundle exec rake test

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 15 Oct 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc