MCPcopy Create free account
hub / github.com/SpartanJ/eepp / loadFromStream

Method loadFromStream

src/eepp/ui/doc/syntaxdefinitionmanager.cpp:1076–1136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1074}
1075
1076bool SyntaxDefinitionManager::loadFromStream( IOStream& stream,
1077 std::vector<std::string>* addedLangs ) {
1078 if ( stream.getSize() == 0 )
1079 return false;
1080 std::string buffer;
1081 buffer.resize( stream.getSize() );
1082 stream.read( buffer.data(), buffer.size() );
1083
1084 try {
1085 auto j = nlohmann::json::parse( buffer, nullptr, true, true );
1086
1087 if ( j.is_array() ) {
1088 for ( const auto& lang : j ) {
1089 auto res = loadLanguage( lang );
1090 if ( !res.getLanguageName().empty() ) {
1091 auto pos = getLanguageIndex( res.getLanguageName() );
1092 if ( pos.has_value() ) {
1093 if ( addedLangs )
1094 addedLangs->push_back( res.getLanguageName() );
1095 res.mLanguageIndex = *pos;
1096 Lock l( mMutex );
1097 mDefinitions[pos.value()] =
1098 std::make_shared<SyntaxDefinition>( std::move( res ) );
1099 } else {
1100 if ( addedLangs )
1101 addedLangs->push_back( res.getLanguageName() );
1102 Lock l( mMutex );
1103 res.mLanguageIndex = mDefinitions.size();
1104 mDefinitions.emplace_back(
1105 std::make_shared<SyntaxDefinition>( std::move( res ) ) );
1106 }
1107 }
1108 }
1109 } else {
1110 auto res = loadLanguage( j );
1111 if ( !res.getLanguageName().empty() ) {
1112 auto pos = getLanguageIndex( res.getLanguageName() );
1113 if ( pos.has_value() ) {
1114 if ( addedLangs )
1115 addedLangs->push_back( res.getLanguageName() );
1116 res.mLanguageIndex = *pos;
1117 Lock l( mMutex );
1118 mDefinitions[pos.value()] =
1119 std::make_shared<SyntaxDefinition>( std::move( res ) );
1120 } else {
1121 if ( addedLangs )
1122 addedLangs->push_back( res.getLanguageName() );
1123 Lock l( mMutex );
1124 res.mLanguageIndex = mDefinitions.size();
1125 mDefinitions.emplace_back(
1126 std::make_shared<SyntaxDefinition>( std::move( res ) ) );
1127 }
1128 }
1129 }
1130 } catch ( const nlohmann::json::exception& e ) {
1131 Log::error( "SyntaxDefinition load failed:\n%s", e.what() );
1132 return false;
1133 }

Callers

nothing calls this directly

Calls 10

loadLanguageFunction · 0.85
errorFunction · 0.85
push_backMethod · 0.80
getSizeMethod · 0.45
resizeMethod · 0.45
readMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
emptyMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected