From 06b5fe2cdfc770304abe7a2d66598bd7fd5bbf58 Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Mon, 20 Apr 2020 14:51:53 +0000 Subject: [PATCH] [TOOLS][DOCUMENTATION] Improvements to entity generation script --- .gitignore | 2 +- DOCUMENTATION/database/database.pdf | Bin 0 -> 26327 bytes DOCUMENTATION/database/diagram.pdf | Bin 55248 -> 0 bytes bin/generate_entity_diagrams | 31 ++++++---------------------- src/Util/Common.php | 19 +++++++++++++++++ 5 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 DOCUMENTATION/database/database.pdf delete mode 100644 DOCUMENTATION/database/diagram.pdf diff --git a/.gitignore b/.gitignore index 7e34aa12dc..1ebcadec42 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,4 @@ /file DOCUMENTATION/database/* -!DOCUMENTATION/database/diagram.pdf \ No newline at end of file +!DOCUMENTATION/database/database.pdf \ No newline at end of file diff --git a/DOCUMENTATION/database/database.pdf b/DOCUMENTATION/database/database.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f92649aaa09efb393e6eaeeae280cc10cd324a90 GIT binary patch literal 26327 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

4@elwg&o! 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 literal 0 HcmV?d00001 diff --git a/DOCUMENTATION/database/diagram.pdf b/DOCUMENTATION/database/diagram.pdf deleted file mode 100644 index 2814d5ae11e5ce54017363e476d0649d336e6884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55248 zcma&NQ>-vt(5Sa<+qP}n@3w8*wr$(CZQHhO?|!H4pET)7+R3_@xtXgcE3>lZA(a;q zqh+LHg(96_9$ANCCSV}2Gqi-_;en!;F|jpsHYZ?Z=OFmM0*YSD!rIxyk$_&z+Q8XF z#Kg$X*aV7?56a2e(Zs+8%6&6ONyl!90mbL8?tTj?0z=R5D?t*Ng%E)zDSnisn@opj zv6N-E^vA3AsM*Q_6zGKTVdjBzZR{*Jt!d3p5RoA{D6v=@VV2`06nUVdSPolJ^_a}- z?SYFP_P|ZN)-=!0$blF-6A|B{N%xOM$`3b_-Z4(2$)aV4yelK)JBX5Kkwo2fFP9D_L@ z`FLt*dGZZ;5rZRQVx6i;zo30Gk|~$V=k>y8f6U;-IB%Z;jovl41Wzb0TcWjCv&#zq zX^hdY;)gOUj}6%pHSROr2<{92s6y#SIFU_6$t*Z#5rdQvq6~&OvC(@ww|EdM*&8s$ z2pNi)zzDZB$iAV9x>4;n^EhvFzL+@VRJjyoH+;K89!7S@MU;2?r<2ciQs34gklelx z&Zdv+xn_d!X(4Eg7g}fu?!s-Qt~ApR;%70;^|tGlvyG@|EUBu!;NFkf&GH*_IOu!o z9bdLqKTxQfJLbZH=>uSE)(>!Bhi4zk#Mb!#hUvfTe}Txz_WvT1k${ndh2ekrWFlZ> zVPInUpYlI||0gA2WMyP${XfzD|0Xx44OCuRYmF9afEC0I%k6(fnS&cVf_9*=y&E*z z_Rh`@ZXmaI?Drn$-k9myDKEHS6i-N^vmMWOE>ytC#>Ix0acv7#A3we|MR<;i6N}M zF&IOm17o8TBLhG>1_s9;`TT4GG=br{r2$ZU39!V*22hT^WXR1mFAnYWbPj*&N1ix9 z2qUR~LQ+!B>728FKJ5I$;QBlofz`P+T=R$e!umW`zO|V(p!4f{9TE!9>Fn&Q_Vcr? zt*vt?o1C+2tf_Z03jjN`nUg=#JmmQ~6bskbXzzn3Q7!#;un;?jC@c>AA&K<38=QQjYbuTG55p+GpeI{|#Ue{bIH zK&Hka7#bK{!7u=4XsiwXDt-;XGJiw(;r12=ar0;H3wXrrhn(dLA?7=fB)H$%T{z_8&t}FdyGFn1tVgKg%t?@t?tsJd^wc#Q=Ek_3n)%m;Cne#}D;(Vr3W z*slXaNB`dSG8tVRoWI-I{<1IO1%KdwpJKs)b^=E0rJr0!w*yjH18U&;K^?Zu-$p&m zB;J<&EsIE{vGE*tiB!$>@QYATzmC#xmSH?1+WIVN+g(ax7!m?9T)PnzeIMey{6Pg zgU#Jh-l{c74)r9;t`y=29BR*4gAQ|B zv!iNS^(b92waAR>oMzYhfKL;dXXd@Lx_a=gaaO~^zAf#7le6=~u)^Fqf0Uy?ygeLc zb}%YNWLkyQ)!LUFkP0Vr#ra$+gG&_>Ezoq4Id%(RfIYZ_YD4iFFx#FnGnhLFJp0EU z<~Esn>G{4@l>gDL^>Tih3~a(`yls84vvs%?#UAhVJvB^ch{7%gQ93S)bPYPL7EPdb zSoyy+?MYqu*{S9)MI^f;j1Sv1(doj)qtr`8zFpHQ!-ZUdxU2Iyo-X86sg$=4*Pl`% z-R6qT$KtMj!9)2#U!HU`b8h!iQzI`5b2ln^ed`>cQL#MxNQdw;kXP$W&{r)<@`-9Q z94a0B%xc3&BR*tA##0x_3O}29N3i}#9UR{2D(hOuUItw^v5g>DA*Gk zmb00HDfd1oK??XndVF@u0J2_wd3%?hw3>zXBMUkc+m$5A&2U}P{*%Y7lPe>mm39L&FPAC<` z0-PTW(<90kbag)+R{*yvOrlGXM@biTf&jMYsO*dP+wjgp5lQ~k76oru)*_~1g(EuA zh7wvm8iB(cQiYYiu4CI^-tb^zr)La9_QMs_V~VC|)jt&@8O=nvajn3SI@Ec&wJRHE z_GQS00cSVa|B509&Pym5#^yT7DLWZIEv!9oVD#}B|9T`9hHP1Sz9Y?Y^3z>b?a6<+!xq

vVx2-YaKW|@~D<42$fC(e`A95u4GbTiDI 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%0A(a6QPws>MY4 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

~*nAA*wT&=xyN; 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%0Af_VCt7K9jB?}g{e(-eH}l* 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 iBkc]"); + $tables[] = Common::indent("{$table} [shape=none, label=<\n" . Common::indent(H::html($html)) . "\n>]"); } -$outfile = INSTALL_DIR . '/DOCUMENTATION/database/diagram.tex'; - $replace = [ '/%tables%/' => Common::indent(implode("\n", $tables)), '/%edges%/' => Common::indent(implode("\n", $edges)), @@ -92,11 +73,11 @@ foreach ($replace as $from => $to) { $out = preg_replace($from, $to, $out); } -file_put_contents($outfile, $out); - $path = dirname(__DIR__) . '/DOCUMENTATION/database'; -system("cd {$path} && pdflatex diagram.tex > /dev/null"); +$outfile = $path . '/database.dot'; +file_put_contents($outfile, $out); + system("neato -Goverlap=false -Gsplines=true -Tpdf {$path}/database.dot -o {$path}/database.pdf"); echo "Generated database diagram. See {$path}/database.pdf\n"; diff --git a/src/Util/Common.php b/src/Util/Common.php index cb0408020e..2bbeac620a 100644 --- a/src/Util/Common.php +++ b/src/Util/Common.php @@ -131,4 +131,23 @@ abstract class Common { return implode('', F\map(preg_split('/[\b_]/', $str), self::arity('ucfirst', 1))); } + + /** + * Indent $in, a string or array, $level levels + * + * @param array|string $in + */ + public static function indent($in, int $level = 1, int $count = 2): string + { + if (is_string($in)) { + return self::indent(explode("\n", $in), $level, $count); + } elseif (is_array($in)) { + $indent = str_repeat(' ', $count * $level); + return implode("\n", F\map(F\select($in, + self::arity(function ($s) { return $s != ''; }, 1)), + function ($val) use ($indent) { + return F\concat($indent . $val); + })); + } + } }