nl_tokens: Initialization
pl_tokens: function init ( ) { if ( api . initialized ) { return ; } var testRange ; var implementsDomRange = false , implementsTextRange = false ; // First, perform basic feature tests if ( isHostMethod ( document , "createRange" ) ) { testRange = document . createRange ( ) ; if ( areHostMethods ( testRange , domRangeMethods ) && areHostProperties ( testRange , domRangeProperties ) ) { implementsDomRange = true ; } testRange . detach ( ) ; } var body = isHostObject ( document , "body" ) ? document . <mask> : document . getElementsByTagName ( "body" ) [ 0 ] ; if ( body && isHostMethod ( body , "createTextRange" ) ) { testRange = body . createTextRange ( ) ; if ( isTextRange ( testRange ) ) { implementsTextRange = true ; } } if ( ! implementsDomRange && ! implementsTextRange ) { fail ( "Neither Range nor TextRange are implemented" ) ; } api . initialized = true ; api . features = { implementsDomRange : implementsDomRange , implementsTextRange : implementsTextRange } ; // Initialize modules and call init listeners var allListeners = moduleInitializers . concat ( initListeners ) ; for ( var i = 0 , len = allListeners . length ; i < len ; ++ i ) { try { allListeners [ i ] ( api ) ; } catch ( ex ) { if ( isHostObject ( window , "console" ) && isHostMethod ( window . console , "log" ) ) { window . console . log ( "Init listener threw an exception. Continuing." , ex ) ; } } } }