blob: f03b8095464473c338b48a54e02868a69647d5bc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace BCDD
{
class PBNField
{
public String Key;
public String Value;
public String RawField;
public PBNField() { }
public PBNField(String key, String value)
{
this.Key = key;
this.Value = value;
this.RawField = String.Format("[{0} \"{1}\"]", this.Key, this.Value);
}
public PBNField(String rawData)
{
this.RawField = rawData;
}
}
class FieldNotFoundException : Exception
{
public FieldNotFoundException() : base() { }
public FieldNotFoundException(String msg) : base(msg) { }
}
class PBNBoard
{
public List<PBNField> Fields;
public PBNBoard(List<string> lines)
{
this.Fields = new List<PBNField>();
Regex linePattern = new Regex(@"\[(.*) ""(.*)""\]");
foreach (String line in lines)
{
PBNField field = new PBNField();
field.RawField = line;
Match lineParse = linePattern.Match(line);
if (lineParse.Success)
{
field.Key = lineParse.Groups[1].Value;
field.Value = lineParse.Groups[2].Value;
}
this.Fields.Add(field);
}
}
public bool HasField(String key)
{
foreach (PBNField field in this.Fields)
{
if (key.Equals(field.Key))
{
return true;
}
}
return false;
}
public String GetField(String key)
{
foreach (PBNField field in this.Fields)
{
if (key.Equals(field.Key))
{
return field.Value;
}
}
throw new FieldNotFoundException(key + " field not found");
}
public void DeleteField(String key)
{
List<PBNField> toRemove = new List<PBNField>();
foreach (PBNField field in this.Fields)
{
if (key.Equals(field.Key))
{
toRemove.Add(field);
}
}
foreach (PBNField remove in toRemove)
{
this.Fields.Remove(remove);
}
}
public String GetLayout()
{
return this.GetField("Deal");
}
public String GetNumber()
{
return this.GetField("Board");
}
public String GetVulnerable()
{
return this.GetField("Vulnerable");
}
public String GetDealer()
{
return this.GetField("Dealer");
}
}
}
|