mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-16 16:46:35 +01:00
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@69 08aca716-68be-ccc6-4d58-36f5abd142ac
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
|
|
var FieldList_Header_fieldName = '[^\\[\\]\\|]*';
|
|
var FieldList_Header_arrayField = FieldList_Header_fieldName + '\\[(' + FieldList_Header_fieldName + '\\|)*\\]';
|
|
var FieldList_Header_arrayFieldName = new RegExp(FieldList_Header_fieldName);
|
|
var FieldList_Header_field = '(' + FieldList_Header_fieldName + '|' + FieldList_Header_arrayField + ')\\|';
|
|
var FieldList_Header_pattern = new RegExp(FieldList_Header_field, 'g');
|
|
var FieldList_Header_line = "^(\\[(" + FieldList_Header_field + ")*\\];)$";
|
|
var FieldList_Header_linePattern = new RegExp(FieldList_Header_line, 'm');
|
|
|
|
function FieldList(header, name) {
|
|
this._name = name ? name : "";
|
|
this._fields = [];
|
|
|
|
var match = header.match(FieldList_Header_pattern);
|
|
if (!match) return;
|
|
|
|
for (var i = 0; i < match.length; ++i) {
|
|
var s = match[i].match(FieldList_Header_field)[1]; // Strip trailing pipe
|
|
|
|
var f = s;
|
|
if (s.match(FieldList_Header_arrayField)) {
|
|
var name = s.match(FieldList_Header_arrayFieldName)[0];
|
|
f = new FieldList(s, name);
|
|
}
|
|
this._fields[i] = f;
|
|
}
|
|
|
|
this.getFieldName = function(i) {
|
|
var f = this._fields[i];
|
|
if (f instanceof FieldList) {
|
|
return f._name;
|
|
} else {
|
|
return f;
|
|
}
|
|
}
|
|
|
|
this.getHeader = function() {
|
|
var result = this._name + "[";
|
|
for(var i = 0; i < this._fields.length; ++i) {
|
|
var f = this._fields[i];
|
|
if (f instanceof FieldList) {
|
|
result += f.getHeader();
|
|
} else {
|
|
result += f;
|
|
}
|
|
result += "|";
|
|
}
|
|
result += "]";
|
|
return result;
|
|
}
|
|
|
|
this.getHeaderLine = function() {
|
|
return this.getHeader() + ";";
|
|
}
|
|
}
|
|
|
|
function findHeader(str) {
|
|
var match = str.match(FieldList_Header_linePattern);
|
|
if (!match) return;
|
|
return new FieldList(match[0]);
|
|
}
|
|
|