1: <?php
2:
3: namespace academicpuma\citeproc;
4: use \Exception;
5:
6: class Factory {
7:
8: public static function create($dom_node, $citeproc = NULL) {
9:
10: $className = ucfirst($dom_node->nodeName);
11:
12: while(true) {
13:
14: $pos = strpos($className, '-');
15: if($pos === false) {
16: break;
17: }
18:
19: $className = substr($className, 0, $pos) . ucfirst(substr($className, $pos+1));
20: }
21:
22:
23: switch($className) {
24: case 'If':
25: case 'Else':
26: case 'ElseIf':
27: $className = 'P'.$className;
28: }
29:
30: $className = 'academicpuma\\citeproc\\'.$className;
31:
32: if(class_exists($className)) {
33: return new $className($dom_node, $citeproc);
34: }
35: return null;
36:
37: }
38:
39: }