Secciones de la página

dtr. tol


Declaraciones


Constantes


Funciones


Time oriented language


Árbol de ficheros

Funciones

Text DTrAddPath()

Text DTrCompact()

Text DTrRootFile()

Text DTrText()

Text DTrHtml()

Set DtrFileSet()

Set DtrFileExc()

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









dtr.tol de Dct.Writer

Funciones de arboles de estructuras de directorios para dar soporte a la generacion de la documentacion de programas en lenguaje Tol y en otros lenguajes de programacion.

Declaraciones

Constantes

  • Text DtrMrk
    Marca interna para identificar la raiz del arbol y del modulos principal.
  • Text DtrOut
    Marca interna para identificar los ficheros de salida.

Funciones

  • Text DTrAddPath(Text inpPth, Text subPth)
    Retorna el resultado de concatenar 2 trozos de una ruta de un fichero.
  • Text DTrCompact(Real delMrk, Text txtDes)
    Retorna una linea de documentación compactada y sin la marca de principal o de fichero de salida si se le pide con el argumento delMrk.
  • Text DTrRootFile(Set inpTre)
    Retorna el fichero principal de un arbol de ficheros.
  • Text DTrText(Set inpTre, Text inpPth, Real padLft)
    Retorna en texto plano con saltos de linea e indentaciones la estructura del arbol a documentar. Es una funcion auxiliar, permite comprobar visualmente el contenido de dicho arbol sin uso para la documentacion.
  • Text DTrHtml(Set inpTre, Text prgNam, Real padLft, Text actFil)
    Retorna en html el contenido del arbol, mediante los tags ul y li ademas de p, div y span, con el Css adecuado la visualizacion que legible. Pone si recibe actFil el nombre de uno de los ficheros del arbol lo destaca como fichero actual, poniendo al resto como simples hojas. Si no recibe ningun fichero pone como fichero actual el principal del arbol que ha de estar marcado con la etiqueta DTrMrk al final de su linea de documentacion. A todos los ficheros les incluye un enlace a su pagina de documentacion.
  • Set DtrFileSet(Set inpTre, Text inpPth)
    Retorna una tabla con el conjunto de los ficheros del arbol, hojas terminales, que hay que procesar, con sus descripciones compactadas y con un primer campo que identifica el fichero principal, Rot, porque pasa a ser la raiz del web de paginas del proyecto), mientras que el resto de ficheros son hoja, Lea. La tabla tiene 6 columnas: 1) identificador de si es el principal, 2) ruta del fichero incluyendo su nombre 3) nombre del fichero, 4) la descripcion compactada y sin marcas de fichero principal, 5) la etiqueta inicial de corte, si no procede, la tira vacia, y 6) la etiqueta final de corte, si no procede, la tira vacia. Los 2 ultimos campos sirven para cuando solo se desea documentar un trozo de un fichero entre 2 etiquetas, si son vacias, se asume el fichero completo. Esta programacion es un ejemplo de como se transforma en lineal una estructura de arbol, si bien en este caso solo de sus hojas. Para localizar los ficheros utiliza un inicio de camino inpPth. Si el fichero a documentar no existe entonces introduce un mensaje de error dentro del campo de documentacion. Notese que el uso se facilita y el nombre del directorio principal y de como se denomina al programa coinciden. El fichero puede no existir, por ejemplo, cuando se ponen ficheros genericos de ejemplo de muchas paginas web que se complementan con imagenes y no con el codigo interno de esas paginas.
  • Set DtrFileExc(Set filTab)
    Retorna una tabla con el conjunto de informacion de ficheros de entrada si todo cumplen los criterios de inclusion y Empty en otro caso.

Constantes

Text DtrMrk

//////////////////////////////////////////////////////////////////////////////
Text DtrMrk = "[+]";
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Marca interna para identificar la raiz del arbol y del modulos principal.",
DtrMrk);
//////////////////////////////////////////////////////////////////////////////

Text DtrOut

//////////////////////////////////////////////////////////////////////////////
Text DtrOut = "[>]";
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Marca interna para identificar los ficheros de salida.",
DtrOut);
//////////////////////////////////////////////////////////////////////////////

Funciones

Text DTrAddPath()

//////////////////////////////////////////////////////////////////////////////
Text DTrAddPath(Text inpPth, // Ruta superior de entrada
                Text subPth) // Subruta que se concatena
//////////////////////////////////////////////////////////////////////////////
{ TxtCat(inpPth, "/", subPth) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el resultado de concatenar 2 trozos de una ruta de un fichero.",
DTrAddPath);
//////////////////////////////////////////////////////////////////////////////

Text DTrCompact()

//////////////////////////////////////////////////////////////////////////////
Text DTrCompact(Real delMrk, // Si cierto elimina las marcas
                Text txtDes) // Texto de descripcion
//////////////////////////////////////////////////////////////////////////////
{
  Compact(If(delMrk, ReplaceTable(txtDes, [[ [[DtrMrk, ""]],
                                             [[DtrOut, ""]] ]]), txtDes))
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una linea de documentación compactada y sin la marca de principal
o de fichero de salida si se le pide con el argumento delMrk.",
DTrCompact);
//////////////////////////////////////////////////////////////////////////////

Text DTrRootFile()

//////////////////////////////////////////////////////////////////////////////
Text DTrRootFile(Set inpTre) // Arbol de entrada
//////////////////////////////////////////////////////////////////////////////
{
  Set filTab = DtrFileSet(inpTre, ""); // No necesita el path completo
  Set rotSet = Select(filTab, Real(Set filSet) { filSet[1]=="Rot" });
  rotSet[1][3]
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el fichero principal de un arbol de ficheros.", DTrRootFile);
//////////////////////////////////////////////////////////////////////////////

Text DTrText()

//////////////////////////////////////////////////////////////////////////////
Text DTrText(Set  inpTre, // Arbol de entrada
             Text inpPth, // Directorio previo
             Real padLft) // Numero de blancos a la izquierda
//////////////////////////////////////////////////////////////////////////////
{
  Text whiLft = Repeat("  ",padLft); // Blancos a la izquierda
  If(NE(Card(inpTre), 3), // Las hojas son de 2 o 4
  { // Hoja
    Real leaAct = TextEndAt(inpTre[2], DtrMrk);
    Real leaOut = TextEndAt(inpTre[2], DtrOut);
    Text leaDes = DTrCompact(Or(leaAct,leaOut), inpTre[2]);
    Text leaTyp = Case(leaAct, "Act",
                       leaOut, "Out",
                       TRUE,   "Lea");
    whiLft+leaTyp+": "+DTrAddPath(inpPth,inpTre[1])+"|"+leaDes+"\n"
  },
  { // Nodo
    Text newPth = DTrAddPath(inpPth,inpTre[1]);
    Real nodRot = TextEndAt(inpTre[2], DtrMrk);
    Text nodDes = DTrCompact(nodRot, inpTre[2]);
    Text nodTyp = If(nodRot, "Rot", "Nod");
    
    whiLft+nodTyp+": "+newPth+"|"+nodDes+"\n"+
    SetSum(EvalSet(inpTre[3], Text(Set subNod)
                   { DTrText(subNod, newPth, padLft+1) }))
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna en texto plano con saltos de linea e indentaciones la estructura del
arbol a documentar.
Es una funcion auxiliar, permite comprobar visualmente el contenido de dicho
arbol sin uso para la documentacion.",
DTrText);
//////////////////////////////////////////////////////////////////////////////

Text DTrHtml()

//////////////////////////////////////////////////////////////////////////////
Text DTrHtml(Set  inpTre, // Arbol de entrada
             Text prgNam, // Directorio de proyecto
             Real padLft, // Numero de blancos a la izquierda
             Text actFil) // Fichero actual
//////////////////////////////////////////////////////////////////////////////
{
  Text whiLft = Repeat(" ",padLft); // Blancos a la izquierda
  If(NE(Card(inpTre), 3), // Las hojas son de 2 o 4
  { // Hoja
    Text ahrIni = DctLink(prgNam, inpTre[1], "", "A"); // A href y Url

    Real endMrk = TextEndAt(inpTre[2], DtrMrk);
    Real leaOut = TextEndAt(inpTre[2], DtrOut);
    Text leaDes = DTrCompact(Or(endMrk, leaOut), inpTre[2]);

    Text leaTyp =Case(
     actFil==inpTre[1], "Act",  // Es el actual, azul
     endMrk,            "Rot",  // Es el principal, rojo
     leaOut,            "Out",  // Es un fichero de salida, verde
     TRUE,              "Lea"); // Es normal, gris

    Text arrTxt = If(leaOut, "<b>&rarr;</b>", "<b>&larr;</b>");

    whiLft+"<li>"+arrTxt+ahrIni+"<span class="+Q(leaTyp)+">"+inpTre[1]+
                               "</span></a> "+leaDes+"</li>\n"
  },
  { // Nodo: raiz o normal
    If(TextEndAt(inpTre[2], DtrMrk),
    { // Raiz
      Text nodDes = DTrCompact(TRUE, inpTre[2]);
      Text ahrIni = DctLink(prgNam, DTrRootFile(inpTre), "", "A");
          
      whiLft+"<div class='Tre'>\n"+
      whiLft+"<p>"+ahrIni+"<span class='Rot'>"+inpTre[1]+
                         "</span></a> "+nodDes+"</p>\n"+
      whiLft+"  <ul>\n"+
      SetSum(EvalSet(inpTre[3], Text(Set subNod)
                     { DTrHtml(subNod, prgNam, padLft+4, actFil) })) +
      whiLft+"  </ul>\n"+
      whiLft+"</div>\n"
    },
    { // Nodo normal
      Text nodDes = DTrCompact(FALSE, inpTre[2]);
          
      whiLft+"<li><span class='Nod'>"+inpTre[1]+"</span> "+nodDes+"\n" +
      whiLft+"  <ul>\n" +
      SetSum(EvalSet(inpTre[3], Text(Set subNod)
                     { DTrHtml(subNod, prgNam, padLft+4, actFil) })) +
      whiLft+"  </ul>\n" +
      whiLft+"</li>\n"
    })
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna en html el contenido del arbol, mediante los tags ul y li ademas de
p, div y span, con el Css adecuado la visualizacion que legible.
Pone si recibe actFil el nombre de uno de los ficheros del arbol lo destaca
como fichero actual, poniendo al resto como simples hojas.
Si no recibe ningun fichero pone como fichero actual el principal del arbol
que ha de estar marcado con la etiqueta DTrMrk al final de su linea de
documentacion.
A todos los ficheros les incluye un enlace a su pagina de documentacion.",
DTrHtml);
//////////////////////////////////////////////////////////////////////////////

Set DtrFileSet()

//////////////////////////////////////////////////////////////////////////////
Set DtrFileSet(Set  inpTre, // Arbol de entrada
               Text inpPth) // Directorio previo
//////////////////////////////////////////////////////////////////////////////
{
  Real inpCrd = Card(inpTre);
  If(NE(Card(inpTre), 3), // Las hojas son de 2 o 4
  { // Hoja
    Real leaRot = TextEndAt(inpTre[2], DtrMrk);
    Real leaOut = TextEndAt(inpTre[2], DtrOut);
    Text leaDes = DTrCompact(Or(leaRot,leaOut), inpTre[2]);

    Text leaTyp = If(leaRot, "Rot", "Lea");
    Text filPth = DTrAddPath(inpPth,inpTre[1]);
    Text iniTag = If(EQ(inpCrd, 4), inpTre[3], "");
    Text endTag = If(EQ(inpCrd, 4), inpTre[4], "");

    [[ SetOfText(leaTyp, filPth, inpTre[1], leaDes, iniTag, endTag) ]]
  },
  { // Nodo
    Text newPth = DTrAddPath(inpPth,inpTre[1]);

    BinGroup("<<", EvalSet(inpTre[3], Set(Set subNod)
                           { DtrFileSet(subNod, newPth) }))
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla con el conjunto de los ficheros del arbol, hojas
terminales, que hay que procesar, con sus descripciones compactadas y
con un primer campo que identifica el fichero principal, Rot, porque
pasa a ser la raiz del web de paginas del proyecto), mientras que el
resto de ficheros son hoja, Lea.
La tabla tiene 6 columnas:
1) identificador de si es el principal,
2) ruta del fichero incluyendo su nombre
3) nombre del fichero,
4) la descripcion compactada y sin marcas de fichero principal,
5) la etiqueta inicial de corte, si no procede, la tira vacia, y
6) la etiqueta final de corte, si no procede, la tira vacia.
Los 2 ultimos campos sirven para cuando solo se desea documentar un trozo de
un fichero entre 2 etiquetas, si son vacias, se asume el fichero completo.
Esta programacion es un ejemplo de como se transforma en lineal una estructura
de arbol, si bien en este caso solo de sus hojas.
Para localizar los ficheros utiliza un inicio de camino inpPth.
Si el fichero a documentar no existe entonces introduce un mensaje de error
dentro del campo de documentacion.
Notese que el uso se facilita y el nombre del directorio principal y de como
se denomina al programa coinciden.
El fichero puede no existir, por ejemplo, cuando se ponen ficheros genericos
de ejemplo de muchas paginas web que se complementan con imagenes y no con
el codigo interno de esas paginas.",
DtrFileSet);
//////////////////////////////////////////////////////////////////////////////

