Funciones de basicas de Html (HyperText Markup Language).
Funciones
Text HtmAsc2Xml(Text codInp)Text Htm2Ide(Text prgNam, Text lblTxt, Real makLow)Text HtmPutLinks(Text codTxt, Set lnkTab, Text opeSep)Text HtmPutCharts(Text codTxt)//////////////////////////////////////////////////////////////////////////////
Text HtmAsc2Xml(Text codInp) // Codigo de entrada
//////////////////////////////////////////////////////////////////////////////
{
ReplaceTable(codInp, [[ [["&", "&"]],
[["<", "<"]],
[[">", ">"]] ]], 1)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo resultado de reconvertir &, < y >.",
HtmAsc2Xml);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text Htm2Ide(Text prgNam, // Nombre del programa
Text lblTxt, // Etiqueta de entrada
Real makLow) // A minusculas
//////////////////////////////////////////////////////////////////////////////
{
Text lblInp = ReplaceTable(prgNam+"_"+lblTxt, [[
[["á","a"]],[["é","e"]],[["í","i"]],[["ó","o"]],[["ú","u"]],[["ü","u"]],
[["Á","A"]],[["É","E"]],[["Í","I"]],[["Ó","O"]],[["Ú","U"]],[["Ü","U"]],
[["ñ","n"]],[["Ñ","N"]]
]], 1);
Set setChr = TxtForChr(lblInp, Text(Text oneChr)
{
Case(
And(oneChr >= "0", oneChr <= "9"), oneChr,
And(oneChr >= "A", oneChr <= "Z"), If(makLow, ToLower(oneChr), oneChr),
And(oneChr >= "a", oneChr <= "z"), oneChr,
TRUE, "_")
});
Text txtSum = If(Card(setChr), SetSum(setChr), "");
If(txtSum=="", "", // No hay identificador
If(txtSum<"A", "X"+txtSum, // No ha de empezar por numero
If(txtSum=="_", "X"+txtSum, // No ha de empezar por _
txtSum))) // Es correcto
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una etiqueta de texto convertida en identificador Html, por ejemplo,
para utilizarse en un <a name></a>.
Un idetificador ha de empezar por letras A..Z o a..z y seguir por letras,
numeros 0..9 o subrayador, menos, dos puntos o punto.
Esta funcion solo conserva las letras y numeros en su posicion y cualquier
otro caracter lo cambia por el subrayador.
Dependiendo del parametro makLow lo pasa todo a minusculas.
Si no empieza por letra le antepone una X.",
Htm2Ide);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text HtmPutLinks(Text codTxt, // Codigo Html de entrada
Set lnkTab, // Tabla de etiquetas y enlaces
Text opeSep) // Operadores de 1 char que separan etiquetas
//////////////////////////////////////////////////////////////////////////////
{
If(!Card(lnkTab), codTxt,
{
Text opeDef = " \n"+Char(9)+Char(34)+ // blanco, cr/lf, tab, comilla doble
"¡!$%&()*+,-/:;<=>¿?[]^{|}~"; // sin comilla simple
Text opeTxt = If(opeSep!="", opeSep, opeDef); // Si no hay los por defecto
Text opeGen = Char(64); // Bell, el operador generico
Set opeRep = For(1, TextLength(opeTxt), Set(Real opePos)
{ // Tabla de remplazamiento de operadores
Text oneChr = Sub(opeTxt,opePos, opePos);
SetOfText(oneChr, opeGen+oneChr+opeGen)
});
Text codPar = ReplaceTable(codTxt, opeRep, 1); // Parse bruto
Set codRep = EvalSet(lnkTab, Set(Set codRow) // Tabla reemplazamiento
{ SetOfText(opeGen+codRow[1]+opeGen, codRow[2]) });
Text codMrk = ReplaceTable(codPar, codRep, 1); // Inyecta enlaces
Text codCls = Replace(codMrk, opeGen, ""); // Limpiar operador generico
codCls
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un codigo Html resultado de ponerle links a determinados palabras que
son identificadores.
Los identificadores se delimitan por determinados caracteres, por ejemplo,
blanco, coma, punto, 2 puntos en el caso del lenguaje escrito, mas, menos,
slash en el caso de matematicas o codigo.
De esta forma si recibe como identificador agua no se lo pone a paraguas.
En sensible a mayusculas y minusculas.
Los operadores se reciben como un texto y cada caracter es un operador.
Si el texto de operadores es vacio asume una lista estandar.
Si la tabla de etiquetas y links es vacia, no hace nada.",
HtmPutLinks);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text HtmPutCharts(Text codTxt) // Codigo Html de entrada
//////////////////////////////////////////////////////////////////////////////
{
// Los guiones - son realmente _
// <span class='CodRem'>//-(chartName)-</span>
Text iniTag = "<span class='CodRem'>/"+"/_(";
Text endTag = ")_"+"</span>";
If(!TextFind(codTxt, iniTag), codTxt, // No hay graficos online
{
Text WriteLn("Code with online charts");
Text iniImg = "<img src='";
Text endImg =
"' class='Tin' title='pulsando se cambia el tamaño' onclick="+
Q("JavaScript:if(this.className=='Tin') { this.className='Mid'; } "+
"else { this.className='Tin'; }")+">";
Text iniRep = Replace(codTxt, iniTag, iniImg);
Text endRep = Replace(iniRep, endTag, endImg);
endRep
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Si hay graficos online inserta las instrucciones para que se vean.
Si no hay graficos online retorna el mismo codigo Html que recibe como
parametro.",
HtmPutCharts);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FILE : htm.tol
// AUTHOR : http://www.asolver.com
// PURPOSE : Funciones de basicas de Html (HyperText Markup Language).
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text HtmAsc2Xml(Text codInp) // Codigo de entrada
//////////////////////////////////////////////////////////////////////////////
{
ReplaceTable(codInp, [[ [["&", "&"]],
[["<", "<"]],
[[">", ">"]] ]], 1)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo resultado de reconvertir &, < y >.",
HtmAsc2Xml);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text Htm2Ide(Text prgNam, // Nombre del programa
Text lblTxt, // Etiqueta de entrada
Real makLow) // A minusculas
//////////////////////////////////////////////////////////////////////////////
{
Text lblInp = ReplaceTable(prgNam+"_"+lblTxt, [[
[["á","a"]],[["é","e"]],[["í","i"]],[["ó","o"]],[["ú","u"]],[["ü","u"]],
[["Á","A"]],[["É","E"]],[["Í","I"]],[["Ó","O"]],[["Ú","U"]],[["Ü","U"]],
[["ñ","n"]],[["Ñ","N"]]
]], 1);
Set setChr = TxtForChr(lblInp, Text(Text oneChr)
{
Case(
And(oneChr >= "0", oneChr <= "9"), oneChr,
And(oneChr >= "A", oneChr <= "Z"), If(makLow, ToLower(oneChr), oneChr),
And(oneChr >= "a", oneChr <= "z"), oneChr,
TRUE, "_")
});
Text txtSum = If(Card(setChr), SetSum(setChr), "");
If(txtSum=="", "", // No hay identificador
If(txtSum<"A", "X"+txtSum, // No ha de empezar por numero
If(txtSum=="_", "X"+txtSum, // No ha de empezar por _
txtSum))) // Es correcto
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una etiqueta de texto convertida en identificador Html, por ejemplo,
para utilizarse en un <a name></a>.
Un idetificador ha de empezar por letras A..Z o a..z y seguir por letras,
numeros 0..9 o subrayador, menos, dos puntos o punto.
Esta funcion solo conserva las letras y numeros en su posicion y cualquier
otro caracter lo cambia por el subrayador.
Dependiendo del parametro makLow lo pasa todo a minusculas.
Si no empieza por letra le antepone una X.",
Htm2Ide);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text HtmPutLinks(Text codTxt, // Codigo Html de entrada
Set lnkTab, // Tabla de etiquetas y enlaces
Text opeSep) // Operadores de 1 char que separan etiquetas
//////////////////////////////////////////////////////////////////////////////
{
If(!Card(lnkTab), codTxt,
{
Text opeDef = " \n"+Char(9)+Char(34)+ // blanco, cr/lf, tab, comilla doble
"¡!$%&()*+,-/:;<=>¿?[]^{|}~"; // sin comilla simple
Text opeTxt = If(opeSep!="", opeSep, opeDef); // Si no hay los por defecto
Text opeGen = Char(64); // Bell, el operador generico
Set opeRep = For(1, TextLength(opeTxt), Set(Real opePos)
{ // Tabla de remplazamiento de operadores
Text oneChr = Sub(opeTxt,opePos, opePos);
SetOfText(oneChr, opeGen+oneChr+opeGen)
});
Text codPar = ReplaceTable(codTxt, opeRep, 1); // Parse bruto
Set codRep = EvalSet(lnkTab, Set(Set codRow) // Tabla reemplazamiento
{ SetOfText(opeGen+codRow[1]+opeGen, codRow[2]) });
Text codMrk = ReplaceTable(codPar, codRep, 1); // Inyecta enlaces
Text codCls = Replace(codMrk, opeGen, ""); // Limpiar operador generico
codCls
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un codigo Html resultado de ponerle links a determinados palabras que
son identificadores.
Los identificadores se delimitan por determinados caracteres, por ejemplo,
blanco, coma, punto, 2 puntos en el caso del lenguaje escrito, mas, menos,
slash en el caso de matematicas o codigo.
De esta forma si recibe como identificador agua no se lo pone a paraguas.
En sensible a mayusculas y minusculas.
Los operadores se reciben como un texto y cada caracter es un operador.
Si el texto de operadores es vacio asume una lista estandar.
Si la tabla de etiquetas y links es vacia, no hace nada.",
HtmPutLinks);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text HtmPutCharts(Text codTxt) // Codigo Html de entrada
//////////////////////////////////////////////////////////////////////////////
{
// Los guiones - son realmente _
// <span class='CodRem'>//-(chartName)-</span>
Text iniTag = "<span class='CodRem'>/"+"/_(";
Text endTag = ")_"+"</span>";
If(!TextFind(codTxt, iniTag), codTxt, // No hay graficos online
{
Text WriteLn("Code with online charts");
Text iniImg = "<img src='";
Text endImg =
"' class='Tin' title='pulsando se cambia el tamaño' onclick="+
Q("JavaScript:if(this.className=='Tin') { this.className='Mid'; } "+
"else { this.className='Tin'; }")+">";
Text iniRep = Replace(codTxt, iniTag, iniImg);
Text endRep = Replace(iniRep, endTag, endImg);
endRep
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Si hay graficos online inserta las instrucciones para que se vean.
Si no hay graficos online retorna el mismo codigo Html que recibe como
parametro.",
HtmPutCharts);
//////////////////////////////////////////////////////////////////////////////
Dct.Writer documenta programas Tol generado agendas para Html
2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio