[
  {
    "path": ".gitignore",
    "content": "\ndocs/bundle.js\n"
  },
  {
    "path": ".npmignore",
    "content": "\ndocs\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n  - 6.2\nscript:\n  - npm test\n"
  },
  {
    "path": "README.md",
    "content": "# gravitons\n\nVirtually massless CSS layout microlibrary – http://jxnblk.com/gravitons\n\n[![Build Status](https://travis-ci.org/jxnblk/gravitons.svg?branch=master)](https://travis-ci.org/jxnblk/gravitons)\n\n```sh\nnpm i -g gravitons\n```\n\n![gravitons](https://cloud.githubusercontent.com/assets/3451712/17651212/1b8de4c0-6230-11e6-9b15-90e659688650.gif)\n\n```sh\ngravitons > base.css\n```\n\nReturns the following to stdout:\n\n```css\n/*! gravitons */\n.h0{font-size:48px}\n.h1{font-size:32px}\n.h2{font-size:24px}\n.h3{font-size:20px}\n.h4{font-size:16px}\n.h5{font-size:14px}\n.h6{font-size:12px}\n.m0{margin:0}\n.m1{margin:8px}\n.m2{margin:16px}\n.m3{margin:32px}\n.m4{margin:64px}\n.mt0{margin-top:0}\n.mt1{margin-top:8px}\n.mt2{margin-top:16px}\n.mt3{margin-top:32px}\n.mt4{margin-top:64px}\n.mr0{margin-right:0}\n.mr1{margin-right:8px}\n.mr2{margin-right:16px}\n.mr3{margin-right:32px}\n.mr4{margin-right:64px}\n.mb0{margin-bottom:0}\n.mb1{margin-bottom:8px}\n.mb2{margin-bottom:16px}\n.mb3{margin-bottom:32px}\n.mb4{margin-bottom:64px}\n.ml0{margin-left:0}\n.ml1{margin-left:8px}\n.ml2{margin-left:16px}\n.ml3{margin-left:32px}\n.ml4{margin-left:64px}\n.p0{padding:0}\n.p1{padding:8px}\n.p2{padding:16px}\n.p3{padding:32px}\n.p4{padding:64px}\n.pt0{padding-top:0}\n.pt1{padding-top:8px}\n.pt2{padding-top:16px}\n.pt3{padding-top:32px}\n.pt4{padding-top:64px}\n.pr0{padding-right:0}\n.pr1{padding-right:8px}\n.pr2{padding-right:16px}\n.pr3{padding-right:32px}\n.pr4{padding-right:64px}\n.pb0{padding-bottom:0}\n.pb1{padding-bottom:8px}\n.pb2{padding-bottom:16px}\n.pb3{padding-bottom:32px}\n.pb4{padding-bottom:64px}\n.pl0{padding-left:0}\n.pl1{padding-left:8px}\n.pl2{padding-left:16px}\n.pl3{padding-left:32px}\n.pl4{padding-left:64px}\n.db{display:block}\n.dib{display:inline-block}\n.di{display:inline}\n.dt{display:table}\n.dtr{display:table-row}\n.dtc{display:table-cell}\n.df{display:flex}\n.dif{display:inline-flex}\n.fl{float:left}\n.fr{float:right}\n.oh{overflow:hidden}\n.cf:after{content:\"\";display:block;clear:both}\n.x0{width:0}\n.x1{width:8.333333333333332%}\n.x2{width:16.666666666666664%}\n.x3{width:25%}\n.x4{width:33.33333333333333%}\n.x5{width:41.66666666666667%}\n.x6{width:50%}\n.x7{width:58.333333333333336%}\n.x8{width:66.66666666666666%}\n.x9{width:75%}\n.x10{width:83.33333333333334%}\n.x11{width:91.66666666666666%}\n.x12{width:100%}\n```\n\nMIT License\n\n"
  },
  {
    "path": "bin/gravitons.js",
    "content": "#! /usr/bin/env node\n\nconst gravitons = require('..')()\n\nprocess.stdout.write(gravitons)\n\n"
  },
  {
    "path": "docs/entry.js",
    "content": "\nconst h = require('h0').default\nconst gravitons = require('..')()\nconst stats = require('./stats.json')\nconst logo = require('./logo')\n\nconst demoCss = `\n*{box-sizing:border-box}\nbody{\nfont-family:-apple-system,BlinkMacSystemFont,sans-serif;\nfont-family: Menlo, monospace;\nline-height:1.5;\nmargin:0;\ncolor:#111;\n}\n`\n\nconst blue = '#05a'\n\nconst div = h('div')\nconst h1 = h('h1')({\n  class: 'h3 mt4 mb1'\n})\nconst h2 = h('h2')({\n  class: 'h3 mt4 mb1'\n})\nconst p = h('p')\nconst pre = h('pre')({\n  style: {\n    fontFamily: 'Menlo, monospace',\n    lineHeight: 2,\n    fontSize: 14,\n    overflowX: 'scroll',\n    paddingLeft: 16,\n    marginBottom: 32,\n    borderLeft: '4px solid rgba(0,0,0,.0625)'\n  }\n})\nconst ul = h('ul')\nconst li = h('li')\nconst link = h('a')({\n  style: {\n    color: blue\n  }\n})\nconst btn = h('a')({\n  class: 'dib p1',\n  style: {\n    color: 'white',\n    backgroundColor: 'blue',\n    border: 0,\n    WebkitAppearance: 'none',\n  }\n})\nconst blockquote = h('blockquote')({\n  style: {\n    maxWidth: '42em'\n  },\n  class: 'h2 m0 mt4 mb4'\n})\n\n\nconst tree = div({\n  class: 'p3'\n})(\n  h('style')(demoCss + gravitons.replace(/\\n/g, '')),\n  h('header')({})(\n    div({\n      class: 'mt4 mb4'\n    })(\n      logo()\n    ),\n    h1('Gravitons'),\n    p('Virtually massless CSS layout microlibrary'),\n    div(\n      link({\n        href: 'https://github.com/jxnblk/gravitons',\n        class: 'mr2'\n      })('GitHub'),\n      link({\n        href: 'https://npmjs.com/package/gravitons'\n      })('npm')\n    ),\n  ),\n  p({\n    style: {\n      maxWidth: '42em'\n    },\n    class: 'h2 mt4 mb4'\n  })(\n    'Gravitons is an extremely lightweight suite of CSS layout utilities based on modular scales and inspired by the ',\n    link({\n      href: 'http://en.wikipedia.org/wiki/Unix_philosophy'\n    })('Unix Philosophy')\n  ),\n  pre('npm i -g gravitons'),\n  pre('gravitons > base.css'),\n  pre(`${stats.humanizedGzipSize} gzipped - ${stats.rules.total} rules - ${stats.selectors.total} selectors - ${stats.declarations.total} declarations`),\n  h2('Features'),\n  ul(\n    li('Roughly .5KB gzipped'),\n    li('Shorthand naming convention'),\n    li('Quick to internalize'),\n    li('No colors'),\n    li('No media queries'),\n    li('No monolithic component styles')\n  ),\n  h2('CSS'),\n  pre(gravitons),\n  blockquote('The graviton is a hypothetical elementary particle that mediates the force of gravitation in the framework of quantum field theory'),\n  div({\n    class: 'mt4 mb4'\n  })(\n    h2('Related'),\n    link({\n      href: 'http://tachyons.io',\n      class: 'mr2'\n    })('Tachyons'),\n    link({ href: 'http://basscss.com' })('Basscss')\n  ),\n  h('footer')({\n    class: 'mt4 mb4'\n  })(\n    link({\n      href: 'https://github.com/jxnblk/gravitons',\n      class: 'mr2'\n    })('GitHub'),\n    link({\n      href: 'https://npmjs.com/package/gravitons',\n      class: 'mr2'\n    })('npm'),\n    link({\n      href: 'http://jxnblk.com'\n    })('Made by Jxnblk')\n  )\n)\n\nif (typeof app === 'undefined') {\n  const app = document.createElement('div')\n  document.body.appendChild(app)\n  app.appendChild(tree)\n} else {\n  app.appendChild(tree)\n}\n\n\n"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html>\n<title>Gravitons</title>\n<meta name='viewport' content='width=device-width, initial-scale=1'>\n<div id='app'></div>\n<script src='bundle.js'></script>\n"
  },
  {
    "path": "docs/logo.js",
    "content": "\nconst h = require('h0').default\n\nconst logo = () => {\n    const size = 256\n    const width = 160\n    // Angle\n    const a = 36\n    const a1 = 90 - a\n    const a2 = 180 - a\n    // Radii\n    const r0 = size * 0.5625\n    const r1 = size * 0.4375\n    const r2 = size * .375\n    const r3 = size * .3125\n    const r4 = size * .25\n    // Offsets\n    const o0 = size/2 - r0\n    const o1 = size/2 - r1\n    const o2 = size/2 - r2\n    const o3 = size/2 - r3\n    const o4 = size/2 - r4\n    // Diagonal line stroke width\n    const w = 4\n    const wy = Math.cos(90-a) * w\n    const wx = Math.sin(90-a) * w\n    // Calculate x coordinate with radius and angle\n    const rx = (r, a) => r + r * Math.cos(Math.PI * a/180)\n    // Calculate y coordinate with radius and angle\n    const ry = (r, a) => r + r * Math.sin(Math.PI * a/180)\n\n    const circle = [\n      'M',\n      o2 + rx(r2, -a),\n      o2 + ry(r2, -a),\n      'A', r2, r2, '0 1 0',\n      o2 + rx(r2, a),\n      o2 + ry(r2, a),\n      'L',\n      o3 + rx(r3, a),\n      o3 + ry(r3, a),\n      'A', r3, r3, '1 1 1',\n      o3 + rx(r3, -a),\n      o3 + ry(r3, -a),\n      'z',\n    ].join(' ')\n\n    const diagonal = [\n      'M',\n      wx + o0 + rx(r0, a),\n      -wy + o0 + ry(r0, a),\n      'L',\n      -wx + o0 + rx(r0, a),\n      wy + o0 + ry(r0, a),\n      'L',\n      -wx + o4 + rx(r4, -a2),\n      wy + o4 + ry(r4, -a2),\n      'L',\n      wx + o4 + rx(r4, -a2),\n      -wy + o4 + ry(r4, -a2),\n      'z',\n      'M',\n      wx + o1 + rx(r1, -a2),\n      -wy + o1 + ry(r1, -a2),\n      'L',\n      -wx + o1 + rx(r1, -a2),\n      wy + o1 + ry(r1, -a2),\n      'L',\n      -wx + o0 + rx(r0, -a2),\n      wy + o0 + ry(r0, -a2),\n      'L',\n      wx + o0 + rx(r0, -a2),\n      -wy + o0 + ry(r0, -a2),\n      'z'\n    ].join(' ')\n\n  const css = `\n    .Logo-particle-1,\n    .Logo-particle-2 {\n      animation-name: spin;\n      animation-timing-function: linear;\n      animation-iteration-count: infinite;\n    }\n    .Logo-particle-1 {\n      transform-origin: 50% 50%;\n      animation-duration: 1s;\n    }\n    .Logo-particle-2 {\n      transform-origin: 50% 50%;\n      animation-duration: 1.25s;\n      animation-direction: reverse;\n    }\n    @keyframes spin {\n      from { transform: rotate(0) }\n      to   { transform: rotate(360deg) }\n    }\n  `\n\n  const svg = (`\n    <svg xmlns='http://www.w3.org/svg/2000'\n      viewBox='0 0 ${size} ${size}'\n      width='${width}'\n      height='${width}'\n      fill='currentcolor'>\n      <g class='Logo-particle-1'>\n        <rect width='${size}' height='${size}' fill='none' />\n        <circle\n          cx='${size / 2}'\n          cy='3'\n          r='3'\n          opacity='0.5' />\n      </g>\n      <g class='Logo-particle-2'>\n        <rect width='${size}' height='${size}' fill='none' />\n        <circle\n          cx='${size / 2}'\n          cy='${size - 4}'\n          r='4'\n          opacity='0.5' />\n      </g>\n      <path d='${circle}' />\n      <path d='${diagonal}' />\n    </svg>\n  `)\n\n  const div = h('div')()\n\n  div.innerHTML = svg\n\n  return h('div')(\n    h('style')(css),\n    div\n  )\n}\n\nmodule.exports = logo\n\n"
  },
  {
    "path": "docs/stats.js",
    "content": "\nconst fs = require('fs')\nconst path = require('path')\nconst cssstats = require('cssstats')\nconst gravitons = require('..')()\n\nconst stats = cssstats(gravitons)\n\nfs.writeFileSync(path.join(__dirname, 'stats.json'), JSON.stringify(stats))\n\n"
  },
  {
    "path": "docs/stats.json",
    "content": "{\"size\":1851,\"gzipSize\":554,\"humanizedSize\":\"2kB\",\"humanizedGzipSize\":\"554B\",\"rules\":{\"total\":82,\"size\":{\"graph\":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1],\"max\":3,\"average\":1.024390243902439}},\"selectors\":{\"total\":82,\"type\":0,\"class\":82,\"id\":0,\"pseudoClass\":0,\"pseudoElement\":1,\"values\":[\".h0\",\".h1\",\".h2\",\".h3\",\".h4\",\".h5\",\".h6\",\".m0\",\".m1\",\".m2\",\".m3\",\".m4\",\".mt0\",\".mt1\",\".mt2\",\".mt3\",\".mt4\",\".mr0\",\".mr1\",\".mr2\",\".mr3\",\".mr4\",\".mb0\",\".mb1\",\".mb2\",\".mb3\",\".mb4\",\".ml0\",\".ml1\",\".ml2\",\".ml3\",\".ml4\",\".p0\",\".p1\",\".p2\",\".p3\",\".p4\",\".pt0\",\".pt1\",\".pt2\",\".pt3\",\".pt4\",\".pr0\",\".pr1\",\".pr2\",\".pr3\",\".pr4\",\".pb0\",\".pb1\",\".pb2\",\".pb3\",\".pb4\",\".pl0\",\".pl1\",\".pl2\",\".pl3\",\".pl4\",\".db\",\".dib\",\".di\",\".dt\",\".dtr\",\".dtc\",\".df\",\".dif\",\".fl\",\".fr\",\".oh\",\".cf:after\",\".x0\",\".x1\",\".x2\",\".x3\",\".x4\",\".x5\",\".x6\",\".x7\",\".x8\",\".x9\",\".x10\",\".x11\",\".x12\"],\"specificity\":{\"max\":11,\"average\":10.012195121951219}},\"declarations\":{\"total\":84,\"properties\":{\"font-size\":[\"48px\",\"32px\",\"24px\",\"20px\",\"16px\",\"14px\",\"12px\"],\"margin\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"margin-top\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"margin-right\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"margin-bottom\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"margin-left\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"padding\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"padding-top\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"padding-right\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"padding-bottom\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"padding-left\":[\"0\",\"8px\",\"16px\",\"32px\",\"64px\"],\"display\":[\"block\",\"inline-block\",\"inline\",\"table\",\"table-row\",\"table-cell\",\"flex\",\"inline-flex\",\"block\"],\"float\":[\"left\",\"right\"],\"overflow\":[\"hidden\"],\"content\":[\"\\\"\\\"\"],\"clear\":[\"both\"],\"width\":[\"0\",\"8.333333333333332%\",\"16.666666666666664%\",\"25%\",\"33.33333333333333%\",\"41.66666666666667%\",\"50%\",\"58.333333333333336%\",\"66.66666666666666%\",\"75%\",\"83.33333333333334%\",\"91.66666666666666%\",\"100%\"]}},\"mediaQueries\":{\"total\":0,\"unique\":0,\"values\":[],\"contents\":[]}}"
  },
  {
    "path": "index.js",
    "content": "\nconst kebab = require('./lib/kebab')\nconst numberToPixel = require('./lib/number-to-pixel')\nconst getInitials = require('./lib/get-initials')\nconst flattenArray = require('./lib/flatten-array')\nconst styles = require('./lib/styles')\n\nconst isArr = n => Array.isArray(n)\nconst isStr = n => typeof n === 'string'\nconst isObj = n => typeof n === 'object' && n !== null\n\nconst createRule = sel => prop => val => (\n  `.${sel}{${prop}:${numberToPixel(val)}}`\n)\n\nconst createComplexRule = sel => style => {\n  const decs = Object.keys(style).map(key => (\n    `${kebab(key)}:${style[key]}`\n  ))\n  return `.${sel}{${decs.join(';')}}`\n}\n\nconst getScaledSelector = sel => val => i => {\n  if (typeof val === 'number') {\n    return sel + i\n  }\n  return sel + getInitials(val)\n}\n\nconst createScaledRules = values => sel => prop => (\n  values.map((val, i) => (\n    createRule(getScaledSelector(sel)(val)(i))(prop)(val)\n  ))\n)\n\nconst createDimensionalRules = props => values => (\n  props.map(prop => (\n    createScaledRules(values)(getInitials(prop))(prop)\n  )).reduce(flattenArray)\n)\n\nconst createStylesheet = (options = {}) => {\n  const rules = styles.map(style => {\n    const { sel, prop, val, decs } = style\n    if (isArr(prop) && isArr(val)) {\n      return createDimensionalRules(prop)(val)\n    }\n    if (isStr(prop) && isArr(val)) {\n      return createScaledRules(val)(sel)(prop)\n    }\n    if (isObj(decs)) {\n      return createComplexRule(sel)(decs)\n    }\n\n    return createRule(sel)(prop)(val)\n  }).reduce(flattenArray)\n\n  const css = `/*! gravitons */\\n` + rules.join('\\n') + '\\n\\n'\n\n  return css\n}\n\nmodule.exports = createStylesheet\n\n"
  },
  {
    "path": "lib/flatten-array.js",
    "content": "\nconst flattenArray = (a = [], b) => {\n  if (Array.isArray(b)) return [...a, ...b]\n  return [...a, b]\n}\n\nmodule.exports = flattenArray\n\n"
  },
  {
    "path": "lib/get-initials.js",
    "content": "\nconst getInitials = str => str.split('-').map(s => s.charAt(0)).join('')\n\nmodule.exports = getInitials\n\n"
  },
  {
    "path": "lib/kebab.js",
    "content": "\nconst kebab = str => str.replace(/([A-Z])/g, g => '-' + g.toLowerCase())\n\nmodule.exports = kebab\n\n"
  },
  {
    "path": "lib/number-to-pixel.js",
    "content": "\nconst numberToPixel = val => {\n  if (typeof val !== 'number' || val === 0) return val\n  if (val > 0 && val <= 1) {\n    return `${val * 100}%`\n  }\n  return val + 'px'\n}\n\nmodule.exports = numberToPixel\n\n"
  },
  {
    "path": "lib/styles.js",
    "content": "\nconst scale = [\n  0,\n  8,\n  16,\n  32,\n  64\n]\n\nconst styles = [\n  {\n    sel: 'h',\n    prop: 'font-size',\n    val: [\n      48,\n      32,\n      24,\n      20,\n      16,\n      14,\n      12\n    ]\n  },\n  {\n    prop: [\n      'margin',\n      'margin-top',\n      'margin-right',\n      'margin-bottom',\n      'margin-left',\n      'padding',\n      'padding-top',\n      'padding-right',\n      'padding-bottom',\n      'padding-left'\n    ],\n    val: scale\n  },\n  {\n    sel: 'd',\n    prop: 'display',\n    val: [\n      'block',\n      'inline-block',\n      'inline',\n      'table',\n      'table-row',\n      'table-cell',\n      'flex',\n      'inline-flex'\n    ]\n  },\n  {\n    sel: 'f',\n    prop: 'float',\n    val: [\n      'left',\n      'right'\n    ]\n  },\n  {\n    sel: 'oh',\n    prop: 'overflow',\n    val: 'hidden'\n  },\n  {\n    sel: 'cf:after',\n    decs: {\n      content: '\"\"',\n      display: 'block',\n      clear: 'both'\n    }\n  },\n  {\n    sel: 'x',\n    prop: 'width',\n    val: Array.from({ length: 13 }).map((n, i) => i / 12)\n  }\n]\n\nmodule.exports = styles\n\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"gravitons\",\n  \"version\": \"2.0.1\",\n  \"description\": \"Virtually massless CSS layout microlibrary\",\n  \"main\": \"index.js\",\n  \"bin\": {\n    \"gravitons\": \"./bin/gravitons.js\"\n  },\n  \"style\": \"src/gravitons.css\",\n  \"scripts\": {\n    \"build\": \"hotdamn docs/entry.js -o docs/bundle.js\",\n    \"start\": \"hotdamn docs/entry.js --dev\",\n    \"gh-pages\": \"gh-pages -d docs\",\n    \"test\": \"ava -v\"\n  },\n  \"author\": \"Brent Jackson\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"ava\": \"^0.16.0\",\n    \"cssstats\": \"^3.0.0-beta.1\",\n    \"gh-pages\": \"^0.11.0\",\n    \"h0\": \"^1.0.0-beta.4\",\n    \"hotdamn\": \"^1.1.0-beta.1\"\n  },\n  \"dependencies\": {},\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jxnblk/gravitons.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/jxnblk/gravitons/issues\"\n  },\n  \"homepage\": \"https://github.com/jxnblk/gravitons\"\n}\n"
  },
  {
    "path": "test/index.js",
    "content": "\nimport test from 'ava'\nimport gravitons from '..'\n\nlet css\n\ntest('returns a string', t => {\n  css = gravitons()\n  t.is(typeof css, 'string')\n})\n\ntest('includes typography rules', t => {\n  t.regex(css, /\\.h1/)\n  t.regex(css, /\\.h2/)\n  t.regex(css, /\\.h3/)\n  t.regex(css, /\\.h4/)\n  t.regex(css, /\\.h5/)\n  t.regex(css, /\\.h6/)\n})\n\ntest('includes margin rules', t => {\n  t.regex(css, /\\.m0/)\n  t.regex(css, /\\.m1/)\n  t.regex(css, /\\.m2/)\n  t.regex(css, /\\.m3/)\n  t.regex(css, /\\.m4/)\n})\n\ntest('includes padding rules', t => {\n  t.regex(css, /\\.p0/)\n  t.regex(css, /\\.p1/)\n  t.regex(css, /\\.p2/)\n  t.regex(css, /\\.p3/)\n  t.regex(css, /\\.p4/)\n})\n\ntest('includes display rules', t => {\n  t.regex(css, /\\.db/)\n  t.regex(css, /\\.dib/)\n  t.regex(css, /\\.di/)\n  t.regex(css, /\\.dt/)\n  t.regex(css, /\\.dtr/)\n  t.regex(css, /\\.dtc/)\n  t.regex(css, /\\.df/)\n  t.regex(css, /\\.dif/)\n})\n\ntest('includes float rules', t => {\n  t.regex(css, /\\.fl/)\n  t.regex(css, /\\.fr/)\n})\n\ntest('includes clearfix rules', t => {\n  t.regex(css, /\\.oh/)\n  t.regex(css, /\\.cf/)\n})\n\ntest('includes width rules', t => {\n  t.regex(css, /\\.x0/)\n  t.regex(css, /\\.x1/)\n  t.regex(css, /\\.x2/)\n  t.regex(css, /\\.x3/)\n  t.regex(css, /\\.x4/)\n  t.regex(css, /\\.x5/)\n  t.regex(css, /\\.x6/)\n  t.regex(css, /\\.x7/)\n  t.regex(css, /\\.x8/)\n  t.regex(css, /\\.x9/)\n  t.regex(css, /\\.x10/)\n  t.regex(css, /\\.x11/)\n  t.regex(css, /\\.x12/)\n})\n\ntest('converts numbers to pixel values', t => {\n  t.regex(css, /:0}/)\n  t.regex(css, /32px/)\n  t.regex(css, /64px/)\n})\n\ntest('converts fractions to percentages', t => {\n  t.regex(css, /25%}/)\n  t.regex(css, /50%}/)\n  t.regex(css, /100%}/)\n})\n\n"
  }
]