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.

¿Fue útil?

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

try

MiniWiki

Es bastante fácil de personalizar.

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
scroll top