Created
August 6, 2015 21:54
-
-
Save alubbe/165490b2e2bdb49b3365 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function jade_escape(str){return str} | |
| function jade_classes_old(val, escaping) { | |
| if (Array.isArray(val) && Array.isArray(escaping)) { | |
| return jade_classes_old(val.map(jade_classes_old).map(function (cls, i) { | |
| return escaping[i] ? jade_escape(cls) : cls; | |
| })); | |
| } | |
| return (Array.isArray(val) ? val.map(jade_classes_old) : | |
| (val && typeof val === 'object') ? Object.keys(val).filter(function (key) { return val[key]; }) : | |
| [val]).filter(Boolean).join(' '); | |
| } | |
| function jade_classes_new(val, escaping) { | |
| if (Array.isArray(val)) { | |
| if (Array.isArray(escaping)) { | |
| return jade_classes_new(val.map(jade_classes_new).map(function (cls, i) { | |
| return escaping[i] ? jade_escape(cls) : cls; | |
| })); | |
| } | |
| return val.map(jade_classes_new).filter(Boolean).join(' '); | |
| } else if (val && typeof val === 'object') { | |
| return Object.keys(val).filter(function (key) { | |
| return val[key]; | |
| }).filter(Boolean).join(' '); | |
| } else { | |
| return val || ''; | |
| } | |
| } | |
| function classesArray(val, escaping) { | |
| if (Array.isArray(escaping)) { | |
| return jade_classes_newnew(val.map(jade_classes_newnew).map(function (cls, i) { | |
| return escaping[i] ? jade_escape(cls) : cls; | |
| })); | |
| } | |
| return val.map(jade_classes_newnew).filter(Boolean).join(' '); | |
| } | |
| function classesObject(val) { | |
| return Object.keys(val).filter(function (key) { | |
| return val[key]; | |
| }).filter(Boolean).join(' '); | |
| } | |
| function jade_classes_newnew(val, escaping) { | |
| if (Array.isArray(val)) { | |
| return classesArray(val, escaping); | |
| } else if (val && typeof val === 'object') { | |
| return classesObject(val); | |
| } else { | |
| return val || ''; | |
| } | |
| } | |
| function classesArray2(val, escaping) { | |
| var classString = '', className; | |
| for (var i = 0; i < val.length; i++) { | |
| className = jade_classes_newnew2(val[i]); | |
| className = (Array.isArray(escaping) && escaping[i] ? jade_escape(className) : className); | |
| padding = className !== '' && classString.length > 0 ? ' ' : ''; | |
| classString = classString + padding + className; | |
| } | |
| return classString; | |
| } | |
| function classesObject2(val) { | |
| var classString = '', padding; | |
| for (var key in val) { | |
| if (val[key]) { | |
| padding = key !== '' && classString.length > 0 ? ' ' : ''; | |
| classString = classString + padding + key; | |
| } | |
| } | |
| return classString; | |
| } | |
| function jade_classes_newnew2(val, escaping) { | |
| if (Array.isArray(val)) { | |
| return classesArray2(val, escaping); | |
| } else if (val && typeof val === 'object') { | |
| return classesObject2(val); | |
| } else { | |
| return val || ''; | |
| } | |
| } | |
| new require('benchmark').Suite() | |
| .add('jade_classes_old', function() { | |
| jade_classes_old(['foo', 'bar']); | |
| jade_classes_old([['foo', 'bar'], ['baz', 'bash']]); | |
| jade_classes_old([['foo', 'bar'], {baz: true, bash: false}]) | |
| jade_classes_old([['fo<o', 'bar'], {'ba>z': true, bash: false}], [true, false]) | |
| }) | |
| .add('jade_classes_new', function() { | |
| jade_classes_new(['foo', 'bar']); | |
| jade_classes_new([['foo', 'bar'], ['baz', 'bash']]); | |
| jade_classes_new([['foo', 'bar'], {baz: true, bash: false}]) | |
| jade_classes_new([['fo<o', 'bar'], {'ba>z': true, bash: false}], [true, false]) | |
| }) | |
| .add('jade_classes_newnew', function() { | |
| jade_classes_newnew(['foo', 'bar']); | |
| jade_classes_newnew([['foo', 'bar'], ['baz', 'bash']]); | |
| jade_classes_newnew([['foo', 'bar'], {baz: true, bash: false}]) | |
| jade_classes_newnew([['fo<o', 'bar'], {'ba>z': true, bash: false}], [true, false]) | |
| }) | |
| .add('jade_classes_newnew2', function() { | |
| jade_classes_newnew2(['foo', 'bar']); | |
| jade_classes_newnew2([['foo', 'bar'], ['baz', 'bash']]); | |
| jade_classes_newnew2([['foo', 'bar'], {baz: true, bash: false}]) | |
| jade_classes_newnew2([['fo<o', 'bar'], {'ba>z': true, bash: false}], [true, false]) | |
| }) | |
| .on('cycle', function(event) { | |
| console.log(String(event.target)); | |
| }) | |
| .on('complete', function() { | |
| console.log('Fastest is ' + this.filter('fastest').pluck('name')); | |
| }) | |
| .run(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment