public void PatternSearch5_Skip() { var src = @"{a: 'Budilnik', 'Name': 'Znatoki', q:2, z: 148, 'hero': 0x7f}"; var lxr = new JL(new StringSource(src)); var capture = lxr.LazyFSM( (s, t) => s.Skip(1), (s, t) => FSMI.Take ); Aver.IsNotNull(capture); Aver.IsTrue(JSONTokenType.tIdentifier == capture.Type); Aver.AreEqual("a", capture.Text); capture = lxr.LazyFSM( (s, t) => s.Skip(9), (s, t) => FSMI.Take ); Aver.IsNotNull(capture); Aver.IsTrue(JSONTokenType.tIdentifier == capture.Type); Aver.AreEqual("q", capture.Text); }
public void PatternSearch4_LoopUntilMatch() { var src = @"{a: 'Budilnik', 'Name': 'Znatoki', q: 2, z: 148, 'hero': 0x7f}"; var lxr = new JL(new StringSource(src)); var capture = lxr.LazyFSM( (s, t) => s.LoopUntilMatch( (ss, tk) => tk.LoopUntilAny(JSONTokenType.tStringLiteral), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tColon), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tStringLiteral), (ss, tk) => FSMI.TakeAndComplete ), (s, t) => s.Skip(3), (s, t) => t.LoopUntilAny(JSONTokenType.tStringLiteral), (s, t) => t.IsAnyOrAbort(JSONTokenType.tColon), (s, t) => FSMI.Take, (s, t) => t.IsAnyOrAbort(JSONTokenType.tBraceClose) ); Aver.IsNotNull(capture); Aver.IsTrue(JSONTokenType.tIntLiteral == capture.Type); Aver.AreObjectsEqual(127, capture.Value); }
public override bool Match(Azos.CodeAnalysis.JSON.JSONLexer content) { return(content.LazyFSM( (s, t) => s.LoopUntilMatch( (ss, tk) => tk.LoopUntilAny("First-Name", "FirstName", "first_name"), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tColon), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tStringLiteral), (ss, tk) => FSMI.TakeAndComplete ), (s, t) => FSMI.Take ) != null); }
public void PatternSearch() { var src = @"{a: 2, b: 'Znatoki', c: false, d: null, e: ['a','b','c']}"; var lxr = new JL(new StringSource(src)); var bvalue = lxr.LazyFSM( (s, t) => t.LoopUntilAny("b"), (s, t) => t.IsAnyOrAbort(JSONTokenType.tColon), (s, t) => FSMI.TakeAndComplete ); Aver.AreEqual("Znatoki", bvalue.Text); }
public void PatternSearch3() { var src = @"{a: 2, b: 'Znatoki'}"; var lxr = new JL(new StringSource(src)); var bvalue = lxr.LazyFSM( (s, t) => t.LoopUntilAny("b"), (s, t) => t.IsAnyOrAbort(JSONTokenType.tColon), (s, t) => FSMI.Take, (s, t) => t.IsAnyOrAbort(JSONTokenType.tComma) ); Aver.IsNull(bvalue); }
public void PatternSearch10_LoopUntilAfterMatch() { var src = @"1,2,3,4,5,6,7,8,9 : 'Name': 'Znatoki' null 'ok'"; var lxr = new JL(new StringSource(src)); var capture = lxr.LazyFSM( (s, t) => s.LoopUntilAfterMatch( (ss, tk) => tk.LoopUntilAny(JSONTokenType.tStringLiteral), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tColon), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tStringLiteral), (ss, tk) => FSMI.TakeAndComplete ), (s, t) => FSMI.Take ); Aver.IsNotNull(capture); Aver.IsTrue(JSONTokenType.tNull == capture.Type); }
public void PatternSearch7_LoopUntilAfterMatch() { var src = @"{a: 'Budilnik', 'Name': 'Znatoki', q: 2, z: 148, 'hero': 0x7f}"; var lxr = new JL(new StringSource(src)); var capture = lxr.LazyFSM( (s, t) => s.LoopUntilAfterMatch( (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tStringLiteral), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tColon), (ss, tk) => tk.IsAnyOrAbort(JSONTokenType.tStringLiteral), (ss, tk) => FSMI.TakeAndComplete ), (s, t) => FSMI.Take ); Aver.IsNotNull(capture); Aver.IsTrue(JSONTokenType.tComma == capture.Type); }