Skip to content
Snippets Groups Projects
Commit b21ed763 authored by jurgenhaas's avatar jurgenhaas
Browse files

Merge branch 'develop' into 'main'

Merging develop into main

See merge request !4
parents 5f805730 5e18e9f7
Branches
Tags 1.0.3
1 merge request!4Merging develop into main
Pipeline #715715 passed
......@@ -16,6 +16,7 @@ PORT = 3000
VERSION := v0.1
# {{{1 help
.PHONY: help
help:
@echo "mdshow: the simple markdown to reveal.js converter"
@echo "$(VERSION)"
......@@ -40,15 +41,18 @@ help:
@echo " curl, pandoc, unzip, npm"
# {{{1 version
.PHONY: version
version:
@echo "$(VERSION)"
# {{{1 upgrade
.PHONY: upgrade
upgrade:
curl -L https://raw.githubusercontent.com/jceb/mdshow/master/mdshow -o $(realpath $(firstword $(MAKEFILE_LIST)))
chmod a+x $(realpath $(firstword $(MAKEFILE_LIST)))
# {{{1 setup
.PHONY: setup
setup: programs \
sass \
$(MDSHOW_CONFIG)/defaults.css \
......@@ -63,6 +67,7 @@ setup: programs \
$(MDSHOW_CONFIG)/reveal.js/mdshow-gulp.js \
$(MDSHOW_CONFIG)/scaffold.md
.PHONY: programs
programs:
@echo "Testing depedencies"
@type curl || echo "curl is not installed, required in the setup process"
......@@ -85,9 +90,9 @@ $(MDSHOW_CONFIG)/defaults.yaml:
curl -L https://raw.githubusercontent.com/jceb/mdshow/master/assets/defaults.yaml -o $@
$(MDSHOW_CONFIG)/reveal.js/dist/fontawesome:
curl -L https://use.fontawesome.com/releases/v5.15.1/fontawesome-free-5.15.1-web.zip -o $(dir $@)/fontawesome-free-web.zip
curl -L https://use.fontawesome.com/releases/v6.1.1/fontawesome-free-6.1.1-web.zip -o $(dir $@)/fontawesome-free-web.zip
unzip $(dir $@)/fontawesome-free-web.zip -d $(dir $@)
mv $(dir $@)/fontawesome-free-5.15.1-web $@
mv $(dir $@)/fontawesome-free-6.1.1-web $@
rm $(dir $@)/fontawesome-free-web.zip
$(MDSHOW_CONFIG)/reveal.js:
......@@ -132,18 +137,22 @@ $(MDSHOW_CONFIG)/reveal.js/dist/plugin/highlight/styles/nord.css:
rm -rf highlight.js-10.2.1
# {{{1 sass / theme builder
.PHONY: sass
sass: $(MDSHOW_CONFIG)/reveal.js \
.sync-custom-themes \
.link-theme-assets \
.build-themes
.PHONY: .sync-custom-themes
.sync-custom-themes: $(wildcard $(MDSHOW_CONFIG)/theme/*/source/*.scss)
@[ -n "$^" ] && rsync -u $^ $(MDSHOW_CONFIG)/reveal.js/css/theme/source/ || true
@[ -n "$^" ] && cd $(MDSHOW_CONFIG)/reveal.js && gulp css-themes || true
.PHONY: .build-themes
.SECONDEXPANSION:
.build-themes: $$(addprefix $(MDSHOW_CONFIG)/reveal.js/dist/theme/,$$(addsuffix .css,$$(basename $$(notdir $$(wildcard $(MDSHOW_CONFIG)/reveal.js/css/theme/source/*.scss)))))
.PHONY: .link-theme-assets
.SECONDEXPANSION:
.link-theme-assets: $$(addprefix $(MDSHOW_CONFIG)/reveal.js/dist/theme/,$$(basename $$(notdir $$(wildcard $(MDSHOW_CONFIG)/reveal.js/css/theme/source/*.scss))))
......@@ -157,6 +166,7 @@ $(MDSHOW_CONFIG)/reveal.js/dist/theme/%: $(MDSHOW_CONFIG)/theme/%/assets
@cp $@.css $<
# {{{1 themes
.PHONY: themes
themes: $(MDSHOW_CONFIG)/reveal.js/dist $(wildcard $(MDSHOW_CONFIG)/reveal.js/dist/theme/*.css)
@ls -1 $(MDSHOW_CONFIG)/reveal.js/dist/theme/*.css | sed -ne 's/^.*\/\([^\/]*\).css$$/\1/p'
@echo "Change theme by adding the option 'theme: <name>' between the two --- .. --- delimiters at the top of $(SLIDES)."
......@@ -167,6 +177,7 @@ $(MDSHOW_CONFIG)/scaffold.md:
[ ! -e $@ ] && \
curl -L https://raw.githubusercontent.com/jceb/mdshow/master/examples/$(SLIDES) -o $@
.PHONY: scaffold
scaffold: $(MDSHOW_CONFIG)/scaffold.md
@([ -e $(SLIDES) ] && [ -e assets ] && \
echo "'$(SLIDES)' and or 'assets' already exists, nothing to do here.") || \
......@@ -181,6 +192,7 @@ scaffold: $(MDSHOW_CONFIG)/scaffold.md
echo "- Run 'mdshow pdf' to store the slideshow in a PDF document") || true\
# {{{1 html
.PHONY: html
html: $(basename $(SLIDES)).html
$(basename $(SLIDES)).html: serving build
......@@ -189,9 +201,11 @@ $(basename $(SLIDES)).html: serving build
monolith -o $@ http://localhost:$(PORT)
# {{{1 build
.PHONY: build
build: $(BUILD_DIR)/config.json sass $(MDSHOW_CONFIG)/reveal.js/dist/fontawesome $(BUILD_DIR)/index.html
# {{{1 pdf
.PHONY: pdf
pdf: $(basename $(SLIDES)).pdf
$(basename $(SLIDES)).pdf: serving build
......@@ -206,9 +220,11 @@ $(MDSHOW_CONFIG)/reveal.js/mdshow-gulp.js:
[ ! -e $@ ] && \
curl -L https://raw.githubusercontent.com/jceb/mdshow/master/assets/mdshow-gulp.js -o $@
.PHONY: serve
serve: build $(MDSHOW_CONFIG)/reveal.js/mdshow-gulp.js
cd $(MDSHOW_CONFIG)/reveal.js && gulp -f mdshow-gulp.js --port=$(PORT) --slides="$(SLIDES)" --root="${PWD}/$(BUILD_DIR)"
.PHONY: serving
serving:
@curl -s -I -o /dev/null http://localhost:$(PORT)
......@@ -233,29 +249,31 @@ $(BUILD_DIR)/config.json: $(SLIDES) $(MDSHOW_CONFIG)/defaults.yaml $(MDSHOW_CON
$(BUILD_DIR)/index.html: $(SLIDES) $(BUILD_DIR)/config.json $(BUILD_DIR)/reveal.js $(BUILD_DIR)/assets $(BUILD_DIR)/.mdshow $(BUILD_DIR)/reveal.js/defaults.css
PANDOC_ARGS=; \
theme="$$($(MDSHOW_CONFIG)/reveal.js/node_modules/node-jq/bin/jq -r '.theme' < $(BUILD_DIR)/config.json)"; \
[ -e "$(MDSHOW_CONFIG)/theme/$${theme}/include/in-header.html" ] && PANDOC_ARGS="$${PANDOC_ARGS} --include-in-header=$(MDSHOW_CONFIG)/theme/$${theme}/include/in-header.html"; \
[ -e "$(MDSHOW_CONFIG)/theme/$${theme}/include/before-body.html" ] && PANDOC_ARGS="$${PANDOC_ARGS} --include-before-body=$(MDSHOW_CONFIG)/theme/$${theme}/include/before-body.html"; \
[ -e "$(MDSHOW_CONFIG)/theme/$${theme}/include/after-body.html" ] && PANDOC_ARGS="$${PANDOC_ARGS} --include-after-body=$(MDSHOW_CONFIG)/theme/$${theme}/include/after-body.html"; \
pandoc \
$(MDSHOW_CONFIG)/defaults.yaml \
$(SLIDES) \
--data-dir=$(MDSHOW_CONFIG)/pandoc \
-f markdown+yaml_metadata_block \
-t revealjs \
--lua-filter fontawesome.lua \
--wrap=preserve \
--standalone \
--no-highlight \
--slide-level=2 \
-V revealjs-url=reveal.js \
-o $@ \
$${PANDOC_ARGS}
theme="$$($(MDSHOW_CONFIG)/reveal.js/node_modules/node-jq/bin/jq -r '.theme' < $(BUILD_DIR)/config.json)"; \
[ -e "$(MDSHOW_CONFIG)/theme/$${theme}/include/in-header.html" ] && PANDOC_ARGS="$${PANDOC_ARGS} --include-in-header=$(MDSHOW_CONFIG)/theme/$${theme}/include/in-header.html"; \
[ -e "$(MDSHOW_CONFIG)/theme/$${theme}/include/before-body.html" ] && PANDOC_ARGS="$${PANDOC_ARGS} --include-before-body=$(MDSHOW_CONFIG)/theme/$${theme}/include/before-body.html"; \
[ -e "$(MDSHOW_CONFIG)/theme/$${theme}/include/after-body.html" ] && PANDOC_ARGS="$${PANDOC_ARGS} --include-after-body=$(MDSHOW_CONFIG)/theme/$${theme}/include/after-body.html"; \
pandoc \
$(MDSHOW_CONFIG)/defaults.yaml \
$(SLIDES) \
--data-dir=$(MDSHOW_CONFIG)/pandoc \
-f markdown+yaml_metadata_block \
-t revealjs \
--lua-filter fontawesome.lua \
--wrap=preserve \
--standalone \
--no-highlight \
--slide-level=2 \
-V revealjs-url=reveal.js \
-o $@ \
$${PANDOC_ARGS}
# {{{1 cleanup
.PHONY: clean
clean:
rm -rf $(BUILD_DIR)
.PHONY: distclean
distclean:
[ -e $(MDSHOW_CONFIG)/defaults.yaml ] && mv $(MDSHOW_CONFIG)/defaults.yaml $(MDSHOW_CONFIG)/defaults.yaml.bak || true
[ -e $(MDSHOW_CONFIG)/scaffold.md ] && mv $(MDSHOW_CONFIG)/scaffold.md $(MDSHOW_CONFIG)/scaffold.md.bak || true
......
......@@ -92,78 +92,76 @@ $body$
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
// Display controls in the bottom right corner
controls: ('$controls$' === '' ? false : true),
controls: Boolean(JSON.parse('$controls$')),
// Help the user learn the controls by providing hints, for example by
// bouncing the down arrow when they first encounter a vertical slide
controlsTutorial: ('$controlsTutorial$' === '' ? false : true),
controlsTutorial: Boolean(JSON.parse('$controlsTutorial$')),
// Display a presentation progress bar
progress: ('$progress$' === '' ? false : true),
progress: Boolean(JSON.parse('$progress$')),
// Display the page number of the current slide
slideNumber: ('$slideNumber$' === '' ? false : '$slideNumber$' === 'true' ? true : '$slideNumber$'),
slideNumber: Boolean(JSON.parse('$slideNumber$')),
// Use 1 based indexing for # links to match slide number (default is zero
// based)
hashOneBasedIndex: ('$hashOneBasedIndex$' === '' ? false : true),
hashOneBasedIndex: Boolean(JSON.parse('$hashOneBasedIndex$')),
// Add the current slide number to the URL hash so that reloading the
// page/copying the URL will return you to the same slide
hash: ('$hash$' === '' ? false : true),
hash: Boolean(JSON.parse('$hash$')),
// Flags if we should monitor the hash and change slides accordingly
respondToHashChanges: ('$respondToHashChanges$' === '' ? false : true),
respondToHashChanges: Boolean(JSON.parse('$respondToHashChanges$')),
// Push each slide change to the browser history
history: ('$history$' === '' ? false : true),
history: Boolean(JSON.parse('$history$')),
// Enable keyboard shortcuts for navigation
keyboard: ('$keyboard$' === '' ? false : true),
keyboard: Boolean(JSON.parse('$keyboard$')),
// Disables the default reveal.js slide layout (scaling and centering)
// so that you can use custom CSS layout
disableLayout: ('$disableLayout$' === '' ? false : true),
disableLayout: Boolean(JSON.parse('$disableLayout$')),
// Enable the slide overview mode
overview: ('$overview$' === '' ? false : true),
overview: Boolean(JSON.parse('$overview$')),
// Vertical centering of slides
center: ('$center$' === '' ? false : true),
center: Boolean(JSON.parse('$center$')),
// Enables touch navigation on devices with touch input
touch: ('$touch$' === '' ? false : true),
touch: Boolean(JSON.parse('$touch$')),
// Loop the presentation
loop: ('$loop$' === '' ? false : true),
loop: Boolean(JSON.parse('$loop$')),
// Change the presentation direction to be RTL
rtl: ('$rtl$' === '' ? false : true),
rtl: Boolean(JSON.parse('$rtl$')),
$if(navigationMode)$
// see https://github.com/hakimel/reveal.js/#navigation-mode
navigationMode: '$navigationMode$',
$endif$
// Randomizes the order of slides each time the presentation loads
shuffle: ('$shuffle$' === '' ? false : true),
shuffle: Boolean(JSON.parse('$shuffle$')),
// Turns fragments on and off globally
fragments: ('$fragments$' === '' ? false : true),
fragments: Boolean(JSON.parse('$fragments$')),
// Flags whether to include the current fragment in the URL
// so that reloading brings you to the same fragment position
fragmentInURL: ('$fragmentInURL$' === '' ? false : true),
fragmentInURL: Boolean(JSON.parse('$fragmentInURL$')),
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: ('$embedded$' === '' ? false : true),
embedded: Boolean(JSON.parse('$embedded$')),
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: ('$help$' === '' ? false : true),
help: Boolean(JSON.parse('$help$')),
// Flags if it should be possible to pause the presentation (blackout)
pause: ('$pause$' === '' ? false : true),
pause: Boolean(JSON.parse('$pause$')),
// Flags if speaker notes should be visible to all viewers
showNotes: ('$showNotes$' === '' ? false : true),
showNotes: Boolean(JSON.parse('$showNotes$')),
// Global override for autolaying embedded media (video/audio/iframe)
// - null: Media will only autoplay if data-autoplay is present
// - True: All media will autoplay, regardless of individual setting
// - False: No media will autoplay, regardless of individual setting
autoPlayMedia: ('$autoPlayMedia$' === 'null' ? null : '$autoPlayMedia$' === '' ? false : true),
autoPlayMedia: '$autoPlayMedia$'.length > 0 ? Boolean(JSON.parse('$autoPlayMedia$')) : null,
// Global override for preloading lazy-loaded iframes
// - null: Iframes with data-src AND data-preload will be loaded when within
// the viewDistance, iframes with only data-src will be loaded when visible
// - True: All iframes with data-src will be loaded when within the viewDistance
// - False: All iframes with data-src will be loaded only when visible
preloadIframes: ('$preloadIframes$' === 'null' ? null : '$preloadIframes$' === '' ? false : true),
preloadIframes: '$preloadIframes$'.length > 0 ? Boolean(JSON.parse('$preloadIframes$')) : null,
// Can be used to globally disable auto-animation
autoAnimate: ('$autoAnimate$' === '' ? false : true),
$if(autoAnimateMatcher)$
autoAnimate: Boolean(JSON.parse('$autoAnimate$')),
// Optionally provide a custom element matcher that will be
// used to dictate which elements we can animate between.
autoAnimateMatcher: ('$autoAnimateMatcher$' === 'null' ? null : '$autoAnimateMatcher$'), // none/fade/slide/convex/concave/zoom
$endif$
autoAnimateMatcher: ('$autoAnimateMatcher$'.length > 0 ? '$autoAnimateMatcher$' : null), // none/fade/slide/convex/concave/zoom
$if(autoAnimateEasing)$
// Default settings for our auto-animate transitions, can be
// overridden per-slide or per-element via data arguments
......@@ -172,17 +170,15 @@ $endif$
$if(autoAnimateDuration)$
autoAnimateDuration: $autoAnimateDuration$,
$endif$
autoAnimateUnmatched: ('$autoAnimateUnmatched$' === '' ? false : true),
autoAnimateUnmatched: Boolean(JSON.parse('$autoAnimateUnmatched$')),
// Number of milliseconds between automatically proceeding to the
// next slide, disabled when set to 0, this value can be overwritten
// by using a data-autoslide attribute on your slides
autoSlide: ('$autoSlide$' === '' ? false : parseInt('$autoSlide$')),
// Stop auto-sliding after user input
autoSlideStoppable: ('$autoSlideStoppable$' === '' ? false : true),
$if(autoSlideMethod)$
autoSlideStoppable: Boolean(JSON.parse('$autoSlideStoppable$')),
// Use this method for navigation when auto-sliding (defaults to navigateNext)
autoSlideMethod: ('$autoSlideMethod$' === 'null' ? null : '$autoSlideMethod$'), // none/fade/slide/convex/concave/zoom
$endif$
autoSlideMethod: ('$autoSlideMethod$'.length > 0 ? '$autoSlideMethod$' : null), // none/fade/slide/convex/concave/zoom
$if(defaultTiming)$
// Specify the average time in seconds that you think you will spend
// presenting each slide. This is used to show a pacing timer in the
......@@ -190,24 +186,19 @@ $if(defaultTiming)$
defaultTiming: $defaultTiming$,
$endif$
// Enable slide navigation via mouse wheel
mouseWheel: ('$mouseWheel$' === '' ? false : true),
mouseWheel: Boolean(JSON.parse('$mouseWheel$')),
// Opens links in an iframe preview overlay
// Add `data-preview-link` and `data-preview-link="False"` to customise each link
// individually
previewLinks: ('$previewLinks$' === '' ? false : true),
previewLinks: Boolean(JSON.parse('$previewLinks$')),
// Exposes the reveal.js API through window.postMessage
postMessage: ('$postMessage$' === '' ? false : true),
postMessage: Boolean(JSON.parse('$postMessage$')),
// Dispatches all reveal.js events to the parent window through postMessage
postMessageEvents: ('$postMessageEvents$' === '' ? false : true),
postMessageEvents: Boolean(JSON.parse('$postMessageEvents$')),
// Focuses body when page changes visibility to ensure keyboard shortcuts work
focusBodyOnPageVisibilityChange: ('$focusBodyOnPageVisibilityChange$' === '' ? false : true),
// Apply a 3D roll to links on hover
// TODO check if still in use
rollingLinks: ('$rollingLinks$' === '' ? false : true),
focusBodyOnPageVisibilityChange: Boolean(JSON.parse('$focusBodyOnPageVisibilityChange$')),
// Hides the address bar on mobile devices
hideAddressBar: ('$controls$' === '' ? false : true),
// Opens links in an iframe preview overlay
previewLinks: ('$controls$' === '' ? false : true)$previewLinks$,
hideAddressBar: Boolean(JSON.parse('$controls$')),
$if(transition)$
// Transition style
transition: '$transition$', // none/fade/slide/convex/concave/zoom
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment