Middleman cheatsheet

The helper methods page is very useful.

Code samples

Include

syntax: true
in the .erb frontmatter.

Show code for a partial (component)

<% code("html") {partial "/components/buttons/normal-button-button"} %>

Show random code

<% code("html") {"Some random <b>markup</b> with awkward characters like quote marks escaped using \."} %>

Loops

<% for i in 0..99 do %>
  <% id = df_id %>
  <% buttons.push(id) %>
  <button class="button" id="<%= id %>">Off</button>
<% end %>

Iterate through hash

<% ids.sort.each do |id, title| %>
  <section>
    <h2 id="<%= id %>"><%= title %></h2>
    <p><%= lorem.paragraphs(5) %>.</p>
  </section>
<% end %>

Include data from yaml

The yaml files are kept in the data directory at the root of the repo.

<% data.search.results.each do |result| %>
<article class="search-result content-with-meta content-with-meta--break-at-medium">
  <div class="accordion__child content">
    <div class="accordion__toggle" data-accordion-trigger="" tabindex="0" aria-expanded="true">
      <h3 class="accordion__label"><%= result.provider %><span class="course-count"><%= result.courses.count %> <% if result.courses.count == 1 %>course<% else %>courses<% end %></span></h3>
    </div>
    <div class="accordion__inner accordion__inner--plain" data-accordion-state="expanded" aria-hidden="false" role="region">
      <div class="accordion__inner-wrapper">
        <% result.courses.each do |course| %>
        <div class="course-details">
          <div class="search-result__actions">
            <button class="search-result__favourite" title="Favourite this course">Favourite</button>
          </div>
          <a class="course-title" href=><%= result.title %></a>
          <div class="course-qualification"><%= course.qualification %></div>
        </div>
        <% end %>
      </div>
    </div>
  </div>
  <div class="content-with-meta__meta content-with-meta__meta--provider-logo">
    <% if result.logo %><%= tag :img, :src => df_get_build_url + "/images/example/provider-logos/" + result.logo, :alt => "" %><% end %>
  </div>
</article>
<% end %>

Custom functions

<%= df_id %> <%# generate a random id %>
<%= df_content_columns 2 %> <%# output two columns with fake content %>
<%= df_get_jira_tag issue %> <%# reference a Jira ticket %>
<%= html_svg_image(path) %> <%# include an svg in html markup %>
<%= inline_svg_image(path, fill) %> <%# include an encoded svg in CSS %>

Text generators

The following helpers use fixed sets of content which we can use as dummy text. For example, df_words uses a long list of words that starts like this:

"lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "curabitur", "aliquam", "ex", "vitae", "nibh", "pellentesque", "tincidunt", "ut", "in", "justo", "enim", "nunc", "semper"…

We can choose position, quantity or step to give us different but consistent variations.

e.g.

<%= df_words 4 %>

"lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "curabitur", "aliquam", "ex", "vitae", "nibh", "pellentesque", "tincidunt", "ut", "in", "justo", "enim", "nunc", "semper"…

<%= df_words 4, 3 %>

"lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "curabitur", "aliquam", "ex", "vitae", "nibh", "pellentesque", "tincidunt", "ut", "in", "justo", "enim", "nunc", "semper"…

<%= df_words 4, 3, 2 %>

"lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "curabitur", "aliquam", "ex", "vitae", "nibh", "pellentesque", "tincidunt", "ut", "in", "justo", "enim", "nunc", "semper"…

df_words ( position [, quantity ] [, step ] )

<%= df_words position %> <%# output one word from the position in the array, param should be a number %>
<%= df_words 17 %>
justo
<%= df_words position, quantity %> <%# output quantity of words from the position in the array, params should be numbers %>
<%= df_words 15, 8 %>
ut in justo enim nunc semper lacus leo
<%= df_words position, quantity, step %> <%# output quantity of words from the position in the array, step size through the array, params should be numbers %>
<%= df_words 15, 8, 3 %>
ut enim lacus molestie dapibus elit consequat arcu

df_sentences ( position [, quantity ] [, step ] )

<%= df_sentences position %> <%# output one sentence from the position in the array, param should be a number %>
<%= df_sentences 15 %>
Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus
<%= df_sentences position, quantity %> <%# output quantity of sentences from the position in the array, params should be numbers %>
<%= df_sentences 15, 8 %>
Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla fermentum tempus nulla, at vulputate mi mattis ac. Aenean faucibus elit nisl, a iaculis sem varius nec. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed congue nec ante ut scelerisque. Nam porttitor molestie tincidunt. Pellentesque molestie, elit eu sollicitudin viverra, sem elit viverra orci, nec interdum ipsum purus vitae mi. Suspendisse eget molestie erat, sit amet aliquam nisl. Mauris venenatis purus tempor neque consectetur ornare
<%= df_sentences position, quantity, step %> <%# output quantity of sentences from the position in the array, step size through the array, params should be numbers %>
<%= df_sentences 15, 8, 5 %>
Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque molestie, elit eu sollicitudin viverra, sem elit viverra orci, nec interdum ipsum purus vitae mi. Sed ultricies ante vel elit efficitur dignissim. Fusce tortor lacus, porta ut justo sit amet, blandit pellentesque velit. Nullam ornare, metus eget rhoncus scelerisque, nisl ipsum bibendum odio, ut vestibulum lorem nisi et mi. Phasellus vitae sapien tortor. Quisque rutrum pulvinar orci. Nullam quis pellentesque libero

df_phone ( position )

