def pripremi_ispis(ispis, hasek_izlaz, brojac, broj_gresaka, unos): pogreske = len(hasek_izlaz) ispis.append("\t<results errors=\"" + str(pogreske) + "\">") for redak in hasek_izlaz: #zamijeni cudne znakove hrvatskim slovima import hrv_slova redak = hrv_slova.popravi(redak) m = re.search(r"^-([xlmskgcGP][xlmskgcGP])- ([^\s]*) (\d*)", redak) if (m): if ((m.group(1) != "GG") and (m.group(1) != "PP")): brojac["-" + m.group(1) + "-"] += int(m.group(3)) broj_gresaka += int(m.group(3)) ispis.append("\t\t<error occurrences=\"" + m.group(3) + "\" severity=\"" + m.group(1) + "\">") sumnjivo = m.group(2) if ((m.group(1) == "GG") or (m.group(1) == "PP")): sumnjivo = re.sub("#", " ", sumnjivo) lista_pozicija = [ p.start() for p in re.finditer( re.compile(r"\b%s\b" % sumnjivo, re.UNICODE), unos) ] for pozicija in lista_pozicija: ispis.append("\t\t\t<position>" + str(pozicija) + "</position>") duljina_sumnjivo = len(sumnjivo) ispis.append("\t\t\t<length>" + str(duljina_sumnjivo) + "</length>") ispis.append("\t\t\t<suspicious>" + sumnjivo + "</suspicious>") m = re.search(r"=> (.*)", redak) if (m): ponuda = m.group(1) prijedlozi = [] prijedlozi = re.split(r"\?\s?", ponuda) if ((re.search("^\!(.*?)\!?\?", ponuda)) or (re.search("(.*obliku.*)\?", ponuda))): tip = m.group(1).lower() ispis.append("\t\t\t\t<possible type=\"" + tip + "\"/>") else: ispis.append("\t\t\t<suggestions>") for prijedlog in prijedlozi: if ( prijedlog ): #to zato jer je zadnji element liste prazan zbog splitanja ispis.append("\t\t\t\t<word>" + prijedlog + "</word>") ispis.append("\t\t\t</suggestions>") ispis.append("\t\t</error>") ispis.append("\t</results>") return (ispis, brojac, broj_gresaka)
def pripremi_ispis(ispis, hasek_izlaz, brojac, broj_gresaka, unos): pogreske = len(hasek_izlaz) ispis.append("\t<results errors=\"" + str(pogreske) + "\">") for redak in hasek_izlaz: #zamijeni cudne znakove hrvatskim slovima import hrv_slova redak = hrv_slova.popravi(redak) m = re.search(r"^-([xlmskgcGP][xlmskgcGP])- ([^\s]*) (\d*)", redak) if (m): if ((m.group(1) != "GG") and (m.group(1) != "PP")): brojac["-" + m.group(1) + "-"] += int(m.group(3)) broj_gresaka += int(m.group(3)) ispis.append("\t\t<error occurrences=\"" + m.group(3) + "\" severity=\"" + m.group(1)+ "\">") sumnjivo = m.group(2) if ((m.group(1) == "GG") or (m.group(1) == "PP")): sumnjivo = re.sub("#"," ",sumnjivo) lista_pozicija = [p.start() for p in re.finditer(re.compile(r"\b%s\b" % sumnjivo, re.UNICODE) , unos)] for pozicija in lista_pozicija: ispis.append("\t\t\t<position>" + str(pozicija) + "</position>") duljina_sumnjivo = len(sumnjivo) ispis.append("\t\t\t<length>" + str(duljina_sumnjivo) + "</length>") ispis.append("\t\t\t<suspicious>" + sumnjivo + "</suspicious>") m = re.search(r"=> (.*)", redak) if (m): ponuda = m.group(1) prijedlozi = [] prijedlozi = re.split(r"\?\s?", ponuda) if ((re.search("^\!(.*?)\!?\?", ponuda)) or (re.search("(.*obliku.*)\?", ponuda))): tip = m.group(1).lower() ispis.append("\t\t\t\t<possible type=\"" + tip + "\"/>") else: ispis.append("\t\t\t<suggestions>") for prijedlog in prijedlozi: if(prijedlog): #to zato jer je zadnji element liste prazan zbog splitanja ispis.append("\t\t\t\t<word>" + prijedlog + "</word>") ispis.append("\t\t\t</suggestions>") ispis.append("\t\t</error>") ispis.append("\t</results>") return(ispis, brojac, broj_gresaka)
(ispis, brojac, broj_gresaka) = obrada_xml.pripremi_ispis(ispis, hasek_izlaz, brojac, broj_gresaka, unos) else: #nema gresaka ispis.append("\t<results errors=\"0\">") ispis.append("\t</results>") vrijeme_kraja = datetime.now() vremenski_interval = vrijeme_kraja-vrijeme_pocetka sekunde = str(vremenski_interval.seconds) mikrosekunde = str(vremenski_interval.microseconds).zfill(6) ispis.append("\t<time>" + sekunde + "." + mikrosekunde + "</time>") original_hrvatski = " ".join(hasek_izlaz) #popravi hrvatska slova import hrv_slova original_hrvatski = hrv_slova.popravi(original_hrvatski) ispis.append("\t<orig>\n" + original_hrvatski + "\t</orig>") ispis.append("</hacheck>") for i in ispis: print (i.encode('utf-8')) #izrada statistike if (ip != "161.53.19.189"): trenutno_vrijeme = time.time() datum = time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime(trenutno_vrijeme + 19 * 60 + 38)) #kad se pokrene naredba date iz ljuske dobije se pomaknuto vrijeme...(19 min i 38 sec) zaglavlje_izvjesca = "\nFrom: " + ip + " Version: 3.0 beta\nUserID: " + korisnikID + "\n" + datum + "\n\n" pomocna=(izvjesce, zaglavlje_izvjesca, izvjesce_datoteka, statistika_datoteka, brojac, broj_gresaka, privremena_datoteka)
def pripremi_ispis(ispis, hasek_izlaz, brojac, broj_gresaka, unos): pogreske = len(hasek_izlaz) ispis.append("\t\t\"errors\": " + str(pogreske) + ",") ispis.append("\t\t\"error\": [") izvjestaj = {} izvjestaj['numberOfErrors'] = pogreske niz_pogresaka = [] for redak in hasek_izlaz: #zamijeni se cudne znakove hrvatskim slovima import hrv_slova redak = hrv_slova.popravi(redak) pomocni_rjecnik = {} m = re.search(r"^-([xlmskgcGP][xlmskgcGP])- ([^\s]*) (\d*)", redak) #ja bi tu del plus umjesto * if (m): if (m.group(1) != "GG"): brojac["-" + m.group(1) + "-"] += int(m.group(3)) broj_gresaka += int(m.group(3)) ispis.append("\t\t\t{") ispis.append("\t\t\t\t\"occurrences\": " + m.group(3) + ",") ispis.append("\t\t\t\t\"severity\": \"" + m.group(1) + "\",") pomocni_rjecnik['severity'] = m.group(1) pomocni_rjecnik['occurrences'] = m.group(3) sumnjivo = m.group(2) if (m.group(1) == "GG"): sumnjivo = re.sub("#"," ",sumnjivo) pomocni_rjecnik['suspicious'] = sumnjivo ispis.append("\t\t\t\t\"position\": [") lista_pozicija = [p.start() for p in re.finditer(re.compile(r"\b%s\b" % sumnjivo, re.UNICODE) , unos)] for pozicija in lista_pozicija: ispis.append("\t\t\t\t\t" + str(pozicija) + ",") #mora se izbrisati zarez pom = ispis.pop() pom = pom.rstrip(",") ispis.append(pom) ispis.append("\t\t\t\t],") duljina_sumnjivo = len(sumnjivo) ispis.append("\t\t\t\t\"length\": " + str(duljina_sumnjivo) + ",") ispis.append("\t\t\t\t\"suspicious\": \"" + sumnjivo + "\"") m = re.search(r"=> (.*)", redak) if (m): #mora se dodati zarez pom = ispis.pop() ispis.append(pom + ",") ponuda = m.group(1) prijedlozi = [] prijedlozi = re.split(r"\?\s?", ponuda) pom_prijedlozi = [] ispis.append("\t\t\t\t\"suggestions\": [") for prijedlog in prijedlozi: if(prijedlog): #to zato jer je zadnji element liste prazan zbog splitanja ispis.append("\t\t\t\t\t\"" + prijedlog + "\",") pom_prijedlozi.append(prijedlog) #mora se izbrisati zarez pom = ispis.pop() pom = pom.rstrip(",") ispis.append(pom) ispis.append("\t\t\t\t]") ispis.append("\t\t\t},") pomocni_rjecnik['suggestions'] = pom_prijedlozi niz_pogresaka.append(pomocni_rjecnik) #mora se izbrisati zarez pom = ispis.pop() pom = pom.rstrip(",") ispis.append(pom) ispis.append("\t\t]") izvjestaj['errors'] = niz_pogresaka return(ispis, brojac, broj_gresaka, izvjestaj)
def generiraj(pomocna): ( izvjesce, zaglavlje_izvjesca, izvjesce_datoteka, statistika_datoteka, brojac, broj_gresaka, privremena_datoteka, ) = pomocna wc = commands.getoutput("wc " + privremena_datoteka) wc = re.sub(privremena_datoteka, "", wc) wc = wc.rstrip() broj_rijeci = commands.getoutput( "cat " + privremena_datoteka + " | sed -f /users/hacheck/checker/break.sed | /usr/bin/sort | /usr/bin/uniq -c | /usr/bin/awk 'NF == 2 {print}' | /usr/bin/awk '{a=a+$1} END {print a}'" ) if not (broj_rijeci): broj_rijeci = 0 # generira se datoteka izvjesce with codecs.open(izvjesce_datoteka, "a", "utf-8") as dat: dat.write(zaglavlje_izvjesca) # zapisi izvjesce u datoteku ali popravi da budu hrvatska slova import hrv_slova if izvjesce[0]: for redak in izvjesce: redak = hrv_slova.popravi(redak) dat.write(redak + "\n") else: dat.write(u"Nije bilo pogrešaka\n") dat.close() # generira se datoteka statistika dat = open(statistika_datoteka, "a") dat.write(zaglavlje_izvjesca) dat.write(wc + "\n") dat.write("-" * 81) dat.write( "\n%9s%9s%9s%9s%9s%9s%9s%9s%9s\n" % ("-kk-", "-gg-", "-cc-", "-xx-", "-ll-", "-mm-", "-ss-", "total", "words") ) dat.write( "%9s%9s%9s%9s%9s%9s%9s%9s%9s\n" % ( brojac["-kk-"], brojac["-gg-"], brojac["-cc-"], brojac["-xx-"], brojac["-ll-"], brojac["-mm-"], brojac["-ss-"], broj_gresaka, broj_rijeci, ) ) dat.write("-" * 81) dat.close()