Skip to content

Instantly share code, notes, and snippets.

@andrewdblevins
Last active September 13, 2017 01:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewdblevins/8328c3dc9fb2a1b55a708f83e90c7e79 to your computer and use it in GitHub Desktop.
Save andrewdblevins/8328c3dc9fb2a1b55a708f83e90c7e79 to your computer and use it in GitHub Desktop.
Robert Hooke's letter
license: mit
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-shape.v1.min.js"></script>
<script src="wilkinssymbol.js"></script>
<script src="wilkinspronounce.js"></script>
<style>
body { margin:0;top:0;right:0;bottom:0;left:0; }
.node text { font: 12px sans-serif; }
.node--internal text {
text-shadow: 0 1px 0 #fff, 0 -1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff;
}
.link {
fill: none;
stroke: #111;
stroke-width: 1px;
opacity:.2;
}
.animatedsymb {
stroke:black;
stroke-linecap:round;
stroke-width: 6px;
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: dash 10s linear forwards;
}
@keyframes dash {
to {
stroke-dashoffset: 0;
}
}
</style>
</head>
<body>
<h3><b> The Lord's Prayer </b></h3>
<p>
</body>
<script>
var prayer = ['our', 'econ-1-2', 'who', 'is', 'in', 'world-2', 'your', 'transgen-1-4', 'may', 'eccles-5-1','your', 'civil-1-2', 'may', 'transact-6-1','your','power-1-4','transact-3-6','so','in','world-2-7','as','world-2', 'may','transact-4-4','to','us','in','this','measure-5-5','our','provis-1-2', 'transgen-5-7','and','may','judicial-2-9','to','us','our','transgen-3-2','as','we','are','judicial-2-9','to','them','who','have','transgen-3-2','against','us','and','not','transact-6-5','us','into','transgen-2-5','but','spiritact-1-5', 'us','from','transgen-3-2','for','the','civil-1-2', 'and','the','habit-2-5','and','the','habit-2-2','is','your','space-1-9'];
// set the dimensions and margins of the diagram
var margin = {top: 20, right: 90, bottom: 30, left: 90},
width = 960 - margin.left - margin.right,
height = 960 - margin.top - margin.bottom;
// append the svg object to the body of the page
// appends a 'group' element to 'svg'
// moves the 'group' element to the top left margin
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom),
g = svg.append("g").attr("transform", "translate(" + (width / 2 + 80) + "," + (height / 2 + 20)+")");
var symb = svg.selectAll('.symb')
.data(prayer)
.enter().append('path')
.attr('transform', function(d, i) {
return 'translate(' + (60 + (i % 10 * 80)) + ',' + 80 * Math.ceil((i + 1) / 10) + ')';
})
.attr('d', function(d) {
return WilkinsSymbol(d, 1000);
})
.attr('fill', 'transparent')
.attr('class', 'animatedsymb');
</script>
var GeneraCV = d3.map({
'transgen': 'B\u{0003b1}',
'transrel': 'Ba',
'transact': 'Be',
'discourse':'Bi',
'god':'D\u{0003b1}',
'world': 'Da',
'element': 'De',
'stone': 'Di',
'metal': 'Do',
'leaf': 'G\u{0003b1}',
'flower': 'Ga',
'seed': 'Ge',
'shrub':'Gi',
'tree':'Go',
'exsanguious': 'Z\u{0003b1}',
'fish': 'Za',
'bird': 'Ze',
'beast': 'Zi',
'partspec': 'P\u{0003b1}',
'partgen':'Pa',
'magnitude':'Pe',
'space':'Pi',
'measure':'Po',
'power':'T\u{0003b1}',
'habit':'Ta',
'manner':'Te',
'sensible':'Ti',
'disease':'To',
'spiritact':'C\u{0003b1}',
'corporact':'Ca',
'motionact':'Ce',
'operationact':'Ci',
'econ':'Co',
'posses':'C\u{000223}',
'provis':'S\u{0003b1}',
'civil':'Sa',
'judicial':'Se',
'military':'Si',
'naval':'So',
'eccles':'S\u{000223}',
});
var DifferenceC = d3.map({
'1': 'b',
'2': 'd',
'3': 'g',
'4': 'p',
'5': 't',
'6': 'c',
'7': 'z',
'8': 's',
'9': 'z',
'0': ''
});
var SpeciesV = d3.map({
'1': '\u{0003b1}',
'2': 'a',
'3': 'e',
'4': 'i',
'5': 'o',
'6': '\u{000223}',
'7': 'y',
'8': 'yi',
'9': 'y\u{000223}',
'0': ''
});
function pronounce(symboltype) {
var genera = symboltype.split("-")[0];
var diff = symboltype.split("-")[1];
if (diff == null){
diff = '0';
}
var spec = symboltype.split("-")[2];
if (spec == null){
spec = '0';
}
try{
var g = GeneraCV.get(genera)
var d = DifferenceC.get(diff)
var s = SpeciesV.get(spec);
if(spec>18){
g = g.slice(0,1) +"r"+ g.slice(1)
s = SpeciesV.get(spec - 18);
}
else if (spec>9){
g = g.slice(0,1) +"l"+ g.slice(1)
s = SpeciesV.get(spec - 9);
}
return g+d+s;
}
catch (e) {
return ""
}
}
var GeneraSymbol = d3.map({
'transgen': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size / 3) + ',' + 0 +
'l' + (size / 3) + ',' + -size / 2 +
'l' + (size / 3) + ',' + size / 2 +
'l' + (2 * size / 3) + ',' + 0;
},
'transrel': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size ) + ',' + 0 +
'l' + (2 * size / 3) + ',' + 0 +
'l' + (size / 3) + ',' + size / 2 +
'l' + (size / 3) + ',' + -size / 2 +
'l' + (2 * size / 3) + ',' + 0;
},
'transact': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size / 3) + ',' + 0 +
'A' + size / 3 + ',' + size / 3 + ',1,1,1' + size / 3 + ',' + 0 +
'l' + (2 * size / 3) + ',' + 0;
},
'discourse': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size / 3) + ',' + 0 +
'A' + size / 3 + ',' + size / 3 + ',1,1,0' + size / 3 + ',' + 0 +
'l' + (2 * size / 3) + ',' + 0;
},
'god': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (size * 2) + ',' + 0;
},
'world': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + size / 2 +
'l' + 0 + ',' + -size;
},
'element': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + -size / 2;
},
'stone': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + size / 2;
},
'metal': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + -pad + ',' + -size / 2 +
'l' + pad * 2 + ',' + size;
},
'leaf': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + -pad + ',' + -size / 2;
},
'flower': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + pad + ',' + size / 2;
},
'seed': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + pad + ',' + -size / 2;
},
'tree': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + pad + ',' + -size / 2 +
'l' + -pad * 2 + ',' + size;
},
'shrub': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + -pad + ',' + size / 2;
},
'fish': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + size / 2 +
'l' + size / 6 + ',' + -size / 4 + '';
},
'exsanguious': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + -size / 2 +
'l' + -size / 6 + ',' + size / 4 + '';
},
'beast': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + size / 2 +
'l' + size / 6 + ',' + 0 + '';
},
'bird': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + -size / 2 +
'l' + -size / 6 + ',' + 0 + '';
},
'partspec': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + size/2 +
'l' + 0 + ',' + -size +
'l' + -size / 6 + ',' + size / 4 + '';
},
'partgen': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + -size / 2 +
'l' + 0 + ',' + size +
'l' + size / 6 + ',' + -size/4 + '';
},
'magnitude': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + (-size / 3) +
'a'+size/5+' '+size/5+' 0 1 0 ' + (-size/5 * 2) +' '+ 0 +'';
},
'space': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + 0 +
'l' + 0 + ',' + (size / 3) +
'a'+size/5+' '+size/5+' 0 1 0 ' + (size/5 * 2) +' '+ 0 +'';
},
'measure': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + 0 + ',' + (size/3) +
'l' + 0 + ',' + (-size / 3 * 2) +
'a'+size/5+' '+size/5+' 0 1 0 ' + (-size/5 * 2) +' '+ 0 +'';
},
'power': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + -size/4*.707 + ',' + (-size/4 + -size/4*.707) +
'a' + (size/4) +' '+ (size/4)+' 0 1 0 ' + (size/4*1.414) +' '+ 0 +'';
},
'habit': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M' + -size/4*.707 + ',' + (size/4 + size/4*.707) +
'a' + (size/4) +' '+ (size/4)+' 0 1 1 ' + (size/4*1.414) +' '+ 0 +'';
},
'manner': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + -size/4 +' '+ 0+
' C '+-size/2+' '+-size/2+ ' '+size/2 +' '+ -size/2+ ' '+size/4 +' '+ 0;
},
'sensible': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + -size/4 +' '+ 0+
' C '+-size/2+' '+size/2+ ' '+size/2 +' '+ size/2+ ' '+size/4 +' '+ 0;
},
'disease': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + -size/4 +' '+ 0+
' C '+-size/2+' '+size/2+ ' '+size/2 +' '+ size/2+ ' '+size/4 +' '+ 0+
'M ' + -size/4 +' '+ 0+
' C '+-size/2+' '+-size/2+ ' '+size/2 +' '+ -size/2+ ' '+size/4 +' '+ 0;
},
'spiritact': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + 0 +' '+ 0+
' A '+size/4+' '+size/4+ ' 0 1 0 '+-size/6 +' '+ -size/3;
},
'corporact': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + 0 +' '+ 0+
' A '+size/4+' '+size/4+ ' 0 1 0 '+size/6 +' '+ size/3;
},
'motionact': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + 0 +' '+ 0+
' A '+size/4+' '+size/4+ ' 0 1 1 '+size/6 +' '+ -size/3;
},
'operationact': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + 0 +' '+ 0+
' A '+size/4+' '+size/4+ ' 0 1 1 '+-size/6 +' '+ size/3;
},
'econ': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + -size/6 +' '+ -size/3+
' A '+size/4+' '+size/4+ ' 0 1 1 0 0'+
' A '+size/4+' '+size/4+ ' 0 1 1 '+-size/6 +' '+ size/3;
},
'posses': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + size/6 +' '+ -size/3+
' A '+size/4+' '+size/4+ ' 0 1 0 0 0'+
' A '+size/4+' '+size/4+ ' 0 1 0 '+size/6 +' '+ size/3;
},
'provis': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + -size/6 +' '+ -size/3+
' A '+size/4+' '+size/4+ ' 0 1 1 0 0'+
' A '+size/4+' '+size/4+ ' 0 1 0 '+size/6 +' '+ size/3;
},
'civil': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + size/6 +' '+ -size/3+
' A '+size/4+' '+size/4+ ' 0 1 0 0 0'+
' A '+size/4+' '+size/4+ ' 0 1 1 '+-size/6 +' '+ size/3;
},
'judicial': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + 0 +' '+ 0+
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ -size/2 +' '+
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ 0;
},
'military': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'l' + (2 * size) + ',' + 0 + '' +
'M ' + 0 +' '+ 0+
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ size/2 +' '+
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ 0;
},
'naval': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'L' + -size/3 + ',' + 0 +
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ -size/2 +' '+
' A '+size/4+' '+size/4+' 0 1 0 '+size/3+' '+ 0 +
'L' + size + ' ' + 0;
},
'eccles': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
'L' + -size/3 + ',' + 0 +
' A '+size/4+' '+size/4+' 0 1 1 '+0+' '+ size/2 +' '+
' A '+size/4+' '+size/4+' 0 1 1 '+size/3+' '+ 0 +
'L' + size + ' ' + 0;
},
});
var DifferenceSymbol = d3.map({
'1': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
' l' + (size / 2) + ',' + (-size / 2) + '';
},
'2': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
' l' + 0 + ',' + (-size / 2) + '';
},
'3': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
' l' + (-size / 2) + ',' + (-size / 2) + '';
},
'4': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
' l' + (-size / 2) + ',' + (size / 2) + '';
},
'5': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
' l' + 0 + ',' + (size / 2) + '';
},
'6': function(size) {
size = Math.sqrt(size);
var r = size / 8;
return 'M' + (-size) + ',' + 0 +
' l' + (size / 2) + ',' + (size / 2) + '';
},
'7': function(size) {
size = Math.sqrt(size);
var r = size / 8;
return 'M' + (-size/2) + ',' + (-size / 2) +
' l' + (-size) + ',' + (size) + '';
},
'8': function(size) {
size = Math.sqrt(size);
var r = size / 8;
return 'M' + (-size) + ',' + (-size/2) +
' l' + 0 + ',' + (size) + '';
},
'9': function(size) {
size = Math.sqrt(size);
var r = size / 8;
return 'M' + (-3 * size/2) + ',' + (-size/2) +
' l' + (size) + ',' + (size) + '';
}, '0': function(size) {
return '';
}
});
var SpeciesSymbol = d3.map({
'1': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + 0 +
' l' + (-size / 2) + ',' + (-size / 2) + '';
},
'2': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + 0 +
' l' + 0 + ',' + (-size / 2) + '';
},
'3': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + 0 +
' l' + (size / 2) + ',' + (-size / 2) + '';
},
'4': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + 0 +
' l' + (size / 2) + ',' + (size / 2) + '';
},
'5': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + 0 +
' l' + 0 + ',' + (size / 2) + '';
},
'6': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + 0 +
' l' + (-size / 2) + ',' + (size / 2) + '';
},
'7': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size/2) + ',' + (-size/2) +
' l' + (size) + ',' + (size) + '';
},
'8': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (size) + ',' + (-size/2) +
' l' + 0 + ',' + (size) + '';
},
'9': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return 'M' + (3*size/2) + ',' + (-size/2) +
' l' + (-size) + ',' + (size) + '';
},
'0': function(size) {
size = Math.sqrt(size);
var pad = size / 5;
var r = size / 8;
return '';
}
});
function WilkinsSymbol(type, size) {
size = size || 64;
var symboltype = type.split('-');
var genera = symboltype[0];
var diff = symboltype[1];
if (diff == null){
diff = '0';
}
var spec = symboltype[2];
if (spec == null){
spec = '0';
}
try{
var constructed_symbol = GeneraSymbol.get(genera)(size) +
DifferenceSymbol.get(diff)(size) +
SpeciesSymbol.get(spec)(size);
return constructed_symbol;
}
catch (e) {
return ""
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment