Org Markdown : Markdig
All checks were successful
Dotnet build and test / build (pull_request) Successful in 6m22s

This commit is contained in:
Paul Schneider 2026-09-19 18:00:09 +01:00
commit 827cf7d2a3
Signed by: notazof
GPG key ID: 1DD5D838E5343B06
7 changed files with 55 additions and 31 deletions

View file

@ -33,7 +33,7 @@ jobs:
run: | run: |
set -e set -e
cd /src cd /src
git clone https://forgejo.pschneider.fr/notazof/yavsc.git _src git clone "${FORGEJO_SERVER_URL}/${FORGEJO_REPOSITORY}.git" _src
cd _src cd _src
if [ -n "${GITHUB_REF:-}" ]; then if [ -n "${GITHUB_REF:-}" ]; then
git fetch origin "$GITHUB_REF" git fetch origin "$GITHUB_REF"

View file

@ -69,7 +69,7 @@ jobs:
cd /src cd /src
if [[ ! -d _src/.git ]]; then if [[ ! -d _src/.git ]]; then
git clone --depth=1 https://forgejo.pschneider.fr/notazof/yavsc.git _src git clone --depth=1 "${FORGEJO_SERVER_URL}/${FORGEJO_REPOSITORY}.git" _src
fi fi
cd _src cd _src

View file

@ -4,22 +4,19 @@
<IdentityServer8Version>8.1.0-pazofrc007</IdentityServer8Version> <IdentityServer8Version>8.1.0-pazofrc007</IdentityServer8Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageVersion Include="DotMarkdown" Version="0.3.0" />
<PackageVersion Include="Markdig" Version="1.3.2" />
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="10.0.9" /> <PackageVersion Include="System.Security.Cryptography.Pkcs" Version="10.0.9" />
<PackageVersion Include="HigginsSoft.IdentityServer8" Version="$(IdentityServer8Version)" /> <PackageVersion Include="HigginsSoft.IdentityServer8" Version="$(IdentityServer8Version)" />
<PackageVersion Include="HigginsSoft.IdentityServer8.AspNetIdentity" Version="$(IdentityServer8Version)" /> <PackageVersion Include="HigginsSoft.IdentityServer8.AspNetIdentity" Version="$(IdentityServer8Version)" />
<PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework" Version="$(IdentityServer8Version)" /> <PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework" Version="$(IdentityServer8Version)" />
<PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework.Storage" Version="$(IdentityServer8Version)" /> <PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework.Storage" Version="$(IdentityServer8Version)" />
<PackageVersion Include="HigginsSoft.IdentityServer8.Security" Version="$(IdentityServer8Version)" /> <PackageVersion Include="HigginsSoft.IdentityServer8.Security" Version="$(IdentityServer8Version)" />
<PackageVersion Include="HigginsSoft.IdentityServer8.Storage" Version="$(IdentityServer8Version)" /> <PackageVersion Include="HigginsSoft.IdentityServer8.Storage" Version="$(IdentityServer8Version)" />
<PackageVersion Include="AsciiDocSharp" Version="0.1.0" /> <PackageVersion Include="AsciiDocSharp" Version="0.1.0" />
<PackageVersion Include="AsciiDocSharp.Converters.Html" Version="0.1.0" /> <PackageVersion Include="AsciiDocSharp.Converters.Html" Version="0.1.0" />
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" /> <PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageVersion Include="Google.Apis.Compute.v1" Version="1.74.0.4138" /> <PackageVersion Include="Google.Apis.Compute.v1" Version="1.74.0.4138" />
<PackageVersion Include="Microsoft.AspNetCore.Antiforgery" Version="2.3.11" /> <PackageVersion Include="Microsoft.AspNetCore.Antiforgery" Version="2.3.11" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.9" /> <PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.9" />
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="10.0.9" /> <PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="10.0.9" />
@ -37,13 +34,9 @@
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.9" /> <PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.9" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.7.0" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" /> <PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.2" /> <PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.2" />
<PackageVersion Include="coverlet.collector" Version="10.0.1" /> <PackageVersion Include="coverlet.collector" Version="10.0.1" />
<PackageVersion Include="IdentityModel.OidcClient" Version="6.0.0" /> <PackageVersion Include="IdentityModel.OidcClient" Version="6.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.9" /> <PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.9" />
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.2.1" /> <PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.2.1" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.2.1" /> <PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.2.1" />

View file

@ -0,0 +1,34 @@
using DotMarkdown.Linq;
using Markdig;
using Xunit;
using static DotMarkdown.Linq.MFactory;
public class MarkdownTests
{
[Fact]
public void TestMarkdownRendering()
{
MDocument document = Document(
Heading1("Markdown Sample"),
Heading2("Bullet List"),
BulletList(
"text",
Bold("bold text")),
HorizontalRule(),
Heading2("IndentedCodeBlock"),
IndentedCodeBlock("string s = null;"));
Console.WriteLine(document.ToString());
}
[Fact]
public void TestAnotherMarkdownRendering()
{
var result = Markdown.ToHtml("This is a text with some *emphasis*");
Console.WriteLine(result);
}
}

View file

