~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DOCUMENTAÇÃO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ------- MOD2URI ------- O caminho dos módulos é determinado a partir do primeiro carácter do nome respectivo. Concretamente, se o primeiro caractér for uma: - Maiúscula : SCROOT + + "cli.js"; - Mínuscula : SROOT + + ".js"; - "*" : Não retorna nada porque presume que a localização será fornecida explicitamente; - "/" : SSRC + + ".js"; - ":" : SCROOT + + ".js"; - "." : SROOT + + ".js"; - "@" : Versão localizada do módulo, retornada por "/.sapiens/inter_js/". NOTA: exclui o primeiro carácter a menos que seja uma letra. Seguem-se as regras para módulos complementares específicos para IE. Quando o primeiro carácter é: - Maiúscula : SCROOT + + ; - ":" : + ; - Outro : + "compat/" + + . é "-ie.js" para a versão actual do Internet Explorer e "-ie_.js" para versões anteriores. -------------------------------------------- ESTADO DE CARREGAMENTO DE MÓDULOS E RECURSOS -------------------------------------------- mods [] pode ser: - undefined: Módulo por transferir. - 1: Módulo transferido e disponível. - 2: Módulo em transferência. - 3: Módulo transferido preventivamente (Im() altera o estado para "1" a menos que tenha dependências; nesse caso passa para o estado 7). - []: Lista de dependências do módulo principal antes de se invocar código específico. - []: Módulo específico já carregado -- considerar como se se tratasse do estado 3 ("2"). - \[, , [, , ...]\]: Módulo indicado para transferência preventiva. * = 0 | 1: 0 : Módulo ainda não transferido, mas que é referido por outros transferidos preventivamente. => = 0 1 : Módulo já transferido preventivamente e a aguardar dependências; * : Lista de dependências, ou: 0 : Se não as houver; 1 : Se as havia, mas já serviram o seu propósito (ver [>A1<]); * : A aguardar transferência do código específico no URI. => Sendo $a um estado de módulo... - Verificar se foi carregado preventivamente: isNaN ($a) ? $a && !isNaN ($a [0]) : $a === 3 (Se o estado for "3", ou um array em que a primeira casa é numérica). - Verificar se um módulo já foi transferido: !isNaN (o = mods [x]) || (o && o [0]) (o estado é numérico ou é um array em que a primeira casa não é nula). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NOTAS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - A1 : "(x [1] ? def = 0 : 0)" testa se a contagem de módulos já foi decrementada em _prim(), que é o único sítio que coloca eventuais dependências na segunda casa ("a [1]") do Estado. - A2 : 99, porque os módulos referidos podem estar em cache e serem carregados de imediato. Isso poderia fazer com que as funções em espera fossem disparadas antes de todas as dependências estarem disponíveis. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OUTROS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// Método alternativo no IE para assegurar que está pronto (go()). /// /// // Espera . function waitB_() { var ienode; if (!w4c) { ienode = D.createElement ('document:ready'); intv = setInterval (wait_, 10); w4c = q = 1 } function wait_() { try { ienode.doScroll ('left') } catch (e) { return } clearInterval (intv); flush_() } }