Project

phil

0.01
No commit activity in last 3 years
No release in over 3 years
Phil is a collection of markup generation and iteration methods to ease creation of UI mockups. It uses Faker for standard content generation and adds a number of convenience methods and ways to build consistently varied markup for layout testing.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0
>= 0

Runtime

 Project Readme

Phil

Phil is a lightweight content generation module that wraps around Ffaker. You can create large amounts of markup for layout testing with a few simple methods.

A big theme of Phil is that any parameter that can accept a number also accepts a range. This allows for far more utility than vanilla Ffaker when it comes to testing different permutations of content.

To get started, run gem install phil or add gem 'phil' to your Gemfile. Then add

require 'phil'

wherever you need it.

Iteration

Get a random integer from an array or range:

Phil.pick 1..3
Phil.pick [1, 2, 3]
Phil.pick ["Foo", "Bar", "Baz"]

Loop a random number of times:

Phil.loop 1..100 do |i|
  "This will be output between 1 and 100 times and is index #{i}"
end

Have a 1 in N chance of doing something (N defaults to 3):

Phil.sometimes "foo"                    # 1 in 3
Phil.sometimes "foo", 100               # 1 in 100
Phil.sometimes do
  "foo"
Phil.sometimes 100 do
  "foo"

Content Generation

Body content

Generate a ton of body content with one method. This defaults to "h1 p p h2 p ol h2 p ul", but you can pass it a string of whatever content tags you like, including blockquote, other headings, and so on. Blockquotes will contain multiple <p> elements, paragraphs will contain a few sentences, and any other tags will contain 3-15 words.

Phil.markup
Phil.markup "h1 p h2 ul p blockquote h5 h6"

Images

Generate a placehold.it image URL. Requires dimensions, but you can also request colors (in the format #background/#foreground) and containing text. Placehold.it doesn't play nice with some containing text characters so those are stripped out.

You can pass parameters in any order if you like – Phil is reasonably smart about figuring them out – or name them if you're feeling verbose.

Phil.image 200                          # http://placehold.it/200
Phil.image '200x400', '#ff0000'         # http://placehold.it/200x400/ff0000
Phil.image '200x400', '#ff0000/#00ff00' # http://placehold.it/200x400/ff0000/00ff00
Phil.image 'Jackie Jormp-Jomp?', 600    # http://placehold.it/600&text=Jackie+Jormp-Jomp

# or pass named parameters (you can use ranges for size here)
Phil.image(text: 'Pants', width: 300, height: (300..500), background: '#ff0000', foreground: '#0000ff')

Lorem methods (all take ranges or numbers)

Phil.words                              # defaults to 5..20
Phil.words 5
Phil.words 5..50

Phil.paragraphs                         # defaults to 1..3
Phil.paragraphs 5                       # outputs HTML markup with <p> elements
Phil.paragraphs 5..50

Phil.blockquote                         # defaults to containing 1..3 <p> elements
Phil.blockquote 1..5                    # 1..5 <p> elements

Phil.ul                                 # defaults to 3..10 <li>s with 3..15 words
Phil.ul 1..5, 10                        # 1..5 items, 10 words apiece

Phil.ol
Phil.ol 1..5, 10

Phil.link_list                          # outputs a <ul> of <li>s with <a>s inside
Phil.link_list 1..5, 10

Assorted other content generation methods

Phil.date                               # Random date object between Dec 31 1969 and now
Phil.date 7                             # Random date object in the last 7 days
Phil.date 7-14                          # Random date object in the last 7-14 days
Phil.currency 10..100                   # Price string from $10.00 to $100.99
Phil.currency 10..100, "£"              # Prefix different currency symbol
Phil.phone                              # Defaults to (###)-###-####
Phil.phone "###-#### x###"
Phil.number 5                           # Random 5-digit number (string)
Phil.number 5..10                       # Number 5-10 digits long

Aliased Ffaker methods for convenience

Phil.address
Phil.city
Phil.state_abbr
Phil.domain_name
Phil.email
Phil.name
Phil.first_name
Phil.last_name
Phil.company_name