From 091ba8382e30cbde2bb0a0c2001c0d213fdfd33c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 23 Aug 2016 22:38:13 -0400 Subject: initial commit --- .gitignore | 2 ++ Makefile | 68 +++++++++++++++++++++++++++++++++++++++ bin/pagerender | 44 ++++++++++++++++++++++++++ lib/pandoc.rb | 77 ++++++++++++++++++++++++++++++++++++++++++++ lib/template.erb | 51 ++++++++++++++++++++++++++++++ src/.gitignore | 1 + src/header-text.svg | 28 ++++++++++++++++ src/index.md | 14 ++++++++ src/logos | 1 + src/safety/.gitignore | 1 + src/safety/index.md | 23 ++++++++++++++ src/safety/reports | 47 +++++++++++++++++++++++++++ src/style.scss | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/trophies.jpg | Bin 0 -> 34759 bytes 14 files changed, 443 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100755 bin/pagerender create mode 100644 lib/pandoc.rb create mode 100644 lib/template.erb create mode 100644 src/.gitignore create mode 100644 src/header-text.svg create mode 100644 src/index.md create mode 160000 src/logos create mode 100644 src/safety/.gitignore create mode 100644 src/safety/index.md create mode 100755 src/safety/reports create mode 100644 src/style.scss create mode 100644 src/trophies.jpg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..621a527 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/out/ +.sass-cache/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e858021 --- /dev/null +++ b/Makefile @@ -0,0 +1,68 @@ +SHELL = bash +RUBYLIB=$(realpath .)/lib +export RUBYLIB + +patsubst-all = $(if $1,$(call patsubst-all,$(wordlist 2,$(words $1),$1),$2,$(patsubst $(firstword $1),$2,$3)),$3) + +html.suffixes = md org html +html.src = $(shell find src -type f \( -false $(foreach s,$(html.suffixes), -o -name '*.$s' -o -name '*.$s.m4' ) \) | grep -v /web/) +html.out = $(call patsubst-all,$(addprefix src/%.,$(html.suffixes)),out/%.html,$(patsubst %.m4,%,$(html.src))) +all: $(html.out) +all: out/style.css +all: out/header-path.svg + +pagerender.deps = bin/pagerender lib/pandoc.rb lib/template.erb + +out/%: src/%.m4 + mkdir -p -- $(@D) + m4 -P < $< > $@ +out/%: out/%.m4 + m4 -P < $< > $@ + +out/%.html: src/%.md $(pagerender.deps) + mkdir -p -- $(@D) + bin/pagerender $< > $@ +out/%.html: out/%.md $(pagerender.deps) + bin/pagerender $< > $@ + +out/%.html: src/%.org $(pagerender.deps) + mkdir -p -- $(@D) + bin/pagerender $< > $@ +out/%.html: out/%.org $(pagerender.deps) + bin/pagerender $< > $@ + +out/%.html: src/%.html $(pagerender.deps) + mkdir -p -- $(@D) + bin/pagerender $< > $@ +out/%.html: out/%.html $(pagerender.deps) + bin/pagerender $< > $@ + +out/%.html: src/%.erb $(pagerender.deps) + mkdir -p -- $(@D) + bin/pagerender $< > $@ +out/%.html: out/%.erb $(pagerender.deps) + bin/pagerender $< > $@ + +var-%: + @printf '%s\n' $(call quote.shell,$($*)) + +out/%.css: src/%.scss + scss -s < $< > $@ + +.DELETE_ON_ERROR: +.SECONDARY: + +outdir=out/logos +srcdir=src/logos +topoutdir=out +topsrcdir=src +include src/logos/Makefile + +define nl + + +endef + +# I put this as the last line in the file because it confuses Emacs syntax +# highlighting and makes the remainder of the file difficult to edit. +quote.shell = $(subst $(nl),'$$'\n'','$(subst ','\'',$1)') diff --git a/bin/pagerender b/bin/pagerender new file mode 100755 index 0000000..a4ce6a1 --- /dev/null +++ b/bin/pagerender @@ -0,0 +1,44 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- +require 'erb' +require 'date' + +load 'pandoc.rb' +Pandoc::prog='pandoc' + +def erb(file, context=nil) + _erb = ERB.new(File.read(file)) + _erb.filename = file + if context.nil? + return _erb.result() + else + return _erb.result(context) + end +end + +template = 'lib/template.erb' +infile = ARGV.first +input = File.read(infile) + +@title = 'TITLE GOES HERE' + +case File.extname(infile) +when '.md' + doc = Pandoc::load('markdown', input) + @title = doc['title'] || input.split("\n",2).first + @body = doc.to('html5') +when '.org' + doc = Pandoc::load('org', input) + @title = doc['title'] || input.split("\n",2).first + @body = doc.to('html5') +when '.erb' + erb_body = ERB.new(input) + erb_body.filename = infile + @body = erb_body.result() +else + abort +end + +erb = ERB.new(File.read(template)); +erb.filename = template +erb.run() diff --git a/lib/pandoc.rb b/lib/pandoc.rb new file mode 100644 index 0000000..9c12351 --- /dev/null +++ b/lib/pandoc.rb @@ -0,0 +1,77 @@ +require 'open3' +require 'json' + +module Pandoc + def self.prog + @prog ||= 'pandoc' + end + def self.prog=(val) + @prog = val + end + def self.load(fmt, input) + cmd = Pandoc::prog + " -t json" + unless fmt.nil? + cmd += " -f " + fmt + end + str = input + if str.respond_to? :read + str = str.read + end + json = '' + errors = '' + Open3::popen3(cmd) do |stdin, stdout, stderr| + stdin.puts(str) + stdin.close + json = stdout.read + errors = stderr.read + end + unless errors.empty? + raise errors + end + return Pandoc::AST::new(json) + end + + class AST + def initialize(json) + @js = JSON::parse(json) + end + + def [](key) + Pandoc::AST::js2sane(@js[0]["unMeta"][key]) + end + + def to(format) + cmd = Pandoc::prog + " -f json -t " + format.to_s + output = '' + errors = '' + Open3::popen3(cmd) do |stdin, stdout, stderr| + stdin.puts @js.to_json + stdin.close + output = stdout.read + errors = stderr.read + end + unless errors.empty? + raise errors + end + return output + end + + def self.js2sane(js) + if js.nil? + return js + end + case js["t"] + when "MetaList" + js["c"].map{|c| js2sane(c)} + when "MetaInlines" + js["c"].map{|c| js2sane(c)}.join() + when "Space" + " " + when "MetaString" + js["c"] + when "Str" + js["c"] + end + end + end +end diff --git a/lib/template.erb b/lib/template.erb new file mode 100644 index 0000000..19f018f --- /dev/null +++ b/lib/template.erb @@ -0,0 +1,51 @@ + + + + + + + + + <%= @title %> + + + <%= @head %> + + +
+

+ + 4272 Maverick Boiler Robotics +

+ +
+
+ <%= @body %> +
+ + + diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..c037bd6 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +/releases/ \ No newline at end of file diff --git a/src/header-text.svg b/src/header-text.svg new file mode 100644 index 0000000..47b21a0 --- /dev/null +++ b/src/header-text.svg @@ -0,0 +1,28 @@ + + + + 4272 + + + MAVERICK BOILER ROBOTICS + + diff --git a/src/index.md b/src/index.md new file mode 100644 index 0000000..8e9d523 --- /dev/null +++ b/src/index.md @@ -0,0 +1,14 @@ +--- +title: "FRC Team 4272: Maverick Boiler Robitics" +--- + +Lior make old site go bye-bye. Luke put off making new site all +summer. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do +eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad +minim veniam, quis nostrud exercitation ullamco laboris nisi ut +aliquip ex ea commodo consequat. Duis aute irure dolor in +reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla +pariatur. Excepteur sint occaecat cupidatat non proident, sunt in +culpa qui officia deserunt mollit anim id est laborum. diff --git a/src/logos b/src/logos new file mode 160000 index 0000000..e33bf28 --- /dev/null +++ b/src/logos @@ -0,0 +1 @@ +Subproject commit e33bf28ae4ebc0a74e28b37c9535324e391deb1f diff --git a/src/safety/.gitignore b/src/safety/.gitignore new file mode 100644 index 0000000..63ea916 --- /dev/null +++ b/src/safety/.gitignore @@ -0,0 +1 @@ +/*/ diff --git a/src/safety/index.md b/src/safety/index.md new file mode 100644 index 0000000..15dd619 --- /dev/null +++ b/src/safety/index.md @@ -0,0 +1,23 @@ +FRC Team 4272 SafetyApp +======================= + +The app currently supports Android, and running as a Web application. +iOS support is written, but Apple's App-Store approval takes time. + +- [Download for Android](../releases/SafetyApp-latest.apk) — Requires + enabling installing apps from unknown sources; since I'm not sucking + up to Google to get it in the Play store. To do this, go to Settings + → Applications, then check "Unknown Sources" +- [Web application](./web/) — Should work pretty much anywhere. Taking + photos when reporting an injury may or may not work, depending on + your browser (verified to work in Firefox on Desktop and Android). + +The layout of the Android application will be extra-ugly on old versions +of Android, but if you have a version of android from the last 3 years, +you should be in good shape. If you do happen to be locked to an old +version of Android, you may want to try installing a recent version of +Firefox Mobile, and using the web app. + +Also, the [source code](https://git.team4272.com/2016/safetyapp.git) +because [Free Software](https://www.gnu.org/philosophy/free-sw) legal +and ethical reasons. diff --git a/src/safety/reports b/src/safety/reports new file mode 100755 index 0000000..e9dd9fa --- /dev/null +++ b/src/safety/reports @@ -0,0 +1,47 @@ +#!/bin/bash + +render_redirect() { + declare -i i=$1 + cat < + + + + Redirect + + + + + +EOF +} + +post() { + local dir="$(dirname -- "$0")" + file="$(mktemp -- "$dir/reports.d/$(date +%Y-%m-%dT%H:%M:%S)-XXXXXXXXXX")" + cat > "$file" + printf -- '%s\r\n' \ + 'Status: 201 Created' \ + 'Content-Type: text/html; charset=utf-8' \ + "Location: ${SCRIPT_NAME}/redirect" \ + '' + render_redirect 2 +} + +main() { + pwd + if [[ "$REQUEST_METHOD" == POST ]]; then + post + elif [[ "$REQUEST_METHOD" == GET ]] && [[ "$PATH_INFO" = */redirect ]]; then + render_redirect 2 + else + printf -- '%s\r\n' \ + 'Status: 403 Forbidden' \ + '' + render_redirect 1 + fi +} + +main "$@" diff --git a/src/style.scss b/src/style.scss new file mode 100644 index 0000000..bfe7fc0 --- /dev/null +++ b/src/style.scss @@ -0,0 +1,86 @@ +$maroon: #8a181a; +$gold: #e5b217; + +$main-radius: 1.5em; + +body { + background-color: #111111; +} + +body > * { + box-sizing: border-box; + max-width: 8in; + margin-left: auto; + margin-right: auto; + display: block; + padding: $main-radius; + overflow: hidden; +} + +body > header { + text-align: center; + vertical-align: middle; + background: $maroon; + border-radius: $main-radius $main-radius 0 0 ; + padding: 0; + padding-top: $main-radius; + & > h1 img { + height: 89px; + } + & > nav { + /* single-level drop downs */ + line-height: 1; + ul { + padding: 0; + margin: 0; + list-style: none; + } + li { + float: left; + } + a { + display: block; + } + li ul { + position: absolute; + display: none; + left: auto; + } + :hover > ul, + :focus + ul { + display: block; + } + + /* pretty */ + & { + height: 3em; + background-color: #333333; + } + li ul, li li { + width: 10em; + } + a { + display: block; + padding: 1em; + color: white; + background-color: #333333; + text-decoration: none; + + &:hover, + &:focus { + background-color: $gold; + } + } + } +} + +body > article { + background: white; +} + +body > footer { + background: #333333; + color: #ffffff; + vertical-align: top; + border-radius: 0 0 $main-radius $main-radius; +} diff --git a/src/trophies.jpg b/src/trophies.jpg new file mode 100644 index 0000000..00001da Binary files /dev/null and b/src/trophies.jpg differ -- cgit v1.2.3-54-g00ecf