Created
September 4, 2014 14:19
-
-
Save he7d3r/a74f9c3e45af5dd20e36 to your computer and use it in GitHub Desktop.
JSON para "conj.pt.er"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://pt.wiktionary.org/wiki/Template:conj.pt | |
// https://pt.wiktionary.org/wiki/Template:conj.pt.er | |
// https://pt.wiktionary.org/wiki/Special:WhatLinksHere/Template:conj.pt?limit=500&namespace=10 | |
/*var text = $('#wpTextbox1').val(); | |
jsMsg( text.replace( /<noinclude>[\s\S]+?<\/noinclude>/g, '' ) ); | |
$('#wpTextbox1').val().replace(/<noinclude>[\s\S]+?<\/noinclude>/g, '').match( /\{\{\s*conj\.pt\s*\|\s*título\s*=\s*([\s\S]+?)\s*\|\s*\{\{\{1\|?\}\}\}(.+?)\s*\|/ ); | |
var templateBegin = [ | |
'\\{\\{', | |
'conj\\.pt', | |
'\\|', | |
'título', | |
'=', | |
'([\\s\\S]+?)', | |
'\\|\\s*', | |
].join( '\\s*' ), | |
reTemplate = '', | |
params = [], | |
maxParams = 68; // 73 == Number of parameters of [[Template:conj.pt]] | |
for (var i=0; i < maxParams; i++){ | |
params.push( '\\{\\{\\{1\\|?\\}\\}\\}(.+?)' ); | |
} | |
reTemplate = templateBegin + params.join('\\s*\\|\\s*') + '\\}\\}'; | |
$('#wpTextbox1').val().replace(/<noinclude>[\s\S]+?<\/noinclude>/g, '').match( reTemplate ); | |
*/ | |
var def = '#[[$pessoa]] do [[$numero]] do [[$tempo]] do $modo do verbo \'\'\'[[$verbo]]\'\'\'', | |
verbete = [ | |
'={{-pt-}}=', | |
'==Forma verbal==', | |
'\'\'\'$conj\'\'\'', | |
'$def', | |
'', | |
'[[Categoria:Forma verbal (Português)]]' | |
].join( '\n' ), | |
conj = {}, | |
verbosPorSufixo = { | |
'er': [ | |
'com', | |
'comet' | |
] | |
}; | |
conj.pt = {}; | |
// Exemplo: segunda pessoa do singular do pretérito imperfeito do modo indicativo do verbo andar | |
conj.pt.modelo = { | |
'forma impessoal': { | |
'infinitivo impessoal': '$1', | |
'gerúndio': '$1', | |
'particípio': '$1' | |
}, | |
'forma pessoal': { | |
'modo indicativo': { | |
'presente': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'pretérito imperfeito': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'pretérito perfeito': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'pretérito mais-que-perfeito': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'futuro do presente': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'futuro do pretérito': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
} | |
}, | |
'modo subjuntivo':{ | |
'presente': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'pretérito imperfeito': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'futuro': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
} | |
}, | |
'modo imperativo':{ | |
'afirmativo': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
'negativo': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
}, | |
}, | |
'infinitivo impessoal': { | |
'singular': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
}, | |
'plural': { | |
'primeira pessoa': '$1', | |
'segunda pessoa': '$1', | |
'terceira pessoa': '$1' | |
} | |
} | |
} | |
}; | |
conj.pt.er = { | |
'definição': '$pessoa do $número do $tempo do $modo do verbo $verbo', | |
'forma impessoal': { | |
'definição': '$modo do verbo $verbo', | |
'infinitivo impessoal': '$1er', | |
'gerúndio': '$1endo', | |
'particípio': '$1ido' | |
}, | |
'forma pessoal': { | |
'modo indicativo': { | |
'presente': { | |
'singular': { | |
'primeira pessoa': '$1o', | |
'segunda pessoa': '$1es', | |
'terceira pessoa': '$1e' | |
}, | |
'plural': { | |
'primeira pessoa': '$1emos', | |
'segunda pessoa': '$1eis', | |
'terceira pessoa': '$1em' | |
} | |
}, | |
'pretérito imperfeito': { | |
'singular': { | |
'primeira pessoa': '$1ia', | |
'segunda pessoa': '$1ias', | |
'terceira pessoa': '$1ia' | |
}, | |
'plural': { | |
'primeira pessoa': '$1íamos', | |
'segunda pessoa': '$1íeis', | |
'terceira pessoa': '$1iam' | |
} | |
}, | |
'pretérito perfeito': { | |
'singular': { | |
'primeira pessoa': '$1i', | |
'segunda pessoa': '$1este', | |
'terceira pessoa': '$1eu' | |
}, | |
'plural': { | |
'primeira pessoa': '$1emos', | |
'segunda pessoa': '$1estes', | |
'terceira pessoa': '$1eram' | |
} | |
}, | |
'pretérito mais-que-perfeito': { | |
'singular': { | |
'primeira pessoa': '$1era', | |
'segunda pessoa': '$1eras', | |
'terceira pessoa': '$1era' | |
}, | |
'plural': { | |
'primeira pessoa': '$1êramos', | |
'segunda pessoa': '$1êreis', | |
'terceira pessoa': '$1eram' | |
} | |
}, | |
'futuro do presente': { | |
'singular': { | |
'primeira pessoa': '$1erei', | |
'segunda pessoa': '$1erás', | |
'terceira pessoa': '$1erá' | |
}, | |
'plural': { | |
'primeira pessoa': '$1eremos', | |
'segunda pessoa': '$1ereis', | |
'terceira pessoa': '$1erão' | |
} | |
}, | |
'futuro do pretérito': { | |
'singular': { | |
'primeira pessoa': '$1eria', | |
'segunda pessoa': '$1erias', | |
'terceira pessoa': '$1eria' | |
}, | |
'plural': { | |
'primeira pessoa': '$1eríamos', | |
'segunda pessoa': '$1eríes', | |
'terceira pessoa': '$1eriam' | |
} | |
} | |
}, | |
'modo subjuntivo':{ | |
'presente': { | |
'singular': { | |
'primeira pessoa': '$1a', | |
'segunda pessoa': '$1as', | |
'terceira pessoa': '$1a' | |
}, | |
'plural': { | |
'primeira pessoa': '$1amos', | |
'segunda pessoa': '$1ais', | |
'terceira pessoa': '$1am' | |
} | |
}, | |
'pretérito imperfeito': { | |
'singular': { | |
'primeira pessoa': '$1esse', | |
'segunda pessoa': '$1esses', | |
'terceira pessoa': '$1esse' | |
}, | |
'plural': { | |
'primeira pessoa': '$1êssemos', | |
'segunda pessoa': '$1êsseis', | |
'terceira pessoa': '$1essem' | |
} | |
}, | |
'futuro': { | |
'singular': { | |
'primeira pessoa': '$1er', | |
'segunda pessoa': '$1eres', | |
'terceira pessoa': '$1er' | |
}, | |
'plural': { | |
'primeira pessoa': '$1ermos', | |
'segunda pessoa': '$1erdes', | |
'terceira pessoa': '$1erem' | |
} | |
} | |
}, | |
'modo imperativo':{ | |
'afirmativo': { | |
'singular': { | |
//'primeira pessoa': '$1', | |
'segunda pessoa': '$1e', | |
'terceira pessoa': '$1a' | |
}, | |
'plural': { | |
'primeira pessoa': '$1amos', | |
'segunda pessoa': '$1ei', | |
'terceira pessoa': '$1am' | |
} | |
}, | |
'negativo': { | |
'singular': { | |
//'primeira pessoa': '$1', | |
'segunda pessoa': 'não $1as', | |
'terceira pessoa': 'não $1a' | |
}, | |
'plural': { | |
'primeira pessoa': 'não $1amos', | |
'segunda pessoa': 'não $1ais', | |
'terceira pessoa': 'não $1am' | |
} | |
}, | |
}, | |
'infinitivo impessoal': { | |
'definição': '$pessoa do $número do $modo do verbo $verbo', | |
'singular': { | |
'primeira pessoa': '$1er', | |
'segunda pessoa': '$1eres', | |
'terceira pessoa': '$1er' | |
}, | |
'plural': { | |
'primeira pessoa': '$1ermos', | |
'segunda pessoa': '$1erdes', | |
'terceira pessoa': '$1erem' | |
} | |
} | |
} | |
}; | |
function conjugar( prefix, sufix ){ | |
var regexes = { | |
'forma': /forma (?:im)?pessoal/g, | |
'modo': /modo (?:indica|subjun|impera)tivo|infinitivo impessoal|(?:gerúnd|particíp)io/g, | |
'tempo': /presente|pretérito (?:im||mais-que-)perfeito|futuro(?: do pre(?:sente|térito))?|(?:afirm|neg)ativo/g, | |
'número': /singular|plural/g, | |
'pessoa': /(?:primeir|segund|terceir)a pessoa/g | |
}, | |
lista = {}, | |
texto = '', | |
geraLista = function ( tabela, dados, def ){ | |
$.each( tabela, function( tipo, valor ){ | |
var defi; | |
if ( tipo == 'definição' ) { | |
return true; | |
} | |
defi = valor[ 'definição' ] || def || conj.pt[ sufix ][ 'definição' ]; | |
$.each( regexes, function( nomeTipo, regObj ){ | |
regObj.lastIndex = 0; | |
if ( regObj.test( tipo ) ){ | |
dados[ nomeTipo ] = tipo; | |
return false; | |
} | |
}); | |
if(typeof valor == 'object'){ | |
geraLista( valor, dados, defi ); | |
} else if(typeof valor == 'string') { | |
// dados.pessoa = tipo; | |
dados[ 'conjugação' ] = valor.replace( /\$1/g, prefix ); | |
$.each( dados, function( p, valor ){ | |
defi = defi.replace( '$' + p, valor ); | |
} ); | |
if ( lista[ dados[ 'conjugação' ] ] ) { | |
lista[ dados[ 'conjugação' ] ] += '\n' + defi; | |
} else { | |
lista[ dados[ 'conjugação' ] ] = defi; | |
} | |
} else { | |
texto += '"' + tipo + '" deve ser uma string ou um objeto: ' + valor + '.\n\n'; | |
} | |
}); | |
}; | |
if ( !conj.pt[ sufix ] ){ | |
texto += 'Ainda não existe a tabela de conjugação para verbos terminados em "' + sufix + '".\n\n'; | |
} else { | |
texto += '= Conjugações do verbo ' + prefix + sufix + ' ='; | |
geraLista( conj.pt[ sufix ], { 'verbo': prefix + sufix } ); | |
$.each( lista, function( conj, def ){ | |
texto += '\n== ' + conj + ' ==\n' + def; | |
}); | |
} | |
return texto; | |
} | |
$.each( verbosPorSufixo, function( sufix, prefix ){ | |
var resultado = '' | |
for (var i=0; i < prefix.length; i++){ | |
resultado += conjugar( prefix[i], sufix ); | |
} | |
if (mw.config.get( 'wgAction' ) !== 'view') { | |
return; | |
} | |
jsMsg( | |
resultado | |
.replace(/==([^\n]+)==/g, '<h2>$1</h2>') | |
.replace(/=([^\n]+)=/g, '<h1>$1</h1>') | |
.replace(/\n/g, '<br/>') | |
); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment