From 9d7724af0b7b1863a35ab707adb55a342a02c367 Mon Sep 17 00:00:00 2001 From: "Glenn Y. Rolland" Date: Fri, 20 Apr 2018 17:27:59 +0200 Subject: [PATCH] Initial import --- .dockerignore | 5 ++ .gitignore | 11 +++++ .gitmodules | 6 +++ Dockerfile | 13 +++++ Makefile | 72 +++++++++++++++++++++++++++ README.md | 17 +++++++ assets/Makefile | 15 ++++++ assets/logo-gyr.png | Bin 0 -> 55623 bytes assets/style.css.map | 7 +++ assets/style.scss | 115 +++++++++++++++++++++++++++++++++++++++++++ bin/build-structure | 28 +++++++++++ bin/extract-toc | 26 ++++++++++ bin/static-server | 2 + slides/.directory | 5 ++ themes/gyr.scss | 52 +++++++++++++++++++ 15 files changed, 374 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.md create mode 100644 assets/Makefile create mode 100644 assets/logo-gyr.png create mode 100644 assets/style.css.map create mode 100644 assets/style.scss create mode 100755 bin/build-structure create mode 100755 bin/extract-toc create mode 100755 bin/static-server create mode 100644 slides/.directory create mode 100644 themes/gyr.scss diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8cb63ab --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +build +exercices +node_modules +projets +references diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d3bb7e --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +Gemfile.lock +.bundle +vendor/bundle +/node_modules +build +public +source/css/theme/.sass-cache +**/*~ +references/* +*.pdf +*.zip diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..69e424c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "libs/jcalculator"] + path = libs/jcalculator + url = https://github.com/balajmarius/jcalculator +[submodule "ext/marp-assets"] + path = ext/marp-assets + url = git@bitbucket.org:glenux/marp-assets.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bd82c71 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM debian:jessie +MAINTAINER Glenn ROLLAND + +RUN mkdir -p /hop +ADD slides /hop/slides +ADD bin /hop/bin +ADD themes /home/themes +ADD Makefile /home/Makefile +RUN apt-get update && \ + apt-get install -y make +WORKDIR /hop +RUN make install +CMD make diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..aa6c834 --- /dev/null +++ b/Makefile @@ -0,0 +1,72 @@ +#!/usr/bin/make -f + +THEME=gyr +THEME_OPT=-t $(THEME) + +REVEALJS_THEMES=node_modules/reveal.js/css/theme +REVEALJS_DIR=node_modules/reveal.js + +BUILD_DIR=build + +SLIDES_DIR=slides +SLIDES_MD=$(wildcard $(SLIDES_DIR)/**/*.md) +SLIDES_PDF=$(patsubst $(SLIDES_DIR)/%,$(BUILD_DIR)/%,$(patsubst %.md,%.pdf,$(SLIDES_MD))) +SLIDES_HTML=$(patsubst $(SLIDES_DIR)/%,$(BUILD_DIR)/%,$(patsubst %.md,%.html,$(SLIDES_MD))) + +NAME=$(shell basename "$$(pwd)") + +REVEALMD=node_modules/.bin/reveal-md +all: live + +configure: configure-assets configure-reveal configure-style + +configure-assets: + $(MAKE) -C assets build + +configure-reveal: + npm install reveal-md # -v 0.0.19 + npm install node-sass + +configure-style: + cp -a themes/$(THEME).scss $(REVEALJS_THEMES)/source + cd $(REVEALJS_DIR) && ../.bin/node-sass \ + css/theme/source/$(THEME).scss \ + css/theme/$(THEME).css \ + +zip: + rm -f "../$(NAME)-latest.zip" + (git ls-files ; find assets) |grep -v '^ext' | zip -r "../$(NAME)-latest.zip" -@ + +live: + $(REVEALMD) --disable-auto-open --host 0.0.0.0 $(THEME_OPT) $(SLIDES_DIR) + +.PHONY: build-pdf build-html +build-pdf: $(SLIDES_PDF) + +build-html: $(SLIDES_HTML) + + +$(BUILD_DIR)/%.pdf: $(SLIDES_DIR)/%.md + mkdir -p "$$(dirname "$@")" + docker run --rm --net=host -v "`pwd`:/slides" astefanutti/decktape http://localhost:1948/$(<:slides/%=%) --pause 500 /slides/$@ + touch -a -r "$<" "$@" + +$(BUILD_DIR)/%.html: $(SLIDES_DIR)/%.md + mkdir -p "$$(dirname "$@")" + test -d "$$(dirname "$<")/images" \ + && rsync -a "$$(dirname "$<")/images/" "$$(dirname "$@")/images/" \ + || true + pandoc -f markdown+emoji -t html -o "$@" "$<" + touch -a -r "$<" "$@" + +clean: clean-pdf clean-html + +clean-pdf: + rm -f $(BUILD_DIR)/**/*.pdf + +clean-html: + rm -f $(BUILD_DIR)/**/*.html + +tasklist: + watch "find slides/ -type f -name '*.md' |egrep -v '(template-|\.DONE\.md)' |sort" + diff --git a/README.md b/README.md new file mode 100644 index 0000000..72a835f --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +README +====== + +Usage +----- + + +First install stasis via bundle + + bundle install --path vendor/bundle + +Then run stasis once or in devel mode + + bundle exec middleman + +And get the result into the public/ directory ! + diff --git a/assets/Makefile b/assets/Makefile new file mode 100644 index 0000000..4d4fd79 --- /dev/null +++ b/assets/Makefile @@ -0,0 +1,15 @@ + +SCSS=$(wildcard *.scss) +CSS=$(patsubst %.scss,%.css,$(SCSS)) + +all: build + +build: $(CSS) + +clean: + rm -f $(CSS) + +%.css: %.scss + sass $< > $@ + + diff --git a/assets/logo-gyr.png b/assets/logo-gyr.png new file mode 100644 index 0000000000000000000000000000000000000000..35e002d68a7a2698efca81ec7a6108ba97885331 GIT binary patch literal 55623 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 .slide_inner { + margin-top: 70px; + // outline: 5px solid red; + // height: 400px; + } + } + + .slide_footer { + color: red; + } + + .slide_page { + color: red ; //!important; + // outline: 1px solid red; + display: block; + } +} + +.markdown-body { + h2, h3 { + color: $secondaryColor; + /* + display: flex; + flex-direction: column; + flex-wrap: nowrap; + justify-content: center !important; + align-items: flex-start !important; + + height: 100px; + color: white; + background-color: $secondaryColor; + padding: 29px; + margin-bottom: 70px; + */ + } + + h2 ~ h3, + h2 ~ h4 { + color: $primaryColor; + } + + h1 { + color: $secondaryColor !important; + font-size: 300% !important; + margin: 0px; + line-height: 1; + // outline: 1px solid red; + padding: 0px; + margin-bottom: 30px; + + &::before { + content: ""; + display: block; + height: 300px; + width: 300px; + margin-bottom: 30px; + // padding-left: 100%; + // overflow: hidden; + background-image: url(logo-gyr.png); + background-repeat: no-repeat; + background-size: 300px auto; + background-position: center left; + } + } + + h1 ~ h3 { + // outline: 1px solid red; + color: $primaryColor; + font-size: 200% !important; + line-height: 1; + margin: 0; + padding: 0; + } + + h2 tt { + /* + color: white; + background-color: orange; + font-style: italic; + font-size: 60%; + padding: 0.125em 0.25em; + vertical-align: middle; + float: right; + top: 0.25em; + font-family: inherit; + */ + } + +} + + diff --git a/bin/build-structure b/bin/build-structure new file mode 100755 index 0000000..245e008 --- /dev/null +++ b/bin/build-structure @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby + +require 'csv' +require 'fileutils' + +CSV.foreach("structure.csv") do |row| + path = 'slides/' + row[0] + chapter_idx = row[1] + chapter = row[2] + title_idx = row[3] + title = row[4] + type = row[5] + + next if File.exist? path + FileUtils.mkdir_p File.dirname(path) + File.open(path, 'w') do |fh| + fh.puts "" + fh.puts "# #{chapter}" + fh.puts "" + fh.puts "### #{title}" + fh.puts "" + fh.puts "" + fh.puts "" + fh.puts "----" + fh.puts "" + end +end + diff --git a/bin/extract-toc b/bin/extract-toc new file mode 100755 index 0000000..f8551e6 --- /dev/null +++ b/bin/extract-toc @@ -0,0 +1,26 @@ +#!/usr/bin/env ruby + +require 'sanitize' + +h1 = "" +h2 = "" + +Dir['slides/**/*.md'].sort.each do |name| + content = File.read(name) + oldh1 = h1 + oldh2 = h2 + if content =~ /^# (.*)\n/ + h1 = $1 + end + if content =~ /^### (.*)\n/ + h2 = $1 + end + + if oldh1 != h1 + puts "" + puts "#{Sanitize.clean(h1)}" + end + if oldh2 != h2 + puts "- #{Sanitize.clean(h2)}" + end +end diff --git a/bin/static-server b/bin/static-server new file mode 100755 index 0000000..c92934e --- /dev/null +++ b/bin/static-server @@ -0,0 +1,2 @@ +#!/bin/sh +python -m SimpleHTTPServer 8000 diff --git a/slides/.directory b/slides/.directory new file mode 100644 index 0000000..659fe59 --- /dev/null +++ b/slides/.directory @@ -0,0 +1,5 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2018,1,5,23,8,35 +Version=4 +ViewMode=1 diff --git a/themes/gyr.scss b/themes/gyr.scss new file mode 100644 index 0000000..762ee26 --- /dev/null +++ b/themes/gyr.scss @@ -0,0 +1,52 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is darkblue. + * + * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. + * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Open Sans', sans-serif; +$mainColor: #000; +$headingFont: 'Arial', 'Helvetica', Impact, sans-serif; +$headingColor: #000; // 673A8C; // #000 +$headingTextShadow: none; +$headingTextTransform: none; +$backgroundColor: #fff; +$linkColor: #00008B; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: rgba(0, 0, 0, 0.99); + + +// Theme template ------------------------------ +// @import "../template/theme"; +@import "../white"; +// --------------------------------------------- + +.reveal { + font-size: 20px; +} + +// overwrite +.reveal .slides { + text-align: left; +} + +.reveal pre { + width: 100%; + margin: 20px 0; +} +