Replace calls to String#gsub by String#replace internally, be more specific about which version of Safari is supported

This commit is contained in:
Samuel Lebeau 2009-07-14 18:32:34 +02:00 committed by Tobie Langel
parent 49090bc957
commit fe388ebca5
3 changed files with 14 additions and 8 deletions

View File

@ -11,7 +11,7 @@ Prototype currently targets the following platforms:
* Microsoft Internet Explorer for Windows, version 6.0 and higher
* Mozilla Firefox 1.5 and higher
* Apple Safari 2.0 and higher
* Apple Safari 2.0.4 and higher
* Opera 9.25 and higher
* Chrome 1.0 and higher

View File

@ -293,7 +293,11 @@ Object.extend(String.prototype, (function() {
* underscore (`_`).
**/
function underscore() {
return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
return this.replace(/::/g, '/')
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
.replace(/([a-z\d])([A-Z])/g, '$1_$2')
.replace(/-/g, '_')
.toLowerCase();
}
/**
@ -302,7 +306,7 @@ Object.extend(String.prototype, (function() {
* Replaces every instance of the underscore character ("_") by a dash ("-").
**/
function dasherize() {
return this.gsub(/_/,'-');
return this.replace(/_/g, '-');
}
/** related to: Object.inspect
@ -312,9 +316,11 @@ Object.extend(String.prototype, (function() {
* double quotes, with backslashes and quotes escaped).
**/
function inspect(useDoubleQuotes) {
var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
var character = String.specialChar[match[0]];
return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) {
if (character in String.specialChar) {
return String.specialChar[character];
}
return '\\u00' + character.charCodeAt().toPaddedString(2, 16);
});
if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
return "'" + escapedString.replace(/'/g, '\\\'') + "'";
@ -336,7 +342,7 @@ Object.extend(String.prototype, (function() {
* This security method is called internally.
**/
function unfilterJSON(filter) {
return this.sub(filter || Prototype.JSONFilter, '#{1}');
return this.replace(filter || Prototype.JSONFilter, '$1');
}
/**

View File

@ -139,7 +139,7 @@ var Template = Class.create({
if (match == null) return before;
while (match != null) {
var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1];
ctx = ctx[comp];
if (null == ctx || '' == match[3]) break;
expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);