Overview

Namespaces

  • academicpuma
    • citeproc

Classes

  • Bibliography
  • Choose
  • Citation
  • CiteProc
  • Collection
  • CSLUtils
  • Date
  • DatePart
  • Element
  • EtAl
  • Factory
  • Format
  • Group
  • Info
  • Label
  • Layout
  • Locale
  • Macro
  • Macros
  • Mapper
  • Name
  • Names
  • Number
  • Option
  • Options
  • PElse
  • PElseIf
  • PIf
  • RenderingElement
  • Sort
  • Style
  • Substitute
  • Terms
  • Text
  • Overview
  • Namespace
  • Class
 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:         //$class_name = 'csl_' . str_replace('-', '_', $dom_node->nodeName);
10:         $className = ucfirst($dom_node->nodeName);
11:         
12:         while(true) {
13:             //find '-'
14:             $pos = strpos($className, '-');
15:             if($pos === false) {
16:                 break;
17:             }
18:             //replace '-' and transform to camel case
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: }
API documentation generated by ApiGen