Skip to content

Instantly share code, notes, and snippets.

@christianp
Last active August 29, 2015 13:57
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 christianp/781fd39754ade9429e7a to your computer and use it in GitHub Desktop.
Save christianp/781fd39754ade9429e7a to your computer and use it in GitHub Desktop.
Everyone's a mathematician. Go to chrome://extensions and drag this file onto the page.
javascript:(function(){function textNodesUnder(el){ var n, a=[], walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false); while(true) { n=walk.nextNode(); if(n) { a.push(n); } else { break; } } return a; } var nodes=textNodesUnder(document.body); var lowercase = "a-záàăắằẵẳa̧á̧à̧â̧ǎ̧âấầẫẩa̭ǎa̐a̓a̋åǻå̂ää́ä̀ä̂ä̌ǟãã́ã̀a̰ȧȧ́ǡąą́ą̀ą̂ą̌ą̄ą̄́ą̄̀ą̄̂ą̄̌ā̊ą̊ą̃ą̈ą̈̀ą̈̂ą̈̌āā́ā̀ā̂ā̌ā̆a̱á̱à̱â̱ä̱ā̱å̱ảȁȃạạ́ạ̀ặậạ̄ạ̈ạ̃ḁⱥa̍ɑ́ɑ̀ɑ̂ɑ̌b́b̓ḃḅḇƀb̃ɓƃb̤ćc̀ĉc̆čč̓c̓c̈ċc̣çḉç̆ç̌ç̇c̄c̃ȼꞓƈꜿd́ďḑd̂ḓd̓d̦ḋḍḓḏd̤đɖɗƌéèĕěêếềễểëë́ë̀ë̂ë̌e̋ȅẽẽ́ẽ̀ẽ̂ẽ̌ẽ̍ėė́ė̃ȩȩ́ḝȩ̀ȩ̌ȩ̂ęę́ę̀ę̂ę̌ę̄ę̄́ę̄̀ę̄̂ę̄̌ę̃ę̈ę̈̀ę̈̂ę̈̌ę̇́ę̋ę̇ę̣ēḗē̆ḕē̂ē̌ẻȅȇe̍ȩḝẹệẹ́ẹ̀ẹ̄ḙe̱é̱è̱ê̱ē̱ë̱ḛe̊ɇf́f̀ḟf̄f̧ƒf̣ꝼ́ꝼ̇ꝼ̣ǵg̀ğĝǧġg̣ģḡg̈g̤g̃ꞡǥɠɣ̓h́ĥȟḧh̤h̄ḣh̐h̓ḣḩḥḫẖħɦⱨꜧíìĭîî́ǐïḯĩĩ́ĩ̀ĩ̂ĩ̌ĩ̍iıįį́į̀į̂į̌į̃īī́ī̀ī̂ī̌ỉȉȋi̋ȉi̍i̐i̓i̧í̧ì̧î̧i̱í̱ì̱î̱ī̱ịị́ị̂ị̃ḭɨɨ́ɨ̀ɨ̂ɨ̌ɨ̃ɨ̄ɨ̧ɨ̧̀ɨ̧̂ɨ̧̌ɩ́ɩ̀ɩ̃j́ĵǰj̄j̃j̣ɉḱk̀ǩk̄k̇ķḳḵƙⱪꝁꝃꝅꞣĺl̂l̐l̃l̓ľļl̦ḷḹḷ́ḷ̓ḽḻłꝉƚⱡɫḿm̀ṁṃm̍m̄m̐m̃m̈m̓m̧m̨ṃṃ́ṃ̓m̦ɱńǹn̂ňññ̈ṅn̍n̄n̐n̈ꞥņṋn̦ṇṇ́ṇ̓ṉn̰n̲ɲƞꞑóòŏôốồỗổǒo̐öö́ö̀ȫőõṍṏȭȯȱøǿø̀ø̂ø̌ø̄ɵꝋǫǭǭ̀ǫ́ǫ̀ǫ̂ǫ̌ōṓṑō̂ō̌ỏőȍȏơớờỡởo̍ọọ́ọ̀ộọ̄ợộo̭o̧ó̧ò̧ô̧ǒ̧o̱ó̱ò̱ô̱ō̱ö̱o̲ꝍꝋɔ́ɔ̀ɔ̂ɔ̌ɔ̄ɔ̃ɔ̃́ɔ̃̀ɔ̃̂ɔ̃̌ɔ̃̍ɔ̈ɔ̍ɔ̧ɔ̧́ɔ̧̀ɔ̧̂ɔ̧̌ɔ̱ṕp̀ṗp̣p̄p̓p̈p̤p̄ᵽꝑƥꝓꝕq̓q̇ꝗꝙɋŕřr̂r̓r̦ṙŗr̄ꞧȑȓṛṝr̰ṟr̥r̥̄r̃ɍɽśṥŝšṧṡşꞩṣṩșᵴȿťẗṫţṭțṱṯŧⱦƭʈúùŭûǔůüǘǜǚǖűũṹųūṻủȕȗưứừữửựụṳṷṵʉṽṿꝟʋẃẁŵẘẅẇẉⱳẍẋýỳŷẙÿỹẏȳỷỵɏƴỿźẑžżẓẕƶȥɀⱬǯꝥꝧꜯ"; var uppercase = "A-ZÁÀĂẮẰẴẲA̧Á̧À̧Â̧Ǎ̧ÂẤẦẪẨA̭ǍA̐A̓A̋ÅǺÅ̂ÄÄ́Ä̀Ä̂Ä̌ǞÃÃ́Ã̀A̰ȦȦ́ǠĄĄ́Ą̀Ą̂Ą̌Ą̄Ą̄́Ą̄̀Ą̄̂Ą̄̌Ā̊Ą̊Ą̃Ą̈Ą̈̀Ą̈̂Ą̈̌ĀĀ́Ā̀Ā̂Ā̌Ā̆A̱Á̱À̱Â̱Ä̱Ā̱Å̱ẢȀȂẠẠ́Ạ̀ẶẬẠ̄Ạ̈Ạ̃ḀȺA̍Ɑ́Ɑ̀Ɑ̂Ɑ̌B́B̓ḂḄḆɃB̃ƁƂB̤ĆC̀ĈC̆ČČ̓C̓C̈ĊC̣ÇḈÇ̆Ç̌Ç̇C̄C̃ȻꞒƇꜾD́ĎḐD̂ḒD̓D̦ḊḌḒḎD̤ĐƉƊƋÉÈĔĚÊẾỀỄỂËË́Ë̀Ë̂Ë̌E̋ȄẼẼ́Ẽ̀Ẽ̂Ẽ̌Ẽ̍ĖĖ́Ė̃ȨȨ́ḜȨ̀Ȩ̌Ȩ̂ĘĘ́Ę̀Ę̂Ę̌Ę̄Ę̄́Ę̄̀Ę̄̂Ę̄̌Ę̃Ę̈Ę̈̀Ę̈̂Ę̈̌Ę̇́Ę̋Ę̇Ę̣ĒḖĒ̆ḔĒ̂Ē̌ẺȄȆE̍ȨḜẸỆẸ́Ẹ̀Ẹ̄ḘE̱É̱È̱Ê̱Ē̱Ë̱ḚE̊ɆF́F̀ḞF̄F̧ƑF̣Ꝼ́Ꝼ̇Ꝼ̣ǴG̀ĞĜǦĠG̣ĢḠG̈G̤G̃ꞠǤƓƔ̓H́ĤȞḦH̤H̄ḢH̐H̓ḢḨḤḪH̱ĦꞪⱧꜦÍÌĬÎÎ́ǏÏḮĨĨ́Ĩ̀Ĩ̂Ĩ̌Ĩ̍İIĮĮ́Į̀Į̂Į̌Į̃ĪĪ́Ī̀Ī̂Ī̌ỈȈȊI̋ȈI̍I̐I̓I̧Í̧Ì̧Î̧I̱Í̱Ì̱Î̱Ī̱ỊỊ́Ị̂Ị̃ḬƗƗ́Ɨ̀Ɨ̂Ɨ̌Ɨ̃Ɨ̄Ɨ̧Ɨ̧̀Ɨ̧̂Ɨ̧̌Ɩ́Ɩ̀Ɩ̃J́ĴJ̌J̄J̃J̣ɈḰK̀ǨK̄K̇ĶḲḴƘⱩꝀꝂꝄꞢĹL̂L̐L̃L̓ĽĻL̦ḶḸḶ́Ḷ̓ḼḺŁꝈȽⱠⱢḾM̀ṀṂM̍M̄M̐M̃M̈M̓M̧M̨ṂṂ́Ṃ̓M̦ⱮŃǸN̂ŇÑÑ̈ṄN̍N̄N̐N̈ꞤŅṊN̦ṆṆ́Ṇ̓ṈN̰N̲ƝȠꞐÓÒŎÔỐỒỖỔǑO̐ÖÖ́Ö̀ȪŐÕṌṎȬȮȰØǾØ̀Ø̂Ø̌Ø̄ƟꝊǪǬǬ̀Ǫ́Ǫ̀Ǫ̂Ǫ̌ŌṒṐŌ̂Ō̌ỎŐȌȎƠỚỜỠỞO̍ỌỌ́Ọ̀ỘỌ̄ỢỘO̭O̧Ó̧Ò̧Ô̧Ǒ̧O̱Ó̱Ò̱Ô̱Ō̱Ö̱O̲ꝌꝊƆ́Ɔ̀Ɔ̂Ɔ̌Ɔ̄Ɔ̃Ɔ̃́Ɔ̃̀Ɔ̃̂Ɔ̃̌Ɔ̃̍Ɔ̈Ɔ̍Ɔ̧Ɔ̧́Ɔ̧̀Ɔ̧̂Ɔ̧̌Ɔ̱ṔP̀ṖP̣P̄P̓P̈P̤P̄ⱣꝐƤꝒꝔQ̓Q̇ꝖꝘɊŔŘR̂R̓R̦ṘŖR̄ꞦȐȒṚṜR̰ṞR̥R̥̄R̃ɌⱤŚṤŜŠṦṠŞꞨṢṨȘẞⱾŤT̈ṪŢṬȚṰṮŦȾƬƮÚÙŬÛǓŮÜǗǛǙǕŰŨṸŲŪṺỦȔȖƯỨỪỮỬỰỤṲṶṴɄṼṾꝞƲẂẀŴW̊ẄẆẈⱲẌẊÝỲŶY̊ŸỸẎȲỶỴɎƳỾŹẐŽŻẒẔƵȤⱿⱫǮꝤꝦꜮ"; var one_name = '['+uppercase+']['+lowercase+']+\\.?'; var re_name = new RegExp('((?:(?:'+one_name+'(?:-'+one_name+')*|(?:['+uppercase+']\\.)+)(?: (?:(?:['+uppercase+']\\.)+|'+one_name+'(?:-'+one_name+')*))* (?:(?:of|de|du|von|van|ibn) |(?:ibn )?al-|el-|d\')?'+one_name+'(?:-'+one_name+')*)|Euclid|Archimedes|Pythagoras|Brahmagupta|Eudoxus|Fibonacci|Aryabhata|Apollonius|Diophantus|Bháscara|Hipparchus|Archytus|Panini|Aristotle|Pappus|Hippocrates|Thales)','g'); Array.prototype.map.call(nodes,function(n){ n.textContent = n.textContent.replace(re_name,'Mathematician $1');}); })()
// ==UserScript==
// @name Everyone is a mathematician
// @description Everyone's a mathematician, so give them their due
// @match http*://*/*
// @grant none
// ==/UserScript==
function textNodesUnder(el){
var n, a=[], walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false);
while(true) {
n=walk.nextNode();
if(n) {
a.push(n);
} else {
break;
}
}
return a;
}
var nodes=textNodesUnder(document.body);
var lowercase = "a-záàăắằẵẳa̧á̧à̧â̧ǎ̧âấầẫẩa̭ǎa̐a̓a̋åǻå̂ää́ä̀ä̂ä̌ǟãã́ã̀a̰ȧȧ́ǡąą́ą̀ą̂ą̌ą̄ą̄́ą̄̀ą̄̂ą̄̌ā̊ą̊ą̃ą̈ą̈̀ą̈̂ą̈̌āā́ā̀ā̂ā̌ā̆a̱á̱à̱â̱ä̱ā̱å̱ảȁȃạạ́ạ̀ặậạ̄ạ̈ạ̃ḁⱥa̍ɑ́ɑ̀ɑ̂ɑ̌b́b̓ḃḅḇƀb̃ɓƃb̤ćc̀ĉc̆čč̓c̓c̈ċc̣çḉç̆ç̌ç̇c̄c̃ȼꞓƈꜿd́ďḑd̂ḓd̓d̦ḋḍḓḏd̤đɖɗƌéèĕěêếềễểëë́ë̀ë̂ë̌e̋ȅẽẽ́ẽ̀ẽ̂ẽ̌ẽ̍ėė́ė̃ȩȩ́ḝȩ̀ȩ̌ȩ̂ęę́ę̀ę̂ę̌ę̄ę̄́ę̄̀ę̄̂ę̄̌ę̃ę̈ę̈̀ę̈̂ę̈̌ę̇́ę̋ę̇ę̣ēḗē̆ḕē̂ē̌ẻȅȇe̍ȩḝẹệẹ́ẹ̀ẹ̄ḙe̱é̱è̱ê̱ē̱ë̱ḛe̊ɇf́f̀ḟf̄f̧ƒf̣ꝼ́ꝼ̇ꝼ̣ǵg̀ğĝǧġg̣ģḡg̈g̤g̃ꞡǥɠɣ̓h́ĥȟḧh̤h̄ḣh̐h̓ḣḩḥḫẖħɦⱨꜧíìĭîî́ǐïḯĩĩ́ĩ̀ĩ̂ĩ̌ĩ̍iıįį́į̀į̂į̌į̃īī́ī̀ī̂ī̌ỉȉȋi̋ȉi̍i̐i̓i̧í̧ì̧î̧i̱í̱ì̱î̱ī̱ịị́ị̂ị̃ḭɨɨ́ɨ̀ɨ̂ɨ̌ɨ̃ɨ̄ɨ̧ɨ̧̀ɨ̧̂ɨ̧̌ɩ́ɩ̀ɩ̃j́ĵǰj̄j̃j̣ɉḱk̀ǩk̄k̇ķḳḵƙⱪꝁꝃꝅꞣĺl̂l̐l̃l̓ľļl̦ḷḹḷ́ḷ̓ḽḻłꝉƚⱡɫḿm̀ṁṃm̍m̄m̐m̃m̈m̓m̧m̨ṃṃ́ṃ̓m̦ɱńǹn̂ňññ̈ṅn̍n̄n̐n̈ꞥņṋn̦ṇṇ́ṇ̓ṉn̰n̲ɲƞꞑóòŏôốồỗổǒo̐öö́ö̀ȫőõṍṏȭȯȱøǿø̀ø̂ø̌ø̄ɵꝋǫǭǭ̀ǫ́ǫ̀ǫ̂ǫ̌ōṓṑō̂ō̌ỏőȍȏơớờỡởo̍ọọ́ọ̀ộọ̄ợộo̭o̧ó̧ò̧ô̧ǒ̧o̱ó̱ò̱ô̱ō̱ö̱o̲ꝍꝋɔ́ɔ̀ɔ̂ɔ̌ɔ̄ɔ̃ɔ̃́ɔ̃̀ɔ̃̂ɔ̃̌ɔ̃̍ɔ̈ɔ̍ɔ̧ɔ̧́ɔ̧̀ɔ̧̂ɔ̧̌ɔ̱ṕp̀ṗp̣p̄p̓p̈p̤p̄ᵽꝑƥꝓꝕq̓q̇ꝗꝙɋŕřr̂r̓r̦ṙŗr̄ꞧȑȓṛṝr̰ṟr̥r̥̄r̃ɍɽśṥŝšṧṡşꞩṣṩșᵴȿťẗṫţṭțṱṯŧⱦƭʈúùŭûǔůüǘǜǚǖűũṹųūṻủȕȗưứừữửựụṳṷṵʉṽṿꝟʋẃẁŵẘẅẇẉⱳẍẋýỳŷẙÿỹẏȳỷỵɏƴỿźẑžżẓẕƶȥɀⱬǯꝥꝧꜯ";
var uppercase = "A-ZÁÀĂẮẰẴẲA̧Á̧À̧Â̧Ǎ̧ÂẤẦẪẨA̭ǍA̐A̓A̋ÅǺÅ̂ÄÄ́Ä̀Ä̂Ä̌ǞÃÃ́Ã̀A̰ȦȦ́ǠĄĄ́Ą̀Ą̂Ą̌Ą̄Ą̄́Ą̄̀Ą̄̂Ą̄̌Ā̊Ą̊Ą̃Ą̈Ą̈̀Ą̈̂Ą̈̌ĀĀ́Ā̀Ā̂Ā̌Ā̆A̱Á̱À̱Â̱Ä̱Ā̱Å̱ẢȀȂẠẠ́Ạ̀ẶẬẠ̄Ạ̈Ạ̃ḀȺA̍Ɑ́Ɑ̀Ɑ̂Ɑ̌B́B̓ḂḄḆɃB̃ƁƂB̤ĆC̀ĈC̆ČČ̓C̓C̈ĊC̣ÇḈÇ̆Ç̌Ç̇C̄C̃ȻꞒƇꜾD́ĎḐD̂ḒD̓D̦ḊḌḒḎD̤ĐƉƊƋÉÈĔĚÊẾỀỄỂËË́Ë̀Ë̂Ë̌E̋ȄẼẼ́Ẽ̀Ẽ̂Ẽ̌Ẽ̍ĖĖ́Ė̃ȨȨ́ḜȨ̀Ȩ̌Ȩ̂ĘĘ́Ę̀Ę̂Ę̌Ę̄Ę̄́Ę̄̀Ę̄̂Ę̄̌Ę̃Ę̈Ę̈̀Ę̈̂Ę̈̌Ę̇́Ę̋Ę̇Ę̣ĒḖĒ̆ḔĒ̂Ē̌ẺȄȆE̍ȨḜẸỆẸ́Ẹ̀Ẹ̄ḘE̱É̱È̱Ê̱Ē̱Ë̱ḚE̊ɆF́F̀ḞF̄F̧ƑF̣Ꝼ́Ꝼ̇Ꝼ̣ǴG̀ĞĜǦĠG̣ĢḠG̈G̤G̃ꞠǤƓƔ̓H́ĤȞḦH̤H̄ḢH̐H̓ḢḨḤḪH̱ĦꞪⱧꜦÍÌĬÎÎ́ǏÏḮĨĨ́Ĩ̀Ĩ̂Ĩ̌Ĩ̍İIĮĮ́Į̀Į̂Į̌Į̃ĪĪ́Ī̀Ī̂Ī̌ỈȈȊI̋ȈI̍I̐I̓I̧Í̧Ì̧Î̧I̱Í̱Ì̱Î̱Ī̱ỊỊ́Ị̂Ị̃ḬƗƗ́Ɨ̀Ɨ̂Ɨ̌Ɨ̃Ɨ̄Ɨ̧Ɨ̧̀Ɨ̧̂Ɨ̧̌Ɩ́Ɩ̀Ɩ̃J́ĴJ̌J̄J̃J̣ɈḰK̀ǨK̄K̇ĶḲḴƘⱩꝀꝂꝄꞢĹL̂L̐L̃L̓ĽĻL̦ḶḸḶ́Ḷ̓ḼḺŁꝈȽⱠⱢḾM̀ṀṂM̍M̄M̐M̃M̈M̓M̧M̨ṂṂ́Ṃ̓M̦ⱮŃǸN̂ŇÑÑ̈ṄN̍N̄N̐N̈ꞤŅṊN̦ṆṆ́Ṇ̓ṈN̰N̲ƝȠꞐÓÒŎÔỐỒỖỔǑO̐ÖÖ́Ö̀ȪŐÕṌṎȬȮȰØǾØ̀Ø̂Ø̌Ø̄ƟꝊǪǬǬ̀Ǫ́Ǫ̀Ǫ̂Ǫ̌ŌṒṐŌ̂Ō̌ỎŐȌȎƠỚỜỠỞO̍ỌỌ́Ọ̀ỘỌ̄ỢỘO̭O̧Ó̧Ò̧Ô̧Ǒ̧O̱Ó̱Ò̱Ô̱Ō̱Ö̱O̲ꝌꝊƆ́Ɔ̀Ɔ̂Ɔ̌Ɔ̄Ɔ̃Ɔ̃́Ɔ̃̀Ɔ̃̂Ɔ̃̌Ɔ̃̍Ɔ̈Ɔ̍Ɔ̧Ɔ̧́Ɔ̧̀Ɔ̧̂Ɔ̧̌Ɔ̱ṔP̀ṖP̣P̄P̓P̈P̤P̄ⱣꝐƤꝒꝔQ̓Q̇ꝖꝘɊŔŘR̂R̓R̦ṘŖR̄ꞦȐȒṚṜR̰ṞR̥R̥̄R̃ɌⱤŚṤŜŠṦṠŞꞨṢṨȘẞⱾŤT̈ṪŢṬȚṰṮŦȾƬƮÚÙŬÛǓŮÜǗǛǙǕŰŨṸŲŪṺỦȔȖƯỨỪỮỬỰỤṲṶṴɄṼṾꝞƲẂẀŴW̊ẄẆẈⱲẌẊÝỲŶY̊ŸỸẎȲỶỴɎƳỾŹẐŽŻẒẔƵȤⱿⱫǮꝤꝦꜮ";
var one_name = '['+uppercase+']['+lowercase+']+\\.?';
var re_name = new RegExp('((?:(?:'+one_name+'(?:-'+one_name+')*|(?:['+uppercase+']\\.)+)(?: (?:(?:['+uppercase+']\\.)+|'+one_name+'(?:-'+one_name+')*))* (?:(?:of|de|du|von|van|ibn) |(?:ibn )?al-|el-|d\')?'+one_name+'(?:-'+one_name+')*)|Euclid|Archimedes|Pythagoras|Brahmagupta|Eudoxus|Fibonacci|Aryabhata|Apollonius|Diophantus|Bháscara|Hipparchus|Archytus|Panini|Aristotle|Pappus|Hippocrates|Thales)','g');
Array.prototype.map.call(nodes,function(n){ n.textContent = n.textContent.replace(re_name,'Mathematician $1');});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment