An open API service indexing awesome lists of open source software.

https://github.com/oncomouse/bem_html


https://github.com/oncomouse/bem_html

Last synced: over 1 year ago
JSON representation

Awesome Lists containing this project

README

          

# bem_html

BEM helpers for HTML.

Utility to convert HTML attributes (`bem-block`, `bem-element`, and `bem-modifiers`) to proper CSS classnames for use in BEM.

## Purpose

In large projects, BEM namespacing can get fairly complicated. In Sass and PostCSS, there exist a number of helper methods to simply the creation of nested Block, Element, Modifier classes; however, this plugin provides similar helper methods within HTML itself.

## Sample Usage

Say you had a BEM block called "widget" that had the following structure in HTML:

~~~html


Heading



First Paragraph




~~~

With bem-html, you could define that structure instead as the following:

~~~html


Heading



First Paragraph




~~~

And this extension would produce the desired HTML.

Originally, this extension was specifically designed for HAML, where it really shines:

~~~haml
%div{bem:{block: :widget}}
%h1{bem:{element: :heading, modifiers: [:lime]}} Heading
%section{bem:{element: :content}}
%p{bem: {element: "first-paragraph"}} First Paragraph
~~~

## Installation

Install using `gem bem_html`

## Usage

Sample Ruby code:

~~~ ruby
require "bem_html"

html = IO.read("index.html")
BemHtml.parse(html) # -> Will output index.html with bem-* tags converted to CSS names
~~~

## Todo

* Binary parser for CLI usage