Skip to content

Instantly share code, notes, and snippets.

@enjalot
Last active August 26, 2015 23:35
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 enjalot/a372513ec3227d0da393 to your computer and use it in GitHub Desktop.
Save enjalot/a372513ec3227d0da393 to your computer and use it in GitHub Desktop.
regexplanation

hello markdown

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
</head>
<body>
<svg></svg>
<script>
/*
I originally wrote this in 2011, wish there was http://www.regexr.com/ back then...
*/
var w = 950
var h = 500
wait = 700;
tests = [ "-1.5", "0", "42", "+50.00" , "-.2", ".5" ]
regex = [ "[+-]?", "\\d*", "(\\.\\d+)?", ["([eE]", "[+-]?", "\\d+)?"] ]
numbers = []
numbers.push( [ "", "8", ".31432", ["e", "-", "3"]])
numbers.push( [ "", "6", ".674", ["e", "-", "11"]])
numbers.push( [ "+", "1", "", ["e", "", "100"]])
numbers.push( [ "", "4", ".6692", "" ])
numbers.push( [ "-", "2", ".7182818284", "" ])
numbers.push( [ "-", "3", ".14159265358979", "" ])
numbers.push( [ "", "2", ".5029", "" ])
numbers.push( [ "", "1", ".618", "" ])
numbers.push( [ "", "42", "", "" ])
numbers.push( [ "", "0", "", "" ])
var update_fonts = function()
{
d3.selectAll("text")
.attr("font-family", font)
.attr("font-size", font_size);
}
var fi = 0;
var fonts = ["Courier New", "Verdana", "Fredericka the Great", "Quantico", "Overlock SC"];
var font_size = 30;
var font = fonts[fi];
var range_color = d3.scale.linear()
.domain([0, 3])
.interpolate(d3.interpolateRgb)
.range(['#96b1d5', '#ef2929'])
var colors = [ '#d3d7cf', '#8ae234', '#fce94f']//, '#999'] '#eeeeec', '#ad7fa8', '#8ae234'
var color = function(i)
{
return colors[i]
}
var translate = function(d,i)
{
return "translate(" + [w / 2, 100 + i * 40 ] + ")";
}
var svg = d3.select("svg")
.attr("width", w)
.attr("height", h)
var defs = svg.append("svg:defs")
function make_radial(id, c, f, r, color, opacity)
{
var gradient = defs.append("svg:radialGradient")
.attr("id", id)
.attr("cx", c.x)
.attr("cy", c.y)
.attr("fx", f.x)
.attr("fy", f.y)
.attr("r", r)
gradient.append("svg:stop")
.attr("offset", "0%")
.attr("stop-color", color)
.attr("stop-opacity", opacity)
gradient.append("svg:stop")
.attr("offset", "100%")
.attr("stop-color", color)
.attr("stop-opacity", 1e-6)
}
var wrid = "white_radial";
var gr = .5;
var c = { "x": .5, "y": .5 };
//f = { "x": "50%", "y": "50%" };
make_radial(wrid, c, c, gr, "#fff", .2)
svg.append("rect")
.attr("width", w)
.attr("height", h)
.attr("fill", "#2f2f2f")
/*
svg.append("svg:rect")
.attr("class", "background_rect")
.attr("width", w)
.attr("height", h)
.attr("stroke", "none")
.attr("fill", "url(#" + wrid + ")")
.attr("fill-opacity", .3)
*/
var vis = svg.append("svg:g")
.attr("class", "vis")
var make_inner = function(d,i) {
if(typeof(d) === "string")
{
d3.select(this).text(d);
}
else
{
d3.select(this.parentNode)
.selectAll("tspan.inner")
.data(d)
.enter()
.append("svg:tspan")
.text(function(e,j){return e;})
.attr("fill", function(e,j) {return range_color(j)})
.attr("dx", ".25em")
}
}
var regext = vis.append("text")
.attr("transform", "translate(" + [w / 2, 50] + ")")
.attr("text-anchor", "middle")
.selectAll("tspan.regex")
.data(regex)
.enter()
.append("svg:tspan")
.attr("class", "regex")
.each(make_inner)
.attr("fill", function(d,i) {return color(i)})
.attr("dx", ".25em")
var make_numbers = function(classname, data)
{
//console.log("data", data)
gnums = vis.selectAll("g."+classname)
.data(data)
.enter()
.append("g")
.attr("class", classname)
//.attr("transform", "translate(100, 100)")
.attr("transform", translate)
cnums = gnums.append("text")
.attr("text-anchor", "middle")
.each(function(dnumber,i) {
//console.log("dnumber", dnumber)
d3.select(this)
.selectAll("tspan")
.data(dnumber)
.enter()
.append("tspan")
.each(make_inner)
.attr("fill", function(d,i) {
//console.log("color",i, color(i));
return color(i)
})
.attr("dx", ".25em")
})
update_fonts();
}
make_numbers("numbers", numbers);
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment