You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2018/03/09 15:35:59 UTC

[48/50] tinkerpop git commit: Added automatic tab generation for code snippets in asciidoc files.

Added automatic tab generation for code snippets in asciidoc files.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/844d997f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/844d997f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/844d997f

Branch: refs/heads/TINKERPOP-1447
Commit: 844d997f34bd78895cbecb86aad8163a9e7113d4
Parents: 97fb12e
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Dec 15 14:30:59 2017 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Mar 9 08:34:51 2018 -0700

----------------------------------------------------------------------
 docs/postprocessor/processor.awk     |   4 +
 docs/preprocessor/awk/tabify.awk     | 108 ++++++++++++++++++
 docs/preprocessor/preprocess-file.sh |   4 +-
 docs/sass/compile                    |  30 +++++
 docs/sass/tabs.scss                  | 178 ++++++++++++++++++++++++++++++
 docs/stylesheets/tabs.css            |  19 ++++
 6 files changed, 342 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/844d997f/docs/postprocessor/processor.awk
----------------------------------------------------------------------
diff --git a/docs/postprocessor/processor.awk b/docs/postprocessor/processor.awk
index 18ada47..da82420 100644
--- a/docs/postprocessor/processor.awk
+++ b/docs/postprocessor/processor.awk
@@ -33,6 +33,10 @@ BEGIN {
   }
 }
 
