Un wiki para mvc asp.net wiki-motor [cerrada]
-
13-09-2019 - |
Pregunta
¿Hay algún módulo wiki para asp.net mvc o soemthign que se puede adaptar con relativa facilidad:)
Como alternativa, ¿hay algún formateadores para el formato wiki, que quizá implment el wiki más común de marcas de formato, etc.
Solución
private void ProcessLine(string line, TextWriter writer)
{
int state = 0;
int i = 0;
int wordStart = 0;
Action encode = () => HttpUtility.HtmlEncode(line[i].ToString(), writer);
Func<bool> isws = () => Char.IsWhiteSpace(line[i]);
for (i = 0; i < line.Length; ++i)
{
switch (state)
{
case 0:
if (line[i] == '*')
{
state = 1;
}
else if (line[i] == '/')
{
state = 4;
}
else if (line[i] == '[')
{
wordStart = i + 1;
state = 7;
}
else
{
encode();
}
break;
case 1: //Start bold
if (isws())
{
encode();
state = 0;
}
else
{
writer.Write("<b>");
encode();
state = 2;
}
break;
case 2: //End bold
if (isws())
{
encode();
state = 3;
}
else if (line[i] == '*')
{
writer.Write("</b>");
state = 0;
}
else
{
encode();
}
break;
case 3:
if (isws())
{
encode();
}
else
{
encode();
state = 2;
}
break;
case 4: //Start italics
if (isws())
{
HttpUtility.HtmlEncode("/ ", writer);
state = 0;
}
else
{
writer.Write("<i>");
encode();
state = 5;
}
break;
case 5: //End italics
if (isws())
{
encode();
state = 6;
}
else if (line[i] == '/')
{
writer.Write("</i>");
state = 0;
}
else
{
encode();
}
break;
case 6:
if (isws())
{
encode();
}
else
{
encode();
state = 5;
}
break;
case 7: //Start link
state = 8;
break;
case 8: //End link
if (line[i] == ']')
{
WriteLink(line.Substring(wordStart, i - wordStart), writer);
state = 0;
}
break;
}
}
// Clean up italics, bold etc. based on the state we were in at the end of the line.
switch (state)
{
case 0:
break;
case 1:
HttpUtility.HtmlEncode("*", writer);
break;
case 2:
case 3:
writer.Write("</b>");
break;
case 4:
HttpUtility.HtmlEncode("/", writer);
break;
case 5:
case 6:
writer.Write("</i>");
break;
case 7:
HttpUtility.HtmlEncode(line.Substring(wordStart), writer);
break;
case 8:
WriteLink(line.Substring(wordStart), writer);
break;
}
}
Otros consejos
Un nuevo motor wiki basada en mvc4 ha sido puesto en libertad en http://lynxwiki.codeplex.com con una que ejecuta la versión del motor en http://www.sapientier.com : 88 / LynxWiki / WikiTopic / Página / WikiRoot / WikiDir / Página de Inicio
Este es un wiki con todas las funciones con muchas de las características de MediaWiki además de que tiene la capacidad para el contenido dinámico mediante el uso de secuencias de comandos IronPython incrustado
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow