nl_tokens: Populates internalOptions object with boolean key - value pairs from extensionMap and options . Returns filtered extension ( number and date format constructors use Unicode extensions for passing parameters to ICU ) . It s used for extension - option pairs only e . g . kn - normalization but not for sensitivity since it doesn t have extension equivalent . Extensions like nu and ca don t have options equivalent so we place undefined in the map . property to denote that .
pl_tokens: function setOptions ( inOptions , extensionMap , keyValues , getOption , outOptions ) { var extension = '' ; var updateExtension = function updateExtension ( key , value ) { return '-' + key + '-' + TO_STRING ( value ) ; } var updateProperty = function updateProperty ( property , type , value ) { if ( type === 'boolean' && ( typeof value === 'string' ) ) { value = ( value === 'true' ) ? true : false ; } if ( ! IS_UNDEFINED ( property ) ) { defineWEProperty ( outOptions , property , value ) ; } } for ( var key in keyValues ) { if ( HAS_OWN_PROPERTY ( keyValues , key ) ) { var value = UNDEFINED ; var map = keyValues [ key ] ; if ( ! IS_UNDEFINED ( map . property ) ) { // This may return true if user specifies numeric: 'false', since // Boolean('nonempty') === true. value = getOption ( map . property , map . type , map . values ) ; } if ( ! IS_UNDEFINED ( value ) ) { updateProperty ( map . property , map . type , value ) ; extension += updateExtension ( key , value ) ; continue ; } // User options didn't have it, check Unicode extension. // Here we want to convert strings 'true', 'false' into proper Boolean // values (not a user error). if ( HAS_OWN_PROPERTY ( extensionMap , key ) ) { value = extensionMap [ key ] ; if ( ! IS_UNDEFINED ( value ) ) { updateProperty ( map . property , map . type , <mask> ) ; extension += updateExtension ( key , value ) ; } else if ( map . type === 'boolean' ) { // Boolean keys are allowed not to have values in Unicode extension. // Those default to true. updateProperty ( map . property , map . type , true ) ; extension += updateExtension ( key , true ) ; } } } } return extension === '' ? '' : '-u' + extension ; }