Skip to content

Commit

Permalink
Refactor to shout less
Browse files Browse the repository at this point in the history
  • Loading branch information
wooorm committed May 14, 2019
1 parent c3a64d1 commit c7d1d08
Showing 1 changed file with 42 additions and 42 deletions.
84 changes: 42 additions & 42 deletions lib/parse.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,36 @@ module.exports = parse

var own = {}.hasOwnProperty

var MAX_SUBTAG = 8
var MAX_RESERVED = 4
var MAX_ISO_639 = 3
var MIN_ISO_639 = 2
var MAX_EXTENDED_LANGUAGE_SUBTAG_COUNT = 3
var MAX_VARIANT = 8
var MIN_ALPHANUMERIC_VARIANT = 5
var MIN_VARIANT = 4
var MAX_EXTENSION = 8
var MAX_PRIVATE_USE = 8

var ERR_VARIANT_TOO_LONG = 1
var ERR_EXTENSION_TOO_LONG = 2
var ERR_TOO_MANY_SUBTAGS = 3
var ERR_EMPTY_EXTENSION = 4
var ERR_PRIVATE_USE_TOO_LONG = 5
var ERR_EXTRA_CONTENT = 6

var ERRORS = {}

ERRORS[ERR_VARIANT_TOO_LONG] = 'Too long variant, expected at most 8 characters'
ERRORS[ERR_EXTENSION_TOO_LONG] =
var maxSubtag = 8
var maxReserved = 4
var maxIso639 = 3
var minIso639 = 2
var maxExtendedLanguageSubtagCount = 3
var maxVariant = 8
var minAlphanumericVariant = 5
var minVariant = 4
var maxExtension = 8
var maxPrivateUse = 8

var errVariantTooLong = 1
var errExtensionTooLong = 2
var errTooManySubtags = 3
var errEmptyExtension = 4
var errPrivateUseTooLong = 5
var errExtraContent = 6

var errors = {}

errors[errVariantTooLong] = 'Too long variant, expected at most 8 characters'
errors[errExtensionTooLong] =
'Too long extension, expected at most 8 characters'
ERRORS[ERR_TOO_MANY_SUBTAGS] =
errors[errTooManySubtags] =
'Too many extended language subtags, expected at most 3 subtags'
ERRORS[ERR_EMPTY_EXTENSION] =
errors[errEmptyExtension] =
'Empty extension, extensions must have at least 2 characters of content'
ERRORS[ERR_PRIVATE_USE_TOO_LONG] =
errors[errPrivateUseTooLong] =
'Too long private-use area, expected at most 8 characters'
ERRORS[ERR_EXTRA_CONTENT] = 'Found superfluous content after tag'
errors[errExtraContent] = 'Found superfluous content after tag'

// Parse a BCP 47 language tag.
/* eslint-disable complexity */
Expand Down Expand Up @@ -88,13 +88,13 @@ function parse(tag, options) {
}

// Parse a normal tag.
if (index < MIN_ISO_639 || index > MAX_SUBTAG) {
if (index < minIso639 || index > maxSubtag) {
index = 0
} else {
if (index > MAX_RESERVED) {
if (index > maxReserved) {
// Subtag language.
result.language = sensitive.slice(0, index)
} else if (index > MAX_ISO_639) {
} else if (index > maxIso639) {
// Reserved language.
result.language = sensitive.slice(0, index)
} else {
Expand All @@ -110,8 +110,8 @@ function parse(tag, options) {
alphabetical(char(index + 3)) &&
!alphabetical(char(index + 4))
) {
if (groupCount >= MAX_EXTENDED_LANGUAGE_SUBTAG_COUNT) {
return fail(index, ERR_TOO_MANY_SUBTAGS)
if (groupCount >= maxExtendedLanguageSubtagCount) {
return fail(index, errTooManySubtags)
}

// Extended language subtag.
Expand Down Expand Up @@ -167,16 +167,16 @@ function parse(tag, options) {
offset++
count++

if (count > MAX_VARIANT) {
return fail(offset, ERR_VARIANT_TOO_LONG)
if (count > maxVariant) {
return fail(offset, errVariantTooLong)
}
}

if (count >= MIN_ALPHANUMERIC_VARIANT) {
if (count >= minAlphanumericVariant) {
// Long variant.
result.variants.push(sensitive.slice(index + 1, offset))
index = offset
} else if (decimal(char(index + 1)) && count >= MIN_VARIANT) {
} else if (decimal(char(index + 1)) && count >= minVariant) {
// Short variant.
result.variants.push(sensitive.slice(index + 1, offset))
index = offset
Expand Down Expand Up @@ -208,8 +208,8 @@ function parse(tag, options) {
groupCount++

while (alphanumeric(char(offset))) {
if (count > MAX_EXTENSION) {
return fail(offset, ERR_EXTENSION_TOO_LONG)
if (count > maxExtension) {
return fail(offset, errExtensionTooLong)
}

offset++
Expand All @@ -218,7 +218,7 @@ function parse(tag, options) {
}

if (!groupCount) {
return fail(offset, ERR_EMPTY_EXTENSION)
return fail(offset, errEmptyExtension)
}

// Extension.
Expand All @@ -243,8 +243,8 @@ function parse(tag, options) {
count = 1

while (alphanumeric(char(offset))) {
if (count >= MAX_PRIVATE_USE) {
return fail(offset, ERR_PRIVATE_USE_TOO_LONG)
if (count >= maxPrivateUse) {
return fail(offset, errPrivateUseTooLong)
}

offset++
Expand All @@ -257,7 +257,7 @@ function parse(tag, options) {
}

if (index !== tag.length) {
return fail(index, ERR_EXTRA_CONTENT)
return fail(index, errExtraContent)
}

return result
Expand All @@ -268,7 +268,7 @@ function parse(tag, options) {

function fail(offset, code) {
if (warning) {
warning(ERRORS[code], code, offset)
warning(errors[code], code, offset)
}

return forgiving ? result : empty()
Expand Down

0 comments on commit c7d1d08

Please sign in to comment.