38 lines
983 B
Plaintext
38 lines
983 B
Plaintext
import { regExpToken, SPACE } from '../tokenTypes'
|
|
|
|
const FLEX_WRAP = regExpToken(/(nowrap|wrap|wrap-reverse)/)
|
|
const FLEX_DIRECTION = regExpToken(/(row|row-reverse|column|column-reverse)/)
|
|
|
|
const defaultFlexWrap = 'nowrap'
|
|
const defaultFlexDirection = 'row'
|
|
|
|
export default tokenStream => {
|
|
let flexWrap
|
|
let flexDirection
|
|
|
|
let partsParsed = 0
|
|
while (partsParsed < 2 && tokenStream.hasTokens()) {
|
|
if (partsParsed !== 0) tokenStream.expect(SPACE)
|
|
|
|
if (flexWrap === undefined && tokenStream.matches(FLEX_WRAP)) {
|
|
flexWrap = tokenStream.lastValue
|
|
} else if (
|
|
flexDirection === undefined &&
|
|
tokenStream.matches(FLEX_DIRECTION)
|
|
) {
|
|
flexDirection = tokenStream.lastValue
|
|
} else {
|
|
tokenStream.throw()
|
|
}
|
|
|
|
partsParsed += 1
|
|
}
|
|
|
|
tokenStream.expectEmpty()
|
|
|
|
if (flexWrap === undefined) flexWrap = defaultFlexWrap
|
|
if (flexDirection === undefined) flexDirection = defaultFlexDirection
|
|
|
|
return { flexWrap, flexDirection }
|
|
}
|