<%= df_phone position %> <%# output one phone number from the position in the array, param should be a number% >
<%= df_phone 15 %>
029 2018 0528

df_email ( position )

<%= df_email position %> <%# output one email address from the position in the array, param should be a number% >
<%= df_email 2 %>
bonitamorse@example.com

df_paragraphs ( position [, quantity ] [, step ] )

<%= df_paragraphs position %> <%# output one paraghraph from the position in the array, param should be a number% >
<%= df_paragraphs 2 %>
Suspendisse felis diam, efficitur sit amet mi eu, ullamcorper scelerisque diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur leo dui, tincidunt hendrerit dui vel, dignissim varius augue. Duis tellus dolor, varius sit amet pellentesque sit amet, porta at tellus. Duis dignissim bibendum eleifend. Praesent sagittis dolor at maximus lobortis. Proin ac turpis sem. Aliquam lacinia fermentum mauris, sit amet posuere risus rutrum at. Donec elementum augue feugiat erat vulputate vestibulum. Curabitur aliquam, mi luctus pulvinar sodales, tortor elit commodo odio, eget sollicitudin lectus mauris nec quam. Aliquam erat volutpat. Sed at venenatis tellus, in egestas magna. Pellentesque tempor, enim eget dapibus pharetra, ante leo molestie lacus, a interdum lacus elit sed sem. Proin vel quam eget sapien tempus dictum eget a augue. In bibendum leo quis massa finibus congue. In eget orci nec ipsum tincidunt ornare.
<%= df_paragraphs position, quantity %> <%# output quantity of paragraphs from the position in the array, params should be numbers %>
<%= df_paragraphs 15, 2 %>
Aliquam elementum diam sed urna tempor, in varius lorem euismod. Morbi pulvinar vitae quam ac varius. Sed ipsum augue, venenatis ut ex et, fermentum vehicula leo. Nullam sit amet tristique erat, id vehicula nulla. Donec nec ante scelerisque, consectetur libero vel, ultrices lectus. Ut posuere scelerisque ante sed bibendum. In luctus pharetra ex nec convallis. Nam pharetra congue erat, non placerat risus mattis eget. Duis gravida porttitor sapien, non venenatis orci gravida ut. Nulla rutrum diam vitae rutrum cursus. Suspendisse nec velit tempus nibh faucibus consectetur sed vitae dui. Integer varius nulla augue, in tempor dolor blandit a. Sed non volutpat felis. Sed dictum consectetur lorem, et sagittis nibh molestie a. Praesent vel lectus finibus, consectetur tellus eget, sagittis ex. Suspendisse vel purus orci. Praesent ut lorem eget diam egestas volutpat a sed lorem. Nulla est odio, pulvinar sit amet maximus non, faucibus vitae leo. Nulla viverra aliquet ipsum, quis convallis tellus fringilla vitae. Etiam efficitur auctor purus, eget faucibus tellus. Proin tempor, lacus a pretium mattis, tortor erat lacinia mi, non dignissim sem eros ut mi.
<%= df_paragraphs position, quantity, step %> <%# output quantity of paragraphs from the position in the array, step size through the array, params should be numbers %>
<%= df_paragraphs 15, 3, 5 %>
Aliquam elementum diam sed urna tempor, in varius lorem euismod. Morbi pulvinar vitae quam ac varius. Sed ipsum augue, venenatis ut ex et, fermentum vehicula leo. Nullam sit amet tristique erat, id vehicula nulla. Donec nec ante scelerisque, consectetur libero vel, ultrices lectus. Ut posuere scelerisque ante sed bibendum. In luctus pharetra ex nec convallis. Nam pharetra congue erat, non placerat risus mattis eget. Duis gravida porttitor sapien, non venenatis orci gravida ut. Nulla rutrum diam vitae rutrum cursus. Suspendisse nec velit tempus nibh faucibus consectetur sed vitae dui. Integer varius nulla augue, in tempor dolor blandit a. Sed non volutpat felis. Sed dictum consectetur lorem, et sagittis nibh molestie a. Donec ultrices, erat in ullamcorper euismod, odio diam aliquet purus, et vestibulum dolor lorem euismod nisl. Nulla porttitor sapien eget tortor sagittis, eget suscipit mi interdum. Aenean facilisis sem at sapien tincidunt, ut interdum metus consectetur. Integer tempor sem in nulla congue efficitur. Nulla a dui consequat, dictum enim in, euismod metus. Fusce mattis leo in elit consequat, et placerat massa mollis. Sed accumsan aliquet velit, id accumsan lacus sagittis sit amet. Donec rutrum vulputate massa a vulputate. Cras mollis nisi tortor, sed ornare odio lobortis id. Duis aliquet massa in porta aliquet. Nulla diam felis, maximus id ligula eu, aliquet egestas urna. Morbi ornare sapien imperdiet, venenatis augue at, suscipit diam. In a sem dictum, ultricies turpis ac, scelerisque metus. Morbi laoreet vulputate mauris vitae lacinia. Sed eu elit bibendum, fermentum leo sed, pretium diam. Aliquam tincidunt lectus ut ornare gravida. Nulla facilisi. Nunc vitae neque vulputate, sollicitudin metus ut, rhoncus lectus. Donec ut suscipit lacus, quis ultrices magna. Donec nec maximus eros. Donec mattis dignissim risus eu bibendum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque quam leo, tempus eget arcu vel, venenatis ultricies turpis. Nulla varius odio mauris, vitae volutpat mauris volutpat dignissim.