render pages
This commit is contained in:
@ -8,13 +8,13 @@ using System.Linq.Expressions;
|
||||
namespace Yavsc.Helpers
|
||||
{
|
||||
public static class AsciiDocHelpers
|
||||
{
|
||||
static void ToHtml(this IElement elt, IHtmlContentBuilder contentbuilder)
|
||||
{
|
||||
switch (elt.GetType().FullName)
|
||||
static void ToHtml(this IElement elt, IHtmlContentBuilder contentbuilder)
|
||||
{
|
||||
case "AsciiDocNet.Paragraph":
|
||||
Paragraph p = (Paragraph) elt;
|
||||
switch (elt.GetType().FullName)
|
||||
{
|
||||
case "AsciiDocNet.Paragraph":
|
||||
Paragraph p = (Paragraph)elt;
|
||||
contentbuilder.AppendHtmlLine("<p>");
|
||||
foreach (var pitem in p)
|
||||
{
|
||||
@ -23,8 +23,8 @@ namespace Yavsc.Helpers
|
||||
contentbuilder.AppendHtmlLine("</p>");
|
||||
break;
|
||||
case "AsciiDocNet.SectionTitle":
|
||||
SectionTitle stitle = (SectionTitle) elt;
|
||||
|
||||
SectionTitle stitle = (SectionTitle)elt;
|
||||
|
||||
contentbuilder.AppendHtmlLine($"<h{stitle.Level}>");
|
||||
foreach (var titem in stitle)
|
||||
{
|
||||
@ -33,123 +33,124 @@ namespace Yavsc.Helpers
|
||||
contentbuilder.AppendHtmlLine("</h>");
|
||||
break;
|
||||
case "AsciiDocNet.UnorderedList":
|
||||
UnorderedList ul = (UnorderedList) elt;
|
||||
UnorderedList ul = (UnorderedList)elt;
|
||||
contentbuilder.AppendHtmlLine("<ul>");
|
||||
foreach (var li in ul.Items)
|
||||
{
|
||||
contentbuilder.AppendHtmlLine("<li>");
|
||||
|
||||
|
||||
foreach (var lii in li)
|
||||
{
|
||||
lii.ToHtml(contentbuilder);
|
||||
lii.ToHtml(contentbuilder);
|
||||
}
|
||||
contentbuilder.AppendHtmlLine("</li>");
|
||||
}
|
||||
contentbuilder.AppendHtmlLine("</ul>");
|
||||
break;
|
||||
case "AsciiDocNet.Source":
|
||||
Source source = (Source) elt ;
|
||||
Source source = (Source)elt;
|
||||
// TODO syntact hilighting and fun js modules
|
||||
contentbuilder.AppendHtmlLine("<pre><code>");
|
||||
contentbuilder.Append(source.Text);
|
||||
contentbuilder.AppendHtmlLine("</code></pre>");
|
||||
break;
|
||||
default:
|
||||
string unsupportedType = elt.GetType().FullName;
|
||||
throw new InvalidProgramException(unsupportedType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void ToHtml(this IInlineElement elt, IHtmlContentBuilder sb)
|
||||
{
|
||||
switch (elt.GetType().FullName)
|
||||
{
|
||||
case "AsciiDocNet.Link":
|
||||
Link link = (Link) elt;
|
||||
sb.AppendFormat("<a href=\"{0}\">{1}</a> ",link.Href, link.Text);
|
||||
break;
|
||||
|
||||
case "AsciiDocNet.TextLiteral":
|
||||
sb.Append(elt.ToString());
|
||||
break;
|
||||
|
||||
case "AsciiDocNet.Emphasis":
|
||||
sb.AppendHtml("<i>");
|
||||
AsciiDocNet.Emphasis em = (Emphasis) elt;
|
||||
sb.Append(em.Text);
|
||||
sb.AppendHtml("</i>");
|
||||
break;
|
||||
|
||||
case "AsciiDocNet.Strong":
|
||||
sb.AppendHtml("<b>");
|
||||
AsciiDocNet.Strong str = (Strong) elt;
|
||||
foreach (var stritem in str)
|
||||
{
|
||||
stritem.ToHtml(sb);
|
||||
}
|
||||
sb.AppendHtml("</b>");
|
||||
break;
|
||||
|
||||
default:
|
||||
string unsupportedType = elt.GetType().FullName;
|
||||
throw new InvalidProgramException(unsupportedType);
|
||||
}
|
||||
}
|
||||
|
||||
public static IHtmlContent ToHtml(this Document doc, int doclevel = 4)
|
||||
{
|
||||
var contentbuilder = new HtmlContentBuilder();
|
||||
if (doc.Title != null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(doc.Title.Title))
|
||||
{
|
||||
contentbuilder.AppendHtmlLine($"<h{doclevel}>{doc.Title.Title}</h{doclevel}>");
|
||||
if (!string.IsNullOrWhiteSpace(doc.Title.Subtitle))
|
||||
{
|
||||
contentbuilder.AppendHtmlLine($"<i>{doc.Title.Title}</i><br/>");
|
||||
}
|
||||
default:
|
||||
string unsupportedType = elt.GetType().FullName;
|
||||
throw new InvalidProgramException(unsupportedType);
|
||||
}
|
||||
}
|
||||
foreach (var item in doc)
|
||||
|
||||
|
||||
static void ToHtml(this IInlineElement elt, IHtmlContentBuilder sb)
|
||||
{
|
||||
item.ToHtml(contentbuilder);
|
||||
switch (elt.GetType().FullName)
|
||||
{
|
||||
case "AsciiDocNet.Link":
|
||||
Link link = (Link)elt;
|
||||
sb.AppendFormat("<a href=\"{0}\">{1}</a> ", link.Href, link.Text);
|
||||
break;
|
||||
|
||||
case "AsciiDocNet.TextLiteral":
|
||||
sb.Append(elt.ToString());
|
||||
break;
|
||||
|
||||
case "AsciiDocNet.Emphasis":
|
||||
sb.AppendHtml("<i>");
|
||||
AsciiDocNet.Emphasis em = (Emphasis)elt;
|
||||
sb.Append(em.Text);
|
||||
sb.AppendHtml("</i>");
|
||||
break;
|
||||
|
||||
case "AsciiDocNet.Strong":
|
||||
sb.AppendHtml("<b>");
|
||||
AsciiDocNet.Strong str = (Strong)elt;
|
||||
foreach (var stritem in str)
|
||||
{
|
||||
stritem.ToHtml(sb);
|
||||
}
|
||||
sb.AppendHtml("</b>");
|
||||
break;
|
||||
|
||||
default:
|
||||
string unsupportedType = elt.GetType().FullName;
|
||||
throw new InvalidProgramException(unsupportedType);
|
||||
}
|
||||
}
|
||||
|
||||
public static IHtmlContent ToHtml(this Document doc, int doclevel = 4)
|
||||
{
|
||||
var contentbuilder = new HtmlContentBuilder();
|
||||
if (doc.Title != null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(doc.Title.Title))
|
||||
{
|
||||
contentbuilder.AppendHtmlLine($"<h{doclevel}>{doc.Title.Title}</h{doclevel}>");
|
||||
if (!string.IsNullOrWhiteSpace(doc.Title.Subtitle))
|
||||
{
|
||||
contentbuilder.AppendHtmlLine($"<i>{doc.Title.Title}</i><br/>");
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (var item in doc)
|
||||
{
|
||||
item.ToHtml(contentbuilder);
|
||||
}
|
||||
return contentbuilder;
|
||||
}
|
||||
return contentbuilder;
|
||||
}
|
||||
|
||||
|
||||
public static IHtmlContent AsciiDocFor<TModel>(this IHtmlHelper<TModel> html,
|
||||
Expression<Func<TModel, string>> expression)
|
||||
{
|
||||
string ascii = html.ValueFor<string>(expression, "{0}");
|
||||
Document document = Document.Parse(ascii);
|
||||
var htmlDoc = document.ToHtml();
|
||||
public static IHtmlContent AsciiDocFor<TModel>(this IHtmlHelper<TModel> html,
|
||||
Expression<Func<TModel, string>> expression)
|
||||
{
|
||||
string ascii = html.ValueFor<string>(expression, "{0}");
|
||||
if (string.IsNullOrWhiteSpace(ascii))
|
||||
return new HtmlString(string.Empty);
|
||||
Document document = Document.Parse(ascii);
|
||||
var htmlDoc = document.ToHtml();
|
||||
var span = new TagBuilder("p") { TagRenderMode = TagRenderMode.SelfClosing };
|
||||
span.InnerHtml.AppendHtml(htmlDoc);
|
||||
return span.RenderBody();
|
||||
}
|
||||
|
||||
var span = new TagBuilder("p") { TagRenderMode = TagRenderMode.SelfClosing };
|
||||
span.InnerHtml.AppendHtml(htmlDoc);
|
||||
return span.RenderBody();
|
||||
}
|
||||
public static string AsciiDoc(IHtmlHelper<BlogPost> htmlHelper, string text)
|
||||
{
|
||||
return AsciiDoc(htmlHelper, text, null);
|
||||
}
|
||||
|
||||
public static string AsciiDoc(IHtmlHelper<BlogPost> htmlHelper, string text)
|
||||
{
|
||||
return AsciiDoc(htmlHelper, text, null);
|
||||
}
|
||||
private static string AsciiDoc(IHtmlHelper<BlogPost> htmlHelper, string text, object htmlAttributes)
|
||||
{
|
||||
// Create tag builder
|
||||
var builder = new TagBuilder("div");
|
||||
var document = Document.Parse(text);
|
||||
|
||||
private static string AsciiDoc(IHtmlHelper<BlogPost> htmlHelper, string text, object htmlAttributes)
|
||||
{
|
||||
// Create tag builder
|
||||
var builder = new TagBuilder("div");
|
||||
var document = Document.Parse(text);
|
||||
// builder.InnerHtml = .
|
||||
|
||||
// builder.InnerHtml = .
|
||||
// Add attributes
|
||||
builder.MergeAttribute("class", "ascii");
|
||||
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
|
||||
|
||||
// Add attributes
|
||||
builder.MergeAttribute("class", "ascii");
|
||||
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
|
||||
|
||||
// Render tag
|
||||
return builder.ToString();
|
||||
// Render tag
|
||||
return builder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,9 @@ namespace Yavsc.Helpers
|
||||
public override async Task ProcessAsync (TagHelperContext context, TagHelperOutput output)
|
||||
{
|
||||
var content = await output.GetChildContentAsync();
|
||||
|
||||
Document document = Document.Parse(content.GetContent());
|
||||
string text = content.GetContent();
|
||||
if (string.IsNullOrWhiteSpace(text)) return;
|
||||
Document document = Document.Parse(text);
|
||||
var html = document.ToHtml(4);
|
||||
using var stringWriter = new StringWriter();
|
||||
html.WriteTo(stringWriter, HtmlEncoder.Default);
|
||||
|
@ -30,7 +30,7 @@
|
||||
<img src="@item.Photo" class="blogphoto"></a>
|
||||
</td>
|
||||
<td>
|
||||
<markdown>@((item.Content?.Length > 256) ? item.Content.Substring(0, 256) + " ..." : item.Content)</markdown>
|
||||
<asciidoc>@((item.Content?.Length > 256) ? item.Content.Substring(0, 256) + " ..." : item.Content)</asciidoc>
|
||||
<span style="font-size:x-small;">(@item.Author.UserName </span>,
|
||||
<span style="font-size:xx-small;">
|
||||
posté le @item.DateCreated.ToString("dddd d MMM yyyy à H:mm")
|
||||
|
@ -2,7 +2,7 @@
|
||||
ViewData["Title"] = "Conditions Générales de Vente";
|
||||
}
|
||||
<h2>@ViewData["Title"]</h2>
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
|
||||
Le paiement intervient à la commande, quelque soit la date d'intervention.
|
||||
Vous pouvez annuler votre commande depuis la [liste de vos commande en cours](/HairCutCommand/),
|
||||
@ -10,4 +10,4 @@ Vous pouvez annuler votre commande depuis la [liste de vos commande en cours](/H
|
||||
Vous pouvez demander le remboursement d'un paiement, dans le cadre d'une réclamation sur l'execution
|
||||
de votre commande, en nous contactant via courrier éléctronique ou postal, [que vour retrouverez sur la page de contact](/Home/Contact), votre demande sera rapidement traitée.
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<environment names="freefield,Development">
|
||||
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
## O objetivo
|
||||
|
||||
Esta aplicação é construída para conectar artistas
|
||||
@ -86,36 +86,36 @@ que imediatamente desativa as publicações associadas às suas informações,
|
||||
e planeia a eliminação completa desta informação no prazo de quinze dias
|
||||
do aplicativo, a menos que seja um pedido contraditório.
|
||||
A operação é anulável até duas semanas após a sua programação.
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
</environment>
|
||||
|
||||
<environment names="Lua,Development">
|
||||
<markdown>Este é o meu site perso, uma configuração de _Yavsc_ (outro negócio muito pequeno).
|
||||
<asciidoc>Este é o meu site perso, uma configuração de _Yavsc_ (outro negócio muito pequeno).
|
||||
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [licença: GNU GPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
Outras instalações:
|
||||
</markdown>
|
||||
<markdown>
|
||||
</asciidoc>
|
||||
<asciidoc>
|
||||
* [Coiffure](http://coiffure.pschneider.fr)
|
||||
* [ZicMoove](http://linkmuse.pschneider.fr)
|
||||
* [Yavsc](http://yavsc.pschneider.fr)
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
</environment>
|
||||
|
||||
<environment names="Yavsc">
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
Yet Another Very Small Company ...
|
||||
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
</environment>
|
||||
|
||||
<environment names="YavscPre">
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
## Yet Another Very Small Company :
|
||||
* [README](https://github.com/pazof/yavsc/blob/vnext/README.md)
|
||||
* [license: GNU FPL v3](https://github.com/pazof/yavsc/blob/vnext/LICENSE)
|
||||
@ -125,12 +125,12 @@ En production:
|
||||
* [Lua](https://lua.pschneider.fr)
|
||||
* [Yavsc](https://yavsc.pschneider.fr)
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
</environment>
|
||||
|
||||
|
||||
<environment names="coiffure">
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
Você está no site da ordem em cabeleireiro em casa de Soraya Boudjouraf,
|
||||
um ás de cabeleireiro, que trabalha na região de Paris.
|
||||
|
||||
@ -138,11 +138,11 @@ Ao validar um formulário de pedido aqui, é para ela que você notifica sua sol
|
||||
|
||||
Você pode [Deixe-lhe o seu número de telefone] (/ HairCutCommand / HairCut? ActivityCode = Brush & performerId = 1bd841ab-c305-4971-940d-7ddca818310c)
|
||||
e / ou detalhes sobre o seu pedido,
|
||||
ela vai ligar de volta.</markdown>
|
||||
ela vai ligar de volta.</asciidoc>
|
||||
</environment>
|
||||
|
||||
<environment names="Development">
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
## Este é um site de desenvolvimento.
|
||||
|
||||
Este recurso só diz respeito ao desenvolvimento do software que o implementa.
|
||||
@ -155,7 +155,7 @@ A "pré-produção" exibe os seguintes sites:
|
||||
* [Yavsc](https://yavsc.pschneider.fr)
|
||||
* [Lua](https://lua.pschneider.fr)
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
</environment>
|
||||
|
||||
<p>
|
||||
|
@ -3,7 +3,7 @@
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
|
||||
# Blog et fichiers utilisateurs
|
||||
|
||||
@ -35,4 +35,4 @@ Et ils possèdent une addresse permanente de la forme :
|
||||
|
||||
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
|
@ -3,7 +3,7 @@
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
Quelques extensions à un Markdown de base :
|
||||
|
||||
* les video et audio: ``
|
||||
@ -16,4 +16,4 @@ Quelques extensions à un Markdown de base :
|
||||
* le tag "Titre d'article": "#1_great_title"
|
||||
* le tag "User" = "@@(John Doe)" ou "@@jdoe"
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
|
@ -2,7 +2,7 @@
|
||||
ViewData["Title"] = "Conditions Générales de Vente";
|
||||
}
|
||||
<h2>@ViewData["Title"]</h2>
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
|
||||
Le paiement intervient à la commande, quelque soit la date d'intervention.
|
||||
Vous pouvez annuler votre commande depuis la [liste de vos commande en cours](/HairCutCommand/),
|
||||
@ -10,4 +10,4 @@ Vous pouvez annuler votre commande depuis la [liste de vos commande en cours](/H
|
||||
Vous pouvez demander le remboursement d'un paiement, dans le cadre d'une réclamation sur l'execution
|
||||
de votre commande, en nous contactant via courrier éléctronique ou postal, [que vour retrouverez sur la page de contact](/Home/Contact), votre demande sera rapidement traitée.
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
|
@ -3,7 +3,7 @@
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
## La confidentialité
|
||||
|
||||
À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone
|
||||
@ -11,4 +11,4 @@ ne sont transmis à personne. Seul le système et son [possesseur](/Home/Contact
|
||||
|
||||
De plus, le droit de retrait est permanent et sa mise en oeuvre [immédiate](/Account/Delete).
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
|
@ -4,14 +4,14 @@
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<em>Linkmuse(trox)</em>
|
||||
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
Les tags.
|
||||
La librairie, les lives.
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
@{
|
||||
ViewData["Title"] = @SR["TODO"];
|
||||
}
|
||||
<h1>@ViewData["Title"]</h1>
|
||||
<em>Faster, stronger, shorter</em>
|
||||
<markdown>
|
||||
</markdown>
|
||||
<asciidoc>
|
||||
</asciidoc>
|
||||
|
@ -32,7 +32,7 @@
|
||||
<img src="@item.Photo" class="blogphoto"></a>
|
||||
</td>
|
||||
<td>
|
||||
<markdown summary="256">@item.Content</markdown>
|
||||
<asciidoc summary="256">@item.Content</asciidoc>
|
||||
@if (trunked) { <a asp-action="Details" asp-route-id="@item.Id" class="bloglink">...</a> }
|
||||
<span style="font-size:x-small;">(@item.Author.UserName </span>,
|
||||
<span style="font-size:xx-small;">
|
||||
|
@ -1,7 +1,7 @@
|
||||
@model Comment
|
||||
<div data-type="blogcomment" data-id="@Model.Id" data-allow-edit="@(User.GetUserId()==Model.AuthorId?"true":"false")"
|
||||
data-allow-moderate="@ViewData["moderatoFlag"]" data-date="@Html.Raw(Model.DateCreated)" data-username="@Model.Author.UserName" >
|
||||
<markdown>@Model.Content</markdown>
|
||||
<asciidoc>@Model.Content</asciidoc>
|
||||
<div class="subcomments">
|
||||
@if (Model.Children!=null && Model.Children.Count>0) {
|
||||
foreach (var comment in Model.Children) {
|
||||
|
@ -64,7 +64,7 @@
|
||||
<div class="alert alert-info alert-dismissable">
|
||||
<img src="~/images/Notifications/@(n.icon).png" style="max-height:3em; float: left; margin:1em;"/> <h2 markdown="@n.title"></h2>
|
||||
<a class="close" data-dismiss="alert" aria-label="close" onclick="notifClick(@n.Id)">@((n.click_action==null)?SR["Fermer"]:SR[n.click_action])</a>
|
||||
<markdown>@n.body</markdown>
|
||||
<asciidoc>@n.body</asciidoc>
|
||||
</div>}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<markdown>
|
||||
<asciidoc>
|
||||
|
||||
# Title
|
||||
|
||||
@ -20,4 +20,4 @@
|
||||
|
||||
Or else, )
|
||||
|
||||
</markdown>
|
||||
</asciidoc>
|
||||
|
Reference in New Issue
Block a user