Skip to content

Instantly share code, notes, and snippets.

@1000ch
Last active December 16, 2015 21:39

Revisions

  1. Shogo Sensui revised this gist Oct 27, 2015. 1 changed file with 24 additions and 31 deletions.
    55 changes: 24 additions & 31 deletions selector.js
    Original file line number Diff line number Diff line change
    @@ -1,34 +1,27 @@
    //wasting
    var rx = {
    id: /^#([\w\-]+)$/,
    className: /^\.([\w\-]+)$/,
    tagName: /^[\w\-]+$/,
    name: /^\[name=["']?([\w\-]+)["']?\]$/
    const rx = {
    id: /^#([\w\-]+)$/,
    className: /^\.([\w\-]+)$/,
    tagName: /^[\w\-]+$/,
    name: /^\[name=["']?([\w\-]+)["']?\]$/
    };

    var nativeSlice = [].slice;

    //select element with filtering id, className, tagName, name selector.
    function select(selector, context) {
    var result, m;
    if(!context || !context.querySelector) {
    context = document;
    }
    if(m = rx.id.exec(selector)) {
    var element = document.getElementById(m[1]);
    if(element) {
    result = [element];
    } else {
    result = [];
    }
    } else if(m = rx.className.exec(selector)) {
    result = context.getElementsByClassName(m[1]);
    } else if(m = rx.tagName.exec(selector)) {
    result = context.getElementsByTagName(m[1]);
    } else if(m = rx.name.exec(selector)) {
    result = context.getElementsByName(m[1]);
    } else {
    result = context.querySelectorAll(selector);
    }
    return nativeSlice.call(result);
    function $(selector, context) {
    let result;
    let m;
    if(!context || !context.querySelector) {
    context = document;
    }
    if (m = rx.id.exec(selector)) {
    let element = document.getElementById(m[1]);
    result = element ? [element] : [];
    } else if (m = rx.className.exec(selector)) {
    result = context.getElementsByClassName(m[1]);
    } else if (m = rx.tagName.exec(selector)) {
    result = context.getElementsByTagName(m[1]);
    } else if (m = rx.name.exec(selector)) {
    result = context.getElementsByName(m[1]);
    } else {
    result = context.querySelectorAll(selector);
    }
    return Array.of(result);
    };
  2. 1000ch revised this gist Jun 14, 2013. 1 changed file with 7 additions and 7 deletions.
    14 changes: 7 additions & 7 deletions selector.js
    Original file line number Diff line number Diff line change
    @@ -9,13 +9,18 @@ var rx = {
    var nativeSlice = [].slice;

    //select element with filtering id, className, tagName, name selector.
    var ConciseSelector = function(selector, context) {
    function select(selector, context) {
    var result, m;
    if(!context || !context.querySelector) {
    context = document;
    }
    if(m = rx.id.exec(selector)) {
    result = [document.getElementById(m[1])];
    var element = document.getElementById(m[1]);
    if(element) {
    result = [element];
    } else {
    result = [];
    }
    } else if(m = rx.className.exec(selector)) {
    result = context.getElementsByClassName(m[1]);
    } else if(m = rx.tagName.exec(selector)) {
    @@ -26,9 +31,4 @@ var ConciseSelector = function(selector, context) {
    result = context.querySelectorAll(selector);
    }
    return nativeSlice.call(result);
    };

    //create alias
    var $ = function(selector, context) {
    return ConciseSelector(selector, context);
    };
  3. 1000ch revised this gist May 8, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion selector.js
    Original file line number Diff line number Diff line change
    @@ -30,5 +30,5 @@ var ConciseSelector = function(selector, context) {

    //create alias
    var $ = function(selector, context) {
    return new ConciseSelector(selector, context);
    return ConciseSelector(selector, context);
    };
  4. 1000ch revised this gist May 2, 2013. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions selector.js
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@
    //wasting
    var rx = {
    id: /^#([\w\-]+)$/,
    className: /^\.([\w\-]+)$/,
  5. 1000ch revised this gist May 2, 2013. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions selector.js
    Original file line number Diff line number Diff line change
    @@ -5,6 +5,8 @@ var rx = {
    name: /^\[name=["']?([\w\-]+)["']?\]$/
    };

    var nativeSlice = [].slice;

    //select element with filtering id, className, tagName, name selector.
    var ConciseSelector = function(selector, context) {
    var result, m;
    @@ -22,6 +24,7 @@ var ConciseSelector = function(selector, context) {
    } else {
    result = context.querySelectorAll(selector);
    }
    return nativeSlice.call(result);
    };

    //create alias
  6. 1000ch revised this gist May 2, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion selector.js
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,7 @@ var rx = {
    //select element with filtering id, className, tagName, name selector.
    var ConciseSelector = function(selector, context) {
    var result, m;
    if(!context) {
    if(!context || !context.querySelector) {
    context = document;
    }
    if(m = rx.id.exec(selector)) {
  7. 1000ch revised this gist May 2, 2013. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions selector.js
    Original file line number Diff line number Diff line change
    @@ -5,6 +5,7 @@ var rx = {
    name: /^\[name=["']?([\w\-]+)["']?\]$/
    };

    //select element with filtering id, className, tagName, name selector.
    var ConciseSelector = function(selector, context) {
    var result, m;
    if(!context) {
    @@ -22,6 +23,8 @@ var ConciseSelector = function(selector, context) {
    result = context.querySelectorAll(selector);
    }
    };

    //create alias
    var $ = function(selector, context) {
    return new ConciseSelector(selector, context);
    };
  8. 1000ch created this gist May 2, 2013.
    27 changes: 27 additions & 0 deletions selector.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    var rx = {
    id: /^#([\w\-]+)$/,
    className: /^\.([\w\-]+)$/,
    tagName: /^[\w\-]+$/,
    name: /^\[name=["']?([\w\-]+)["']?\]$/
    };

    var ConciseSelector = function(selector, context) {
    var result, m;
    if(!context) {
    context = document;
    }
    if(m = rx.id.exec(selector)) {
    result = [document.getElementById(m[1])];
    } else if(m = rx.className.exec(selector)) {
    result = context.getElementsByClassName(m[1]);
    } else if(m = rx.tagName.exec(selector)) {
    result = context.getElementsByTagName(m[1]);
    } else if(m = rx.name.exec(selector)) {
    result = context.getElementsByName(m[1]);
    } else {
    result = context.querySelectorAll(selector);
    }
    };
    var $ = function(selector, context) {
    return new ConciseSelector(selector, context);
    };