parent
49602e5a53
commit
014dbe61a7
9 changed files with 117 additions and 1399 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,47 @@ |
|||||||
|
"use strict"; |
||||||
|
|
||||||
|
const {lexer} = require("marked"); |
||||||
|
|
||||||
|
class Slide { |
||||||
|
content; |
||||||
|
|
||||||
|
constructor(content = []) { |
||||||
|
this.content = content; |
||||||
|
} |
||||||
|
|
||||||
|
append(object) { |
||||||
|
this.content.push(object); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const tokenize = string => { |
||||||
|
return lexer(string); |
||||||
|
}; |
||||||
|
|
||||||
|
const parser = string => { |
||||||
|
const tokenStream = tokenize(string); |
||||||
|
const slideDeck = []; |
||||||
|
let currentSlide = new Slide(); |
||||||
|
|
||||||
|
for (const token of tokenStream) { |
||||||
|
if ( token.type === "space" || token.type === "heading" && token.depth === 1) { |
||||||
|
if (currentSlide.content.length > 0) { |
||||||
|
slideDeck.push(currentSlide); |
||||||
|
currentSlide = new Slide(); |
||||||
|
} |
||||||
|
|
||||||
|
if (token.type === "heading") |
||||||
|
slideDeck.push(new Slide([token])); |
||||||
|
continue; |
||||||
|
} |
||||||
|
currentSlide.append(token); |
||||||
|
} |
||||||
|
if (currentSlide.content.length > 0) |
||||||
|
slideDeck.push(currentSlide); |
||||||
|
|
||||||
|
return slideDeck; |
||||||
|
}; |
||||||
|
|
||||||
|
module.exports = { |
||||||
|
parser |
||||||
|
} |
@ -1,3 +1,4 @@ |
|||||||
.slides-list { |
.slides-list { |
||||||
background: #222; |
background: #222; |
||||||
|
overflow-y: auto; |
||||||
} |
} |
@ -0,0 +1,20 @@ |
|||||||
|
import React from "react"; |
||||||
|
|
||||||
|
const Slide = ({data}) => { |
||||||
|
console.log(data); |
||||||
|
return ( |
||||||
|
<article className="slide"> |
||||||
|
{data.content.map(item => { |
||||||
|
switch (item.type) { |
||||||
|
case "heading": |
||||||
|
return <h1>{item.raw}</h1> |
||||||
|
break; |
||||||
|
default: |
||||||
|
return JSON.stringify(item); |
||||||
|
} |
||||||
|
})} |
||||||
|
</article> |
||||||
|
); |
||||||
|
}; |
||||||
|
|
||||||
|
export default Slide; |
Loading…
Reference in new issue