xref: /plugin/combo/ComboStrap/Dictionary.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
14cadd4f8SNickeau<?php
24cadd4f8SNickeau
34cadd4f8SNickeau
44cadd4f8SNickeaunamespace ComboStrap;
54cadd4f8SNickeau
64cadd4f8SNickeau
74cadd4f8SNickeauclass Dictionary
84cadd4f8SNickeau{
94cadd4f8SNickeau
104cadd4f8SNickeau    /**
11*04fd306cSNickeau     * @throws ExceptionCompile
124cadd4f8SNickeau     */
134cadd4f8SNickeau    public static function getFrom(string $name): array
144cadd4f8SNickeau    {
15*04fd306cSNickeau        $path = DirectoryLayout::getComboDictionaryDirectory()->resolve("$name.json");
164cadd4f8SNickeau        if (!FileSystems::exists($path)) {
17*04fd306cSNickeau            throw new ExceptionCompile("The dictionary file ($path) does not exist");
184cadd4f8SNickeau        }
194cadd4f8SNickeau        $jsonContent = FileSystems::getContent($path);
204cadd4f8SNickeau        try {
214cadd4f8SNickeau            $dict = Json::createFromString($jsonContent)->toArray();
22*04fd306cSNickeau        } catch (ExceptionCompile $e) {
23*04fd306cSNickeau            throw new ExceptionCompile("The dictionary ($path) is not a valid json. Error: {$e->getMessage()}");
244cadd4f8SNickeau        }
254cadd4f8SNickeau        if ($dict === null) {
26*04fd306cSNickeau            throw new ExceptionCompile("The returned dictionary of the file ($path) is empty");
274cadd4f8SNickeau        }
284cadd4f8SNickeau        return $dict;
294cadd4f8SNickeau    }
304cadd4f8SNickeau}
31