@ -1,13 +1,12 @@
using System.Web; using System.Web;
using AsciiDocSharp; using Markdig;
using AsciiDocSharp.Converters.Html;
using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
namespace Yavsc.Helpers namespace Yavsc.Helpers
{ {
public class AsciidocTagHelper : TagHelper public class MarkdownTagHelper : TagHelper
{ {
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{ {
@ -18,6 +17,7 @@ namespace Yavsc.Helpers
if (string.IsNullOrWhiteSpace(text)) return; if (string.IsNullOrWhiteSpace(text)) return;
try try
{ {
if (context.AllAttributes.ContainsName("summary")) if (context.AllAttributes.ContainsName("summary"))
@ -34,16 +34,10 @@ namespace Yavsc.Helpers
} }
} }
} }
var processor = new AsciiDocProcessor( var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
var result = Markdown.ToHtml(text, pipeline);
); output.Content.AppendHtml(result);
var htmlConverter = new HtmlDocumentConverter();
var document = processor.ParseFromText(text);
var htmlResult = processor.ConvertDocument(document, htmlConverter);
output.Content.AppendHtml(htmlResult);
} }
catch (ArgumentException ex) catch (ArgumentException ex)
{ {

View file

@ -7,12 +7,12 @@
**Version de Development** **Version de Development**
<asciidoc> <markdown>
== L'objectif ## L'objectif
Cette application est construite pour mettre en relation des artistes du domaine musical avec leur public. Cette application est construite pour mettre en relation des artistes du domaine musical avec leur public.
== Le fonctionnement ## Le fonctionnement
Les utilisateurs du site sont soit artiste, soit client, soit administrateur. ils ont tous droit à leur blog. Les utilisateurs du site sont soit artiste, soit client, soit administrateur. ils ont tous droit à leur blog.
Pour les artistes, c'est un moyen de promouvoir leur activité. Pour les artistes, c'est un moyen de promouvoir leur activité.
@ -45,7 +45,7 @@ Une fois sa prestation associée exécutée, les paiements relatifs sont effectu
Pour un contrat exécuté et non honoré par le client, le processus de poursuite en recouvrement est engagé, sinon, le contrat est archivé, des attestations de paiement sont disponibles pour l'artiste et la facture est marquée payée, puis repostée au client. Pour un contrat exécuté et non honoré par le client, le processus de poursuite en recouvrement est engagé, sinon, le contrat est archivé, des attestations de paiement sont disponibles pour l'artiste et la facture est marquée payée, puis repostée au client.
=== Pour l'artiste ## Pour l'artiste
L'artiste choisit plusieurs paramètres qui vont faire son profil : L'artiste choisit plusieurs paramètres qui vont faire son profil :
@ -55,19 +55,20 @@ L'artiste choisit plusieurs paramètres qui vont faire son profil :
* Un agenda Google optionnel, à consulter pour établir sa disponibilité * Un agenda Google optionnel, à consulter pour établir sa disponibilité
* Des paramètres supplémentaires en fonctions de son type d'activité par exemple, pour les ensembles, leur taille, le cas échéant, leur répertoire ou des indications sur le style de leur musique) * Des paramètres supplémentaires en fonctions de son type d'activité par exemple, pour les ensembles, leur taille, le cas échéant, leur répertoire ou des indications sur le style de leur musique)
=== Pour le client ## Pour le client
Il choisit un lieu et une date pour déclarer un événement avenir (il peut bien-sûr en programmer autant qu'il le veut). Il choisit un lieu et une date pour déclarer un événement avenir (il peut bien-sûr en programmer autant qu'il le veut).
Il peut, parcourir les publications des artistes, et entamer, sur la base d'un de ses projets événementiel, la négociation d'un contrat de prestation. Il peut, parcourir les publications des artistes, et entamer, sur la base d'un de ses projets événementiel, la négociation d'un contrat de prestation.
Il a accès à la connaissance des journées connues comme libres des artistes par le système. Il a accès à la connaissance des journées connues comme libres des artistes par le système.
== La confidentialité ## La confidentialité
À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone ne sont transmis ni aux clients, ni aux artistes. Seul le système a accès à ces informations. À aucun moment, aucune adresse postale, aucune adresse e-mail ni aucun numéro de téléphone ne sont transmis ni aux clients, ni aux artistes. Seul le système a accès à ces informations.
De plus, le droit de retrait est permanent et sa mise en oeuvre immédiate. De plus, le droit de retrait est permanent et sa mise en oeuvre immédiate.
Les artistes comme les clients peuvent demander leur désinscription, qui désactive immédiatement les publications associées à leurs informations, et programme la suppression complète de ces dites informations dans les quinze jours à compter de la demande, sauf demande contradictoire. Les artistes comme les clients peuvent demander leur désinscription, qui désactive immédiatement les publications associées à leurs informations, et programme la suppression complète de ces dites informations dans les quinze jours à compter de la demande, sauf demande contradictoire.
L'opération est annulable, jusqu'à deux semaines après sa programmation. L'opération est annulable, jusqu'à deux semaines après sa programmation.
</asciidoc> </markdown>

View file

@ -13,12 +13,14 @@
<Version>1.1.0-feat-sign-estimate.1</Version> <Version>1.1.0-feat-sign-estimate.1</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DotMarkdown" />
<PackageReference Include="HigginsSoft.IdentityServer8" /> <PackageReference Include="HigginsSoft.IdentityServer8" />
<PackageReference Include="HigginsSoft.IdentityServer8.AspNetIdentity" /> <PackageReference Include="HigginsSoft.IdentityServer8.AspNetIdentity" />
<PackageReference Include="HigginsSoft.IdentityServer8.EntityFramework" /> <PackageReference Include="HigginsSoft.IdentityServer8.EntityFramework" />
<PackageReference Include="HigginsSoft.IdentityServer8.EntityFramework.Storage" /> <PackageReference Include="HigginsSoft.IdentityServer8.EntityFramework.Storage" />
<PackageReference Include="HigginsSoft.IdentityServer8.Security" /> <PackageReference Include="HigginsSoft.IdentityServer8.Security" />
<PackageReference Include="HigginsSoft.IdentityServer8.Storage" /> <PackageReference Include="HigginsSoft.IdentityServer8.Storage" />
<PackageReference Include="Markdig" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" /> <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" /> <PackageReference Include="Microsoft.AspNetCore.Identity.UI" />