Skip to content

Commit

Permalink
much better code block support
Browse files Browse the repository at this point in the history
  • Loading branch information
joshgoebel committed Feb 1, 2020
1 parent 326af4e commit 43e5d30
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 9 deletions.
1 change: 1 addition & 0 deletions CHANGES.md
Expand Up @@ -14,6 +14,7 @@ Core Changes:

Language Improvements:

- (markdown) much improved code block support (#2382) [Josh Goebel][]
- (markdown) improve bold/italic nesting (#2382) [Josh Goebel][]
- (fortran) Add Fortran 2018 keywords and coarray intrinsics (#2361) [Sam Miller][]
- (delphi) highlight hexadecimal, octal, and binary numbers (#2370) [Robert Riebisch]()
Expand Down
20 changes: 13 additions & 7 deletions src/languages/markdown.js
Expand Up @@ -18,14 +18,20 @@ function(hljs) {
CODE = {
className: 'code',
variants: [
// TODO: fix to allow these to work with sublanguage also
{ begin: '(`{3,})(.|\\n)*?\\1`*[ ]*', },
{ begin: '(~{3,})(.|\\n)*?\\1~*[ ]*', },
// needed to allow markdown as a sublanguage to work
{ begin: '```', end: '```+[ ]*$' },
{ begin: '~~~', end: '~~~+[ ]*$' },
{ begin: '`.+?`' },
{
begin: '^```\\w*\\s*$', end: '^```[ ]*$'
},
{
begin: '`.+?`'
},
{
begin: '^( {4}|\\t)', end: '$',
begin: '(?=^( {4}|\\t))',
// use contains to gobble up multiple lines to allow the block to be whatever size
// but only have a single open/close tag vs one per line
contains: [
{ begin: '^( {4}|\\t)', end: '(\\n)$' }
],
relevance: 0
}
]
Expand Down
34 changes: 32 additions & 2 deletions test/markup/markdown/code.expect.txt
@@ -1,8 +1,38 @@
<span class="hljs-code"> var code = true;</span>

<span class="hljs-code"> var code = true;
var code = false;
</span>

<span class="hljs-code">```javascript
var code = true;
```</span>

<span class="hljs-code">````md
```
a = 'This is a code block in python'
```
````</span>

<span class="hljs-code">~~~
tilde can be used also (github)
~~~</span>

<span class="hljs-code">~~~~ ruby startline=3 $%@#$
def foo(x)
return 3
end
~~~~~~~</span>

<span class="hljs-code">~~~~~~~something
code here
~~~~~~~</span>

<span class="hljs-code">```
aaa
~~~
```</span>

<span class="hljs-code">```javascript
can be indented
```</span>

Inline <span class="hljs-code">`code`</span>, and <span class="hljs-code">`more code`</span>.
30 changes: 30 additions & 0 deletions test/markup/markdown/code.txt
@@ -1,8 +1,38 @@
var code = true;
var code = false;


```javascript
var code = true;
```

````md
```
a = 'This is a code block in python'
```
````

~~~
tilde can be used also (github)
~~~

~~~~ ruby startline=3 $%@#$
def foo(x)
return 3
end
~~~~~~~

~~~~~~~something
code here
~~~~~~~

```
aaa
~~~
```

```javascript
can be indented
```

Inline `code`, and `more code`.

0 comments on commit 43e5d30

Please sign in to comment.