Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
2
2015-12-uni-ffm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CmS
2015-12-uni-ffm
Commits
25f3884b
Commit
25f3884b
authored
12 years ago
by
Lars Kappert
Browse files
Options
Downloads
Patches
Plain Diff
Support for external markdown files, including configurable (vertical) slide separator
parent
784fa9d2
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
demo.md
+29
-0
29 additions, 0 deletions
demo.md
index-markdown.html
+105
-0
105 additions, 0 deletions
index-markdown.html
plugin/markdown/markdown.js
+118
-8
118 additions, 8 deletions
plugin/markdown/markdown.js
with
252 additions
and
8 deletions
demo.md
0 → 100644
+
29
−
0
View file @
25f3884b
# External markdown
## Slide 1.1
Content 1.1
## Slide 1.2
Content 1.2
## Slide 2
Content 2.1
## Slide 3.1
Content 3.1
## Slide 3.2
Content 3.2
This diff is collapsed.
Click to expand it.
index-markdown.html
0 → 100644
+
105
−
0
View file @
25f3884b
<!doctype html>
<html
lang=
"en"
>
<head>
<meta
charset=
"utf-8"
>
<title>
reveal.js - The HTML Presentation Framework
</title>
<meta
name=
"description"
content=
"A framework for easily creating beautiful presentations using HTML"
>
<meta
name=
"author"
content=
"Hakim El Hattab"
>
<meta
name=
"apple-mobile-web-app-capable"
content=
"yes"
/>
<meta
name=
"apple-mobile-web-app-status-bar-style"
content=
"black-translucent"
/>
<link
rel=
"stylesheet"
href=
"css/reveal.css"
>
<link
rel=
"stylesheet"
href=
"css/theme/default.css"
id=
"theme"
>
<!-- For syntax highlighting -->
<link
rel=
"stylesheet"
href=
"lib/css/zenburn.css"
>
<!-- If the query includes 'print-pdf', use the PDF print sheet -->
<script>
document
.
write
(
'
<link rel="stylesheet" href="css/print/
'
+
(
window
.
location
.
search
.
match
(
/print-pdf/gi
)
?
'
pdf
'
:
'
paper
'
)
+
'
.css" type="text/css" media="print">
'
);
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div
class=
"reveal"
>
<!-- Any section element inside of this container is displayed as a slide -->
<div
class=
"slides"
>
<!-- Use external markdown resource, and separate slides by three newlines; vertical slides by two newlines -->
<section
data-markdown=
"demo.md"
data-separator=
"^\n\n\n"
data-vertical=
"^\n\n"
></section>
<!-- Slides are separated by newline + three dashes + newline (regular expression) -->
<section
data-markdown
data-separator=
"^\n---\n$"
data-vertical=
"^\n--\n$"
>
<script
type=
"text/template"
>
1.1
--
4.1
---
5.1
</script>
</section>
<!-- No "extra" slides, since there are no separators defined -->
<section
data-markdown
>
<script
type=
"text/template"
>
1.1
---
4.1
---
5.1
</script>
</section>
</div>
</div>
<script
src=
"lib/js/head.min.js"
></script>
<script
src=
"js/reveal.js"
></script>
<script>
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal
.
initialize
({
controls
:
true
,
progress
:
true
,
history
:
true
,
center
:
true
,
theme
:
Reveal
.
getQueryHash
().
theme
,
// available themes are in /css/theme
transition
:
Reveal
.
getQueryHash
().
transition
||
'
default
'
,
// default/cube/page/concave/zoom/linear/fade/none
// Optional libraries used to extend on reveal.js
dependencies
:
[
{
src
:
'
lib/js/classList.js
'
,
condition
:
function
()
{
return
!
document
.
body
.
classList
;
}
},
{
src
:
'
plugin/markdown/showdown.js
'
,
condition
:
function
()
{
return
!!
document
.
querySelector
(
'
[data-markdown]
'
);
}
},
{
src
:
'
plugin/markdown/markdown.js
'
,
condition
:
function
()
{
return
!!
document
.
querySelector
(
'
[data-markdown]
'
);
}
},
{
src
:
'
plugin/highlight/highlight.js
'
,
async
:
true
,
callback
:
function
()
{
hljs
.
initHighlightingOnLoad
();
}
},
{
src
:
'
plugin/zoom-js/zoom.js
'
,
async
:
true
,
condition
:
function
()
{
return
!!
document
.
body
.
classList
;
}
},
{
src
:
'
plugin/notes/notes.js
'
,
async
:
true
,
condition
:
function
()
{
return
!!
document
.
body
.
classList
;
}
}
// { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
]
});
</script>
</body>
</html>
This diff is collapsed.
Click to expand it.
plugin/markdown/markdown.js
+
118
−
8
View file @
25f3884b
...
...
@@ -6,11 +6,7 @@
throw
'
The reveal.js Markdown plugin requires Showdown to be loaded
'
;
}
var
sections
=
document
.
querySelectorAll
(
'
[data-markdown]
'
);
for
(
var
i
=
0
,
len
=
sections
.
length
;
i
<
len
;
i
++
)
{
var
section
=
sections
[
i
];
var
notes
=
section
.
querySelector
(
'
aside.notes
'
);
var
stripLeadingWhitespace
=
function
(
section
)
{
var
template
=
section
.
querySelector
(
'
script
'
);
...
...
@@ -27,11 +23,125 @@
text
=
text
.
replace
(
new
RegExp
(
'
\\
n? {
'
+
leadingWs
+
'
}
'
,
'
g
'
),
'
\n
'
);
}
section
.
innerHTML
=
(
new
Showdown
.
converter
()).
makeHtml
(
text
);
return
text
;
};
var
slidifyMarkdown
=
function
(
markdown
,
separator
,
vertical
)
{
separator
=
separator
||
'
^
\n
---
\n
$
'
;
var
reSeparator
=
new
RegExp
(
separator
+
(
vertical
?
'
|
'
+
vertical
:
''
),
'
mg
'
),
reHorSeparator
=
new
RegExp
(
separator
),
matches
,
lastIndex
=
0
,
isHorizontal
,
wasHorizontal
=
true
,
content
,
sectionStack
=
[],
markdownSections
=
''
;
// iterate until all blocks between separators are stacked up
while
(
matches
=
reSeparator
.
exec
(
markdown
)
)
{
// determine direction (horizontal by default)
isHorizontal
=
reHorSeparator
.
test
(
matches
[
0
]);
if
(
!
isHorizontal
&&
wasHorizontal
)
{
// create vertical stack
sectionStack
.
push
([]);
}
// pluck slide content from markdown input
content
=
markdown
.
substring
(
lastIndex
,
matches
.
index
);
if
(
isHorizontal
&&
wasHorizontal
)
{
// add to horizontal stack
sectionStack
.
push
(
content
);
}
else
{
// add to vertical stack
sectionStack
[
sectionStack
.
length
-
1
].
push
(
content
);
}
lastIndex
=
reSeparator
.
lastIndex
;
wasHorizontal
=
isHorizontal
;
}
// add the remaining slide
(
wasHorizontal
?
sectionStack
:
sectionStack
[
sectionStack
.
length
-
1
]).
push
(
markdown
.
substring
(
lastIndex
));
// flatten the hierarchical stack, and insert <section data-markdown> tags
for
(
var
k
=
0
,
klen
=
sectionStack
.
length
;
k
<
klen
;
k
++
)
{
markdownSections
+=
typeof
sectionStack
[
k
]
===
'
string
'
?
'
<section data-markdown>
'
+
sectionStack
[
k
]
+
'
</section>
'
:
'
<section><section data-markdown>
'
+
sectionStack
[
k
].
join
(
'
</section><section data-markdown>
'
)
+
'
</section></section>
'
;
}
return
markdownSections
;
};
var
queryMarkdownSlides
=
function
()
{
var
sections
=
document
.
querySelectorAll
(
'
[data-markdown]
'
),
section
;
for
(
var
j
=
0
,
jlen
=
sections
.
length
;
j
<
jlen
;
j
++
)
{
section
=
sections
[
j
];
if
(
section
.
getAttribute
(
'
data-markdown
'
).
length
)
{
var
xhr
=
new
XMLHttpRequest
(),
url
=
section
.
getAttribute
(
'
data-markdown
'
);
xhr
.
onreadystatechange
=
function
()
{
if
(
xhr
.
readyState
===
4
)
{
section
.
outerHTML
=
slidifyMarkdown
(
xhr
.
responseText
,
section
.
getAttribute
(
'
data-separator
'
),
section
.
getAttribute
(
'
data-vertical
'
)
);
}
};
xhr
.
open
(
'
GET
'
,
url
,
false
);
xhr
.
send
();
}
else
if
(
section
.
getAttribute
(
'
data-separator
'
)
)
{
var
markdown
=
stripLeadingWhitespace
(
section
);
section
.
outerHTML
=
slidifyMarkdown
(
markdown
,
section
.
getAttribute
(
'
data-separator
'
),
section
.
getAttribute
(
'
data-vertical
'
)
);
}
}
querySlides
();
};
var
querySlides
=
function
()
{
var
sections
=
document
.
querySelectorAll
(
'
[data-markdown]
'
);
for
(
var
j
=
0
,
jlen
=
sections
.
length
;
j
<
jlen
;
j
++
)
{
makeHtml
(
sections
[
j
]);
}
};
var
makeHtml
=
function
(
section
)
{
var
notes
=
section
.
querySelector
(
'
aside.notes
'
);
var
markdown
=
stripLeadingWhitespace
(
section
);
section
.
innerHTML
=
(
new
Showdown
.
converter
()).
makeHtml
(
markdown
);
if
(
notes
)
{
section
.
appendChild
(
notes
);
}
}
})();
\ No newline at end of file
};
queryMarkdownSlides
();
})();
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment