| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503 | 
							- <!doctype html>
 
- <html lang="en">
 
- <head>
 
-     <title>Code coverage report for index.ts</title>
 
-     <meta charset="utf-8" />
 
-     <link rel="stylesheet" href="prettify.css" />
 
-     <link rel="stylesheet" href="base.css" />
 
-     <meta name="viewport" content="width=device-width, initial-scale=1">
 
-     <style type='text/css'>
 
-         .coverage-summary .sorter {
 
-             background-image: url(sort-arrow-sprite.png);
 
-         }
 
-     </style>
 
- </head>
 
- <body>
 
- <div class='wrapper'>
 
-   <div class='pad1'>
 
-     <h1>
 
-       <a href="index.html">All files</a> index.ts
 
-     </h1>
 
-     <div class='clearfix'>
 
-       <div class='fl pad1y space-right2'>
 
-         <span class="strong">100% </span>
 
-         <span class="quiet">Statements</span>
 
-         <span class='fraction'>65/65</span>
 
-       </div>
 
-       <div class='fl pad1y space-right2'>
 
-         <span class="strong">100% </span>
 
-         <span class="quiet">Branches</span>
 
-         <span class='fraction'>38/38</span>
 
-       </div>
 
-       <div class='fl pad1y space-right2'>
 
-         <span class="strong">100% </span>
 
-         <span class="quiet">Functions</span>
 
-         <span class='fraction'>7/7</span>
 
-       </div>
 
-       <div class='fl pad1y space-right2'>
 
-         <span class="strong">100% </span>
 
-         <span class="quiet">Lines</span>
 
-         <span class='fraction'>62/62</span>
 
-       </div>
 
-     </div>
 
-   </div>
 
-   <div class='status-line high'></div>
 
- <pre><table class="coverage">
 
- <tr><td class="line-count quiet">1
 
- 2
 
- 3
 
- 4
 
- 5
 
- 6
 
- 7
 
- 8
 
- 9
 
- 10
 
- 11
 
- 12
 
- 13
 
- 14
 
- 15
 
- 16
 
- 17
 
- 18
 
- 19
 
- 20
 
- 21
 
- 22
 
- 23
 
- 24
 
- 25
 
- 26
 
- 27
 
- 28
 
- 29
 
- 30
 
- 31
 
- 32
 
- 33
 
- 34
 
- 35
 
- 36
 
- 37
 
- 38
 
- 39
 
- 40
 
- 41
 
- 42
 
- 43
 
- 44
 
- 45
 
- 46
 
- 47
 
- 48
 
- 49
 
- 50
 
- 51
 
- 52
 
- 53
 
- 54
 
- 55
 
- 56
 
- 57
 
- 58
 
- 59
 
- 60
 
- 61
 
- 62
 
- 63
 
- 64
 
- 65
 
- 66
 
- 67
 
- 68
 
- 69
 
- 70
 
- 71
 
- 72
 
- 73
 
- 74
 
- 75
 
- 76
 
- 77
 
- 78
 
- 79
 
- 80
 
- 81
 
- 82
 
- 83
 
- 84
 
- 85
 
- 86
 
- 87
 
- 88
 
- 89
 
- 90
 
- 91
 
- 92
 
- 93
 
- 94
 
- 95
 
- 96
 
- 97
 
- 98
 
- 99
 
- 100
 
- 101
 
- 102
 
- 103
 
- 104
 
- 105
 
- 106
 
- 107
 
- 108
 
- 109
 
- 110
 
- 111
 
- 112
 
- 113
 
- 114
 
- 115
 
- 116
 
- 117
 
- 118
 
- 119
 
- 120
 
- 121
 
- 122
 
- 123
 
- 124
 
- 125
 
- 126
 
- 127
 
- 128
 
- 129
 
- 130
 
- 131
 
- 132
 
- 133
 
- 134
 
- 135
 
- 136
 
- 137
 
- 138
 
- 139
 
- 140
 
- 141
 
- 142
 
- 143
 
- 144
 
- 145
 
- 146
 
- 147</td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">50x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">49x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">48x</span>
 
- <span class="cline-any cline-yes">6x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">42x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">42x</span>
 
- <span class="cline-any cline-yes">42x</span>
 
- <span class="cline-any cline-yes">42x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">85x</span>
 
- <span class="cline-any cline-yes">3x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">260x</span>
 
- <span class="cline-any cline-yes">260x</span>
 
- <span class="cline-any cline-yes">41x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">38x</span>
 
- <span class="cline-any cline-yes">38x</span>
 
- <span class="cline-any cline-yes">38x</span>
 
- <span class="cline-any cline-yes">8x</span>
 
- <span class="cline-any cline-yes">30x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">38x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">37x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">148x</span>
 
- <span class="cline-any cline-yes">148x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">37x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">82x</span>
 
- <span class="cline-any cline-yes">75x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">7x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">6x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">75x</span>
 
- <span class="cline-any cline-yes">58x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">17x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">16x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">58x</span>
 
- <span class="cline-any cline-yes">45x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">13x</span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">12x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">45x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">13x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">7x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">9x</span>
 
- <span class="cline-any cline-yes">9x</span>
 
- <span class="cline-any cline-yes">5x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">4x</span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-neutral"> </span>
 
- <span class="cline-any cline-yes">1x</span>
 
- <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const unquote = require('unquote')
 
- const systemFontKeywords = require('css-system-font-keywords')
 
