Makrá v OpenOffice.org 08/2008

Július Pastierik  /  17. 07. 2008, 00:00

Dnes opäť pokračujeme v uverejňovaní makra pre prípravu slov pre slovenský slovník a dokončíme časť pre základnú prípravu.

V minulom dieli sme si uviedli prvú časť funkcií, ktoré sú uložené v module „Slovnik_init“ a sú určené pre počiatočnú prípravu rozšírenia pre spracovanie slova. Dnes budeme pokračovať týmto modulom a uvedieme si funkciu, ktorá číta definičný súbor tvarovania slov, podľa počtu definícii mení dimenziu polí a načítava príslušné časti tvarovania.

function spracuj_riadok(riadok as string, prvy as long) as long

 dim prefix_sufix, co, za, podmienka as string
 dim poznamka as boolean
 dim znak, cast as string
 dim dlzka, i, ktora as integer
 dim kolko, pomprvy as long

 dlzka=len(riadok)
 pomprvy=prvy
 
 cast=""
 poznamka=false
 ktora=0
 for i=1 to dlzka
  if not poznamka then
   znak=mid(riadok,i,1)
   if znak="#" then
    poznamka=true
   else
    if znak=" " then
     ktora=ktora+1
     ' Ukončenie definície jednej časti
     select case ktora
      case 1 ' Či ide o prefix/sufix
       rem Toto nespracovávame
       cast=""
      case 2 ' Vlastný prefix/sufix
       prefix_sufix=cast
       cast=""
      case 3 ' Ak je prvý, tak Y/N, inak "co"
       if pomprvy<>0 then
        co=cast
       endif
       cast=""
      case 4 ' Ak je prvý, tak počet, inak "za"
       if pomprvy=0 then
        kolko=val(cast)
       else
        za=cast
       endif
       cast=""
      case 5 ' Podmienka
       podmienka=cast
       cast=""
     end select
    else
     cast=cast+znak
    endif
   endif
  endif
 next i
 if (pomprvy=0) and (ktora=3) then
  kolko=val(cast)
  cast=""
 endif
 if (pomprvy<>0) and (ktora=4) then
  ' Koniec definície bez poznámky alebo medzery na konci riadku
  podmienka=cast
  cast=""
 endif
 if pomprvy=0 then
  def_pfx_sfx=0
  pomprvy=kolko
  select case prefix_sufix
   case "N"
    redim preserve pfx_N_d(3,pomprvy)
    pfx_N_p=pomprvy
   case "F"
    redim preserve pfx_F_d(3,pomprvy)
    pfx_F_p=pomprvy
   case "Z"
    redim preserve sfx_Z_d(3,pomprvy)
    sfx_Z_p=pomprvy
   case "z"
    redim preserve sfx_mz_d(3,pomprvy)
    sfx_mz_p=pomprvy
   case "U"
    redim preserve sfx_U_d(3,pomprvy)
    sfx_U_p=pomprvy
   case "D"
    redim preserve sfx_D_d(3,pomprvy)
    sfx_D_p=pomprvy
   case "K"
    redim preserve sfx_K_d(3,pomprvy)
    sfx_K_p=pomprvy
   case "M"
    redim preserve sfx_M_d(3,pomprvy)
    sfx_M_p=pomprvy
   case "S"
    redim preserve sfx_S_d(3,pomprvy)
    sfx_S_p=pomprvy
   case "V"
    redim preserve sfx_V_d(3,pomprvy)
    sfx_V_p=pomprvy
   case "A"
    redim preserve sfx_A_d(3,pomprvy)
    sfx_A_p=pomprvy
   case "C"
    redim preserve sfx_C_d(3,pomprvy)
    sfx_C_p=pomprvy
   case "H"
    redim preserve sfx_H_d(3,pomprvy)
    sfx_H_p=pomprvy
   case "B"
    redim preserve sfx_B_d(3,pomprvy)
    sfx_B_p=pomprvy
   case "b"
    redim preserve sfx_mb_d(3,pomprvy)
    sfx_mb_p=pomprvy
   case "o"
    redim preserve sfx_mo_d(3,pomprvy)
    sfx_mo_p=pomprvy
   case "O"
    redim preserve sfx_O_d(3,pomprvy)
    sfx_O_p=pomprvy
   case "J"
    redim preserve sfx_J_d(3,pomprvy)
    sfx_J_p=pomprvy
   case "L"
    redim preserve sfx_L_d(3,pomprvy)
    sfx_L_p=pomprvy
   case "Q"
    redim preserve sfx_Q_d(3,pomprvy)
    sfx_Q_p=pomprvy
   case "Y"
    redim preserve sfx_Y_d(3,pomprvy)
    sfx_Y_p=pomprvy
   case "I"
    redim preserve sfx_I_d(3,pomprvy)
    sfx_I_p=pomprvy
   case "P"
    redim preserve sfx_P_d(3,pomprvy)
    sfx_P_p=pomprvy
   case "X"
    redim preserve sfx_X_d(3,pomprvy)
    sfx_X_p=pomprvy
   case "E"
    redim preserve sfx_E_d(3,pomprvy)
    sfx_E_p=pomprvy
   case "W"
    redim preserve sfx_W_d(3,pomprvy)
    sfx_W_p=pomprvy
   case "T"
    redim preserve sfx_T_d(3,pomprvy)
    sfx_T_p=pomprvy
   case "R"
    redim preserve sfx_R_d(3,pomprvy)
    sfx_R_p=pomprvy
   case "č"
    redim preserve sfx_c_c_d(3,pomprvy)
    sfx_c_c_p=pomprvy
  end select
 else
  def_pfx_sfx=def_pfx_sfx+1
  if pomprvy=def_pfx_sfx then
   ' Spracovávame posledný riadok, bude nový
   pomprvy=0
  endif
  if co="0" then co=""
  if za="0" then za=""
  select case prefix_sufix
   case "N"
    pfx_N_d(1,def_pfx_sfx)=co
    pfx_N_d(2,def_pfx_sfx)=za
    pfx_N_d(3,def_pfx_sfx)=podmienka
   case "F"
    pfx_F_d(1,def_pfx_sfx)=co
    pfx_F_d(2,def_pfx_sfx)=za
    pfx_F_d(3,def_pfx_sfx)=podmienka
   case "Z"
    sfx_Z_d(1,def_pfx_sfx)=co
    sfx_Z_d(2,def_pfx_sfx)=za
    sfx_Z_d(3,def_pfx_sfx)=podmienka
   case "z"
    sfx_mz_d(1,def_pfx_sfx)=co
    sfx_mz_d(2,def_pfx_sfx)=za
    sfx_mz_d(3,def_pfx_sfx)=podmienka
   case "U"
    sfx_U_d(1,def_pfx_sfx)=co
    sfx_U_d(2,def_pfx_sfx)=za
    sfx_U_d(3,def_pfx_sfx)=podmienka
   case "D"
    sfx_D_d(1,def_pfx_sfx)=co
    sfx_D_d(2,def_pfx_sfx)=za
    sfx_D_d(3,def_pfx_sfx)=podmienka
   case "K"
    sfx_K_d(1,def_pfx_sfx)=co
    sfx_K_d(2,def_pfx_sfx)=za
    sfx_K_d(3,def_pfx_sfx)=podmienka
   case "M"
    sfx_M_d(1,def_pfx_sfx)=co
    sfx_M_d(2,def_pfx_sfx)=za
    sfx_M_d(3,def_pfx_sfx)=podmienka
   case "S"
    sfx_S_d(1,def_pfx_sfx)=co
    sfx_S_d(2,def_pfx_sfx)=za
    sfx_S_d(3,def_pfx_sfx)=podmienka
   case "V"
    sfx_V_d(1,def_pfx_sfx)=co
    sfx_V_d(2,def_pfx_sfx)=za
    sfx_V_d(3,def_pfx_sfx)=podmienka
   case "A"
    sfx_A_d(1,def_pfx_sfx)=co
    sfx_A_d(2,def_pfx_sfx)=za
    sfx_A_d(3,def_pfx_sfx)=podmienka
   case "C"
    sfx_C_d(1,def_pfx_sfx)=co
    sfx_C_d(2,def_pfx_sfx)=za
    sfx_C_d(3,def_pfx_sfx)=podmienka
   case "H"
    sfx_H_d(1,def_pfx_sfx)=co
    sfx_H_d(2,def_pfx_sfx)=za
    sfx_H_d(3,def_pfx_sfx)=podmienka
   case "B"
    sfx_B_d(1,def_pfx_sfx)=co
    sfx_B_d(2,def_pfx_sfx)=za
    sfx_B_d(3,def_pfx_sfx)=podmienka
   case "b"
    sfx_mb_d(1,def_pfx_sfx)=co
    sfx_mb_d(2,def_pfx_sfx)=za
    sfx_mb_d(3,def_pfx_sfx)=podmienka
   case "o"
    sfx_mo_d(1,def_pfx_sfx)=co
    sfx_mo_d(2,def_pfx_sfx)=za
    sfx_mo_d(3,def_pfx_sfx)=podmienka
   case "O"
    sfx_O_d(1,def_pfx_sfx)=co
    sfx_O_d(2,def_pfx_sfx)=za
    sfx_O_d(3,def_pfx_sfx)=podmienka
   case "J"
    sfx_J_d(1,def_pfx_sfx)=co
    sfx_J_d(2,def_pfx_sfx)=za
    sfx_J_d(3,def_pfx_sfx)=podmienka
   case "L"
    sfx_L_d(1,def_pfx_sfx)=co
    sfx_L_d(2,def_pfx_sfx)=za
    sfx_L_d(3,def_pfx_sfx)=podmienka
   case "Q"
    sfx_Q_d(1,def_pfx_sfx)=co
    sfx_Q_d(2,def_pfx_sfx)=za
    sfx_Q_d(3,def_pfx_sfx)=podmienka
   case "Y"
    sfx_Y_d(1,def_pfx_sfx)=co
    sfx_Y_d(2,def_pfx_sfx)=za
    sfx_Y_d(3,def_pfx_sfx)=podmienka
   case "I"
    sfx_I_d(1,def_pfx_sfx)=co
    sfx_I_d(2,def_pfx_sfx)=za
    sfx_I_d(3,def_pfx_sfx)=podmienka
   case "P"
    sfx_P_d(1,def_pfx_sfx)=co
    sfx_P_d(2,def_pfx_sfx)=za
    sfx_P_d(3,def_pfx_sfx)=podmienka
   case "X"
    sfx_X_d(1,def_pfx_sfx)=co
    sfx_X_d(2,def_pfx_sfx)=za
    sfx_X_d(3,def_pfx_sfx)=podmienka
   case "E"
    sfx_E_d(1,def_pfx_sfx)=co
    sfx_E_d(2,def_pfx_sfx)=za
    sfx_E_d(3,def_pfx_sfx)=podmienka
   case "W"
    sfx_W_d(1,def_pfx_sfx)=co
    sfx_W_d(2,def_pfx_sfx)=za
    sfx_W_d(3,def_pfx_sfx)=podmienka
   case "T"
    sfx_T_d(1,def_pfx_sfx)=co
    sfx_T_d(2,def_pfx_sfx)=za
    sfx_T_d(3,def_pfx_sfx)=podmienka
   case "R"
    sfx_R_d(1,def_pfx_sfx)=co
    sfx_R_d(2,def_pfx_sfx)=za
    sfx_R_d(3,def_pfx_sfx)=podmienka
   case "č"
    sfx_c_c_d(1,def_pfx_sfx)=co
    sfx_c_c_d(2,def_pfx_sfx)=za
    sfx_c_c_d(3,def_pfx_sfx)=podmienka
  end select
 endif
 spracuj_riadok=pomprvy
end function

 

Neprehliadnite: