Utente:Iron Bishop/spellcheck

Spell.check()Modifica

Se puoi, inserisci altre possibili correzioni automatiche in questa funzione, verrà usata per FioriCadenti.

Questo signfica che se FioriCadenti dovesse modificare una pagina in cui si trova uno di questi errori, lo correggerebbe.

	public static String correttore(String s) {
		/* corregge gli errori comuni all'interno di voci di IT.wiki */
		String buffer;
		s = s.replaceAll("\r","");

		// converte tabelle HTML
		if (s.indexOf("<table") != -1) s = html2wiki_tables.convert(s);

		//entity
		String[][] entity = {
			{"\\<", "<"},	{"\\>", ">"},	{"\\&", "&"},	{"\\"", "\""},	
			{"\\à", "à"},{"\\á", "á"},{"\\â", "â"},	{"\\ã", "ã"},
			{"\\ä", "ä"},	{"\\å", "å"}, {"\\À", "À"},{"\\Á", "Á"},
			{"\\Â", "Â"}, {"\\Ã", "Ã"},{"\\Ä", "Ä"},	{"\\Å", "Å"}, 
			{"\\æ", "æ"}, {"\\Æ", "Æ"}, {"\\ç", "ç"},{"\\Ç", "Ç"},
			{"\\ð", "ð"},	{"\\Ð", "Ð"},	{"\\è", "è"},{"\\é", "é"},
			{"\\ê", "ê"}, {"\\ë", "ë"},	{"\\È", "È"},{"\\É", "É"},
			{"\\Ê", "Ê"}, {"\\Ë", "Ë"},	{"\\ì", "ì"},{"\\í", "í"},
			{"\\î", "î"}, {"\\ï", "ï"},	{"\\Ì", "Ì"},{"\\Í", "Í"},
			{"\\Î", "Î"}, {"\\Ï", "Ï"},	{"\\ò", "ò"},{"\\ó", "ó"},
			{"\\ô", "ô"}, {"\\õ", "õ"},{"\\ö", "ö"},	{"\\ø", "ø"},
			{"\\Ò", "Ò"},{"\\Ó", "Ó"},{"\\Ô", "Ô"},	{"\\Õ", "Õ"},
			{"\\Ö", "Ö"},	{"\\Ø", "Ø"},{"\\ù", "ù"},{"\\ú", "ú"},
			{"\\û", "û"}, {"\\ü", "ü"},	{"\\Ù", "Ù"},{"\\Ú", "Ú"},
			{"\\Û", "Û"}, {"\\Ü", "Ü"},	{"\\ñ", "ñ"},{"\\Ñ", "Ñ"},
			{"\\ß", "ß"}, {"\\ý", "ý"},{"\\ÿ", "ÿ"},	{"\\Ý", "Ý"},
			{"\\þ", "þ"}, {"\\Þ", "Þ"},	{"\\¡", "¡"},	{"\\¿", "¿"},
			{"\\«", "«"}, {"\\»", "»"},	{"\\¢", "¢"},	{"\\£", "£"},
			{"\\¤", "¤"},{"\\¥", "¥"},	{"\\´", "´"},	{"\\¸", "¸"},
			{"\\¨", "¨"},	{"\\±", "±"},{"\\×", "×"},	{"\\÷", "÷"},
			{"\\¬", "¬"},	{"\\°", "°"},	{"\\µ", "µ"},	{"\\¼", "¼"},
			{"\\½", "½"},{"\\¾", "¾"},{"\\¹", "¹"},	{"\\²", "²"},
			{"\\³", "³"},	{"\\¦", "¦"},{"\\§", "§"},	{"\\¶", "¶"},
			{"\\·", "·"},{"\\©", "©"},	{"\\®", "®"},	{"\\ª", "ª"},
			{"\\º", "º"},	{"\\¯", "¯"}};

		for (int i = 0; i < entity.length; i++) 
			s = s.replaceAll(entity[i][0], entity[i][1]);

		//accenti - ha collaborato [[:it:Utente:Oberon|]]
		String e2 = "(e['`]|è)",
			   e3 = "(e['`]|è|e)",
			   sp = "(\\s)"; // insieme dei caratteri di spaziatura (spazio, \n, \t...)

		String[][] accenti = {{"e['`]", "è$2"}, {"E['`]", "È$2"}, {"si['`]", "sì$2"}, 
			{"p(o`|ò)", "po'$3"}, {"n" + e2, "né$3"}, {"affinch" + e3, "affinché$3"},
			{"perch" + e3, "perché$3"}, {"poich" + e3, "poiché$3"}, {"tr" + e3, "tré$3"},
			{"pi(u['`]|u)", "più$3"}, {"pu(o['`]|o)", "può$3"}, {"gi(a['`]|a)", "già$3"}};

		for (int i = 0; i < accenti.length; i++) 
			s = s.replaceAll(sp + accenti[i][0] + sp, "$1" + accenti[i][1]);

		/* Template:Comune */
		if (s.indexOf("{{Comune|") != -1 && 
			s.indexOf("[[Categoria:Comuni italiani]]") != -1) {
				
				// nuovi commenti
				s = s.replaceAll("nomepaese =([^<]*)<([^>]*)>",
								 "nomepaese =$1<!--non modificare-->");

				s = s.replaceAll("siglaprovincia =([^<]*)<([^>]*)>",
								 "siglaprovincia =$1<!--sigla della provincia di appartenenza - senza parentesi quadre-->");

				s = s.replaceAll("latitudine =([^<]*)<([^>]*)>",
								 "latitudine =$1<!--scrivere la latitudine del capoluogo del comune - non scrivere Nord che viene messo automaticamente-->");

				s = s.replaceAll("longitudine =([^<]*)<([^>]*)>",
								 "longitudine =$1<!--scrivere la longitudine del capoluogo del comune - non scrivere Est che viene messo automaticamente-->");

				s = s.replaceAll("altitudine =([^<]*)<([^>]*)>",
								 "altitudine =$1<!--scrivere l'altezza del capoluogo del comune in metri - non scrivere la m finale che viene messa automaticamente-->");

				s = s.replaceAll("superficie =([^<]*)<([^>]*)>",
								 "superficie =$1<!--scrivere la superficie del comune (in km2) - i decimali non servono - - non scrivere km2 che viene messo automaticamente-->");

				s = s.replaceAll("popolazione =([^<]*)<([^>]*)>",
								 "popolazione =$1<!--scrivere la popolazione totale del comune - col punto separatore delle migliaia - eventualmente aggiungere l'anno: <small>2001</small>-->");

				s = s.replaceAll("densita =([^<]*)<([^>]*)>",
								 "densita =$1<!--scrivere la densita di popolazione del comune - senza decimali-->");

				s = s.replaceAll("frazionicomune =([^<]*)<([^>]*)>",
								 "frazionicomune =$1<!--Eventuali frazioni - se non ci sono lasciare lo spazio   - non scrivere nella riga sopra, ma solo in questa - nomi senza parentesi quadre (di norma) - separati da virgola e spazio - non usare <br> perchè va a capo automaticamente-->");

				s = s.replaceAll("comunilimitrofi =([^<]*)<([^>]*)>",
								 "comunilimitrofi =$1<!--Comuni confinanti anche di altre province - se non ci sono lasciare lo spazio   - non scrivere nella riga sopra, ma solo in questa - nomi esatti con doppie parentesi quadre (sempre) - separati da virgola e spazio - non usare <br> va a capo automaticamente-->");

				s = s.replaceAll("istat =([^<]*)<([^>]*)>",
								 "istat =$1<!--codice istat del comune - 6 cifre con 0 iniziale-->");

				// stub per regioni
				if (s.indexOf("{{stub}}") != -1) {
					buffer = s.substring(s.indexOf("[[Categoria:Comuni della provincia") + 34);
					buffer = buffer.substring(buffer.indexOf(":") + 1);
					buffer = buffer.substring(0, buffer.indexOf("]]"));
					s = s.replaceAll("\\{\\{stub\\}\\}", "{{" + buffer + " stub}}");
				}

				// parametri vuoti
				s = s.replaceAll("=\n *<!--", "=\n   <!--");

				// nuovi parametri di settembre
				if (s.indexOf("|nomepatrono") == -1) {
					s = s.replaceAll("<!--nome degli abitanti-->\n", 
						"<!--nome degli abitanti-->\n" +
						"|\nnomepatrono =\n  <!--nome del Santo Patrono del Comune-->\n" +
						"|\ndatapatrono =\n  <!--ricorrenza del Santo Patrono - giorno festivo per il Comune - nella forma [[7 maggio]] con doppie parentesi quadre-->\n");
				}
				
				//shift codice istat
				if (s.indexOf("istat =") != -1) {
					buffer = s.substring(s.indexOf("istat =") + 7);
					buffer = buffer.substring(0, buffer.indexOf("<"));
					buffer = buffer.trim();
					while (buffer.length() < 6) buffer = "0" + buffer;
					
					s = s.replaceAll("istat =([^<]*)<", "istat =\n" + buffer + " <");
				}
			}

		return s;
	}