Set DtrFileExc()

//////////////////////////////////////////////////////////////////////////////
Set DtrFileExc(Set  filTab) // Tabla de ficheros de entrada
//////////////////////////////////////////////////////////////////////////////
{
  Set selTab = Select(filTab, Real(Set filSet)
  {
    If(TextFind   (filSet[3], DctExc), FALSE, // Exclusion en el nombre
    If(FilTextFind(filSet[3], DctExc), FALSE, // Exclusion en el contenido
                                       TRUE))
  });
  Real numExc = Card(filTab)-Card(selTab);
  If(!numExc, selTab,
    { Text WriteLn("Exclusions: "+F(numExc)); Empty })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla con el conjunto de informacion de ficheros de entrada si
todo cumplen los criterios de inclusion y Empty en otro caso.",
DtrFileExc);
//////////////////////////////////////////////////////////////////////////////

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : dtr.tol
// AUTHOR  : http://www.asolver.com
// PURPOSE : Funciones de arboles de estructuras de directorios para dar
// soporte a la generacion de la documentacion de programas en lenguaje Tol
// y en otros lenguajes de programacion.
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Text DtrMrk = "[+]";
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Marca interna para identificar la raiz del arbol y del modulos principal.",
DtrMrk);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text DtrOut = "[>]";
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Marca interna para identificar los ficheros de salida.",
DtrOut);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text DTrAddPath(Text inpPth, // Ruta superior de entrada
                Text subPth) // Subruta que se concatena
