Giter Club home page Giter Club logo

zmarkdown's Introduction

Build Status Coverage Status Licence GPL

image

Qu'est-ce que Zeste de Savoir ?

Zeste de Savoir est un site internet communautaire dédié au partage de la connaissance pour tous. Il est propulsé par le framework Django et Python 3.

Zeste de Savoir était à l'origine un fork de Progdupeupl (voir le dépôt Git).

Notre projet technique

Notre projet technique est constitué de plusieurs éléments :

Contribuer à Zeste de Savoir

Notre documentation technique devrait vous être utile pour bien appréhender notre projet.

Merci de prendre connaissance du Code de Conduite de Contributeurs et de le respecter pour garder ce projet ouvert et accueillant !

Nous contacter

N'hésitez pas à discuter avec nous sur le forum Dev Zone de Zeste de Savoir ou sur le canal #dev-de-zds de notre Discord !

Installation

Cette procédure détaillée devrait vous permettre d'installer le projet en autonomie. Si vous rencontrez des difficultés, n'hésitez pas à nous contacter !

Conseils pour débuter

zmarkdown's People

Contributors

a-312 avatar amanda-mitchell avatar amarok1412 avatar amaurycarrade avatar arobase-che avatar artragis avatar brabster avatar chitoku-k avatar damageboy avatar dependabot[bot] avatar greenkeeper[bot] avatar heziode avatar itsknob avatar jlengstorf avatar lhermann avatar likakavkasidze avatar mfaux avatar motet-a avatar nils-van-zuijlen avatar philippemilink avatar pierre-24 avatar redmega avatar roxspring avatar sandhose avatar situphen avatar smesterheide avatar timonpeng avatar vayel avatar vhf avatar vsemozhetbyt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zmarkdown's Issues

Blockquotes has no source

It seems that remark does not handle Source assignment for blockquote element.

This code :

> blablabla
Source: blabla

Should be interpreted as "quote blablabla with source blabla" :
image

For now mdast tree is :

─ blockquote[1] (10:1-11:16, 248-275)
│  └─ paragraph[1] (10:3-11:16, 250-275)
│     └─ text: "blablabla\nSource: Element" (10:3-11:16, 250-275)

implement footnote

  • les footnotes sont représentées par deux tags : [^xxx] qui permettent de définir un lien en exposant. et [xxx]: desc qui permet de définir la note
  • elles sont affiché en fin de texte
  • il y a plein de tests à leur propos
  • on s'autoriser un changement dans la méthode d'ancre

remark-align: configurable class names

It would be nice to let the user provide their own class names, overriding the default ones align-center and align-right by passing a config object to the plugin.

remark-align: should be escapable

Input:

->
\->
<-

Actual result:
\ is right-aligned and the block is followed by <-.

Expected result:
-> should be center-aligned.

Table does not have caption

Like #66 we need a plugin to embed caption for tables

Example of code:

a | b
----|----
c | d
Table: dummy

+-----+-----+
|  a  |  b  |
+-----+-----+
|  c  |  d  |
+-----+-----+
Table: dummy

rebber-images : includegraphics -> image

According to @Karnaj the image node should be translated into \\image{url} and \\image{url}[caption] when it is useful.

I don't know if we should modify the rebber core as \\includeGraphics is far more standard than \\image or use an "override" configuration in the zmarkdown package.

Rebber + figgure => fail

![]()
Figure: caption

=>

    at Object.figure (figure.js:74)
    at one (one.js:56)
    at all (all.js:17)
    at Object.paragraph (paragraph.js:12)
    at one (one.js:56)
    at Object.all [as root] (all.js:17)
    at one (one.js:56)
    at toLaTeX (index.js:14)
    at r (index.js:24)
    at Function.f [as stringify] (index.js:349)

Inline $$ should not be inlineMath

screen shot 2017-03-23 at 15 03 48

foo $$L = \frac{1}{2} \rho v^2 S C_L$$ bar should be something like <p>foo <figure class="X">MATH</figure> bar</p> instead of <p>foo <span class="X">MATH</span> bar</p>.

i.e. something like

root[1] (1:1-1:12, 0-11)
└─ paragraph[1] (1:1-1:4, 0-3)
   ├─ text: "foo" (1:1-1:4, 0-3)
   ├─ math: "L = \\frac{1}{2} \\rho v^2 S C_L" (3:1-5:3, 5-41) [data={"hName":"figure","hProperties":{"className":"math"},"hChildren":[{"type":"text","value":"L = \\frac{1}{2} \\rho v^2 S C_L"}]}]
   └─ text: "bar" (7:1-7:4, 43-46)

instead of

root[1] (1:1-1:43, 0-42)
└─ paragraph[3] (1:1-1:43, 0-42)
   ├─ text: "foo " (1:1-1:5, 0-4)
   ├─ inlineMath: "L = \\frac{1}{2} \\rho v^2 S C_L" (1:5-1:39, 4-38) [data={"hName":"span","hProperties":{"className":"inlineMath"},"hChildren":[{"type":"text","value":"L = \\frac{1}{2} \\rho v^2 S C_L"}]}]
   └─ text: " bar" (1:39-1:43, 38-42)

It should not be <p>foo</p><div class="X">MATH</div><p>bar</p> like the following would do:

foo
$$
L = \frac{1}{2} \rho v^2 S C_L
$$
bar

Bad list generation

Try:

word
- item 1
- item 2

Actual result:

root[2] (1:1-3:9, 0-22)
├─ heading[1] (1:1-3:1, 0-14) [depth=3]
│  └─ text: "word" (1:1-1:5, 0-4)
└─ list[1] (3:1-3:9, 14-22) [ordered=false][loose=false]
   └─ listItem[1] (3:1-3:9, 14-22) [loose=false]
      └─ paragraph[1] (3:3-3:9, 16-22)
         └─ text: "item 2" (3:3-3:9, 16-22)

(the first item is deleted and word is a heading)

Expected:

root[2] (1:1-4:9, 0-23)
├─ paragraph[1] (1:1-1:5, 0-4)
│  └─ text: "word" (1:1-1:5, 0-4)
└─ list[2] (3:1-4:9, 6-23) [ordered=false][loose=false]
   ├─ listItem[1] (3:1-3:9, 6-14) [loose=false]
   │  └─ paragraph[1] (3:3-3:9, 8-14)
   │     └─ text: "item 1" (3:3-3:9, 8-14)
   └─ listItem[1] (4:1-4:9, 15-23) [loose=false]
      └─ paragraph[1] (4:3-4:9, 17-23)
         └─ text: "item 2" (4:3-4:9, 17-23)

rehype-abbr: failing test skipped

Titles needs too many spaces

With this code:

# Image

## Simple

