openfl
Version:
A fast, productive library for 2D cross-platform development.
127 lines (109 loc) • 3.06 kB
JavaScript
// Class: EReg
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./hxClasses_stub").default;
var $hxEnums = require("./hxEnums_stub").default;
var $import = require("./import_stub").default;
function js__$Boot_HaxeError() {return require("./js/_Boot/HaxeError");}
function HxOverrides() {return require("./HxOverrides");}
function StringBuf() {return require("./StringBuf");}
// Constructor
var EReg = function(r,opt) {
this.r = new RegExp(r,opt.split("u").join(""));
}
// Meta
EReg.__name__ = "EReg";
EReg.__isInterface__ = false;
EReg.prototype = {
match: function(s) {
if(this.r.global) {
this.r.lastIndex = 0;
}
this.r.m = this.r.exec(s);
this.r.s = s;
return this.r.m != null;
},
matched: function(n) {
if(this.r.m != null && n >= 0 && n < this.r.m.length) {
return this.r.m[n];
} else {
throw new (js__$Boot_HaxeError().default)("EReg::matched");
}
},
matchedRight: function() {
if(this.r.m == null) {
throw new (js__$Boot_HaxeError().default)("No string matched");
}
var sz = this.r.m.index + this.r.m[0].length;
return (HxOverrides().default).substr(this.r.s,sz,this.r.s.length - sz);
},
matchedPos: function() {
if(this.r.m == null) {
throw new (js__$Boot_HaxeError().default)("No string matched");
}
return { pos : this.r.m.index, len : this.r.m[0].length};
},
matchSub: function(s,pos,len) {
if(len == null) {
len = -1;
}
if(this.r.global) {
this.r.lastIndex = pos;
this.r.m = this.r.exec(len < 0 ? s : (HxOverrides().default).substr(s,0,pos + len));
var b = this.r.m != null;
if(b) {
this.r.s = s;
}
return b;
} else {
var b1 = this.match(len < 0 ? (HxOverrides().default).substr(s,pos,null) : (HxOverrides().default).substr(s,pos,len));
if(b1) {
this.r.s = s;
this.r.m.index += pos;
}
return b1;
}
},
split: function(s) {
var d = "#__delim__#";
return this.replace(s,d).split(d);
},
replace: function(s,by) {
return s.replace(this.r,by);
},
map: function(s,f) {
var offset = 0;
var buf = new (StringBuf().default)();
while(true) {
if(offset >= s.length) {
break;
} else if(!this.matchSub(s,offset)) {
buf.add((HxOverrides().default).substr(s,offset,null));
break;
}
var p = this.matchedPos();
buf.add((HxOverrides().default).substr(s,offset,p.pos - offset));
buf.add(f(this));
if(p.len == 0) {
buf.add((HxOverrides().default).substr(s,p.pos,1));
offset = p.pos + 1;
} else {
offset = p.pos + p.len;
}
if(!this.r.global) {
break;
}
}
if(!this.r.global && offset > 0 && offset < s.length) {
buf.add((HxOverrides().default).substr(s,offset,null));
}
return buf.toString();
}
};
EReg.prototype.__class__ = EReg.prototype.constructor = $hxClasses["EReg"] = EReg;
// Init
// Statics
// Export
exports.default = EReg;