Domanda

Nella mia mente, uno degli obiettivi più grandi di Markdown è impedire all'utente di digitare direttamente HTML potenzialmente malformato.

Bene, non funziona esattamente per me in MarkdownSharp.

Questo esempio funziona correttamente quando si ha la linea di linea extra immediatamente dopo "ABC" ...enter image description here

Ma quando quella pausa di linea non c'è, penso che dovrebbe essere ancora htmlencoded, ma questo non sta accadendo qui ...enter image description here

Dietro le quinte, il markup reso proviene da un iFrame. E questo è il codice dietro di esso ...

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

Sicuramente devo perdere qualcosa. Oh, e sto usando V1.13 (l'ultima versione di questa scrittura).


Modifica (questo è un test per l'implementazione di StackOverflow)

ABC

Questo non dovrebbe essere rosso
È stato utile?

Soluzione 2

Da quando è diventato chiaro che l'implementazione di StackOverflow contiene alcune personalizzazioni che potrebbero richiedere molto tempo per testare e capire, ho deciso di andare in un'altra direzione.

Ho creato il mio linguaggio di markup semplificato che è un sottoinsieme di markdown. Il progetto open source è a http://ultralight.codeplex.com/ E puoi vedere un esempio funzionante a http://www.bucketsoft.com/ultralight/

Il progetto è una soluzione ASP.NET MVC completa con un editor JavaScript. E a differenza di MarkdownSharp, è garantito HTML sicuro. Il parser JavaScript viene utilizzato sia sul lato client che sul lato server per garantire un markup coerente (speciale grazie al Compilatore Jurassic JavaScript). È una cosa bellissima dover mantenere solo una base di codice per quel parser.

Sebbene il progetto sia ancora in beta, lo sto già usando sul mio sito e sembra funzionare bene finora.

Altri suggerimenti

Per coloro che non vogliono usare la soluzione personalizzata di Steve Worthem, ho presentato un problema e una soluzione proposta ai ragazzi di MarkdownSharp: http://code.google.com/p/markdownsharp/issues/detail?id=43

Se scarichi il mio file Markdown.cs allegato troverai una nuova opzione che puoi impostare. Impedirà a MarkdownSharp di ri-codificare il testo all'interno dei blocchi di codice.

Basta non dimenticare che HTML codifica il tuo input prima di passarlo a Markdown, non dopo.

Un'altra soluzione è per tag HTML di lista bianca come lo stack overflow. Lo faresti dopo aver superato i tuoi contenuti a Markdown.

Vedi questo per ulteriori informazioni: http://www.codetunnel.com/blog/post/24/MARDOWNSHARP-AS-CENCODED-HTML

Forse non capisco? Se si sta avviando un nuovo blocco di codice a Markdown, in tutte le sue varietà, hai bisogno di un Doppio Linebreak e rientro a quattro spazi: una singola nuova linea non farà in nessuno dei rendering che devo consegnare.

abc -- Here comes a code block:

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

cedendo:

ABC - ecco un blocco di codice:

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

Da quello che stai dicendo sembra che MarkdownSharp stia bene con questa regola, quindi con una sola nuova linea (ma rientramento):

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

Abbiamo un disastro non un blocco di codice:

ABC - ecco un blocco di codice: questo dovrebbe essere il codice

Suppongo che stackoverflow stia spogliando il <div> Tag, perché pensano che i commenti non dovrebbero avere divisioni e cose simili. (?) (In generale devono fare molte altre elaborazioni, ad esempio per ottenere l'evidenziazione della sintassi e così via?)

MODIFICARE: Penso che le persone si aspettassero la cosa sbagliata di un'implementazione di markdown. Ad esempio, come dico di seguito, Non esiste un "markdown non valido". Non è un linguaggio di programmazione o qualcosa di simile. Ho verificato che tutte e tre le implementazioni di markdown che ho a disposizione dalla riga di comando "convertono" file .js e .c casuali o quelli inseriti in markdown altrimenti sensibili - e anche file zip interpolati e altre assurdità - in HTML valido che I browser non si preoccupano affatto di mostrare - per quanto sia i graffi di pollo. Se vuoi escludere qualcosa, ad esempio in un programma wiki, fai qualcosa di più, ovviamente, come fanno la maggior parte dei programmi Wiki che lavorano Markdown.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top