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

Method languagesThatSupportExtension

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

Source from the content-addressed store, hash-verified

1183}
1184
1185std::vector<const SyntaxDefinition*>
1186SyntaxDefinitionManager::languagesThatSupportExtension( std::string extension ) const {
1187 std::unordered_set<const SyntaxDefinition*> langs;
1188 if ( extension.empty() )
1189 return {};
1190
1191 if ( extension[0] != '.' )
1192 extension = '.' + extension;
1193
1194 {
1195 Lock l( mMutex );
1196 for ( const auto& definition : mDefinitions ) {
1197 for ( const auto& ext : definition->getFiles() ) {
1198 if ( String::startsWith( ext, "%." ) || String::startsWith( ext, "^" ) ||
1199 String::endsWith( ext, "$" ) ) {
1200 LuaPattern words( ext );
1201 int start, end;
1202 if ( words.find( extension, start, end ) ) {
1203 langs.insert( definition.get() );
1204 break;
1205 }
1206 } else if ( extension == ext ) {
1207 langs.insert( definition.get() );
1208 break;
1209 }
1210 }
1211 }
1212 }
1213
1214 {
1215 Lock l( mMutex );
1216 for ( const auto& preDefinition : mPreDefinitions ) {
1217 for ( const auto& ext : preDefinition.getFiles() ) {
1218 if ( std::find_if( langs.begin(), langs.end(),
1219 [&preDefinition]( const SyntaxDefinition* sdf ) {
1220 return preDefinition.getLanguageName() ==
1221 sdf->getLanguageName();
1222 } ) != langs.end() )
1223 continue;
1224
1225 if ( String::startsWith( ext, "%." ) || String::startsWith( ext, "^" ) ||
1226 String::endsWith( ext, "$" ) ) {
1227 LuaPattern words( ext );
1228 int start, end;
1229 if ( words.find( extension, start, end ) ) {
1230 langs.insert( &preDefinition.load() );
1231 break;
1232 }
1233 } else if ( extension == ext ) {
1234 langs.insert( &preDefinition.load() );
1235 break;
1236 }
1237 }
1238 }
1239 }
1240
1241 std::vector<const SyntaxDefinition*> vlangs;
1242 vlangs.reserve( langs.size() );

Callers 1

Calls 11

reserveMethod · 0.80
push_backMethod · 0.80
emptyMethod · 0.45
getFilesMethod · 0.45
findMethod · 0.45
insertMethod · 0.45
getMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
loadMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected