#include #include #include #include #include #include namespace rack { namespace plugin { void Model::fromJson(json_t* rootJ) { assert(plugin); json_t* nameJ = json_object_get(rootJ, "name"); if (nameJ) name = json_string_value(nameJ); if (name == "") throw UserException(string::f("No module name for slug %s", slug.c_str())); json_t* descriptionJ = json_object_get(rootJ, "description"); if (descriptionJ) description = json_string_value(descriptionJ); // Tags tags.clear(); json_t* tagsJ = json_object_get(rootJ, "tags"); if (tagsJ) { size_t i; json_t* tagJ; json_array_foreach(tagsJ, i, tagJ) { std::string tag = json_string_value(tagJ); int tagId = tag::findId(tag); if (tagId >= 0) tags.push_back(tagId); } } // Preset paths presetPaths.clear(); std::string presetDir = asset::plugin(plugin, "presets/" + slug); for (const std::string& presetPath : system::getEntries(presetDir)) { presetPaths.push_back(presetPath); } } } // namespace plugin } // namespace rack