//////////////////////////////////////////////////////////////////////////////
{ TxtCat(inpPth, "/", subPth) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el resultado de concatenar 2 trozos de una ruta de un fichero.",
DTrAddPath);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text DTrCompact(Real delMrk, // Si cierto elimina las marcas
                Text txtDes) // Texto de descripcion
//////////////////////////////////////////////////////////////////////////////
{
  Compact(If(delMrk, ReplaceTable(txtDes, [[ [[DtrMrk, ""]],
                                             [[DtrOut, ""]] ]]), txtDes))
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una linea de documentación compactada y sin la marca de principal
o de fichero de salida si se le pide con el argumento delMrk.",
DTrCompact);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text DTrRootFile(Set inpTre) // Arbol de entrada
//////////////////////////////////////////////////////////////////////////////
{
  Set filTab = DtrFileSet(inpTre, ""); // No necesita el path completo
  Set rotSet = Select(filTab, Real(Set filSet) { filSet[1]=="Rot" });
  rotSet[1][3]
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el fichero principal de un arbol de ficheros.", DTrRootFile);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text DTrText(Set  inpTre, // Arbol de entrada
             Text inpPth, // Directorio previo
             Real padLft) // Numero de blancos a la izquierda
//////////////////////////////////////////////////////////////////////////////
{
  Text whiLft = Repeat("  ",padLft); // Blancos a la izquierda
  If(NE(Card(inpTre), 3), // Las hojas son de 2 o 4
  { // Hoja
    Real leaAct = TextEndAt(inpTre[2], DtrMrk);
    Real leaOut = TextEndAt(inpTre[2], DtrOut);
    Text leaDes = DTrCompact(Or(leaAct,leaOut), inpTre[2]);
    Text leaTyp = Case(leaAct, "Act",
                       leaOut, "Out",
                       TRUE,   "Lea");
    whiLft+leaTyp+": "+DTrAddPath(inpPth,inpTre[1])+"|"+leaDes+"\n"
  },
  { // Nodo
    Text newPth = DTrAddPath(inpPth,inpTre[1]);
    Real nodRot = TextEndAt(inpTre[2], DtrMrk);
    Text nodDes = DTrCompact(nodRot, inpTre[2]);
    Text nodTyp = If(nodRot, "Rot", "Nod");
    
    whiLft+nodTyp+": "+newPth+"|"+nodDes+"\n"+
    SetSum(EvalSet(inpTre[3], Text(Set subNod)
                   { DTrText(subNod, newPth, padLft+1) }))
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna en texto plano con saltos de linea e indentaciones la estructura del
arbol a documentar.
Es una funcion auxiliar, permite comprobar visualmente el contenido de dicho
arbol sin uso para la documentacion.",
DTrText);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text DTrHtml(Set  inpTre, // Arbol de entrada
             Text prgNam, // Directorio de proyecto
             Real padLft, // Numero de blancos a la izquierda
             Text actFil) // Fichero actual
//////////////////////////////////////////////////////////////////////////////
{
  Text whiLft = Repeat(" ",padLft); // Blancos a la izquierda
  If(NE(Card(inpTre), 3), // Las hojas son de 2 o 4
  { // Hoja
    Text ahrIni = DctLink(prgNam, inpTre[1], "", "A"); // A href y Url

    Real endMrk = TextEndAt(inpTre[2], DtrMrk);
    Real leaOut = TextEndAt(inpTre[2], DtrOut);
    Text leaDes = DTrCompact(Or(endMrk, leaOut), inpTre[2]);

    Text leaTyp =Case(
     actFil==inpTre[1], "Act",  // Es el actual, azul
     endMrk,            "Rot",  // Es el principal, rojo
     leaOut,            "Out",  // Es un fichero de salida, verde
     TRUE,              "Lea"); // Es normal, gris

    Text arrTxt = If(leaOut, "<b>&rarr;</b>", "<b>&larr;</b>");

    whiLft+"<li>"+arrTxt+ahrIni+"<span class="+Q(leaTyp)+">"+inpTre[1]+
                               "</span></a> "+leaDes+"</li>\n"
  },
  { // Nodo: raiz o normal
    If(TextEndAt(inpTre[2], DtrMrk),
    { // Raiz
      Text nodDes = DTrCompact(TRUE, inpTre[2]);
      Text ahrIni = DctLink(prgNam, DTrRootFile(inpTre), "", "A");
          
      whiLft+"<div class='Tre'>\n"+
      whiLft+"<p>"+ahrIni+"<span class='Rot'>"+inpTre[1]+
                         "</span></a> "+nodDes+"</p>\n"+
      whiLft+"  <ul>\n"+
      SetSum(EvalSet(inpTre[3], Text(Set subNod)
                     { DTrHtml(subNod, prgNam, padLft+4, actFil) })) +
      whiLft+"  </ul>\n"+
      whiLft+"</div>\n"
    },
    { // Nodo normal
      Text nodDes = DTrCompact(FALSE, inpTre[2]);
          
      whiLft+"<li><span class='Nod'>"+inpTre[1]+"</span> "+nodDes+"\n" +
      whiLft+"  <ul>\n" +
      SetSum(EvalSet(inpTre[3], Text(Set subNod)
                     { DTrHtml(subNod, prgNam, padLft+4, actFil) })) +
      whiLft+"  </ul>\n" +
      whiLft+"</li>\n"
    })
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna en html el contenido del arbol, mediante los tags ul y li ademas de
p, div y span, con el Css adecuado la visualizacion que legible.
Pone si recibe actFil el nombre de uno de los ficheros del arbol lo destaca
como fichero actual, poniendo al resto como simples hojas.
Si no recibe ningun fichero pone como fichero actual el principal del arbol
que ha de estar marcado con la etiqueta DTrMrk al final de su linea de
documentacion.
A todos los ficheros les incluye un enlace a su pagina de documentacion.",
DTrHtml);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Set DtrFileSet(Set  inpTre, // Arbol de entrada
               Text inpPth) // Directorio previo
//////////////////////////////////////////////////////////////////////////////
{
  Real inpCrd = Card(inpTre);
  If(NE(Card(inpTre), 3), // Las hojas son de 2 o 4
  { // Hoja
    Real leaRot = TextEndAt(inpTre[2], DtrMrk);
    Real leaOut = TextEndAt(inpTre[2], DtrOut);
    Text leaDes = DTrCompact(Or(leaRot,leaOut), inpTre[2]);

    Text leaTyp = If(leaRot, "Rot", "Lea");
    Text filPth = DTrAddPath(inpPth,inpTre[1]);
    Text iniTag = If(EQ(inpCrd, 4), inpTre[3], "");
    Text endTag = If(EQ(inpCrd, 4), inpTre[4], "");

    [[ SetOfText(leaTyp, filPth, inpTre[1], leaDes, iniTag, endTag) ]]
  },
  { // Nodo
    Text newPth = DTrAddPath(inpPth,inpTre[1]);

    BinGroup("<<", EvalSet(inpTre[3], Set(Set subNod)
                           { DtrFileSet(subNod, newPth) }))
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla con el conjunto de los ficheros del arbol, hojas
terminales, que hay que procesar, con sus descripciones compactadas y
con un primer campo que identifica el fichero principal, Rot, porque
pasa a ser la raiz del web de paginas del proyecto), mientras que el
resto de ficheros son hoja, Lea.
La tabla tiene 6 columnas:
1) identificador de si es el principal,
2) ruta del fichero incluyendo su nombre
3) nombre del fichero,
4) la descripcion compactada y sin marcas de fichero principal,
5) la etiqueta inicial de corte, si no procede, la tira vacia, y
6) la etiqueta final de corte, si no procede, la tira vacia.
Los 2 ultimos campos sirven para cuando solo se desea documentar un trozo de
un fichero entre 2 etiquetas, si son vacias, se asume el fichero completo.
Esta programacion es un ejemplo de como se transforma en lineal una estructura
de arbol, si bien en este caso solo de sus hojas.
Para localizar los ficheros utiliza un inicio de camino inpPth.
Si el fichero a documentar no existe entonces introduce un mensaje de error
dentro del campo de documentacion.
Notese que el uso se facilita y el nombre del directorio principal y de como
se denomina al programa coinciden.
El fichero puede no existir, por ejemplo, cuando se ponen ficheros genericos
de ejemplo de muchas paginas web que se complementan con imagenes y no con
el codigo interno de esas paginas.",
DtrFileSet);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Set DtrFileExc(Set  filTab) // Tabla de ficheros de entrada
//////////////////////////////////////////////////////////////////////////////
{
  Set selTab = Select(filTab, Real(Set filSet)
  {
    If(TextFind   (filSet[3], DctExc), FALSE, // Exclusion en el nombre
    If(FilTextFind(filSet[3], DctExc), FALSE, // Exclusion en el contenido
                                       TRUE))
  });
  Real numExc = Card(filTab)-Card(selTab);
  If(!numExc, selTab,
    { Text WriteLn("Exclusions: "+F(numExc)); Empty })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla con el conjunto de informacion de ficheros de entrada si
todo cumplen los criterios de inclusion y Empty en otro caso.",
DtrFileExc);
//////////////////////////////////////////////////////////////////////////////

Árbol de ficheros

Dct.Writer documenta programas Tol generado agendas para Html

  • make.tol proceso principal de documentación de programas Tol
  • tol directorios de código Tol
    • cmm funciones comunes
    • app funciones especificas de aplicacion
      • shi.tol sintaxis realzada de código Tol, Xml, Html, etc.
      • dtr.tol de árboles de ficheros para documentación
      • dct.tol de documentación de código en Html
    • inc.tol para la inclusion de ficheros Tol
  • dct donde se generan las agenda de post de documentación
  • arbol.html ejemplo de árbol para documentar codigo fuente
  • dct_writer.pdf documento resumen de funciones del programa

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol