#!/bin/bash
# check mispell files for errors

removecomments()
{
sed 's/\([^ ]*\)[ ]*#.*/\1/g'
}

helytelen_tobbes_szam()
{
echo "-----helytelen tbbes szm-----------------------------------------"
# fnv esetn a msodik alak nem "k"-ra vgzdik

for f in `find . -type f -name "*fonev_morfo*" -noleaf`; do
  cat "$f"|removecomments|grep -i '^[^	]*[	][^	]*[^k]$'
  if [ $? -eq 0 ]; then echo "$f"; echo; fi
  cat "$f"|removecomments|grep -i '^[^	]*[	][^	]*[^k][	]'
  if [ $? -eq 0 ]; then echo "$f"; echo; fi
done
}

duplikatum()
{
echo "-----dupliktum----------------------------------------------------"
# tbb azonos sor egy fjlon bell

for d in `find . -type d -name "_*" -o -name "kivetelek" -noleaf`; do
  for f in `find "$d" -type f -noleaf`; do
    linecount=`cat "$f"|removecomments|sed '/^$/d'|sort|uniq -d|wc -l`
    if [ $linecount -ne 0 ]; then
      cat "$f"|removecomments|sed '/^$/d'|sort|uniq -d
      echo "$f"; echo
    fi
  done
done
}

szokoz_rossz_helyen()
{
echo "-----szkz rossz helyen-------------------------------------------"
# szkz nem megfelel helyen, azaz nem megjegyzshez kapcsoldan

for d in `find . -type d -name "_*" -o -name "kivetelek" -noleaf`; do
  for f in `find "$d" -type f -noleaf`; do
    cat "$f"|removecomments|grep '[ ]'
    if [ $? -eq 0 ]; then echo "$f"; echo; fi
  done
done
}

kis_kezdobetus_tulajdonnev()
{
echo "-----kis kezdbets tulajdonnv------------------------------------"
# kis kezdbets tulajdonnv (nem mind hiba, pldul "haiti")

for d in `find . -type d -name "_*" -noleaf`; do
  for f in `find "$d" -type f -name "tulajdonnev*" -noleaf`; do
    cat "$f"|removecomments|grep '^[	]\?[abcdefghijklmnopqrstuvwxyz]'
    if [ $? -eq 0 ]; then echo "$f"; echo; fi
  done
done
}

nagybetus_melleknevkepzos_alak()
{
echo "-----nagybets mellknvkpzs alak--------------------------------"
# tulajdonnv esetn a msodik alak nem csupa kisbet

for d in `find . -type d -name "_*" -noleaf`; do
  for f in `find "$d" -type f -name "tulajdonnev*" -noleaf`; do
    cat "$f"|removecomments|grep '^[^	]\+[	][^	]*[ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
    if [ $? -eq 0 ]; then echo "$f"; echo; fi
  done
done
}

melleknevkepzos_alak_hianyzik()
{
echo "-----mellknvkpzs alak hinyzik---------------------------------"
# nagy kezdbets fldrajzi nv a sor elejn, amely utn nincs msodik alak

for d in `find . -type d -name "_*" -noleaf`; do
  for f in `find "$d" -type f -name "tulajdonnev_geo" -noleaf`; do
    cat "$f"|removecomments|grep '^[ABCDEFGHIJKLMNOPQRSTUVWXYZ][^	]*[	]*$'
    if [ $? -eq 0 ]; then echo "$f"; echo; fi
  done
done
}

nagybetut_tartalmazo_ige_melleknev()
{
echo "-----nagybett tartalmaz ige/mellknv----------------------------"
# nagybett tartalmaz ige illetve mellknv

for d in `find . -type d -name "_*" -noleaf`; do
  for f in `find "$d" -type f -name "ige*" -o -name "melleknev*" -noleaf`; do
    cat "$f"|removecomments|grep '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
    if [ $? -eq 0 ]; then echo "$f"; echo; fi
  done
done
}

ugyanazon_ige_targyasban_es_alanyiban()
{
echo "-----ugyanazon ige trgyasban s alanyiban-------------------------"
# ugyanazon ige szerepel a trgyasok s az alanyik kzt

comm -12 <(
for d in `find . -type d -name "_*" -noleaf`; do
  for f in `find "$d" -type f -name "ige_targy" -noleaf`; do
    cat "$f"|removecomments|sed '/^$/d'
  done
done|sort|uniq) <(
for d in `find . -type d -name "_*" -noleaf`; do
  for f in `find "$d" -type f -name "ige_alanyi" -noleaf`; do
    cat "$f"|removecomments|sed '/^$/d'
  done
done|sort|uniq)
}

alfajlban_levo_melleknev_nincs_a_fofajlban()
{
echo "-----alfjlban lev mellknv nincs a ffjlban--------------------"
# egy alfjlban szerepl mellknv nem szerepel a megfelel ffjlban;
#  pldul szerepel a "melleknev_mely" fjlban, de a "melleknev" fjlban nem

for d in `find . -type d -name "_*" -noleaf`; do
  comm -23 <(
  for f in `find "$d" -type f -name "melleknev_*" -noleaf`; do
    cat "$f"|removecomments|sed '/^$/d'
  done|sort|uniq) <(
  for f in `find "$d" -type f -name "melleknev" -noleaf`; do
    cat "$f"|removecomments|sed '/^$/d'
  done|sort|uniq)
done
}

Ispell-fajlban_levo_szo_el_nem_fogadasa()
{
echo "-----Ispell-fjlban lev sz el nem fogadsa-----------------------"
# sajt fjljban lev szt hibsnak jelez az Ispell, vagy csak
#  sszetettknt fogad el

for d in `find . -type d -name "_*" -o -name "kivetelek" -noleaf`; do
  for f in `find "$d" -type f -noleaf`; do
    echo "$f"|grep -E "\.m4$" >/dev/null
    if [ $? -eq 0 ]; then
      linecount=`cat "$f"|removecomments|sed '/^.*[$()].*$/d'|ispell -d magyar -l -B|wc -l`
      if [ $linecount -ne 0 ]; then
        cat "$f"|removecomments|sed '/^.*[$()].*$/d'|ispell -d magyar -l -B
        echo "$f"; echo
      fi
    else
      linecount=`cat "$f"|removecomments|ispell -d magyar -l -B|wc -l`
      if [ $linecount -ne 0 ]; then
        cat "$f"|removecomments|ispell -d magyar -l -B
        echo "$f"; echo
      fi
    fi
  done
done
}

helytelen_tobbes_szam
duplikatum
szokoz_rossz_helyen
kis_kezdobetus_tulajdonnev
nagybetus_melleknevkepzos_alak
melleknevkepzos_alak_hianyzik
nagybetut_tartalmazo_ige_melleknev
ugyanazon_ige_targyasban_es_alanyiban
alfajlban_levo_melleknev_nincs_a_fofajlban
Ispell-fajlban_levo_szo_el_nem_fogadasa
