⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prototype.js

📁 RubyonRailsC.zip ruby on rails的源码
💻 JS
📖 第 1 页 / 共 4 页
字号:
/*  Prototype JavaScript framework, version 1.5.0_pre1 *  (c) 2005 Sam Stephenson <sam@conio.net> * *  Prototype is freely distributable under the terms of an MIT-style license. *  For details, see the Prototype web site: http://prototype.conio.net/ */*--------------------------------------------------------------------------*/var Prototype = {  Version: '1.5.0_pre1',  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',  emptyFunction: function() {},  K: function(x) {return x}}var Class = {  create: function() {    return function() {      this.initialize.apply(this, arguments);    }  }}var Abstract = new Object();Object.extend = function(destination, source) {  for (property in source) {    destination[property] = source[property];  }  return destination;}Object.inspect = function(object) {  try {    if (object == undefined) return 'undefined';    if (object == null) return 'null';    return object.inspect ? object.inspect() : object.toString();  } catch (e) {    if (e instanceof RangeError) return '...';    throw e;  }}Function.prototype.bind = function() {  var __method = this, args = $A(arguments), object = args.shift();  return function() {    return __method.apply(object, args.concat($A(arguments)));  }}Function.prototype.bindAsEventListener = function(object) {  var __method = this;  return function(event) {    return __method.call(object, event || window.event);  }}Object.extend(Number.prototype, {  toColorPart: function() {    var digits = this.toString(16);    if (this < 16) return '0' + digits;    return digits;  },  succ: function() {    return this + 1;  },  times: function(iterator) {    $R(0, this, true).each(iterator);    return this;  }});var Try = {  these: function() {    var returnValue;    for (var i = 0; i < arguments.length; i++) {      var lambda = arguments[i];      try {        returnValue = lambda();        break;      } catch (e) {}    }    return returnValue;  }}/*--------------------------------------------------------------------------*/var PeriodicalExecuter = Class.create();PeriodicalExecuter.prototype = {  initialize: function(callback, frequency) {    this.callback = callback;    this.frequency = frequency;    this.currentlyExecuting = false;    this.registerCallback();  },  registerCallback: function() {    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);  },  onTimerEvent: function() {    if (!this.currentlyExecuting) {      try {        this.currentlyExecuting = true;        this.callback();      } finally {        this.currentlyExecuting = false;      }    }  }}Object.extend(String.prototype, {  gsub: function(pattern, replacement) {    var result = '', source = this, match;    replacement = arguments.callee.prepareReplacement(replacement);    while (source.length > 0) {      if (match = source.match(pattern)) {        result += source.slice(0, match.index);        result += (replacement(match) || '').toString();        source  = source.slice(match.index + match[0].length);      } else {        result += source, source = '';      }    }    return result;  },  sub: function(pattern, replacement, count) {    replacement = this.gsub.prepareReplacement(replacement);    count = count === undefined ? 1 : count;    return this.gsub(pattern, function(match) {      if (--count < 0) return match[0];      return replacement(match);    });  },  scan: function(pattern, iterator) {    this.gsub(pattern, iterator);    return this;  },  truncate: function(length, truncation) {    length = length || 30;    truncation = truncation === undefined ? '...' : truncation;    return this.length > length ?      this.slice(0, length - truncation.length) + truncation : this;  },  strip: function() {    return this.replace(/^\s+/, '').replace(/\s+$/, '');  },  stripTags: function() {    return this.replace(/<\/?[^>]+>/gi, '');  },  stripScripts: function() {    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');  },  extractScripts: function() {    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');    return (this.match(matchAll) || []).map(function(scriptTag) {      return (scriptTag.match(matchOne) || ['', ''])[1];    });  },  evalScripts: function() {    return this.extractScripts().map(eval);  },  escapeHTML: function() {    var div = document.createElement('div');    var text = document.createTextNode(this);    div.appendChild(text);    return div.innerHTML;  },  unescapeHTML: function() {    var div = document.createElement('div');    div.innerHTML = this.stripTags();    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';  },  toQueryParams: function() {    var pairs = this.match(/^\??(.*)$/)[1].split('&');    return pairs.inject({}, function(params, pairString) {      var pair = pairString.split('=');      params[pair[0]] = pair[1];      return params;    });  },  toArray: function() {    return this.split('');  },  camelize: function() {    var oStringList = this.split('-');    if (oStringList.length == 1) return oStringList[0];    var camelizedString = this.indexOf('-') == 0      ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)      : oStringList[0];    for (var i = 1, len = oStringList.length; i < len; i++) {      var s = oStringList[i];      camelizedString += s.charAt(0).toUpperCase() + s.substring(1);    }    return camelizedString;  },  inspect: function() {    return "'" + this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + "'";  }});String.prototype.gsub.prepareReplacement = function(replacement) {  if (typeof replacement == 'function') return replacement;  var template = new Template(replacement);  return function(match) { return template.evaluate(match) };}String.prototype.parseQuery = String.prototype.toQueryParams;var Template = Class.create();Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;Template.prototype = {  initialize: function(template, pattern) {    this.template = template.toString();    this.pattern  = pattern || Template.Pattern;  },  evaluate: function(object) {    return this.template.gsub(this.pattern, function(match) {      var before = match[1];      if (before == '\\') return match[2];      return before + (object[match[3]] || '').toString();    });  }}var $break    = new Object();var $continue = new Object();var Enumerable = {  each: function(iterator) {    var index = 0;    try {      this._each(function(value) {        try {          iterator(value, index++);        } catch (e) {          if (e != $continue) throw e;        }      });    } catch (e) {      if (e != $break) throw e;    }  },  all: function(iterator) {    var result = true;    this.each(function(value, index) {      result = result && !!(iterator || Prototype.K)(value, index);      if (!result) throw $break;    });    return result;  },  any: function(iterator) {    var result = true;    this.each(function(value, index) {      if (result = !!(iterator || Prototype.K)(value, index))        throw $break;    });    return result;  },  collect: function(iterator) {    var results = [];    this.each(function(value, index) {      results.push(iterator(value, index));    });    return results;  },  detect: function (iterator) {    var result;    this.each(function(value, index) {      if (iterator(value, index)) {        result = value;        throw $break;      }    });    return result;  },  findAll: function(iterator) {    var results = [];    this.each(function(value, index) {      if (iterator(value, index))        results.push(value);    });    return results;  },  grep: function(pattern, iterator) {    var results = [];    this.each(function(value, index) {      var stringValue = value.toString();      if (stringValue.match(pattern))        results.push((iterator || Prototype.K)(value, index));    })    return results;  },  include: function(object) {    var found = false;    this.each(function(value) {      if (value == object) {        found = true;        throw $break;      }    });    return found;  },  inject: function(memo, iterator) {    this.each(function(value, index) {      memo = iterator(memo, value, index);    });    return memo;  },  invoke: function(method) {    var args = $A(arguments).slice(1);    return this.collect(function(value) {      return value[method].apply(value, args);    });  },  max: function(iterator) {    var result;    this.each(function(value, index) {      value = (iterator || Prototype.K)(value, index);      if (value >= (result || value))        result = value;    });    return result;  },  min: function(iterator) {    var result;    this.each(function(value, index) {      value = (iterator || Prototype.K)(value, index);      if (value <= (result || value))        result = value;    });    return result;  },  partition: function(iterator) {    var trues = [], falses = [];    this.each(function(value, index) {      ((iterator || Prototype.K)(value, index) ?        trues : falses).push(value);    });    return [trues, falses];  },  pluck: function(property) {    var results = [];    this.each(function(value, index) {      results.push(value[property]);    });    return results;  },  reject: function(iterator) {    var results = [];    this.each(function(value, index) {      if (!iterator(value, index))        results.push(value);    });    return results;  },  sortBy: function(iterator) {    return this.collect(function(value, index) {      return {value: value, criteria: iterator(value, index)};    }).sort(function(left, right) {      var a = left.criteria, b = right.criteria;      return a < b ? -1 : a > b ? 1 : 0;    }).pluck('value');  },  toArray: function() {    return this.collect(Prototype.K);  },  zip: function() {    var iterator = Prototype.K, args = $A(arguments);    if (typeof args.last() == 'function')      iterator = args.pop();    var collections = [this].concat(args).map($A);    return this.map(function(value, index) {      return iterator(collections.pluck(index));    });  },  inspect: function() {    return '#<Enumerable:' + this.toArray().inspect() + '>';  }}Object.extend(Enumerable, {  map:     Enumerable.collect,  find:    Enumerable.detect,  select:  Enumerable.findAll,  member:  Enumerable.include,  entries: Enumerable.toArray});var $A = Array.from = function(iterable) {  if (!iterable) return [];  if (iterable.toArray) {    return iterable.toArray();  } else {    var results = [];    for (var i = 0; i < iterable.length; i++)      results.push(iterable[i]);    return results;  }}Object.extend(Array.prototype, Enumerable);Array.prototype._reverse = Array.prototype.reverse;Object.extend(Array.prototype, {  _each: function(iterator) {    for (var i = 0; i < this.length; i++)      iterator(this[i]);  },  clear: function() {    this.length = 0;    return this;  },  first: function() {    return this[0];  },  last: function() {    return this[this.length - 1];  },  compact: function() {    return this.select(function(value) {      return value != undefined || value != null;    });  },  flatten: function() {    return this.inject([], function(array, value) {      return array.concat(value.constructor == Array ?        value.flatten() : [value]);    });  },  without: function() {    var values = $A(arguments);    return this.select(function(value) {      return !values.include(value);    });  },  indexOf: function(object) {    for (var i = 0; i < this.length; i++)      if (this[i] == object) return i;    return -1;  },  reverse: function(inline) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -