Skip to content
Snippets Groups Projects
Select Git revision
  • aa72efb204287848a56a74e90dd30553277c2abf
  • master default
  • shib-cas
3 results

DocBlock.php

Blame
  • user avatar
    Tim Steiner authored
    Creation of framework level controller, model, and view directories.  Moved existing library files to /library.
    
    aa72efb2
    History
    DocBlock.php 1.47 KiB
    <?php
    
    class Nmc_DocBlock {
    
        protected $_values = array();
        static protected $_multiFields = array('param');
    
    
        /**
         * Creates a new Nmc_DocBlock object from a DocBlock string
         *
         * @param string $string
         * @return Nmc_DocBlock
         */
        static public function createFromString($string)
        {
            $string = explode("\n", $string);
            $string = array_slice($string, 1, -1);
            $parsedDocBlock = array();
            foreach($string as $lineNumber => $line) {
                $leadingAstrisk = strpos($line, '*');
                $line = substr($line, $leadingAstrisk + 1);
                $line = trim($line);
                if($line[0] == '@') {
                    $nextSpace = strpos($line, ' ');
                    $key = substr($line, 1, $nextSpace - 1);
                    $value = substr($line, $nextSpace + 1);
                    if(in_array($key, self::$_multiFields)) {
                        $parsedDocBlock[$key][] = $value;
                    } else {
                        $parsedDocBlock[$key] = $value;
                    }
                } else {
                    $parsedDocBlock['description'] .= $line . "\n";
                }
            }
    
            $docBlock = new Nmc_DocBlock();
            foreach($parsedDocBlock as $key => $value) {
                $docBlock->$key = $value;
            }
            return $docBlock;
        }
    
        public function __get($name)
        {
            return $this->_values[$name];
        }
    
        public function __set($name, $value)
        {
            $this->_values[$name] = $value;
        }
    
    }