diff --git a/assets/js/multicodetab.js b/assets/js/multicodetab.js index 38db414ffb..9a8b9436e0 100644 --- a/assets/js/multicodetab.js +++ b/assets/js/multicodetab.js @@ -47,31 +47,74 @@ all copies or substantial portions of the Software. */ jQuery.fn.minitabs = function(speed,effect) { - this.each(function() { - var id = "#" + $(this).attr('id') + + function saveToLocal(lang){ + console.log("saving language > " + lang); + window.localStorage.setItem('user-preferred-devlanguage', lang); + } + + function showSelectedTabFromSaved(id){ + // get any data from local stores. + $savedValue = window.localStorage.getItem('user-preferred-devlanguage'); + // show all tabs if value present + if($savedValue !== null) { + showSlectedTab($savedValue); + }else { $(id + ">DIV:gt(0)").hide(); $(id + ">UL>LI>A:first").addClass("current"); + } + } + + function showSlectedTab(lang) { + // Hide all. + // Tab heads + $(".multicode>UL>LI>A").removeClass("current"); + // Tab contents + $(".multicode>DIV").hide(speed); + + $(this).blur(); + //show selcted. + $(".multicode>UL>LI>."+lang).addClass("current"); + $(".multicode>DIV."+lang).show(speed); + + // TODO: Only add/remove on samples that DO contain that value. + // Example + // if javascript is lang. + // only add current if the UL has javascript in the tabs. + // Otherwise this will hide all tabs and not show anything. + + // save in localstorage. + saveToLocal(lang); + } + + this.each(function() { + var id = "#" + $(this).attr('id') + //Use saved value or set to first tab + showSelectedTabFromSaved(id); + + //Add click on each tab $(id + ">UL>LI>A").click( function(){ - $(id + ">UL>LI>A").removeClass("current"); - $(this).addClass("current"); - $(this).blur(); - var re = /([_\-\w]+$)/i; - var target = $('#' + re.exec(this.href)[1]); - var old = $(id + ">DIV"); - switch (effect) { - case 'fade': - old.fadeOut(speed).fadeOut(speed); - target.fadeIn(speed); - break; - case 'slide': - old.slideUp(speed); - target.fadeOut(speed).fadeIn(speed); - break; - default : - old.hide(speed); - target.show(speed) - } + showSlectedTab($(this).attr('class')) + + //Old + + // var re = /([_\-\w]+$)/i; + // var target = $('#' + re.exec(this.href)[1]); + // var old = $(id + ">DIV"); + // switch (effect) { + // case 'fade': + // old.fadeOut(speed).fadeOut(speed); + // target.fadeIn(speed); + // break; + // case 'slide': + // old.slideUp(speed); + // target.fadeOut(speed).fadeIn(speed); + // break; + // default : + // old.hide(speed); + // target.show(speed) + // } return false; } ); diff --git a/tool/filter_multicode_tabs.py b/tool/filter_multicode_tabs.py new file mode 100644 index 0000000000..a98d5992eb --- /dev/null +++ b/tool/filter_multicode_tabs.py @@ -0,0 +1,77 @@ +################################################################################ +## Multicode Tabs 2 filter ## +## Author: Rome Reginelli ## +## Copyright: Ripple Labs, Inc. 2016 ## +## ## +## Finds multicode tab sections and turns them into properly-formatted ## +## HTML syntax to use with minitabs jQuery ## +################################################################################ +import re +import logging + +MC_START_REGEX = re.compile(r"") +MC_END_REGEX = re.compile(r"") + +def filter_html(html, mode="html", **kwargs): + """ + Turn multicode comments into a div (after markdown inside is parsed). You + can use this div for styling even in PDF format. Doesn't apply to Markdown + since most parsers won't parse markdown inside HTML blocks. + """ + + if mode == "md": + return html + + html = re.sub(MC_START_REGEX, "