Custom Application Programming Interface, make your own.
This file contains 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
/* | |
* referenced https://github.com/dciccale/ki.js | |
* referenced jQuery 2005, 2012 jQuery Foundation, Inc. | jquery.org/license | |
*/ | |
//-- make your own api | |
(function(window, undefined){ | |
var _api = 'yourapinamehere', _int, _prototype, _extension; | |
//-- prototype methods (applied context) | |
_prototype = | |
{ | |
//-- apply context | |
go : function(selector, context) | |
{ | |
if(selector) | |
{ | |
this.context = (context||window.document); | |
if( "" + selector === selector ) | |
{ | |
this.selector = selector; | |
[].push.apply(this, [].slice.call((this.context).querySelectorAll(this.selector), 0)); | |
} | |
else if( selector.nodeType ) | |
{ | |
[].push.call(this, selector); | |
} | |
else if( _int.type(selector) == 'htmlcollection' || _int.type(selector) =='nodelist' ) | |
{ | |
[].push.apply(this, [].slice.call(selector, 0)); | |
} | |
else if( /^f/.test(typeof selector) ) | |
{ | |
this.ready(selector); | |
} | |
} | |
return this; | |
}, | |
ready: function( callback ) | |
{ | |
return /^f/.test(typeof callback) ? /c/.test(document.readyState) ? setTimeout(callback) : document.addEventListener('DOMContentLoaded', callback, false) : this.go(callback); | |
}, | |
//-- add your own contextual methods... | |
helloWorld : function( value ) | |
{ | |
console.log(this[0]); | |
console.log(value); | |
} | |
} | |
//-- extended methods (no context) | |
_extension = | |
{ | |
type: function(obj) | |
{ | |
return (obj.__array__ || Object.prototype.toString.call(obj).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()); | |
}, | |
//-- add your own methods | |
helloWorldNoContext : function( value ) | |
{ | |
console.log(this[0]); | |
console.log(value); | |
} | |
}; | |
//-- custom initilizer | |
_int = (function( api, prot, ext, intl ) | |
{ | |
if(typeof api != 'string'){return null;} | |
var o = function(){}, m; | |
window[api] = m = function(a,b){ return (new o()).__intialize__(a,b); }; | |
m.extend = function(){return(function __a(x){var b=x.shift(),w='strict',q='undefined',r='deep',t='';if(typeof b==='string'||typeof b==='boolean'){t=(b===true)?r:b;b=x.shift();if(t=='defaults'){b=__a([{},b]);t=w}}for(var i=0,c=x.length;i<c;i++){var y=x[i];for(var z in y){if(t==r&&typeof y[z]==='object'&&typeof b[z]!==q){__a([t,b[z],y[z]])}else if(t!=w||(t==w&&typeof b[z]!==q)){b[z]=y[z]}}}return b})(Array.prototype.slice.call(arguments))}; | |
m.prototype = o.prototype = m.extend({__array__:true, __intialize__:(intl||function(){}), length:0, selector:null, context:null, splice:[].splice}, (prot||{})); | |
m.extend(m,(ext||{})); | |
return m; | |
})( _api, _prototype, _extension, _prototype.go ); | |
})(this); |
This file contains 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
<!doctype html> | |
<html> | |
<head> | |
<meta charset="utf-8" /> | |
<title>JS.Custom Application Programming Interface</title> | |
</head> | |
<body> | |
<div> | |
<!-- Begin Body - - - - - - - - - - - - - - - - - - - - - - - - - - --> | |
<h1>JS.Custom Application Programming Interface</h1> | |
<p id="testing"> | |
This bit of JavaScript lets you implement your own custom api. Make your own... | |
</p> | |
<!-- End Body - - - - - - - - - - - - - - - - - - - - - - - - - - --> | |
</div> | |
<script src="customAPI.js"></script> | |
<script> | |
(function(window, undefined){ | |
yourapinamehere(document.getElementById('testing')).helloWorld('context, wooot!!!'); | |
yourapinamehere.helloWorldNoContext('no context, yeahhh!!!'); | |
})(this); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment