<?php /** * use: php tplNormas_rewrite.php > pagina.txt * use: php tplNormas_mergimport.php | php tplNormas_rewrite.php --stdin > pagina.txt * tplNormas_rewrite v2 2015-06-23 */ // CONFIGS: $normalize = TRUE; $urlWiki = 'http://xmlfusion.org/wikosol'; // or php://stdin or filename $P = 'Levantamento_das_pe%C3%A7as_legislativas'; include "MediawikiNavigator.php"; $mn = new MediawikiNavigor($urlWiki); $mn->wikitext_normalizeConfig['CACHE'] = function ($i, &$p) { if (isset($p['tags'])) { $translateTag = array('cooperativa' => 'cooperativismo', 'iss' => 'inseção-fiscal', 'licitacoes' => 'licitações', 'catadores' => 'coeleta'); $p['tags'] = mb_strtolower($p['tags'], 'UTF-8'); $p['tags'] = join('; ', array_map(function ($s) use(&$translateTag) { return isset($translateTag[$s]) ? $translateTag[$s] : $s; }, preg_split('#[\\s;,/]+#s', $p['tags']))); } $p['kx_ano'] = ''; if (isset($p['#2'])) { if (preg_match('~(\\d\\d)[/\\-](\\d\\d)[/\\-](\\d\\d\\d\\d)$~', $p['#2'], $m)) { $ano = $p['kx_ano'] = $m[3]; $p['#2'] = "{$m['1']}/{$m['2']}/{$ano}"; // normalized } elseif (preg_match('~(\\d\\d\\d\\d)$~', $p['#2'], $m)) { $ano = $p['kx_ano'] = $m[1]; }
/** * Undo tokens of wikitex-templates. Normalize parametric templates. * @param $sortParams booleam to sort template-parameters, or array with initial params. */ function wikitextTpl_untokenize($sortParams = TRUE, $close = TRUE, $VPARAM_SEP = ' | ') { $tpls =& $this->wikitext_tpls; $this->wikitext = preg_replace_callback('~#_tpl_#([a-z][\\w\\d_\\-]+)#(\\d+)##~is', function ($m) use(&$tpls, $sortParams, $VPARAM_SEP) { $idx = $m[2]; if (isset($tpls[$idx])) { return MediawikiNavigor::wikitextTpl_untokenize1Tpl($tpls[$idx], $m[1], $sortParams, $VPARAM_SEP); } else { return ''; } }, $this->wikitext); if ($close) { $this->wikitext_tpls = NULL; } // see }
<?php /** * Exports specifyed columns * use: php tplNormas_export.php > planilha.tsv * tplNormas_export v1 2015-06-23 */ // CONFIGS: $normalize = TRUE; $urlWiki = 'http://xmlfusion.org/wikosol'; $P = 'Levantamento_das_pe%C3%A7as_legislativas'; include "MediawikiNavigator.php"; $mn = new MediawikiNavigor($urlWiki); $mn->wikitext_normalizeConfig['CACHE'] = function ($i, &$p) { // prj local autoridade tipo Ano cod Norma status viavel Nota Tags Ementa $tituloFull = isset($p['pretitulo']) ? "{$p['pretitulo']} {$p['#1']}" : $p['#1']; $p['csv_prj'] = $p['#name'] == 'prjnorma' ? 'x' : ''; $p['csv_local'] = isset($p['lex_local']) ? $p['lex_local'] : '??'; $p['csv_autoridade'] = isset($p['lex_autoridade']) ? $p['lex_autoridade'] : '??'; $p['csv_tipo'] = isset($p['lex_tipo']) ? $p['lex_tipo'] : '??'; $p['csv_ano'] = isset($p['kx_ano']) ? $p['kx_ano'] : '??'; $p['csv_cod'] = preg_replace('/[^\\d]+/', '', $tituloFull); $p['csv_Norma'] = $tituloFull; $p['csv_status'] = isset($p['status']) ? $p['status'] : '??'; $p['csv_viavel'] = isset($p['viavel']) ? $p['viavel'] : '??'; $p['csv_Nota'] = isset($p['nota']) ? $p['nota'] : '??'; $p['csv_Tags'] = isset($p['tags']) ? $p['tags'] : '??'; $p['csv_Ementa'] = isset($p['ementa']) ? $p['ementa'] : '??'; }; // func $mn->getByTitle('raw', $P);
* use: php tplNormas_mergeCSV.php > wikitext.txt * tplNormas_export v1 2015-06-23 */ // alternativa: usar os campos 'csv_' da exportação como chaves para o merge // CONFIGS: $normalize = TRUE; $urlWiki = 'http://xmlfusion.org/wikosol'; // or php://stdin or filename $P = 'Levantamento_das_pe%C3%A7as_legislativas'; $csvFile = 'data/ecosol-marcoRegulatorio2015-levantamento2.tsv'; $DEBUG = 0; $MAIN_PARAMS = array('local', 'autoridade', 'ementa', 'tags', 'url-fonte', 'url-transcricao'); $wikitext_pk = array(); $wikitext_err = ''; include "MediawikiNavigator.php"; $mn = new MediawikiNavigor($urlWiki); $mn->wikitext_normalizeConfig['CACHE'] = function ($i, &$p) use(&$wikitext_pk) { $tituloFull = isset($p['pretitulo']) ? "{$p['pretitulo']} {$p['#1']}" : $p['#1']; $pk = clean_title($tituloFull, isset($p['kx_ano']) ? $p['kx_ano'] : ''); if (isset($wikitext_pk[$pk])) { file_put_contents('php://stderr', "\n wikitext REPETIU {$tituloFull}\n", FILE_APPEND); } else { $wikitext_pk[$pk] = $p; } }; // func $mn->getByTitle('raw', $P); $mn->wikitextTpl_tokenize(TRUE); $mn->wikitextTpl_normalize_tpls(TRUE); // // // // // // // // // // BEGIN:ANALYSIS