comparison index.php @ 3:aeb37c6b16fd

Fixes, also added integrated test data.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 10 Jan 2011 04:15:48 +0200
parents 666d475c8f92
children 563783b8cd22
comparison
equal deleted inserted replaced
2:666d475c8f92 3:aeb37c6b16fd
1 <? 1 <?
2 $pageTitle = "Pupunen BatMUD Chest Command Creator ALPHA"; 2 $pageTitle = "Pupunen BatMUD Chest Command Creator ALPHA";
3 $pageIndex = "index.php"; 3 $pageIndex = "index.php";
4 require "mcommon.inc.php"; 4 require "mcommon.inc.php";
5 5
6 $fixNumbers = array( 6
7 "one" => 1, "two" => 2, "three" => 3, "four" => 4, 7 // Multi-stack item fixups
8 "five" => 5, "six" => 6, "seven" => 7, "eight" => 8,
9 "nine" => 9, "ten" => 10
10 );
11
12
13 $fixItemTable = array( 8 $fixItemTable = array(
14 "(purple|green) gloves" => 'a ${1} glove', 9 "(purple|green) gloves" => 'a ${1} glove',
15 "heavy black metal rings" => "a heavy black metal ring", 10 "heavy black metal rings" => "a heavy black metal ring",
16 "bracelet mades of green crystal" => "a bracelet made of green crystal", 11 "bracelet mades of green crystal" => "a bracelet made of green crystal",
17 "white cloth packs for holding salves" => "white cloth pack for holding salves", 12 "white cloth packs for holding salves" => "white cloth pack for holding salves",
13 );
14
15
16 $fixNumbers = array(
17 "one" => 1, "two" => 2, "three" => 3, "four" => 4,
18 "five" => 5, "six" => 6, "seven" => 7, "eight" => 8,
19 "nine" => 9, "ten" => 10
18 ); 20 );
19 21
20 22
21 function getJSArraySegment($arr) 23 function getJSArraySegment($arr)
22 { 24 {
78 <p> 80 <p>
79 <b>This application REQUIRES JavaScript to be enabled!</b> 81 <b>This application REQUIRES JavaScript to be enabled!</b>
80 </p> 82 </p>
81 </noscript> 83 </noscript>
82 <p> 84 <p>
85 <form action"<? echo $pageIndex; ?>" method="post">
86 <input type="hidden" value="YToxOntzOjU6Iml0ZW1zIjthOjQ3OntpOjA7czozODoiVGhlIHN0YWZmIG9mIExlcmV0aGluIGxhYmVsZWQgYXMgfEdncnwiO2k6MTtzOjM1OiJzd2lybGVkIGdyZWVuIHZlc3QgbGFiZWxlZCBhcyAoR2dyKSI7aToyO3M6Njk6ImEgd2VsbC1jcmFmdGVkIHBhaXIgb2Ygc3R1ZC1jb3ZlcmVkIGxlYXRoZXIgbGVnZ2luZ3MgbGFiZWxlZCBhcyAoR2dyKSI7aTozO3M6NTU6IlJpbmcgb2Ygd2lzZG9tIFtNYWRlIGJ5OiBOdWFuZV0gbGFiZWxlZCBhcyA2d2lzMWhwci9nZ3IiO2k6NDtzOjU0OiJzaGluaW5nIHJpbmcgY3JhZnRlZCBvdXQgb2YgbW9vbnN0b25lIGxhYmVsZWQgYXMgKEdncikiO2k6NTtzOjUxOiJHcmlteSBncmVhdCBjbG9hayBvZiB0cnVlIHNvcmNlcmVyIGxhYmVsZWQgYXMgfEdncnwiO2k6NjtzOjI5OiJhIGJsYWNrIGhvb2QgbGFiZWxlZCBhcyB8R2dyfCI7aTo3O3M6Mzg6InRoZSB0b21lIG9mIGtub3dsZWRnZSBsYWJlbGVkIGFzIChHZ3IpIjtpOjg7czo1MzoiaGVhdnkgdGFiYXJkIHdpdGggYSBjaGFsaWNlIGVuc2lnbmlhIGxhYmVsZWQgYXMgKEdncikiO2k6OTtzOjQ3OiJkYXJrIGdyZXkgYW5kIHdoaXRlIHBsYWlkIGtpbHQgbGFiZWxlZCBhcyAoR2dyKSI7aToxMDtzOjM4OiJzdHJvbmcgc2FwcGhpcmUgYm9vdHMgbGFiZWxlZCBhcyAoR2dyKSI7aToxMTtzOjI3OiJzdW4gYW11bGV0IGxhYmVsZWQgYXMgKEdncikiO2k6MTI7czo0MDoiQW5jaWVudCBCcmFjZXJzIG9mIFh6dWkgbGFiZWxlZCBhcyAoR2dyKSI7aToxMztzOjQyOiJnbGl0dGVyaW5nIGxlZyBwcm90ZWN0b3JzIGxhYmVsZWQgYXMgKEdncikiO2k6MTQ7czo0OToiYSBicmFjZWxldCBtYWRlIG9mIGdyZWVuIGNyeXN0YWwgbGFiZWxlZCBhcyAoR2dyKSI7aToxNTtzOjQ5OiJhIGJyYWNlbGV0IG1hZGUgb2YgZ3JlZW4gY3J5c3RhbCBsYWJlbGVkIGFzIChHZ3IpIjtpOjE2O3M6NDU6ImEgcmVpbmZvcmNlZCBicm9uemUgYnJhY2VsZXQgbGFiZWxlZCBhcyAoR2dyKSI7aToxNztzOjQyOiJ0aGUgQnJhY2VsZXRzIG9mIERhcmtuZXNzIGxhYmVsZWQgYXMgKEdncikiO2k6MTg7czozNDoiVGlidXJjaW8ncyBhbXVsZXQgbGFiZWxlZCBhcyAoR2dyKSI7aToxOTtzOjQ5OiJuZWNrbGFjZSBtYWRlIG91dCBvZiBzaGFycCBmYW5ncyBsYWJlbGVkIGFzIChHZ3IpIjtpOjIwO3M6NjI6ImEgZ2xpbW1lcmluZyBsZWF0aGVyIGJlbHQgd2l0aCBnZW0gZGVjb3JhdGlvbiBsYWJlbGVkIGFzIChHZ3IpIjtpOjIxO3M6NDE6ImEgaGVhdnkgYmxhY2sgbWV0YWwgcmluZyBsYWJlbGVkIGFzIChHZ3IpIjtpOjIyO3M6NDE6ImEgaGVhdnkgYmxhY2sgbWV0YWwgcmluZyBsYWJlbGVkIGFzIChHZ3IpIjtpOjIzO3M6NDU6IkRlbW9uaWMgUmluZyBvZiBJbnZpc2liaWxpdHkgbGFiZWxlZCBhcyAoR2dyKSI7aToyNDtzOjMxOiJhIHB1cnBsZSBnbG92ZSBsYWJlbGVkIGFzIChHZ3IpIjtpOjI1O3M6MzE6ImEgcHVycGxlIGdsb3ZlIGxhYmVsZWQgYXMgKEdncikiO2k6MjY7czozMDoiYSBncmVlbiBnbG92ZSBsYWJlbGVkIGFzIChHZ3IpIjtpOjI3O3M6MzA6ImEgZ3JlZW4gZ2xvdmUgbGFiZWxlZCBhcyAoR2dyKSI7aToyODtzOjQzOiJhIHBhaXIgb2YgYmxhY2sgYm9vdHMgbGFiZWxlZCBhcyB8R2dyTXVycml8IjtpOjI5O3M6NzI6IkEgYmVhdXRpZnVsIHJvc2FyeSBlbmZvbGRlZCB3aXRoIHdoaXRlIG1pc3QgbGFiZWxlZCBhcyB8R2dyTXVycml8IChob2x5KSI7aTozMDtzOjgyOiJhIHNtYWxsIHJpbmcgYmVhcmluZyB0aGUgZW1ibGVtIG9mIHRoZSBidW5ueSBbTWFkZSBieTogS2lvbWV0XSBsYWJlbGVkIGFzIDZ3aXMyaW50IjtpOjMxO3M6NjE6ImEgdmlhbCBjb250YWluaW5nIHRoZSB0ZWFycyBvZiBPeHRvdGggbGFiZWxlZCBhcyAoR2dyKSAoaG9seSkiO2k6MzI7czo0NDoiQSBsZWF0aGVyIHBvdWNoIGxhYmVsZWQgYXMgdjQgKHF1YXJ0ZXIgZnVsbCkiO2k6MzM7czo0Mzoic2xlZXZlcyBvZiBtb29taW4gZW11bHNpb24gbGFiZWxlZCBhcyAoR2dyKSI7aTozNDtzOjMzOiJhIGdyZWVuIGhlYWRiYW5kIGxhYmVsZWQgYXMgKEdncikiO2k6MzU7czozNDoiQ2FwZSBvZiBLbm93bGVkZ2UgbGFiZWxlZCBhcyAoR2dyKSI7aTozNjtzOjU0OiJUaGUgZ2xlYW1pbmcgYmx1ZSBjb2xsYXIgb2YgQmVuZ2Fsb3JlIGxhYmVsZWQgYXMgKEdncikiO2k6Mzc7czo1MToiZ29sZGVuIGJlbHQgb2YgRmFpciBSaXZlci1EYXVnaHRlciBsYWJlbGVkIGFzIChHZ3IpIjtpOjM4O3M6NDI6ImEgYmxhY2sgY2xvYWsgKGV2aWwgZ2xvdykgbGFiZWxlZCBhcyB8R2dyfCI7aTozOTtzOjM1OiJSaW5nIG9mIHRoZSBNZWR1c2EgbGFiZWxlZCBhcyAoR2dyKSI7aTo0MDtzOjQ0OiJBIGxvdyB3aWRlLWJyaW1tZWQgaGF0IGxhYmVsZWQgYXMgfEdnck11cnJpfCI7aTo0MTtzOjEzOiJhIHN0ZXRob3Njb3BlIjtpOjQyO3M6NjY6ImEgc2hpbW1lcmluZyBibHVlIGJyZWFzdHBsYXRlIG1hZGUgb2YgcXVhcnR6IGxhYmVsZWQgYXMgfEdnck11cnJpfCI7aTo0MztzOjUzOiJhIHBhaXIgb2YgcHVyZSB3aGl0ZSBmbG93aW5nIHNsZWV2ZXMgbGFiZWxlZCBhcyAoR2dyKSI7aTo0NDtzOjQzOiJSZWRmYW5nIEJlYWRzIG9mIElyb24gV2lsbCBsYWJlbGVkIGFzIChHZ3IpIjtpOjQ1O3M6NTk6Ik5vdmEgQXJjYW51bSwgTWVsa2lvcidzIGJvb2sgb2YgbmVjcm9tYW5jeSBsYWJlbGVkIGFzIChHZ3IpIjtpOjQ2O3M6NDQ6ImEgcGFpciBvZiBzaG9ydCBncmVlbiBib290cyBsYWJlbGVkIGFzIChHZ3IpIjt9fQ==" name="data" />
87 <input type="hidden" value="2" name="mode" />
83 First, you should provide a list of equipments you wish to manage. 88 First, you should provide a list of equipments you wish to manage.
84 Just plain copy &amp; paste of an inventory listing is enough. 89 Just plain copy &amp; paste of an inventory listing is enough.
90 You can also test with pre-defined equipments,
91 <input type="submit" value=" Test " /> by clicking the button.
92 </form>
85 </p> 93 </p>
86 <p> 94 <p>
87 <b>Stacks of items are not supported, and few other things may cause problems too.</b> 95 <b>Stacks of items are not supported, and few other things may cause problems too.</b>
88 </p> 96 </p>
89 <form action="<? echo $pageIndex; ?>" method="post"> 97 <form action="<? echo $pageIndex; ?>" method="post">
117 } 125 }
118 126
119 foreach ($postData as $line) { 127 foreach ($postData as $line) {
120 // Trim whitespace 128 // Trim whitespace
121 $str = trim($line); 129 $str = trim($line);
122 130 if ($str == "") continue;
123 if ($str != "") { 131
124 // Strip glows and counters from item "handle" 132 // Strip glows and counters from item "handle"
125 if (preg_match("/^(.+?)\s+(<.+? glow>|\(\d+\/\d+\)|\[\d+\/\d+\])$/", $str, $m)) 133 if (preg_match("/^(.+?)\s+(<.+? glow>|\(\d+\/\d+\)|\[\d+\/\d+\])$/", $str, $m))
126 $str = $m[1]; 134 $str = $m[1];
127 135
128 // Discard multi-item lines 136 // Discard multi-item lines
129 if (preg_match("/^(two|three|four|five|six|seven|eight|nine)\s+(.+?)( labeled as .+|)$/", $str, $m)) { 137 if (preg_match("/^(many|two|three|four|five|six|seven|eight|nine|ten)\s+(.+?)( labeled as .+|)$/", $str, $m)) {
130 if (isset($fixNumbers[$m[1]])) { 138 if (!isset($fixNumbers[$m[1]])) {
131 $n = $fixNumbers[$m[1]]; 139 $ignored[$str] = "Unparsed stack of many";
132 $changed = 0; 140 } else {
133 141 $n = $fixNumbers[$m[1]];
134 foreach ($fixItemTable as $pat => $rep) { 142 $changed = 0;
135 if ($pat[0] == "*") { 143 foreach ($fixItemTable as $pat => $rep) {
136 if (substr($pat, 1) == $m[2]) { 144 if ($pat[0] == "*") {
137 $res = $rep; 145 if (substr($pat, 1) == $m[2]) {
138 $changed = 1; 146 $res = $rep;
139 } 147 $changed = 1;
140 } else {
141 $res = preg_replace("/".$pat."/", $rep, $m[2], -1, &$changed);
142 } 148 }
143 if ($changed > 0) { 149 } else {
144 addItems($n, $res.$m[3]); 150 $res = preg_replace("/".$pat."/", $rep, $m[2], -1, &$changed);
145 break;
146 }
147 } 151 }
148 152 if ($changed > 0) {
149 if ($changed == 0) { 153 addItems($n, $res.$m[3]);
150 $ignored[$str] = "Unsupported item stack"; 154 break;
151 } 155 }
152 } else 156 }
153 $ignored[$str] = "Unparsed stack of many"; 157 if ($changed == 0) {
154 } else 158 $ignored[$str] = "Unsupported item stack";
155 addItems(1, $str); 159 }
156 } 160 }
161 } else
162 addItems(1, $str);
157 } 163 }
158 164
159 if (count($ignored) > 0) { 165 if (count($ignored) > 0) {
160 ?> 166 ?>
161 <p>Item data processed. Following lines <b>were not accepted</b>:</p> 167 <p>Item data processed. Following lines <b>were not accepted</b>:</p>
163 <tr><th>Item</th><th>Reason</th></tr> 169 <tr><th>Item</th><th>Reason</th></tr>
164 <? 170 <?
165 foreach ($ignored as $name => $reason) { 171 foreach ($ignored as $name => $reason) {
166 echo " <tr><td>".htmlentities($name)."</td><td>".htmlentities($reason)."</td></tr>\n"; 172 echo " <tr><td>".htmlentities($name)."</td><td>".htmlentities($reason)."</td></tr>\n";
167 } 173 }
174
175 $encData = base64_encode(serialize($data));
168 ?> 176 ?>
169 </table> 177 </table>
170 178
171 <form action="<? echo $pageIndex; ?>" method="post"> 179 <form action="<? echo $pageIndex; ?>" method="post">
172 <input type="hidden" value="<? echo base64_encode(serialize($data)); ?>" name="data" /> 180 <input type="hidden" value="<? echo $encData ?>" name="data" />
173 <input type="hidden" value="2" name="mode" /> 181 <input type="hidden" value="2" name="mode" />
182 <?
183 // echo "<textarea name=\"data\" cols=\"100\" rows=\"20\">".$encData."</textarea>\n";
184 ?>
185 <br />
174 <input type="submit" value=" Continue " /> 186 <input type="submit" value=" Continue " />
175 </form> 187 </form>
176 <? 188 <?
177 } else 189 } else
178 $formMode = 3; 190 $formMode = 3;
179 } else { 191 } else {
180 $errorMsg = "No item data provided."; 192 $errorMsg = "No item data provided.";
181 $errorSet = TRUE; 193 $errorSet = TRUE;
182 } 194 }
183 } 195 } // formMode == 1
184 196
185 197
186 /* 198 /*
187 * Unserialize data from previous step 199 * Unserialize data from previous step
188 */ 200 */