![alt](https://zestedesavoir.com/media/galleries/4092/5a95eebb-6768-4727-952a-927bd69352a1.jpg.96x96_q95_crop.jpg)

## figured

![alt](https://zestedesavoir.com/media/galleries/4092/5a95eebb-6768-4727-952a-927bd69352a1.jpg.96x96_q95_crop.jpg)
Figure: figure

the ## figured is not interpreted as title

capture d ecran 2017-06-22 a 13 49 36

rehype-abbr package is still broken

The HTML specification is maintained by the W3C: [link](https://w3c.github.io/html/), this line had an abbr before **link** HTML.

A line with [a link](http://example.com) before an abbr: HTML.

*[HTML]: Hyper Text Markup Language
*[W3C]:  World Wide Web Consortium

Expected Result:

<p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>: <a href="https://w3c.github.io/html/">link</a>, this line had an abbr before <strong>link</strong> <abbr title="Hyper Text Markup Language">HTML</abbr>.</p>
<p>A line with <a href="http://example.com">a link</a> before an abbr: <abbr title="Hyper Text Markup Language">HTML</abbr>.</p>

Current result:
Some abbreviations are missing

rebber: handle all MDAST node types


Default types:

  • Root

  • Paragraph

  • Blockquote

  • Heading

  • Code

  • InlineCode

  • YAML

  • HTML

  • List

      \begin{itemize}
      \end{itemize}
    
      \begin{enumerate}
      \end{enumerate}
    
  • ListItem

      \item Foo bar
    
  • Table

  • TableRow

  • TableCell

  • ThematicBreak

  • Break

  • Emphasis

  • Strong

  • Delete

  • Link

      \externalLink{liens}{zestedesavoir.com}
    
  • Image

  • Footnote

  • LinkReference

  • ImageReference

  • FootnoteReference

  • Definition

  • FootnoteDefinition

  • TextNode


remark-math types:

  • math
  • inlineMath
  • inlineMath double

Custom types:

  • custom blocks

      \addSpoiler{Un dernier petit secret.}
    
    
      \begin{Information}
      \end{Information}
    
      \begin{Question}
      \end{Question}
    
      \begin{Warning}
      \end{Warning}
    
      \begin{Error}
      \end{Error}
    
  • align

      \begin{center}
      \end{center}
    
      \begin{flushright}
      \end{flushright}
    
  • sub super

      \textsubscript{X}
    
      \textsuperscript{2}
    
  • kbd

      \keys{CTRL}
    
  • gridTable zestedesavoir/latex-template#52

  • iframe

  • emoticons

Code does not have caption

We need a plugin to embed code caption.

I think this plugin must :

  • embed the "caption" attribute in the MDAST code element
  • add a "codecaption" element

The main problem will come when we will translate AST to latex as we need to retrieve the legend inside the tree.

Example of code:

    ```python
    bla('bla')
    ```
    Code: Bla legend

rebber : % are not escaped in url

In externalLink command we do not escape the % and it makes the "externalLink" command not parsable for latex in such examples :

\externalLink{HttpWebRequest}{https://msdn.microsoft.com/fr-fr/library/system.net.webrequest.getresponseasync%28v=vs.110%29.aspx} it should be \externalLink{HttpWebRequest}{https://msdn.microsoft.com/fr-fr/library/system.net.webrequest.getresponseasync\%28v=vs.110\%29.aspx}

remark-caption : does not handle inline styles

Given

    ```python
     print('bla')
    ```
   Code: `bla`

I expect

<figure>
<pre>
<code class="python">
print('bla')
</code>
</pre>
<figcaption><code>bla</code></figcaption>
</figure>

bug i get empty caption

<figure>
<pre>
<code class="python">
print('bla')
</code>
</pre>
<figcaption></figcaption>
</figure>

implement zds extension: ping

Après une discussion efficace avec @artragis @pierre-24 @gcodeur @AmarOk1412 , voici:

Modification du comportement "actuel":

  • la syntaxe est @oneword ou @**pseudo du membre**, comme représenté par cette regex

Pour éviter de fournir un callback, voici l'idée :

  • zmd ne retourne pas uniquement l'HTML au backend python, il retourne également la liste des pseudos à potentiellement pinger
  • le backend se charge ensuite de vérifier lesquels sont pingables et de pinger, et donc aussi de respecter l'unicité des pings, respecter les limites de pings / post, etc.

rebber-images : download http images

latex doesn't support remote images. They have to be on the current path to be inserted.

As a matter of fact, when zestedesavoir produces the basic markdown export, it changes all reference to remote images to internal images stored in a images directory.

Should we integrate in rebber core a way to download images ?

implement grid_tables

Gridtables are tables that we draw thanks to dash, equals and pipe. They fully support rowspan and colspan, can handle any block and markdown formatting.

Example :

+----------------------------+-----------------------+-----------------------+
| Col1                       | Col2                  | Col3                  |
+============================+=======================+=======================+
|Normal column               | col span column                               |
+----------------------------+-----------------------+-----------------------+
| Row span column            |  x                    |```text                |
|                            |                       | a code                |
|                            |                       |```                    |
+                            +-----------------------+-----------------------+
|                            | x                     | x                     |
+----------------------------+-----------------------+-----------------------+

image

implémentation de base

https://github.com/zestedesavoir/Python-ZMarkdown/blob/master-zds/zmarkdown/extensions/grid_tables.py

les tests

remark-custom-blocks: a bug prevents fixture test from passing

Table "regression" without space

On Python-Zmarkdown we support

**Valeur**|`isset($a)`|`empty($a)`
------|---------|---------
`$a = ''`|**`true`**|**`true`**
`$a = 1`|**`true`**|`false`
`$a = 0`|**`true`**|**`true`**
`unset($a)`|`false`|**`true`**
`$a = ' '`|**`true`**|`false`
`$a = 'a'`|**`true`**|`false`
`$a = null`|`false`|**`true`**
`$a = false`|**`true`**|**`true`**
`$a = true`|**`true`**|`false`
Table:**Table de vérité**

On zmarkdown we must ad a beforme the second header pipe to the table to be handled.

**Valeur**|`isset($a)` |`empty($a)`
------|---------|---------
`$a = ''`|**`true`**|**`true`**
`$a = 1`|**`true`**|`false`
`$a = 0`|**`true`**|**`true`**
`unset($a)`|`false`|**`true`**
`$a = ' '`|**`true`**|`false`
`$a = 'a'`|**`true`**|`false`
`$a = null`|`false`|**`true`**
`$a = false`|**`true`**|**`true`**
`$a = true`|**`true`**|`false`
Table:**Table de vérité**

Implement zds extension: typographie

  • quotes
  • apostrophes
  • ellipses
  • (tm)
  • (c)
  • em dash
  • en dash
  • %o becomes
  • nnbsp before : (nnbsp is NARROW NO-BREAK SPACE)
  • nnbsp before ;
  • nnbsp before !
  • nnbsp before ?
  • nnbsp before %
  • nnbsp before
  • nnbsp before »
  • nnbsp after «
  • << becomes «
  • >> becomes »
  • nbsp inside em dash pairs (foo -- bar -- baz. -> foo1 — 2bar2 —1 baz. where 1 is and 2 is nbsp)

  • each package should be unit tested with full coverage
  • integration tests for zmarkdown w/ all packages

remark-sub-super seems to be buggy

I'm pretty sure there's a bug in remark-sub-super:

Try the following on https://zestedesavoir.github.io/zmarkdown/public/html.html :

**Literally s^e^lfies tbh lo-fi. Actually health goth ennui, brooklyn retro polaroid sriracha. Kogi live-edge ^mixtape^ marfa street ~art~ synth. Godard synth truffaut selfies, vape fanny  subway tile. Stumptown af pabst, try-hard fam ethical actually four dollar toast. Microdosing ^kogi^ brooklyn, locavore jianbing etsy sartorial _YOLO_. Williamsburg salvia photo^a^ booth ^readymade^ listicle man braid. s^e^lfies**

remark-captions: empty caption shouldn't go through the plugin

> a
b:

Expected AST:

root[1] (1:1-2:3, 0-6)
└─ blockquote[1] (1:1-2:3, 0-6)
   └─ paragraph[1] (1:3-2:3, 2-6)
      └─ text: "a\nb:" (1:3-2:3, 2-6)

Current buggy AST:

root[1] (1:1-2:3, 0-6)
└─ figure[2] (1:1-2:3, 0-6) [data={"hName":"figure"}]
   ├─ blockquote[1] (1:1-2:3, 0-6)
   │  └─ paragraph[1] (1:3-2:3, 2-6)
   │     └─ text: "a" (1:3-2:3, 2-6)
   └─ figcaption[1] [data={"hName":"figcaption"}]
      └─ text: ""

This should be very easy to solve. During the caption detection, if a potential caption is detected but empty, return.

Please add a regression test.

zmarkdown: all tests skipped because of typography

  • Skipped here:
    describe.skip('HTML rendering', function () {
  • We'll need to think about the best way of reenabling some of them
  • The approach of enabling all plugins that are necessary for zmarkdown to replace python-zmarkdown is incompatible with python-zmarkdown test suite because it was selectively enabling/disabling plugins -- not all of them were applied to all fixtures for the tests to pass

remark-align does not parse blocks

zmd allows blocks to be aligned and as remark-caption is just inlineTokenizer we don't really parse what we want. For example :

->
- 1
- 2
- 3
->

is parsed as

root[2] (1:1-5:3, 0-17)
├─ paragraph[1] (1:1-1:3, 0-2)
│  └─ text: "->" (1:1-1:3, 0-2)
└─ list[3] (2:1-5:3, 3-17) [ordered=false][loose=false]
   ├─ listItem[1] (2:1-2:4, 3-6) [loose=false]
   │  └─ paragraph[1] (2:3-2:4, 5-6)
   │     └─ text: "1" (2:3-2:4, 5-6)
   ├─ listItem[1] (3:1-3:4, 7-10) [loose=false]
   │  └─ paragraph[1] (3:3-3:4, 9-10)
   │     └─ text: "2" (3:3-3:4, 9-10)
   └─ listItem[1] (4:1-5:3, 11-17) [loose=false]
      └─ paragraph[1] (4:3-5:3, 13-17)
         └─ text: "3\n->" (4:3-5:3, 13-17)

Common cases in tutorial are things like :

->
!(https://www.youtube.com/watch?v=i190q5WzRHo)
Video: my caption
<-

or table alignement, and making lists central.

So this is important for tutorial parsing.

remark-grid-tables: basic rowspan doesn't work

I've got this row spanned table :

+--+--+
|1 |2 |
+==+==+
|1    |
+--+--+
|1 |2 |
|  +--+
|  |3 |
+--+--+

The generated tree is :

root[1] (1:1-9:8, 0-71)
└─ gridTable[2] [data={"hName":"table"}]
   ├─ tableHeader[1] [data={"hName":"thead"}]
   │  └─ tableRow[2] [data={"hName":"tr"}]
   │     ├─ tableCell[1] [data={"hName":"th","hProperties":{"colspan":1,"rowspan":1}}]
   │     │  └─ paragraph[1] (1:1-1:2, 0-1)
   │     │     └─ text: "1" (1:1-1:2, 0-1)
   │     └─ tableCell[1] [data={"hName":"th","hProperties":{"colspan":1,"rowspan":1}}]
   │        └─ paragraph[1] (1:1-1:2, 0-1)
   │           └─ text: "2" (1:1-1:2, 0-1)
   └─ tableHeader[2] [data={"hName":"tbody"}]
      ├─ tableRow[1] [data={"hName":"tr"}]
      │  └─ tableCell[1] [data={"hName":"td","hProperties":{"colspan":2,"rowspan":1}}]
      │     └─ paragraph[1] (1:1-1:2, 0-1)
      │        └─ text: "1" (1:1-1:2, 0-1)
      └─ tableRow[1] [data={"hName":"tr"}]
         └─ tableCell[1] [data={"hName":"td","hProperties":{"colspan":2,"rowspan":1}}]
            └─ paragraph[1] (1:1-3:3, 0-18)
               └─ text: "1 |2\n+—\n|3" (1:1-3:3, 0-18)

What we want is :


root[1] (1:1-9:8, 0-71)
└─ gridTable[2] [data={"hName":"table"}]
   ├─ tableHeader[1] [data={"hName":"thead"}]
   │  └─ tableRow[2] [data={"hName":"tr"}]
   │     ├─ tableCell[1] [data={"hName":"th","hProperties":{"colspan":1,"rowspan":1}}]
   │     │  └─ paragraph[1] (1:1-1:2, 0-1)
   │     │     └─ text: "1" (1:1-1:2, 0-1)
   │     └─ tableCell[1] [data={"hName":"th","hProperties":{"colspan":1,"rowspan":1}}]
   │        └─ paragraph[1] (1:1-1:2, 0-1)
   │           └─ text: "2" (1:1-1:2, 0-1)
   └─ tableHeader[2] [data={"hName":"tbody"}]
      ├─ tableRow[1] [data={"hName":"tr"}]
      │  └─ tableCell[1] [data={"hName":"td","hProperties":{"colspan":2,"rowspan":1}}]
      │     └─ paragraph[1] (1:1-1:2, 0-1)
      │        └─ text: "1" (1:1-1:2, 0-1)
      └─ tableRow[1] [data={"hName":"tr"}]
         └─ tableCell[1] [data={"hName":"td","hProperties":{"colspan":1,"rowspan":2}}]
            └─ paragraph[1] (1:1-3:3, 0-18)
               └─ text: "1" (1:1-3:3, 0-18)
         └─ tableCell[1] [data={"hName":"td","hProperties":{"colspan":1,"rowspan":1}}]
            └─ paragraph[1] (1:1-3:3, 0-18)
               └─ text: "2 " (1:1-3:3, 0-18)
      └─ tableRow[1] [data={"hName":"tr"}]
         └─ tableCell[1] [data={"hName":"td","hProperties":{"colspan":1,"rowspan":1}}]
            └─ paragraph[1] (1:1-3:3, 0-18)
               └─ text: "3" (1:1-3:3, 0-18)

NOta: this bug appens on python-zmarkdown too.

remark-captions: decide how img/Figure should work

I'm not sure what's the desired behaviour for images with legends.

What I understand by reverse engineering zmd is:

foo

![]()
Figure: 1 this is parsed as legend

baz

![]()
aFigure: 2 this text doesn't show up, img is wrapped in figure

![alt 2b](https://zestedesavoir.com/static/images/home-clem.4a2f792744c9.png)
this text doesn't show up, img is wrapped in figure, legend is "alt 2b"

foo
![]()
Figure: 3 this is displayed as text

![]()
Figure: 4 this is a legend, remainder of the paragraph goes into
the
legend
  • I guess the main goal is to only parse a legend when the paragraph starts with an img.
  • I'd vote for eliminating the behaviour illustrated by 2 and 4
  • Regarding 2b, I would also drop support but keep the idea of using alt as legend if the paragraph only consists of an img. 2b would be parsed as inline img with text following the image.

remark-caption : nocheck for first paragraph child of the legend candidate

Error is here : https://github.com/zestedesavoir/zmarkdown/blob/master/packages/remark-captions/src/index.js#L112

error happend on :

    ```csharp
    public async Task VotreTache(){
   
       await QuelquechoseDeLongQuiNeTouchePasALaGui().ConfigureAwait(continueOnCapturedContext:false);
       await QuelquechoseDeLongQuiToucheALaGui().ConfigureAwait(continueOnCapturedContext:true);
    }

    private async void DoClick(object sender, EventArg args){ //votre délégué pour le click
        this.Button1.Text = "Before the task"
        await VotreTache().ConfigureAwait(continueOnCapturedContext:true);//on continue sur la GUI
        this.Button1.Text = "After the task"
    }
    ```

    *[GUI]: Graphical UserInterface

the error :

TypeError: l.value is undefined[En savoir plus]  bundle.js:3528:1247
	externLegendVisitorCreator/< https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3528:1247
	u https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3391:103
	e https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3391:245
	u https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3391:138
	visit https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3391:316
	plugin/</< https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3528:260
	forEach self-hosted:252:13
	plugin/< https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3528:218
	l https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:706
	n https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:207
	r https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:856
	u https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:895
	l https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:828
	n https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:207
	n https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3334:418
	i https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3367:1851
	s https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3367:1943
	u https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3367:2020
	rehypeCompiler/< https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3609:3581
	stringToHTML/< https://zestedesavoir.github.io/zmarkdown/public/bundle.js:3609:4031
	update

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.