From 448b38fe9ea2135e7040e660ec5794988e01a6fd Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Wed, 4 Feb 2015 15:13:02 -0500 Subject: [PATCH] Added Makefile for generating examples html pages. From @t-paul --- scripts/examples-html/.gitignore | 1 + scripts/examples-html/Makefile | 48 +++++++ scripts/examples-html/assets/css/main.css | 58 ++++++++ scripts/examples-html/assets/css/menu.css | 129 ++++++++++++++++++ .../assets/css/solarized-light.css | 85 ++++++++++++ .../examples-html/assets/images/openscad.png | Bin 0 -> 82391 bytes .../assets/js/language/generic.js | 65 +++++++++ .../assets/js/language/javascript.js | 93 +++++++++++++ scripts/examples-html/assets/js/menu.js | 38 ++++++ .../examples-html/assets/js/rainbow.min.js | 8 ++ scripts/examples-html/template-post.html | 6 + scripts/examples-html/template-pre.html | 28 ++++ 12 files changed, 559 insertions(+) create mode 100644 scripts/examples-html/.gitignore create mode 100644 scripts/examples-html/Makefile create mode 100644 scripts/examples-html/assets/css/main.css create mode 100644 scripts/examples-html/assets/css/menu.css create mode 100644 scripts/examples-html/assets/css/solarized-light.css create mode 100644 scripts/examples-html/assets/images/openscad.png create mode 100644 scripts/examples-html/assets/js/language/generic.js create mode 100644 scripts/examples-html/assets/js/language/javascript.js create mode 100644 scripts/examples-html/assets/js/menu.js create mode 100644 scripts/examples-html/assets/js/rainbow.min.js create mode 100644 scripts/examples-html/template-post.html create mode 100644 scripts/examples-html/template-pre.html diff --git a/scripts/examples-html/.gitignore b/scripts/examples-html/.gitignore new file mode 100644 index 00000000..35b5e99a --- /dev/null +++ b/scripts/examples-html/.gitignore @@ -0,0 +1 @@ +/html diff --git a/scripts/examples-html/Makefile b/scripts/examples-html/Makefile new file mode 100644 index 00000000..96af0d66 --- /dev/null +++ b/scripts/examples-html/Makefile @@ -0,0 +1,48 @@ +EXAMPLES := ../../examples +SRC=$(wildcard $(EXAMPLES)/*/*.scad) +PNG=$(patsubst $(EXAMPLES)/%.scad,html/%.png,$(SRC)) +HTML=$(patsubst $(EXAMPLES)/%.scad,html/%.html,$(SRC)) + +OPENSCAD := ../../OpenSCAD.app/Contents/MacOS/OpenSCAD +#OPENSCAD := openscad +ARGS := --imgsize=1200,900 --camera=0,0,0,55,0,25,180 --viewall --autocenter + +all : $(PNG) $(HTML) example-data.js assets + +.PHONY: clean +clean : + rm -rf html + +.PHONY: assets +assets : + cp -a assets html/ + +.PHONY: example-data.js +example-data.js : + ( \ + echo "openscad_examples = ["; \ + for a in Basics Functions Shapes Extrusion Advanced; \ + do \ + echo " {"; \ + echo " name : \"$$a\","; \ + echo " files : ["; \ + for f in "$(EXAMPLES)/$$a/"*.scad ; \ + do \ + echo " \"`basename -s .scad $$f`\","; \ + done; \ + echo " ]"; \ + echo " },"; \ + done; \ + echo "];" \ + ) > html/example-data.js + +html/%.png : $(EXAMPLES)/%.scad + mkdir -p `dirname $@` + $(OPENSCAD) $(ARGS) -o $@ $< > out.log 2>&1 + +html/%.html : $(EXAMPLES)/%.scad template-pre.html template-post.html + #echo $(notdir $(patsubst %.scad,%.png,$<)) + mkdir -p `dirname $@` + sed -e 's/@@IMAGE@@/$(notdir $(patsubst %.scad,%.png,$<))/g' template-pre.html > $@ + sed -e 's//\>/;' $< >> $@ + cat template-post.html >> $@ diff --git a/scripts/examples-html/assets/css/main.css b/scripts/examples-html/assets/css/main.css new file mode 100644 index 00000000..6774589f --- /dev/null +++ b/scripts/examples-html/assets/css/main.css @@ -0,0 +1,58 @@ +.green { + color:#518e04; +} + +#wrapper { + position: fixed; + top: 0; + left: 0; + width:100%; + height: 100%; +} + +#content { + position: absolute; + top: 65px; + left: 10px; + right: 10px; + bottom: 10px; + border-width: 1px; + border-style: groove; + overflow: auto; + background: #fdf6e3; +} + +#logo { + position: absolute; + top: 5px; + left: 5px; +} + +#logo h1 { + position: absolute; + top: 2px; + left: 80px; + width: 20em; + margin: 0px; + font-family: "Open Sans", sans-serif; + font-size: 22px; +} + +#logo img { + width: 60px; + height: 60px; +} + +#image { + position: absolute; + z-index: 50; + top: 80px; + right: 30px; +} + +#image img { + width: 200px; + height: 150px; + border-width: 1px; + border-style: groove; +} \ No newline at end of file diff --git a/scripts/examples-html/assets/css/menu.css b/scripts/examples-html/assets/css/menu.css new file mode 100644 index 00000000..bc83d266 --- /dev/null +++ b/scripts/examples-html/assets/css/menu.css @@ -0,0 +1,129 @@ +// http://www.olivergast.de/2012/04/18/css3-dropdown-menu/ + +#menu { + width: 800px; + margin: 50px auto; +} + +#menu h3 { + font-size: 12px; + color: #fff; + padding: 10px; + margin: 0; + background: #000; + line-height: 20px; +} + +#menu ul { + position: absolute; + top: 30px; + margin: 0 auto; + margin-left: 20px; + list-style: none; +} + +#menu ul li { + float: left; + margin: 0 0 0 14px; + font-size: 14px; + font-family: 'Arial', sans-serif; + line-height: 30px; +} + +#menu ul li a { + color: #000; + text-decoration: none; + -webkit-transition: all .5s ease-in-out; + -moz-transition: all .5s ease-in-out; + -o-transition: all .5s ease-in-out; + -ms-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; +} + +#menu ul li a:hover { + color: #999; +} + +#menu ul li div { + float: left; + width: 4px; + height: 4px; + margin: 10px 5px; + padding: 4px; + background: #999; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + -webkit-transition: all .5s ease-in-out; + -moz-transition: all .5s ease-in-out; + -o-transition: all .5s ease-in-out; + -ms-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; +} + +#menu ul li:hover div { + background: #000; +} + +#menu ul ul { + position: absolute; + z-index: 100; + top: -9999px; + background: #fff; + padding: 0; + margin: 0 0 0 -5px; + -webkit-box-shadow: 0 10px 20px #888; + -moz-box-shadow: 0 10px 20px #888; + box-shadow: 0 10px 20px #888; +} + +#menu ul ul:before { + position: absolute; + content:""; + width: 10px; + height: 10px; + top: -5px; + left: 11px; + background: #000; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +#menu ul li:hover ul { + top: 30px; +} + +#menu ul ul li { + float: none; + font-size: 12px; + padding: 5px 10px; + text-align: left; + margin: 0; + border-bottom: 1px solid #ddd; + line-height: 20px; + -webkit-transition: all .5s ease-in-out; + -moz-transition: all .5s ease-in-out; + -o-transition: all .5s ease-in-out; + -ms-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; +} + +#menu ul ul a { + color: #333; + text-decoration: none; +} + +#menu ul ul li.all { + font-size: 12px; + border-bottom: none; + text-transform: none; +} + +#menu ul ul li:hover { + background: #333; + color: #fff; +} + diff --git a/scripts/examples-html/assets/css/solarized-light.css b/scripts/examples-html/assets/css/solarized-light.css new file mode 100644 index 00000000..05f45835 --- /dev/null +++ b/scripts/examples-html/assets/css/solarized-light.css @@ -0,0 +1,85 @@ +/** + * Solarized Light theme + * + * Adaptation of Solarized Light from ethanschoonover.com/solarized + * + * @author Ethan Schoonover + * @author David Litmark + * @version 1.0.0 + */ +pre { + background: #fdf6e3; /* base3 */ + word-wrap: break-word; + margin: 0px; + padding: 6px; + color: #657b83; /* base00 */ + font-size: 12px; +} + +pre, code { + font-family: 'Monaco', courier, monospace; +} + +pre .comment { + color: #93a1a1; /* base1 */ +} + +pre .constant { + color: #657b83; /* base00 */ +} + +pre .constant.language { + color: #268bd2; /* blue */ +} + +pre .constant.regexp { + color: #2aa198; /* cyan */ +} + +pre .storage { + color: #268bd2; /* blue */ +} + +pre .string, pre .comment.docstring { + color: #2aa198; /* cyan */ +} + +pre .support.tag.script, pre .support.tag.style { + color: #2aa198; /* cyan */ +} + +pre .string.regexp { + color: #2aa198; /* cyan */ +} + +pre .string.regexp.open, pre .string.regexp.close { + color: #2aa198; /* cyan */ +} + +pre .keyword, pre .selector { + color: #859900; /* green */ +} + +pre .inherited-class { + font-style: italic; +} + +pre .entity { + color: #b58900; /* yellow */ +} + +pre .support, *[data-language="c"] .function.call { + color: #859900; /* green */ +} + +pre .support.method { + color: #657b83; /* base00 */ +} + +pre .support.property { + color: #657b83; /* base00 */ +} + +pre .variable.global, pre .variable.class, pre .variable.instance { + color: #657b83; /* base00 */ +} diff --git a/scripts/examples-html/assets/images/openscad.png b/scripts/examples-html/assets/images/openscad.png new file mode 100644 index 0000000000000000000000000000000000000000..192e5f1c18e88054be0461bcef304da910274133 GIT binary patch literal 82391 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%0DacHIA3!kqq}| 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 literal 0 HcmV?d00001 diff --git a/scripts/examples-html/assets/js/language/generic.js b/scripts/examples-html/assets/js/language/generic.js new file mode 100644 index 00000000..7e1dde65 --- /dev/null +++ b/scripts/examples-html/assets/js/language/generic.js @@ -0,0 +1,65 @@ +/** + * Generic language patterns + * + * @author Craig Campbell + * @version 1.0.11 + */ +Rainbow.extend([ + { + 'matches': { + 1: [ + { + 'name': 'keyword.operator', + 'pattern': /\=|\+/g + }, + { + 'name': 'keyword.dot', + 'pattern': /\./g + } + ], + 2: { + 'name': 'string', + 'matches': { + 'name': 'constant.character.escape', + 'pattern': /\\('|"){1}/g + } + } + }, + 'pattern': /(\(|\s|\[|\=|:|\+|\.)(('|")([^\\\1]|\\.)*?(\3))/gm + }, + { + 'name': 'comment', + 'pattern': /\/\*[\s\S]*?\*\/|(\/\/|\#)[\s\S]*?$/gm + }, + { + 'name': 'constant.numeric', + 'pattern': /\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi + }, + { + 'matches': { + 1: 'keyword' + }, + 'pattern': /\b(and|array|as|b(ool(ean)?|reak)|c(ase|atch|har|lass|on(st|tinue))|d(ef|elete|o(uble)?)|e(cho|lse(if)?|xit|xtends|xcept)|f(inally|loat|or(each)?|unction)|global|if|import|int(eger)?|long|new|object|or|pr(int|ivate|otected)|public|return|self|st(ring|ruct|atic)|switch|th(en|is|row)|try|(un)?signed|var|void|while)(?=\(|\b)/gi + }, + { + 'name': 'constant.language', + 'pattern': /true|false|null/g + }, + { + 'name': 'keyword.operator', + 'pattern': /\+|\!|\-|&(gt|lt|amp);|\||\*|\=/g + }, + { + 'matches': { + 1: 'function.call' + }, + 'pattern': /(\w+?)(?=\()/g + }, + { + 'matches': { + 1: 'storage.function', + 2: 'entity.name.function' + }, + 'pattern': /(function)\s(.*?)(?=\()/g + } +]); diff --git a/scripts/examples-html/assets/js/language/javascript.js b/scripts/examples-html/assets/js/language/javascript.js new file mode 100644 index 00000000..fc881f82 --- /dev/null +++ b/scripts/examples-html/assets/js/language/javascript.js @@ -0,0 +1,93 @@ +/** + * Javascript patterns + * + * @author Craig Campbell + * @version 1.0.9 + */ +Rainbow.extend('javascript', [ + + /** + * matches $. or $( + */ + { + 'name': 'selector', + 'pattern': /(\s|^)\$(?=\.|\()/g + }, + { + 'name': 'support', + 'pattern': /\b(window|document)\b/g + }, + { + 'matches': { + 1: 'support.property' + }, + 'pattern': /\.(length|node(Name|Value))\b/g + }, + { + 'matches': { + 1: 'support.function' + }, + 'pattern': /(setTimeout|setInterval)(?=\()/g + + }, + { + 'matches': { + 1: 'support.method' + }, + 'pattern': /\.(getAttribute|push|getElementById|getElementsByClassName|log|setTimeout|setInterval)(?=\()/g + }, + + /** + * matches any escaped characters inside of a js regex pattern + * + * @see https://github.com/ccampbell/rainbow/issues/22 + * + * this was causing single line comments to fail so it now makes sure + * the opening / is not directly followed by a * + * + * @todo check that there is valid regex in match group 1 + */ + { + 'name': 'string.regexp', + 'matches': { + 1: 'string.regexp.open', + 2: { + 'name': 'constant.regexp.escape', + 'pattern': /\\(.){1}/g + }, + 3: 'string.regexp.close', + 4: 'string.regexp.modifier' + }, + 'pattern': /(\/)(?!\*)(.+)(\/)([igm]{0,3})/g + }, + + /** + * matches runtime function declarations + */ + { + 'matches': { + 1: 'storage', + 3: 'entity.function' + }, + 'pattern': /(var)?(\s|^)(\S*)(?=\s?=\s?function\()/g + }, + + /** + * matches constructor call + */ + { + 'matches': { + 1: 'keyword', + 2: 'entity.function' + }, + 'pattern': /(new)\s+(.*)(?=\()/g + }, + + /** + * matches any function call in the style functionName: function() + */ + { + 'name': 'entity.function', + 'pattern': /(\w+)(?=:\s{0,}function)/g + } +]); diff --git a/scripts/examples-html/assets/js/menu.js b/scripts/examples-html/assets/js/menu.js new file mode 100644 index 00000000..3866e65b --- /dev/null +++ b/scripts/examples-html/assets/js/menu.js @@ -0,0 +1,38 @@ +function addSubmenu(menu, name, files) { + var ul = document.createElement('ul'); + ul.appendChild(document.createElement('h3')); + for (var a = 0; a < files.length; a++) { + var menulink = document.createElement('a'); + menulink.href = "../" + name + "/" + files[a] + ".html"; + ul.appendChild(menulink); + var li = document.createElement('li'); + li.appendChild(document.createTextNode(files[a])); + menulink.appendChild(li); + } + + menu.appendChild(ul); +} + +function addMenu() { + var menudiv = document.getElementById("menu"); + var menu = document.createElement('ul'); + menudiv.appendChild(menu); + + for (var a = 0; a < openscad_examples.length; a++) { + var entry = document.createElement('li'); + var menulink = document.createElement('a'); + menulink.href = "#"; + entry.appendChild(menulink); + var entrydiv = document.createElement('div'); + menulink.appendChild(entrydiv); + menulink.appendChild(document.createTextNode(openscad_examples[a].name)); + + addSubmenu(entry, openscad_examples[a].name, openscad_examples[a].files); + + menu.appendChild(entry); + } +} + +function load() { + addMenu(); +} diff --git a/scripts/examples-html/assets/js/rainbow.min.js b/scripts/examples-html/assets/js/rainbow.min.js new file mode 100644 index 00000000..9cd1d811 --- /dev/null +++ b/scripts/examples-html/assets/js/rainbow.min.js @@ -0,0 +1,8 @@ +/* Rainbow v1.1.9 rainbowco.de */ +window.Rainbow=function(){function q(a){var b,c=a.getAttribute&&a.getAttribute("data-language")||0;if(!c){a=a.attributes;for(b=0;b=e[d][c])delete e[d][c],delete j[d][c];if(a>=c&&ac&&b'+b+""}function s(a,b,c,h){var f=a.exec(c);if(f){++t;!b.name&&"string"==typeof b.matches[0]&&(b.name=b.matches[0],delete b.matches[0]);var k=f[0],i=f.index,u=f[0].length+i,g=function(){function f(){s(a,b,c,h)}t%100>0?f():setTimeout(f,0)};if(C(i,u))g();else{var m=v(b.matches),l=function(a,c,h){if(a>=c.length)h(k);else{var d=f[c[a]];if(d){var e=b.matches[c[a]],i=e.language,g=e.name&&e.matches? +e.matches:e,j=function(b,d,e){var i;i=0;var g;for(g=1;g/g,">").replace(/&(?![\w\#]+;)/g, +"&"),b,c)}function o(a,b,c){if(b + + + + + \ No newline at end of file diff --git a/scripts/examples-html/template-pre.html b/scripts/examples-html/template-pre.html new file mode 100644 index 00000000..cdfdc231 --- /dev/null +++ b/scripts/examples-html/template-pre.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + +
+ + + +
+ +
+
+