/bower_components/yaml.js/lib/Utils.js |
@@ -0,0 +1,284 @@ |
// Generated by CoffeeScript 1.10.0 |
var Pattern, Utils; |
|
Pattern = require('./Pattern'); |
|
Utils = (function() { |
function Utils() {} |
|
Utils.REGEX_LEFT_TRIM_BY_CHAR = {}; |
|
Utils.REGEX_RIGHT_TRIM_BY_CHAR = {}; |
|
Utils.REGEX_SPACES = /\s+/g; |
|
Utils.REGEX_DIGITS = /^\d+$/; |
|
Utils.REGEX_OCTAL = /[^0-7]/gi; |
|
Utils.REGEX_HEXADECIMAL = /[^a-f0-9]/gi; |
|
Utils.PATTERN_DATE = new Pattern('^' + '(?<year>[0-9][0-9][0-9][0-9])' + '-(?<month>[0-9][0-9]?)' + '-(?<day>[0-9][0-9]?)' + '(?:(?:[Tt]|[ \t]+)' + '(?<hour>[0-9][0-9]?)' + ':(?<minute>[0-9][0-9])' + ':(?<second>[0-9][0-9])' + '(?:\.(?<fraction>[0-9]*))?' + '(?:[ \t]*(?<tz>Z|(?<tz_sign>[-+])(?<tz_hour>[0-9][0-9]?)' + '(?::(?<tz_minute>[0-9][0-9]))?))?)?' + '$', 'i'); |
|
Utils.LOCAL_TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000; |
|
Utils.trim = function(str, _char) { |
var regexLeft, regexRight; |
if (_char == null) { |
_char = '\\s'; |
} |
return str.trim(); |
regexLeft = this.REGEX_LEFT_TRIM_BY_CHAR[_char]; |
if (regexLeft == null) { |
this.REGEX_LEFT_TRIM_BY_CHAR[_char] = regexLeft = new RegExp('^' + _char + '' + _char + '*'); |
} |
regexLeft.lastIndex = 0; |
regexRight = this.REGEX_RIGHT_TRIM_BY_CHAR[_char]; |
if (regexRight == null) { |
this.REGEX_RIGHT_TRIM_BY_CHAR[_char] = regexRight = new RegExp(_char + '' + _char + '*$'); |
} |
regexRight.lastIndex = 0; |
return str.replace(regexLeft, '').replace(regexRight, ''); |
}; |
|
Utils.ltrim = function(str, _char) { |
var regexLeft; |
if (_char == null) { |
_char = '\\s'; |
} |
regexLeft = this.REGEX_LEFT_TRIM_BY_CHAR[_char]; |
if (regexLeft == null) { |
this.REGEX_LEFT_TRIM_BY_CHAR[_char] = regexLeft = new RegExp('^' + _char + '' + _char + '*'); |
} |
regexLeft.lastIndex = 0; |
return str.replace(regexLeft, ''); |
}; |
|
Utils.rtrim = function(str, _char) { |
var regexRight; |
if (_char == null) { |
_char = '\\s'; |
} |
regexRight = this.REGEX_RIGHT_TRIM_BY_CHAR[_char]; |
if (regexRight == null) { |
this.REGEX_RIGHT_TRIM_BY_CHAR[_char] = regexRight = new RegExp(_char + '' + _char + '*$'); |
} |
regexRight.lastIndex = 0; |
return str.replace(regexRight, ''); |
}; |
|
Utils.isEmpty = function(value) { |
return !value || value === '' || value === '0' || (value instanceof Array && value.length === 0); |
}; |
|
Utils.subStrCount = function(string, subString, start, length) { |
var c, i, j, len, ref, sublen; |
c = 0; |
string = '' + string; |
subString = '' + subString; |
if (start != null) { |
string = string.slice(start); |
} |
if (length != null) { |
string = string.slice(0, length); |
} |
len = string.length; |
sublen = subString.length; |
for (i = j = 0, ref = len; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { |
if (subString === string.slice(i, sublen)) { |
c++; |
i += sublen - 1; |
} |
} |
return c; |
}; |
|
Utils.isDigits = function(input) { |
this.REGEX_DIGITS.lastIndex = 0; |
return this.REGEX_DIGITS.test(input); |
}; |
|
Utils.octDec = function(input) { |
this.REGEX_OCTAL.lastIndex = 0; |
return parseInt((input + '').replace(this.REGEX_OCTAL, ''), 8); |
}; |
|
Utils.hexDec = function(input) { |
this.REGEX_HEXADECIMAL.lastIndex = 0; |
input = this.trim(input); |
if ((input + '').slice(0, 2) === '0x') { |
input = (input + '').slice(2); |
} |
return parseInt((input + '').replace(this.REGEX_HEXADECIMAL, ''), 16); |
}; |
|
Utils.utf8chr = function(c) { |
var ch; |
ch = String.fromCharCode; |
if (0x80 > (c %= 0x200000)) { |
return ch(c); |
} |
if (0x800 > c) { |
return ch(0xC0 | c >> 6) + ch(0x80 | c & 0x3F); |
} |
if (0x10000 > c) { |
return ch(0xE0 | c >> 12) + ch(0x80 | c >> 6 & 0x3F) + ch(0x80 | c & 0x3F); |
} |
return ch(0xF0 | c >> 18) + ch(0x80 | c >> 12 & 0x3F) + ch(0x80 | c >> 6 & 0x3F) + ch(0x80 | c & 0x3F); |
}; |
|
Utils.parseBoolean = function(input, strict) { |
var lowerInput; |
if (strict == null) { |
strict = true; |
} |
if (typeof input === 'string') { |
lowerInput = input.toLowerCase(); |
if (!strict) { |
if (lowerInput === 'no') { |
return false; |
} |
} |
if (lowerInput === '0') { |
return false; |
} |
if (lowerInput === 'false') { |
return false; |
} |
if (lowerInput === '') { |
return false; |
} |
return true; |
} |
return !!input; |
}; |
|
Utils.isNumeric = function(input) { |
this.REGEX_SPACES.lastIndex = 0; |
return typeof input === 'number' || typeof input === 'string' && !isNaN(input) && input.replace(this.REGEX_SPACES, '') !== ''; |
}; |
|
Utils.stringToDate = function(str) { |
var date, day, fraction, hour, info, minute, month, second, tz_hour, tz_minute, tz_offset, year; |
if (!(str != null ? str.length : void 0)) { |
return null; |
} |
info = this.PATTERN_DATE.exec(str); |
if (!info) { |
return null; |
} |
year = parseInt(info.year, 10); |
month = parseInt(info.month, 10) - 1; |
day = parseInt(info.day, 10); |
if (info.hour == null) { |
date = new Date(Date.UTC(year, month, day)); |
return date; |
} |
hour = parseInt(info.hour, 10); |
minute = parseInt(info.minute, 10); |
second = parseInt(info.second, 10); |
if (info.fraction != null) { |
fraction = info.fraction.slice(0, 3); |
while (fraction.length < 3) { |
fraction += '0'; |
} |
fraction = parseInt(fraction, 10); |
} else { |
fraction = 0; |
} |
if (info.tz != null) { |
tz_hour = parseInt(info.tz_hour, 10); |
if (info.tz_minute != null) { |
tz_minute = parseInt(info.tz_minute, 10); |
} else { |
tz_minute = 0; |
} |
tz_offset = (tz_hour * 60 + tz_minute) * 60000; |
if ('-' === info.tz_sign) { |
tz_offset *= -1; |
} |
} |
date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); |
if (tz_offset) { |
date.setTime(date.getTime() + tz_offset); |
} |
return date; |
}; |
|
Utils.strRepeat = function(str, number) { |
var i, res; |
res = ''; |
i = 0; |
while (i < number) { |
res += str; |
i++; |
} |
return res; |
}; |
|
Utils.getStringFromFile = function(path, callback) { |
var data, fs, j, len1, name, ref, req, xhr; |
if (callback == null) { |
callback = null; |
} |
xhr = null; |
if (typeof window !== "undefined" && window !== null) { |
if (window.XMLHttpRequest) { |
xhr = new XMLHttpRequest(); |
} else if (window.ActiveXObject) { |
ref = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; |
for (j = 0, len1 = ref.length; j < len1; j++) { |
name = ref[j]; |
try { |
xhr = new ActiveXObject(name); |
} catch (undefined) {} |
} |
} |
} |
if (xhr != null) { |
if (callback != null) { |
xhr.onreadystatechange = function() { |
if (xhr.readyState === 4) { |
if (xhr.status === 200 || xhr.status === 0) { |
return callback(xhr.responseText); |
} else { |
return callback(null); |
} |
} |
}; |
xhr.open('GET', path, true); |
return xhr.send(null); |
} else { |
xhr.open('GET', path, false); |
xhr.send(null); |
if (xhr.status === 200 || xhr.status === 0) { |
return xhr.responseText; |
} |
return null; |
} |
} else { |
req = require; |
fs = req('fs'); |
if (callback != null) { |
return fs.readFile(path, function(err, data) { |
if (err) { |
return callback(null); |
} else { |
return callback(String(data)); |
} |
}); |
} else { |
data = fs.readFileSync(path); |
if (data != null) { |
return String(data); |
} |
return null; |
} |
} |
}; |
|
return Utils; |
|
})(); |
|
module.exports = Utils; |