Skip to content

Commit

Permalink
Add support for parsing FF3 by ignoring lower case chars is props.
Browse files Browse the repository at this point in the history
fixes: #125
related to: #101
  • Loading branch information
artasparks committed Mar 22, 2016
1 parent e4ec920 commit b2c6d80
Show file tree
Hide file tree
Showing 28 changed files with 285 additions and 95 deletions.
40 changes: 20 additions & 20 deletions src/compiled/glift.js

Large diffs are not rendered by default.

47 changes: 25 additions & 22 deletions src/compiled/glift_combined.js
Expand Up @@ -11091,21 +11091,29 @@ glift.sgf = {
goog.provide('glift.parse');

/**
* Glift parsing
* Glift parsing for strings.
*/
glift.parse = {
/**
* Parse types
* @enum {string}
*/
parseType: {
/** FF4 Parse Type */
/**
* FF1-FF4 Parse Type.
*/
SGF: 'SGF',

/** Tygem .gib files. */
TYGEM: 'TYGEM',
/**
* Really, this is FF3.
* TODO(kashomon): Support FF3 as first class citizen

/**
* DEPRECATED.
*
* This was created when I didn't understand the destinction between the
* various FF versions.
*
* Prefer SGF.
*/
PANDANET: 'PANDANET'
},
Expand All @@ -11121,11 +11129,7 @@ glift.parse = {
var parseType = glift.parse.parseType;
var ttype = parseType.SGF;
if (filename.indexOf('.sgf') > -1) {
if (str.indexOf('PANDANET') > -1) {
ttype = parseType.PANDANET;
} else {
ttype = parseType.SGF;
}
ttype = parseType.SGF;
} else if (filename.indexOf('.gib') > -1) {
ttype = parseType.TYGEM;
}
Expand All @@ -11141,25 +11145,17 @@ glift.parse = {
*/
fromString: function(str, opt_ttype) {
var ttype = opt_ttype || glift.parse.parseType.SGF;
if (ttype === glift.parse.parseType.PANDANET) {
// PANDANET type is now equivalent to SGF.
ttype = glift.parse.parseType.SGF;
}
var methodName = glift.enums.toCamelCase(ttype);
var func = glift.parse[methodName];
var movetree = func(str);
return glift.rules.movetree.initRootProperties(movetree);
}
};

/**
* Parse a pandanet SGF. Pandanet SGFs, are the same as normal SGFs except that
* they contain invalid SGF properties.
*/
// TODO(kashomon): Delete and fold into SGF parsing. this is really a special
// case of FF3, which should be supported by Glift.
glift.parse.pandanet = function(string) {
var replaceRegex = /CoPyright\[[^\]]*\]/;
var repl = string.replace(replaceRegex, '');
return glift.parse.sgf(repl);
};

/**
* Metadata Start and End tags allow us to insert metadata directly, as
* JSON, into SGF comments. It will not be display by glift (although it
Expand Down Expand Up @@ -11189,6 +11185,7 @@ glift.parse.sgfMetadataProperty = 'GC';
*
* @param {string} sgfString
* @return {!glift.rules.MoveTree}
* @package
*/
glift.parse.sgf = function(sgfString) {
var states = {
Expand Down Expand Up @@ -11217,6 +11214,7 @@ glift.parse.sgf = function(sgfString) {

var wsRegex = /\s|\n/;
var propRegex = /[A-Z]/;
var oldStyleProp = /[a-z]/;

var curstate = states.BEGINNING_BEFORE_PAREN;
var movetree = glift.rules.movetree.getInstance();
Expand Down Expand Up @@ -11311,6 +11309,9 @@ glift.parse.sgf = function(sgfString) {
charBuffer.push(curchar);
// In the SGF Specification, SGF properties can be of arbitrary
// lengths, even though all standard SGF properties are 1-2 chars.
} else if (oldStyleProp.test(curchar)) {
// Do nothing. This is an FF1 - FF3 style property. For
// compatibility, we just ignore it and move on.
} else if (curchar === syn.LBRACE) {
curProp = flushCharBuffer();
if (glift.rules.prop[curProp] === undefined) {
Expand Down Expand Up @@ -11401,6 +11402,7 @@ glift.parse.sgf = function(sgfString) {
* @param {string} curchar
* @param {string} message
* @param {boolean} isWarning
* @package
*/
glift.parse.sgfParseError = function(lineNum, colNum, curchar, message, isWarning) {
var header = 'SGF Parsing ' + (isWarning ? 'Warning' : 'Error');
Expand All @@ -11421,6 +11423,7 @@ glift.parse.sgfParseError = function(lineNum, colNum, curchar, message, isWarnin
*
* @param {string} gibString
* @retutrn {!glift.rules.MoveTree}
* @package
*/
glift.parse.tygem = function(gibString) {
var states = {
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/AjaxProblemTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/BaseWidgetTest.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/BboxFinder.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/BoardEditorTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/ExampleTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/GameFigureTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/GameViewerTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/IconBarTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/KogosTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/MarksTester.html
Expand Up @@ -102,7 +102,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/MoveNumberCircleTester.html
Expand Up @@ -102,7 +102,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/PerfTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/PositionTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/ProblemServerTester.html
Expand Up @@ -102,7 +102,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/ProblemTester.html
Expand Up @@ -102,7 +102,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/QunitTest.html
Expand Up @@ -123,7 +123,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/TextOnlyTester.html
Expand Up @@ -102,7 +102,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/ThemeTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
1 change: 0 additions & 1 deletion src/htmltests/TygemGameTester.html
Expand Up @@ -103,7 +103,6 @@
<script type="text/javascript" src="../sgf/sgf.js"></script>
<!-- parse sources -->
<script type="text/javascript" src="../parse/parse.js"></script>
<script type="text/javascript" src="../parse/pandanet.js"></script>
<script type="text/javascript" src="../parse/sgf_parser.js"></script>
<script type="text/javascript" src="../parse/tygem.js"></script>
<!-- controllers sources -->
Expand Down
11 changes: 0 additions & 11 deletions src/parse/pandanet.js

This file was deleted.

2 changes: 1 addition & 1 deletion src/parse/pandanet_test.js
Expand Up @@ -49,7 +49,7 @@
// Patch in a testing logger.
glift.util.logz = testLogger;

var f = glift.parse.pandanet(testfile);
var f = glift.parse.fromString(testfile, glift.parse.parseType.PANDANET);
ok(f);
f.moveDown();
deepEqual(f.properties().getOneValue('B'), 'qd');
Expand Down
28 changes: 18 additions & 10 deletions src/parse/parse.js
@@ -1,21 +1,29 @@
goog.provide('glift.parse');

/**
* Glift parsing
* Glift parsing for strings.
*/
glift.parse = {
/**
* Parse types
* @enum {string}
*/
parseType: {
/** FF4 Parse Type */
/**
* FF1-FF4 Parse Type.
*/
SGF: 'SGF',

/** Tygem .gib files. */
TYGEM: 'TYGEM',
/**
* Really, this is FF3.
* TODO(kashomon): Support FF3 as first class citizen

/**
* DEPRECATED.
*
* This was created when I didn't understand the destinction between the
* various FF versions.
*
* Prefer SGF.
*/
PANDANET: 'PANDANET'
},
Expand All @@ -31,11 +39,7 @@ glift.parse = {
var parseType = glift.parse.parseType;
var ttype = parseType.SGF;
if (filename.indexOf('.sgf') > -1) {
if (str.indexOf('PANDANET') > -1) {
ttype = parseType.PANDANET;
} else {
ttype = parseType.SGF;
}
ttype = parseType.SGF;
} else if (filename.indexOf('.gib') > -1) {
ttype = parseType.TYGEM;
}
Expand All @@ -51,6 +55,10 @@ glift.parse = {
*/
fromString: function(str, opt_ttype) {
var ttype = opt_ttype || glift.parse.parseType.SGF;
if (ttype === glift.parse.parseType.PANDANET) {
// PANDANET type is now equivalent to SGF.
ttype = glift.parse.parseType.SGF;
}
var methodName = glift.enums.toCamelCase(ttype);
var func = glift.parse[methodName];
var movetree = func(str);
Expand Down
15 changes: 3 additions & 12 deletions src/parse/parse_test.js
Expand Up @@ -5,18 +5,9 @@
var sgfs = testdata.sgfs

test('fromFileName', function() {
var oldFromString = glift.parse.fromString;
glift.parse.fromString = function(str, ttype) {
return ttype;
};

deepEqual(fromFileName('z', 'foo.sgf'), parseType.SGF);
deepEqual(fromFileName('z', 'foo.gib'), parseType.TYGEM);
deepEqual(fromFileName('PANDANET', 'foo.sgf'), parseType.PANDANET);
deepEqual(fromFileName('PANDANET', 'foo.gib'), parseType.TYGEM);
deepEqual(fromFileName('z', 'foo.zed'), parseType.SGF);

glift.parse.fromString = oldFromString;
ok(fromFileName('(;GB[1])', 'foo.sgf'), parseType.SGF);
ok(fromFileName('(;GB[1]CoPyright[PANDANET])', 'foo.sgf'), parseType.SGF);
ok(fromFileName('STO 0 6 1 2 14 ', 'foo.gib'));
});

test('from string: SGF, escaped comment', function() {
Expand Down

0 comments on commit b2c6d80

Please sign in to comment.