Question

Dans mon esprit, l'un des plus grands objectifs de Markdown est d'empêcher l'utilisateur de taper HTML potentiellement malformé directement.

Eh bien, ce ne fonctionne pas exactement pour moi MarkdownSharp.

Cet exemple fonctionne correctement lorsque vous avez le saut de ligne supplémentaire immédiatement après « abc » ... entrer image description ici

Mais quand ce saut de ligne n'est pas là, je pense qu'il devrait encore être HtmlEncoded, mais cela ne se produit ici ... entrer image description ici

Dans les coulisses, le balisage rendu provient d'une iframe. Et cela est le code derrière ...

<% 
var md = new MarkdownSharp.Markdown();
%>
<%= md.Transform(Request.Form[0]) %>

Certes, je dois manquer quelque chose. Oh, et je me sers v1.13 (la dernière version de cette écriture).


EDIT (ceci est un test pour la mise en œuvre de StackOverflow)

abc

cela ne devrait pas être rouge
Était-ce utile?

La solution 2

Depuis, il est devenu clair que la mise en œuvre StackOverflow contient assez peu de personnalisations qui pourraient prendre du temps pour tester et comprendre, je décide d'aller une autre direction.

Je créé mon propre langage de balisage simplifié qui est un sous-ensemble de Markdown. Le projet open-source est à http://ultralight.codeplex.com/ et vous pouvez voir un exemple de travail http://www.bucketsoft.com/ultralight/

Le projet est une solution complète ASP.NET MVC avec un éditeur Javascript. Et contrairement MarkdownSharp, coffre-fort HTML est garanti. L'analyseur Javascript est utilisé à la fois côté client et côté serveur pour garantir un balisage cohérent (merci à la Javascript Jurassic compilateur ). C'est une belle chose d'avoir seulement de maintenir une base de code pour cet analyseur.

Bien que le projet est encore en version bêta, je l'utilise déjà et il semble bien fonctionner jusqu'à présent sur mon propre site.

Autres conseils

Pour ceux qui ne veulent utiliser la solution personnalisée de Steve Wortham, j'ai soumis un problème et un correctif proposé aux gars MarkdownSharp: http://code.google.com/p/markdownsharp/issues/detail?id=43

Si vous téléchargez mon dossier Markdown.cs ci-joint, vous trouverez une nouvelle option que vous pouvez définir. Il arrêtera MarkdownSharp à partir du texte réencoder dans les blocs de code.

Il suffit de ne pas oublier de HTML encode votre entrée avant de passer dans démarquage, pas après.

Une autre solution consiste à balises HTML liste blanche comme Stack Overflow fait. Vous devez faire cela après avoir passé votre contenu à démarquage.

Voir ce pour plus d'informations: http: // www. CodeTunnel.com/blog/post/24/mardownsharp-and-encoded-html

Peut-être que je ne comprends pas? Si vous commencez un nouveau bloc de code Markdown, dans toutes ses variétés, vous avez besoin d'un à double linebreak et le retrait de quatre espaces - un saut de ligne ne fera pas dans l'un des équarrisseurs que j'ai à la main.

abc -- Here comes a code block:

    <div style="background-color: red"> This is code</div>

qui donne:

abc - est ici un bloc de code:

<div style="background-color: red"> This is code</div>

D'après ce que vous dites, il semble que MarkdownSharp fait très bien avec cette règle, donc avec un seul saut de ligne (mais indentation):

 abc -- Here comes a code block:
     <div style="background-color: red"> This should be code</div>

nous obtenons un gâchis pas un bloc de code:

abc - est ici un bloc de code: Cela devrait être le code

Je suppose que StackOverflow est dépouillant les balises <div>, parce qu'ils pensent que les commentaires ne devraient pas avoir des divisions et des choses suchlike. (?) (En général, ils doivent faire beaucoup d'autres traitements ne sont pas elles, par exemple pour obtenir la coloration syntaxique, etc.?)

EDIT: Je pense que les gens attendent la mauvaise chose d'une mise en œuvre Markdown. Par exemple, comme je le dis ci-dessous, il n'y a pas une telle chose comme « invalide démarquage » . Il n'est pas un langage de programmation ou quoi que ce soit comme un. J'ai vérifié que les trois implémentations de démarques dont je dispose à partir de la ligne de commande médiocrement « convertir » .js aléatoires et les fichiers .c, ou ceux insérés dans démarquage autrement sensibles - et aussi interpolée des fichiers zip et autres absurdités - en HTML valide les navigateurs ne me dérange pas afficher à tous - rayures de poulet bien qu'il soit. Si vous voulez exclure quelque chose, par exemple dans un programme wiki, vous faites quelque chose de plus, bien sûr, comme la plupart des programmes wiki démarques-emploi font.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top