- const fontWeightKeywords = require('css-font-weight-keywords')
 
- const fontStyleKeywords = require('css-font-style-keywords')
 
- const fontStretchKeywords = require('css-font-stretch-keywords')
 
- import * as cssListHelpers from 'css-list-helpers'
 
- import * as helpers from './helpers'
 
-  
 
- export interface ISystemFont {
 
- 	system: string
 
- }
 
-  
 
- export interface IFont {
 
- 	style?: string
 
- 	variant?: string
 
- 	weight?: string
 
- 	stretch?: string
 
- 	size?: string
 
- 	lineHeight?: string | number
 
- 	family?: string[]
 
- }
 
-  
 
- const errorPrefix = '[parse-css-font]'
 
-  
 
- const firstDeclarations: ['style', 'weight', 'stretch', 'variant'] = [
 
- 	'style',
 
- 	'weight',
 
- 	'stretch',
 
- 	'variant',
 
- ]
 
-  
 
- export default function parseCSSFont(value: string) {
 
- 	if (typeof value !== 'string') {
 
- 		throw error('Expected a string.', TypeError)
 
- 	}
 
-  
 
- 	if (value === '') {
 
- 		throw error('Cannot parse an empty string.')
 
- 	}
 
-  
 
- 	if (systemFontKeywords.indexOf(value) !== -1) {
 
- 		return { system: value } as ISystemFont
 
- 	}
 
-  
 
- 	const font: IFont = {
 
- 		lineHeight: 'normal',
 
- 		stretch: '',
 
- 		style: '',
 
- 		variant: '',
 
- 		weight: '',
 
- 	}
 
-  
 
- 	const consumers = [style, weight, stretch, variant]
 
- 	const tokens = cssListHelpers.splitBySpaces(value)
 
- 	nextToken: for (
 
- 		let token = tokens.shift();
 
- 		!!token;
 
- 		token = tokens.shift()
 
- 	) {
 
- 		if (token === 'normal') {
 
- 			continue
 
- 		}
 
-  
 
- 		for (const consume of consumers) {
 
- 			if (consume(token)) {
 
- 				continue nextToken
 
- 			}
 
- 		}
 
-  
 
- 		const parts = cssListHelpers.split(token, ['/'])
 
- 		font.size = parts[0]
 
- 		if (!!parts[1]) {
 
- 			font.lineHeight = parseLineHeight(parts[1])
 
- 		} else if (tokens[0] === '/') {
 
- 			tokens.shift()
 
- 			font.lineHeight = parseLineHeight(tokens.shift() as string)
 
- 		}
 
- 		if (!tokens.length) {
 
- 			throw error('Missing required font-family.')
 
- 		}
 
- 		font.family = cssListHelpers.splitByCommas(tokens.join(' ')).map(unquote)
 
-  
 
- 		for (const name of firstDeclarations) {
 
- 			font[name] = font[name] || 'normal'
 
- 		}
 
-  
 
- 		return font
 
- 	}
 
-  
 
- 	throw error('Missing required font-size.')
 
-  
 
- 	function style(token: string) {
 
- 		if (fontStyleKeywords.indexOf(token) === -1) {
 
- 			return
 
- 		}
 
- 		if (font.style) {
 
- 			throw error('Font style already defined.')
 
- 		}
 
- 		return (font.style = token)
 
- 	}
 
-  
 
- 	function weight(token: string) {
 
- 		if (fontWeightKeywords.indexOf(token) === -1) {
 
- 			return
 
- 		}
 
- 		if (font.weight) {
 
- 			throw error('Font weight already defined.')
 
- 		}
 
- 		return (font.weight = token)
 
- 	}
 
-  
 
- 	function stretch(token: string) {
 
- 		if (fontStretchKeywords.indexOf(token) === -1) {
 
- 			return
 
- 		}
 
- 		if (font.stretch) {
 
- 			throw error('Font stretch already defined.')
 
- 		}
 
- 		return (font.stretch = token)
 
- 	}
 
-  
 
- 	function variant(token: string) {
 
- 		return (
 
- 			!helpers.isSize(token) &&
 
- 			(font.variant = font.variant ? [font.variant, token].join(' ') : token)
 
- 		)
 
- 	}
 
- }
 
-  
 
- function error(
 
- 	message: string,
 
- 	ErrorType: typeof Error | typeof TypeError = Error,
 
- ) {
 
- 	return new ErrorType(`${errorPrefix} ${message}`)
 
- }
 
-  
 
- function parseLineHeight(value: string) {
 
- 	const parsed = parseFloat(value)
 
- 	if (parsed.toString() === value) {
 
- 		return parsed
 
- 	}
 
- 	return value
 
- }
 
-  
 
- // @ts-ignore
 
- module.exports = Object.assign(exports.default, exports)
 
-  </pre></td></tr>
 
- </table></pre>
 
- <div class='push'></div><!-- for sticky footer -->
 
- </div><!-- /wrapper -->
 
- <div class='footer quiet pad2 space-top1 center small'>
 
-   Code coverage
 
-   generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Jan 28 2019 01:02:41 GMT-0600 (Central Standard Time)
 
- </div>
 
- </div>
 
- <script src="prettify.js"></script>
 
- <script>
 
- window.onload = function () {
 
-         if (typeof prettyPrint === 'function') {
 
-             prettyPrint();
 
-         }
 
- };
 
- </script>
 
- <script src="sorter.js"></script>
 
- </body>
 
- </html>
 
 
  |