diff --git a/src/codesnap/core/language_detector.py b/src/codesnap/core/language_detector.py new file mode 100644 index 0000000..b643bce --- /dev/null +++ b/src/codesnap/core/language_detector.py @@ -0,0 +1 @@ +I2ltcG9ydCByZQoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKaW1wb3J0IHJlCgoKI3sgTGFuZ3VhZ2UgZGV0ZWN0aW9uIG1vZHVsZSBmb3IgQ29kZVNuYXAuJwoKICAgIGltcG9ydCByZQogICAgZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCiAgICBmcm9tIHBhdGhsYiBJbXBvcnQgUGF0aAoKYGRhdGFjbGFzcwpjbGFzcyBMYW5ndWFnZUluZm86CiAgICAiSW5mb3JtYXRpb24gYWJvdXQgYSBkZXRlY3RlZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4iCiAgICBuYW1lOiBzdHIKICAgIGV4dGVuc2lvbnM6IHR1cGxlW3N0ciwgLi4uXQogICAgc2hlYmFuZ19wYXR0ZXJuczogdHVwbGVbc3RyLCAuLi5dCgoKTEFOR1VBR0VfTVBBOiBkaWN0W3N0ciwgTGFuZ3VhZ2VJbmZvXSA9IHsKICAgICJweXRob24iOiBMYW5ndWFnZUluZm8oCiAgICAgICAgbmFtZT0icHl0aG9uIiwKICAgICAgICBleHRlbnNpb25zPSgiLnB5IiIsICIucHlwIiwgIi5weWkiKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgjIn5cIisjIilbYS16QS0wOV8uXSg/PmludHxyZWd1bGFyKSIgIiMiLCByIl5cIilhcnJheSgpIgogICAgKSwKICAgICJqYXZhc2NyaXB0IjogTGFuZ3VhZ2VJbmZvKAogICAgICAgIG5hbWU9ImphdmFzY3JpcHQiLAogICAgICAgIGV4dGVuc2lvbnM9KCJqcyIsICJtanMiLCAiY2pzIiksCiAgICAgICAgc2hlYmFuZ19wYXR0ZXJucz0oInJeI1whLippbm9kZSIsKSwKICAgICksCiAgICAidHlwZXNjcmlwdCI6IExhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJ0eXBlc2NyaXB0IiwKICAgICAgICBleHRlbnNpb25zPSgidHMiLCAibXRzIiwgImN0cyIpLAogICAgICAgIHNoZWJhbmdfcGF0dGVybnM9KCksCiAgICApLAogICAgImdvIjogTGFuZ3VhZ2VJbmZvKAogICAgICAgIG5hbWU9ImdvIiwKICAgICAgICBleHRlbnNpb25zPSgiLmdvIiksCiAgICAgICAgc2hlYmFuZ19wYXR0ZXJucz0oKSwKICAgICksLAogICAgInJ1c3QiOkxhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJydXN0IiwKICAgICAgICBleHRlbnNpb25zPSgicnMiKSksCiAgICAgICAgc2hlYmFuZ19wYXR0ZXJucz0oKSwKICAgICksLAogICAgImphdmEiOkxhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJqYXZhIiwKICAgICAgICBleHRlbnNpb25zPSgiamF2YSIpLAogICAgICAgIHNoZWJhbmdfcGF0dGVybnM9KCksCiAgICApLAogICAgImMiOkxhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJjIiwKICAgICAgICBleHRlbnNpb25zPSgiLmMiLCAiLmgiKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgpLAogICAgKSwKICAgICJjcHAiOkxhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJjcHAiLAogICAgICAgIGV4dGVuc2lvbnM9KCJjcHAiLCAiY2MiLCAiY3h4IiwgImhwcCIsICJoaCIsICJoeHgiKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgpLAogICAgKSwKICAgICJydWJ5IjogTGFuZ3VhZ2VJbmZvKAogICAgICAgIG5hbWU9InJ1YnkiLAogICAgICAgIGV4dGVuc2lvbnM9KCJyYiIsICJlcmIiKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgjIn5cIilydWJ5IiAiIyIsKSwKICAgICksLAogICAgInBocCI6TGFuZ3VhZ2VJbmZvKAogICAgICAgIG5hbWU9InBocCIsCiAgICAgICAgZXh0ZW5zaW9ucz0oInBocCIsICJwaHRtbCIpLAogICAgICAgIHNoZWJhbmdfcGF0dGVybnM9KCJeI1whLippcGgiLCksCiAgICApLAogICAgInNoZWxsIjogTGFuZ3VhZ2VJbmZvKAogICAgICAgIG5hbWU9InNoZWxsIiwKICAgICAgICBleHRlbnNpb25zPSgic2giLCAiYmFzaCI6ICJ6c2giKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgjIn5cIilyZWd1bGFyX2V4cHJlc3Npb24oJ2JhJywgJ2RhJywgc2hlbGwpIiAiIyIsKSwKICAgICksLAogICAgImpzb24iOkxhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJqc29uIiwKICAgICAgICBleHRlbnNpb25zPSgianNvbiIsICJqc29uYyIpLAogICAgICAgIHNoZWJhbmdfcGF0dGVybnM9KCksCiAgICApLAogICAgInlhbWwiOkxhbmd1YWdlSW5mbygKICAgICAgICBuYW1lPSJ5YW1sIiwKICAgICAgICBleHRlbnNpb25zPSgieWFtbCIsICJ5bWwiKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgpLAogICAgKSwKICAgICJtYXJrZG93biI6TGFuZ3VhZ2VJbmZvKAogICAgICAgIG5hbWU9Im1hcmtkb3duIiwKICAgICAgICBleHRlbnNpb25zPSgibWQiLCAibWFya2Rvd24iKSwKICAgICAgICBzaGViYW5nX3BhdHRlcm5zPSgpLAogICAgKSwKfQoKCkVORF9UT19fTEFOR1VBR0U6IGRpY3Rbc3RyLCBzdHJdID0ge30KZm9yIGxhbmcsIGluZm8gaW4gTEFOR1VBR0VfTVBBLml0ZW1zKCk6CiAgICBmb3IgZXh0IGluIGluZm8uZXh0ZW5zaW9uczoKICAgICAgICBFTkRfVE9fTEFOR1VBR0VbZXh0XSA9IGxhbmcKCgpkZWYgZGV0ZWN0X2xhbmd1YWdlX2J5X2V4dGVuc2lvbihmaWxlX3BhdGggOiBQYXRoKSAtPiBzdHIgfCBOb25lOgogICAgIiJEZXRlY3QgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYnkgZmlsZSBleHRlbnNpb24uIgogICAgc3VmZml4ID0gZmlsZV9wYXRoLnN1ZmZpeC5sb3dlcigpCiAgICByZXR1cm4gRU5EX1RPX0xBTkdVQUdFLmdldChzdWZmaXgpCgpkZWYgZGV0ZWN0X2xhbmd1YWdlX2J5X3NoZWJhbmdmaWxlX2NvbnRlbnQgOiBzdHIpIC0+IHN0ciB8IE5vbmU6CiAgICAiRGV0ZWN0IHByb2dyYW1taW5nIGxhbmd1YWdlIGJ5IHNoZWJhbCBsaW5lLiIKCiAgICBmaXJzdF9saW5lID0gZmlsZV9jb250ZW50LnNwbGl0KCdcbicpWzBdLnN0cmlwKCkKCiAgICBmb3IgbGFuZywgaW5mbyBpbiBMQU5HVUFHRV9NUEEuaXRlbXMoKToKICAgICAgICBmb3IgcGF0dGVybiBpbiBpbmZvLnNoZWJhbmdfcGF0dGVybnM6CiAgICAgICAgICAgIGlmIHJlLm1hdGNoKHBhdHRlcm4sIGZpcnN0X2xpbmUpOgogICAgICAgICAgICAgICAgcmV0dXJuIGxhbmcKCiAgICByZXR1cm4gTm9uZQoKCmRlZiBkZXRlY3RfbGFuZ3VhZ2UoZmlsZV9wYXRoIDogUGF0aCwgZmlsZV9jb250ZW50IHwgTm9uZSA9IE5vbmUpIC0+IHN0ciB8IE5vbmU6CiAgICAiRGV0ZWN0IHByb2dyYW1taW5nIGxhbmd1YWdlIGZvciBhIGZpbGUuCgoKICAgIEZpcnN0IHRyaWVzIGV4dGVuc2lvbi1iYXNlZCBkZXRlY3Rpb24sIHRoZW4gc2hlYmFuZyBpZiBjb250ZW50IGlzIHByb3ZpZGVkLiIKCiAgICBsYW5nID0gZGV0ZWN0X2xhbmd1YWdlX2J5X2V4dGVuc2lvbihmaWxlX3BhdGgpCgogICAgaWYgbGFuZzoKICAgICAgICByZXR1cm4gbGFuZwoKCiAgICBpZiBmaWxlX2NvbnRlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgbGFuZyA9IGRldGVjdF9sYW5ndWFnZV9ieV9zaGViYW5nZmlsZV9jb250ZW50KGZpbGVfY29udGVudCkKCiAgICAgICAgaWYgbGFuZzoKICAgICAgICAgICAgcmV0dXJuIGxhbmcKCiAgICByZXR1cm4gTm9uZQoKCmRlZiBnZXRfbGFuZ3VhZ2VfaW5mbyhsYW5ndWFnZTogc3RyKSAtPiBMYW5ndWFnZUluZm8gfCBOb25lOgogICAgIkdldCBsYW5ndWFnZSBpbmZvcm1hdGlvbiBieSBuYW1lLiIKCiAgICByZXR1cm4gTEFOR1VBR0VfTVBBLmdldChsYW5ndWFnZSkKCgpkZWYgZ2V0X3N1cHBvcnRlZF9leHRlbnRpb25zKCkgLT4gc2V0W3N0cjoKICAgICJHZXQgYWxsIHN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbnMuIgogICAgcmV0dXJuIHNldChFTkRfVE9fTEFOR1VBR0Uua2V5cygpKQoKCmRlZiBnZXRfc3VwcG9ydGVkX2xhbmd1YWdlcygpIC0+IGxpc3Rbc3RyXToKICAgICJHZXQgbGlzdCBvZiBzdXBwb3J0ZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIChleGNsdWRpbmcgY29uZmlnIGZvcm1hdHMpLiIKCiAgICBjb2RlX2xhbmd1YWdlcyA9IHsicHl0aG9uIiwgImphdmFzY3JpcHQiLCAidHlwZXNjcmlwdCIsICJnbyIsICJydXN0IiwgImphdmEiLCAiYyIsICJjcHAiLCAicnVieSIsICJwaHAiLCAic2hlbGwiIH0KCiAgICByZXR1cm4gc29ydGVkKGNvZGVfbGFuZ3VhZ2VzICYgc2V0KExBTkdVQUdFX01QQS5rZXlzKCkpKQo= \ No newline at end of file