Skip to content

Instantly share code, notes, and snippets.

@he7d3r
Created September 4, 2014 14:19
Show Gist options
  • Save he7d3r/a74f9c3e45af5dd20e36 to your computer and use it in GitHub Desktop.
Save he7d3r/a74f9c3e45af5dd20e36 to your computer and use it in GitHub Desktop.
JSON para "conj.pt.er"
// 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