Overview

Packages

  • PHP
  • vsword
    • node
    • parser
      • addesed
    • structure
      • style

Classes

  • DefaultInitNode
  • HTMLLoader
  • HtmlParser
  • Parser
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: 
  3: /**
  4: *  Class DefaultInitNode processes tags.
  5: * 
  6: *  @version 1.0.3
  7: *  @author v.raskin
  8:  * @package vsword.parser
  9: */ 
 10: class DefaultInitNode implements IInitNode {
 11: 
 12:     /**
 13:     * @var VsWord
 14:     */
 15:     protected $doc;
 16: 
 17:     /**
 18:     * @param VsWord  $doc Nead for add files
 19:     */
 20:     public function __construct(VsWord $doc = NULL) {
 21:         $this->doc = $doc;
 22:     }
 23:     
 24:     /**
 25:     * @return VsWord
 26:     */
 27:     public function getVsWord() {
 28:         return $this->doc;
 29:     }
 30: 
 31:     /**
 32:     * @param string $tagName
 33:     * @param mixed $attributes
 34:     * @return Node
 35:     */
 36:     function initNode($tagName, $attributes) {
 37:         //default implemenation
 38:         switch (strtolower($tagName)) {
 39:             case 'img': //image
 40:                 
 41:                 if(!is_null($this->getVsWord()) && isset($attributes['src']) && @file_get_contents($attributes['src'], false, NULL, -1, 1) !== FALSE) {
 42:                     $file = $attributes['src'];
 43:                     $attach = $this->getVsWord()->getAttachImage($file);
 44:                     $drawingNode = new DrawingNode();
 45:                     $drawingNode->addImage($attach);  
 46:                     return $drawingNode;
 47:                 }
 48:              break;
 49:             case 'p': case 'div':
 50:                 return new PCompositeNode();
 51:                 break;
 52:             case 'br':case 'hr': 
 53:                 return new BrNode();  
 54:                 break;
 55:             case 'span':
 56:                 return new RCompositeNode();        
 57:                 break; 
 58:             case 'i':
 59:                 $r = new RCompositeNode();
 60:                 $r->addTextStyle(new ItalicStyleNode());
 61:                 return $r;
 62:                 break;  
 63:             case 'b': case 'strong': case 'h4': case 'h5':
 64:                 $r = new RCompositeNode();
 65:                 $r->addTextStyle(new BoldStyleNode());
 66:                 return $r;
 67:                 break; 
 68:             case 'u':
 69:                 $r = new RCompositeNode();
 70:                 $r->addTextStyle(new UnderlineStyleNode());
 71:                 return $r;
 72:                 break;
 73:             case 'h1':  
 74:                 $p = new PCompositeNode();
 75:                 $r = new RCompositeNode();
 76:                 $p->addNode($r); 
 77:                 $r->addTextStyle(new BoldStyleNode());
 78:                 $r->addTextStyle(new FontSizeStyleNode(36)); 
 79:                 return $p;
 80:                 break;
 81:             case 'h2':  
 82:                 $p = new PCompositeNode();
 83:                 $r = new RCompositeNode();
 84:                 $p->addNode($r); 
 85:                 $r->addTextStyle(new BoldStyleNode());
 86:                 $r->addTextStyle(new FontSizeStyleNode(26)); 
 87:                 return $p;
 88:                 break;
 89:             case 'h3':  
 90:                 $p = new PCompositeNode();
 91:                 $r = new RCompositeNode();
 92:                 $p->addNode($r); 
 93:                 $r->addTextStyle(new BoldStyleNode());
 94:                 $r->addTextStyle(new FontSizeStyleNode(18)); 
 95:                 return $p;
 96:                 break;
 97:             case 'table':   
 98:                 return new TableCompositeNode();
 99:                 break;
100:             case 'tr':  
101:                 return new TableRowCompositeNode();
102:                 break; 
103:             case 'td':case 'th':    
104:                 $td = new TableColCompositeNode();
105:                 $td->addNode( new PCompositeNode());
106:                 return $td;
107:                 break; 
108:             case 'ul':case 'ol':    
109:                 return new ListCompositeNode();
110:                 break;  
111:             case 'li':  
112:                 return new ListItemCompositeNode();
113:                 break; 
114:         }
115:         return new EmptyCompositeNode();
116:     }
117: }
wordx API documentation generated by ApiGen 2.8.0