Skip to content

Commit d22df62

Browse files
authored
Merge pull request #121 from datacamp/bb/syntax-highlighting
feat: syntax highlighting for run this code
2 parents b0b316a + da333ef commit d22df62

File tree

3 files changed

+110
-1
lines changed

3 files changed

+110
-1
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"react-ga": "^3.3.0",
3131
"react-icons": "^4.1.0",
3232
"react-markdown": "^5.0.3",
33+
"react-syntax-highlighter": "^15.5.0",
3334
"react-use": "^17.3.2",
3435
"recharts": "2.0.0-beta.8",
3536
"remark-gfm": "^1.0.0",

pages/packages/[package]/versions/[version]/topics/[topic].tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import Link from 'next/link';
33
import { useRouter } from 'next/router';
44
import { useMemo } from 'react';
55
import ReactGA from 'react-ga';
6+
import SyntaxHighlighter from 'react-syntax-highlighter';
7+
import atomOneDark from 'react-syntax-highlighter/dist/cjs/styles/hljs/atom-one-dark';
68

79
import Html from '../../../../../../components/Html';
810
import Layout from '../../../../../../components/Layout';
@@ -180,7 +182,11 @@ export default function TopicPage({ topicData }: Props) {
180182
>
181183
Run this code
182184
</a>
183-
<pre>{examples}</pre>
185+
<div>
186+
<SyntaxHighlighter language="r" style={atomOneDark}>
187+
{examples}
188+
</SyntaxHighlighter>
189+
</div>
184190
<p>
185191
Run the code above in your browser using{' '}
186192
<a

yarn.lock

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@
9292
dependencies:
9393
regenerator-runtime "^0.13.4"
9494

95+
"@babel/runtime@^7.3.1":
96+
version "7.18.6"
97+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580"
98+
integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==
99+
dependencies:
100+
regenerator-runtime "^0.13.4"
101+
95102
"@babel/template@^7.16.7":
96103
version "7.16.7"
97104
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
@@ -588,6 +595,13 @@
588595
resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.4.tgz#81427d703b5a889b4fd1c37eaae6f2a6db228e5a"
589596
integrity sha512-rn4yaEfryXklAtsiai4xHNUgLjGD8AEPQBNSCTa5QrvccFYYBWJQRGwaHiv2U/wdIzcjOuyyBC23YgdQfq5u/Q==
590597

598+
"@types/hast@^2.0.0":
599+
version "2.3.4"
600+
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
601+
integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
602+
dependencies:
603+
"@types/unist" "*"
604+
591605
"@types/js-cookie@^2.2.6":
592606
version "2.2.7"
593607
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3"
@@ -1398,6 +1412,11 @@ colorette@^1.2.2:
13981412
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
13991413
integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
14001414

1415+
comma-separated-tokens@^1.0.0:
1416+
version "1.0.8"
1417+
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
1418+
integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
1419+
14011420
commander@9.2.0:
14021421
version "9.2.0"
14031422
resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9"
@@ -2377,6 +2396,13 @@ fastq@^1.6.0:
23772396
dependencies:
23782397
reusify "^1.0.4"
23792398

2399+
fault@^1.0.0:
2400+
version "1.0.4"
2401+
resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13"
2402+
integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==
2403+
dependencies:
2404+
format "^0.2.0"
2405+
23802406
file-entry-cache@^6.0.1:
23812407
version "6.0.1"
23822408
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
@@ -2440,6 +2466,11 @@ for-each@^0.3.3:
24402466
dependencies:
24412467
is-callable "^1.1.3"
24422468

2469+
format@^0.2.0:
2470+
version "0.2.2"
2471+
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
2472+
integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==
2473+
24432474
fraction.js@^4.2.0:
24442475
version "4.2.0"
24452476
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
@@ -2636,6 +2667,22 @@ hash.js@^1.0.0, hash.js@^1.0.3:
26362667
inherits "^2.0.3"
26372668
minimalistic-assert "^1.0.1"
26382669

2670+
hast-util-parse-selector@^2.0.0:
2671+
version "2.2.5"
2672+
resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
2673+
integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==
2674+
2675+
hastscript@^6.0.0:
2676+
version "6.0.0"
2677+
resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
2678+
integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==
2679+
dependencies:
2680+
"@types/hast" "^2.0.0"
2681+
comma-separated-tokens "^1.0.0"
2682+
hast-util-parse-selector "^2.0.0"
2683+
property-information "^5.0.0"
2684+
space-separated-tokens "^1.0.0"
2685+
26392686
he@1.2.0:
26402687
version "1.2.0"
26412688
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -2646,6 +2693,11 @@ hex-color-regex@^1.1.0:
26462693
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
26472694
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
26482695

2696+
highlight.js@^10.4.1, highlight.js@~10.7.0:
2697+
version "10.7.3"
2698+
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
2699+
integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
2700+
26492701
hmac-drbg@^1.0.1:
26502702
version "1.0.1"
26512703
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -3207,6 +3259,14 @@ loose-envify@^1.1.0, loose-envify@^1.4.0:
32073259
dependencies:
32083260
js-tokens "^3.0.0 || ^4.0.0"
32093261

3262+
lowlight@^1.17.0:
3263+
version "1.20.0"
3264+
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888"
3265+
integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==
3266+
dependencies:
3267+
fault "^1.0.0"
3268+
highlight.js "~10.7.0"
3269+
32103270
lru-cache@^6.0.0:
32113271
version "6.0.0"
32123272
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -4001,6 +4061,16 @@ pretty-hrtime@^1.0.3:
40014061
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
40024062
integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==
40034063

4064+
prismjs@^1.27.0:
4065+
version "1.28.0"
4066+
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6"
4067+
integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==
4068+
4069+
prismjs@~1.27.0:
4070+
version "1.27.0"
4071+
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057"
4072+
integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==
4073+
40044074
process-nextick-args@~2.0.0:
40054075
version "2.0.1"
40064076
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -4043,6 +4113,13 @@ prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
40434113
object-assign "^4.1.1"
40444114
react-is "^16.13.1"
40454115

4116+
property-information@^5.0.0:
4117+
version "5.6.0"
4118+
resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
4119+
integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==
4120+
dependencies:
4121+
xtend "^4.0.0"
4122+
40464123
public-encrypt@^4.0.0:
40474124
version "4.0.3"
40484125
resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
@@ -4231,6 +4308,17 @@ react-smooth@^1.0.5:
42314308
raf "^3.4.0"
42324309
react-transition-group "^2.5.0"
42334310

4311+
react-syntax-highlighter@^15.5.0:
4312+
version "15.5.0"
4313+
resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20"
4314+
integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==
4315+
dependencies:
4316+
"@babel/runtime" "^7.3.1"
4317+
highlight.js "^10.4.1"
4318+
lowlight "^1.17.0"
4319+
prismjs "^1.27.0"
4320+
refractor "^3.6.0"
4321+
42344322
react-toastify@^6.1.0:
42354323
version "6.2.0"
42364324
resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-6.2.0.tgz#f2d76747c70b9de91f71f253d9feae6b53dc836c"
@@ -4372,6 +4460,15 @@ reflect.ownkeys@^0.2.0:
43724460
resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460"
43734461
integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==
43744462

4463+
refractor@^3.6.0:
4464+
version "3.6.0"
4465+
resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a"
4466+
integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==
4467+
dependencies:
4468+
hastscript "^6.0.0"
4469+
parse-entities "^2.0.0"
4470+
prismjs "~1.27.0"
4471+
43754472
regenerator-runtime@^0.13.4:
43764473
version "0.13.9"
43774474
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
@@ -4640,6 +4737,11 @@ sourcemap-codec@^1.4.8:
46404737
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
46414738
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
46424739

4740+
space-separated-tokens@^1.0.0:
4741+
version "1.1.5"
4742+
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
4743+
integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==
4744+
46434745
speech-rule-engine@^4.0.6:
46444746
version "4.0.6"
46454747
resolved "https://registry.yarnpkg.com/speech-rule-engine/-/speech-rule-engine-4.0.6.tgz#325dfa4528f25f6aa52d44cf7ee158c7fc0c395d"

0 commit comments

Comments
 (0)