Need a unique gift idea?
A Pastebin account makes a great Christmas gift
SHARE
TWEET

Untitled

a guest Oct 11th, 2018 57 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. <?php
  2. // Загрузим весь исходник в строку
  3. $fileContents = file_get_contents('uml/ManageTest.java');
  4. // Сделаем из строки массив
  5. $fileArray = str_split($fileContents);
  6. // Объявим массив в который будем записывать индексы
  7. // с который начинается новый класс
  8. $stratIndex = array();
  9. // Создадим массив где будем хранить массивы с классами
  10. $classArray = array();
  11. // Пройдемся по всему массиву и запомним индексы
  12. // с который начинается новый класс
  13. for ($i = 0; $i < count($fileArray); ++$i) {
  14.     if ($fileArray[$i]      == "c" && $fileArray[$i + 1] == "l" &&
  15.         $fileArray[$i + 2]  == "a" && $fileArray[$i + 3] == "s" &&
  16.         $fileArray[$i + 4]  == "s") {
  17.         $startIndex[] = $i;
  18.     }
  19. }
  20. // Скопируем каждый класс в свой массив
  21. for ($i = 0; $i < count($startIndex); $i++) {
  22.     $classArray[$i] = array();
  23.     if (isset($startIndex[$i + 1])) {
  24.         for ($q = $startIndex[$i], $t = 0;
  25.                 $q < $startIndex[$i + 1]; $q++, $t++) {
  26.             $classArray[$i][$t] = $fileArray[$q];
  27.         }
  28.     } else {
  29.         for ($q = $startIndex[$i], $t = 0;
  30.                 $q < count($fileArray); $q++, $t++) {
  31.             $classArray[$i][$t] = $fileArray[$q];
  32.         }
  33.     }
  34. }
  35. // Спарсим инфу по каждому классу в массив
  36. for ($i = 0; $i < count($classArray); $i++) {
  37.     $infoArray[$i] = getClassInfo($classArray[$i]);
  38. }
  39. echo "<pre style='font-size: 11px;'>";
  40. print_r($infoArray);
  41. echo "</pre>";
  42. writeJS($infoArray);
  43. // Функция параметр которой является массивом,
  44. // который содержит класс. Возвращает массив содержащий
  45. // имя класса, родителя(если есть), поля и функции
  46. function getClassInfo($array) {
  47.     return array(   "Name"      => getClassName($array),
  48.                     "Parents"   => getClassParents($array),
  49.                     "Fields"     => getClassField($array),
  50.                     "Methods"   => getClassMethods($array));
  51. }
  52.  
  53. function getClassName($array) {
  54.     $name = array();
  55.     for ($i = 0; $i < count($array); $i++) {
  56.         if ($array[$i]      == "c" && $array[$i + 1] == "l" &&
  57.             $array[$i + 2]  == "a" && $array[$i + 3] == "s" &&
  58.             $array[$i + 4]  == "s") break;
  59.     }
  60.     for ($q = $i + 6, $t = 0; $q < count($array); $q++, $t++) {
  61.         if ($array[$q] == "{") break;
  62.         if ($array[$q]      == "e" && $array[$q + 1] == "x" &&
  63.             $array[$q + 2]  == "t" && $array[$q + 3] == "e" &&
  64.             $array[$q + 4]  == "n" && $array[$q + 5] == "d" &&
  65.             $array[$q + 6]  == "s") break;
  66.         $name[$t] = $array[$q];
  67.     }
  68.     return implode($name);
  69. }
  70.  
  71. function getClassParents($array) {
  72.     $name = array();
  73.     for ($i = 0; $i < count($array); $i++) {
  74.         if ($array[$i]      == "e" && $array[$i + 1] == "x" &&
  75.             $array[$i + 2]  == "t" && $array[$i + 3] == "e" &&
  76.             $array[$i + 4]  == "n" && $array[$i + 5] == "d" &&
  77.             $array[$i + 6]  == "s") break;
  78.     }
  79.     for ($q = $i + 8, $t = 0; $q < count($array); $q++, $t++) {
  80.         if ($array[$q] == "{") break;
  81.         $name[$t] = $array[$q];
  82.     }
  83.     return implode($name);
  84. }
  85.  
  86. function getClassField($array) {
  87.     $fields = array();
  88.     $t = 0;
  89.     $modifiers = findModifier($array);
  90.     if (isset($modifiers)) {
  91.         foreach ($modifiers as $key => $modifier) {
  92.             for ($q = 0; $q < count($modifier); $q++) {
  93.                 for ($i = $modifier[$q]; $i < count($array); $i++) {
  94.                     if ($array[$i] == ";") break;
  95.                     if ($array[$i] == "(") {
  96.                         unset($fields[$t]);
  97.                         break;
  98.                     }
  99.                     $fields[$t][] = $array[$i];
  100.                 }
  101.                 if (isset($fields[$t])) $t++;
  102.             }
  103.         }
  104.         for ($i = 0; $i < count($fields); $i++) {
  105.             for ($q = 0; $q < count($fields[$i]); $q++) {
  106.                 if ($fields[$i][$q] != " ") {
  107.                     $fullInfo[$i]["Type"][] = $fields[$i][$q];
  108.                 } else break;
  109.             }
  110.             for ($t = $q + 1; $t < count($fields[$i]); $t++) {
  111.                 $fullInfo[$i]["Name"][] = $fields[$i][$t];
  112.             }
  113.             $fullInfo[$i] = implode($fullInfo[$i]["Name"]) . " : " .
  114.                             implode($fullInfo[$i]["Type"]);
  115.         }
  116.         return $fullInfo;
  117.     }
  118. }
  119.  
  120. function getClassMethods($array) {
  121.     $fields = array();
  122.     $t = 0;
  123.     $modifiers = findModifier($array);
  124.     if (isset($modifiers)) {
  125.         foreach ($modifiers as $key => $modifier) {
  126.             for ($q = 0; $q < count($modifier); $q++) {
  127.                 for ($i = $modifier[$q]; $i < count($array); $i++) {
  128.                     if ($array[$i] == ";") {
  129.                         unset($fields[$t]);
  130.                         break;
  131.                     }
  132.                     if ($array[$i] == "{") break;
  133.                     $fields[$t][] = $array[$i];
  134.                 }
  135.                 if ($fields[$t] != "") {
  136.                     $fullInfo[$t] = implode($fields[$t]);
  137.                     $t++;
  138.                 }
  139.             }
  140.         }
  141.         return $fullInfo;
  142.     }
  143. }
  144.  
  145. function findModifier($array) {
  146.     for ($i = 0; $i < count($array); $i++) {
  147.         if ($array[$i]      == "p" && $array[$i + 1] == "u" && $array[$i + 2] == "b" &&
  148.             $array[$i + 3]  == "l" && $array[$i + 4] == "i" && $array[$i + 5] == "c")
  149.                 $a["public"][] = $i + 7;
  150.        
  151.         if ($array[$i]      == "p" && $array[$i + 1] == "r" && $array[$i + 2] == "i" &&
  152.             $array[$i + 3]  == "v" && $array[$i + 4] == "a" && $array[$i + 5] == "t" &&
  153.             $array[$i + 6] == "e")  $a["private"][] = $i + 8;
  154.            
  155.         if ($array[$i]      == "s" && $array[$i + 1] == "t" && $array[$i + 2] == "a" &&
  156.             $array[$i + 3]  == "t" && $array[$i + 4] == "i" && $array[$i + 5] == "c")
  157.                 $a["static"][] = $i + 7;
  158.        
  159.         if ($array[$i]      == "p" && $array[$i + 1] == "r" && $array[$i + 2] == "o" &&
  160.             $array[$i + 3]  == "t" && $array[$i + 4] == "e" && $array[$i + 5] == "c" &&
  161.             $array[$i + 6] == "t" && $array[$i + 7] == "e" && $array[$i + 8] == "d")
  162.                 $a["protected"][] = $i + 10;
  163.     }
  164.     return $a;
  165. }
  166. function writeJS($classArray) {
  167.     $temp = 'var all = [';
  168.     foreach ($classArray as $class) {
  169.         $newObject = 'var ' . $class["Name"] . ' = Joint.dia.uml.Class.create({
  170.                             rect : {
  171.                                 width : 145,
  172.                                 height : 150
  173.                             },
  174.                             label : "' . $class["Name"] . '",
  175.                             attributes : ["' . implode('","', $class["Fields"]) . '"],
  176.                             methods : ["' . implode('","', $class["Methods"]) . '"]
  177.                         });
  178.                         ';
  179.         writeToJsFile($newObject);
  180.         $temp .= $class["Name"] . ',';
  181.     }
  182.     $temp .= '];';
  183.     writeToJsFile($temp);
  184.    
  185.     foreach ($classArray as $class) {
  186.         if ($class["Parents"]) {
  187.             $temp = trim($class["Name"]) . '.joint(' . $class["Parents"]
  188.                             . ', Joint.dia.uml.dependencyArrow).register(all);';
  189.             writeToJsFile($temp);
  190.         }
  191.     }
  192. }
  193. function writeToJsFile($string) {
  194.     $filename = 'uml/class.js';
  195.     if (is_writable($filename)) {
  196.         $r = fopen($filename, 'a');
  197.         if ($r) {
  198.             fwrite($r, $string);
  199.             fclose($r);
  200.         }
  201.     }
  202. }
  203. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top