node-oops
Version:
A small library that makes object-oriented programming in javascript a little simpler.
81 lines (68 loc) • 2.96 kB
JavaScript
/**
* AngularUI - The companion suite for AngularJS
* @version v0.3.2 - 2012-12-04
* @link http://angular-ui.github.com
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
// READ: http://docs-next.angularjs.org/guide/ie
// element tags are statically defined in order to accommodate lazy-loading whereby directives are also unknown
// The ieshiv takes care of our ui.directives and AngularJS's ng-view, ng-include, ng-pluralize, ng-switch.
// However, IF you have custom directives that can be used as html tags (yours or someone else's) then
// add list of directives into <code>window.myCustomTags</code>
// <!--[if lte IE 8]>
// <script>
// window.myCustomTags = [ 'yourCustomDirective', 'somebodyElsesDirective' ]; // optional
// </script>
// <script src="build/angular-ui-ieshiv.js"></script>
// <![endif]-->
(function (exports) {
var debug = window.ieShivDebug || false,
tags = [ "ngInclude", "ngPluralize", "ngView", "ngSwitch", "uiCurrency", "uiCodemirror", "uiDate", "uiEvent",
"uiKeypress", "uiKeyup", "uiKeydown", "uiMask", "uiMapInfoWindow", "uiMapMarker", "uiMapPolyline",
"uiMapPolygon", "uiMapRectangle", "uiMapCircle", "uiMapGroundOverlay", "uiModal", "uiReset",
"uiScrollfix", "uiSelect2", "uiShow", "uiHide", "uiToggle", "uiSortable", "uiTinymce"
];
window.myCustomTags = window.myCustomTags || []; // externally defined by developer using angular-ui directives
tags.push.apply(tags, window.myCustomTags);
var getIE = function () {
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})");
if (re.exec(ua) !== null) {
rv = parseFloat(RegExp.$1);
}
}
return rv;
};
var toCustomElements = function (str, delim) {
var result = [];
var dashed = str.replace(/([A-Z])/g, function ($1) {
return " " + $1.toLowerCase();
});
var tokens = dashed.split(' ');
var ns = tokens[0];
var dirname = tokens.slice(1).join('-');
// this is finite list and it seemed senseless to create a custom method
result.push(ns + ":" + dirname);
result.push(ns + "-" + dirname);
result.push("x-" + ns + "-" + dirname);
result.push("data-" + ns + "-" + dirname);
return result;
};
var shiv = function () {
for (var i = 0, tlen = tags.length; i < tlen; i++) {
var customElements = toCustomElements(tags[i], ':');
for (var j = 0, clen = customElements.length; j < clen; j++) {
var customElement = customElements[j];
document.createElement(customElement);
}
}
};
var ieVersion = getIE();
if ((ieVersion > -1 && ieVersion < 9) || debug) {
shiv();
}
})(window);