+/<body/ {
+  print "<link rel=\"stylesheet\" href=\"/docs/x.y.z/stylesheets/tabs.css\" />"
+}
+
 !/<span class="comment">/ {
   if (firstMatch || !isHeader) {
     print gensub(/(<b class="conum">)\(([0-9]+)\)(<\/b>)/,

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/844d997f/docs/preprocessor/awk/tabify.awk
----------------------------------------------------------------------
diff --git a/docs/preprocessor/awk/tabify.awk b/docs/preprocessor/awk/tabify.awk
new file mode 100644
index 0000000..bc8d644
--- /dev/null
+++ b/docs/preprocessor/awk/tabify.awk
@@ -0,0 +1,108 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#
+# @author Daniel Kuppitz (http://gremlin.guru)
+#
+function print_tabs(next_id, tabs, blocks) {
+
+  num_tabs = length(tabs)
+  x = next_id
+
+  print "++++"
+  print "<section class=\"tabs tabs-" num_tabs "\">"
+
+  for (i in tabs) {
+    title = tabs[i]
+    print "  <input id=\"tab-" id_part "-" x "\" type=\"radio\" name=\"radio-set-" id_part "-" next_id "\" class=\"tab-selector-" i "\"" (i == 1 ? " checked=\"checked\"" : "") " />"
+    print "  <label for=\"tab-" id_part "-" x "\" class=\"tab-label-" i "\">" title "</label>"
+    x++
+  }
+
+  for (i in blocks) {
+    print "  <div class=\"tabcontent\">"
+    print "    <div class=\"tabcontent-" i "\">"
+    print "++++\n"
+    print blocks[i]
+    print "++++"
+    print "    </div>"
+    print "  </div>"
+  }
+
+  print "</section>"
+  print "++++\n"
+}
+
+BEGIN {
+  id_part=systime()
+  status = 0
+  next_id = 1
+  block[0] = 0 # initialize "blocks" as an array
+  delete blocks[0]
+}
+
+/^\[gremlin-/ {
+  status = 1
+  lang = gensub(/^\[gremlin-([^,\]]+).*/, "\\1", "g", $0)
+  code = ""
+}
+
+/^\[source,/ {
+  if (status == 3) {
+    status = 1
+    lang = gensub(/^\[source,([^\]]+).*/, "\\1", "g", $0)
+    code = ""
+  }
+}
+
+! /^\[source,/ {
+  if (status == 3 && $0 != "") {
+    print_tabs(next_id, tabs, blocks)
+    next_id = next_id + length(tabs)
+    for (i in tabs) {
+      delete tabs[i]
+      delete blocks[i]
+    }
+    status = 0
+  }
+}
+
+/^----$/ {
+  if (status == 1) {
+    status = 2
+  } else if (status == 2) {
+    status = 3
+  }
+}
+
+{ if (status == 3) {
+    if ($0 == "----") {
+      i = length(blocks) + 1
+      if (i == 1) {
+        tabs[i] = "console (" lang ")"
+        blocks[i] = code_header code "\n" $0 "\n"
+        i++
+      }
+      tabs[i] = lang
+      blocks[i] = "[source," lang "]" code "\n" $0 "\n"
+    }
+  } else {
+    if (status == 0) print
+    else if (status == 1) code_header = $0
+    else code = code "\n" $0
+  }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/844d997f/docs/preprocessor/preprocess-file.sh
----------------------------------------------------------------------
diff --git a/docs/preprocessor/preprocess-file.sh b/docs/preprocessor/preprocess-file.sh
index d5076f1..7d3956d 100755
--- a/docs/preprocessor/preprocess-file.sh
+++ b/docs/preprocessor/preprocess-file.sh
@@ -132,6 +132,7 @@ if [ ! ${SKIP} ] && [ $(grep -c '^\[gremlin' ${input}) -gt 0 ]; then
   fi
 
   sed 's/\t/    /g' ${input} |
+  awk -f ${AWK_SCRIPTS}/tabify.awk |
   awk -f ${AWK_SCRIPTS}/prepare.awk |
   awk -f ${AWK_SCRIPTS}/init-code-blocks.awk -v TP_HOME="${TP_HOME}" -v PYTHONPATH="${TP_HOME}/gremlin-python/target/classes/Lib" |
   awk -f ${AWK_SCRIPTS}/progressbar.awk -v tpl=${AWK_SCRIPTS}/progressbar.groovy.template |
@@ -141,8 +142,9 @@ if [ ! ${SKIP} ] && [ $(grep -c '^\[gremlin' ${input}) -gt 0 ]; then
   ${lb} awk -f ${AWK_SCRIPTS}/cleanup.awk  |
   ${lb} awk -f ${AWK_SCRIPTS}/language-variants.awk > ${output}
 
+  # check exit code for each of the previously piped commands
   ps=(${PIPESTATUS[@]})
-  for i in {0..6}; do
+  for i in {0..9}; do
     ec=${ps[i]}
     [ ${ec} -eq 0 ] || break
   done

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/844d997f/docs/sass/compile
----------------------------------------------------------------------
diff --git a/docs/sass/compile b/docs/sass/compile
new file mode 100755
index 0000000..002954e
--- /dev/null
+++ b/docs/sass/compile
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+DIR=`dirname $0`
+
+IF="${DIR}/tabs.scss"
+OF="${DIR}/../stylesheets/tabs.css"
+TF=`mktemp`
+
+scss --sourcemap=none -t compressed -C ${IF} ${OF}
+
+cat ${DIR}/../stylesheets/tinkerpop.css | awk 'BEGIN {p=1} {if (p) print} /\*\// {p=0}' | cat - ${OF} > ${TF} && mv ${TF} ${OF}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/844d997f/docs/sass/tabs.scss
----------------------------------------------------------------------
diff --git a/docs/sass/tabs.scss b/docs/sass/tabs.scss
new file mode 100644
index 0000000..39c88f4
--- /dev/null
+++ b/docs/sass/tabs.scss
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+$blue: #3f6b9d;
+$orange: #e08f24;
+$white: #fefefe;
+$black: #1a1a1a;
+$gray: #eee;
+
+$active: #609060;
+$inactive: #e9ffe9;
+
+$tabHeight: 50px;
+$minTabs: 2;
+$maxTabs: 4;
+
+@mixin single-transition($property:all, $speed:150ms, $ease:ease, $delay: 0s) {
+  -webkit-transition: $property $speed $ease $delay;  
+  transition: $property $speed $ease $delay;
+}
+
+.tabs {
+
+  position: relative;
+  margin: 40px auto;
+  width: 1024px;
+  max-width: 100%;
+  overflow: hidden;
+  padding-top: 10px;
+  margin-bottom: 60px;
+
+  input  {
+    position: absolute;
+    z-index: 1000;
+    height: $tabHeight;
+    left: 0;
+    top: 0;
+    opacity: 0;
+    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+    filter: alpha(opacity=0);
+    cursor: pointer;
+    margin: 0;
+    &:hover + label {
+      background: $orange;
+    }
+  }
+
+  label {
+    background: $inactive;
+    color: $black;
+    font-size: 15px;
+    line-height: $tabHeight;
+    height: $tabHeight + 10;
+    position: relative;
+    top: 0;
+    padding: 0 20px;
+    float: left;
+    display: block;
+    letter-spacing: 1px;
+    text-transform: uppercase;
+    font-weight: bold;
+    text-align: center;
+    box-shadow: 2px 0 2px rgba(0,0,0,0.1), -2px 0 2px rgba(0,0,0,0.1);
+    box-sizing: border-box;
+    @include single-transition();
+    &:hover{
+      cursor: pointer;
+    }
+    &:after {
+      content: '';
+      background: $active;
+      position: absolute;
+      bottom: -2px;
+      left: 0;
+      width: 100%;
+      height: 2px;
+      display: block;
+    }
+  }  
+}
+
+@for $n from $minTabs through $maxTabs {
+
+  .tabs-#{$n} {
+
+    input {
+      width: 100% / $n;
+      @for $i from 1 through $n {
+        &.tab-selector-#{$i}{
+          left: ($i - 1) * (100% / $n);
+        }
+      }
+    }
+
+    label {
+      width: 100% / $n;
+    }
+  }
+}
+
+.tabs label:first-of-type {
+  z-index: 4;
+}
+.tab-label-2 {
+  z-index: 4;
+}
+.tab-label-3 {
+  z-index: 3;
+}
+.tab-label-4 {
+  z-index: 2;
+}
+
+.tabs input:checked + label {
+  background: $active;
+  color: $white;
+  z-index: 6;
+}
+
+.clear-shadow {
+  clear: both;
+}
+
+.tabcontent {
+  height: auto;
+  width: 100%;
+  float: left;
+  position: relative;
+  z-index: 5;
+  background: $gray;
+  top: -10px;
+  box-sizing: border-box;
+  &>div{
+    position: relative;
+    float: left;
+    width: 0;
+    height: 0;
+    box-sizing: border-box;
+    top: 0;
+    left: 0;
+    z-index: 1;
+    opacity: 0;
+    background: $gray;
+  }
+  .CodeRay {
+    background-color: $white;
+  }
+}
+
+@for $i from 1 through $maxTabs {
+  .tabs .tab-selector-#{$i}:checked ~ .tabcontent .tabcontent-#{$i} {
+    z-index: 100;
+    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+    filter: alpha(opacity=100);
+    opacity: 1;
+    width: 100%;
+    height: auto;
+    width: 100%;
+    height: auto;
+    padding-top: 30px;
+  }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/844d997f/docs/stylesheets/tabs.css
----------------------------------------------------------------------
diff --git a/docs/stylesheets/tabs.css b/docs/stylesheets/tabs.css
new file mode 100644
index 0000000..df508b7
--- /dev/null
+++ b/docs/stylesheets/tabs.css
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+.tabs{position:relative;margin:40px auto;width:1024px;max-width:100%;overflow:hidden;padding-top:10px;margin-bottom:60px}.tabs input{position:absolute;z-index:1000;height:50px;left:0;top:0;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);cursor:pointer;margin:0}.tabs input:hover+label{background:#e08f24}.tabs label{background:#e9ffe9;color:#1a1a1a;font-size:15px;line-height:50px;height:60px;position:relative;top:0;padding:0 20px;float:left;display:block;letter-spacing:1px;text-transform:uppercase;font-weight:bold;text-align:center;box-shadow:2px 0 2px rgba(0,0,0,0.1),-2px 0 2px rgba(0,0,0,0.1);box-sizing:border-box;-webkit-transition:all 150ms ease 0s;transition:all 150ms ease 0s}.tabs label:hover{cursor:pointer}.tabs label:after{content:'';background:#609060;position:absolute;bottom:-2px;left:0;width:100%;height:2px;display:block}.tabs-2 input{width:50%}.tabs-2 input.tab-selector-1{left:0%}.tabs-2 input.tab-selector-2{left:50%}.tabs-
 2 label{width:50%}.tabs-3 input{width:33.33333%}.tabs-3 input.tab-selector-1{left:0%}.tabs-3 input.tab-selector-2{left:33.33333%}.tabs-3 input.tab-selector-3{left:66.66667%}.tabs-3 label{width:33.33333%}.tabs-4 input{width:25%}.tabs-4 input.tab-selector-1{left:0%}.tabs-4 input.tab-selector-2{left:25%}.tabs-4 input.tab-selector-3{left:50%}.tabs-4 input.tab-selector-4{left:75%}.tabs-4 label{width:25%}.tabs label:first-of-type{z-index:4}.tab-label-2{z-index:4}.tab-label-3{z-index:3}.tab-label-4{z-index:2}.tabs input:checked+label{background:#609060;color:#fefefe;z-index:6}.clear-shadow{clear:both}.tabcontent{height:auto;width:100%;float:left;position:relative;z-index:5;background:#eee;top:-10px;box-sizing:border-box}.tabcontent>div{position:relative;float:left;width:0;height:0;box-sizing:border-box;top:0;left:0;z-index:1;opacity:0;background:#eee}.tabcontent .CodeRay{background-color:#fefefe}.tabs .tab-selector-1:checked ~ .tabcontent .tabcontent-1{z-index:100;-ms-filter:"progid:DXImag
 eTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1;width:100%;height:auto;width:100%;height:auto;padding-top:30px}.tabs .tab-selector-2:checked ~ .tabcontent .tabcontent-2{z-index:100;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1;width:100%;height:auto;width:100%;height:auto;padding-top:30px}.tabs .tab-selector-3:checked ~ .tabcontent .tabcontent-3{z-index:100;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1;width:100%;height:auto;width:100%;height:auto;padding-top:30px}.tabs .tab-selector-4:checked ~ .tabcontent .tabcontent-4{z-index:100;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1;width:100%;height:auto;width:100%;height:auto;padding-top:30px}