diff --git a/cli/doc_scraper.py b/cli/doc_scraper.py index fa4c059..a7125be 100755 --- a/cli/doc_scraper.py +++ b/cli/doc_scraper.py @@ -335,6 +335,13 @@ class DocToSkillConverter: return 'python' if '#include' in code or 'int main' in code: return 'cpp' + # C# detection + if 'using System' in code or 'namespace ' in code: + return 'csharp' + if '{ get; set; }' in code: + return 'csharp' + if any(keyword in code for keyword in ['public class ', 'private class ', 'internal class ', 'public static void ']): + return 'csharp' return 'unknown' diff --git a/tests/test_scraper_features.py b/tests/test_scraper_features.py index eb6d295..2ca0bd9 100644 --- a/tests/test_scraper_features.py +++ b/tests/test_scraper_features.py @@ -195,6 +195,62 @@ class TestLanguageDetection(unittest.TestCase): lang = self.converter.detect_language(elem, 'x') self.assertEqual(lang, 'python', 'Should detect python from bare class name') + def test_detect_csharp_from_using_system(self): + """Test C# detection from 'using System' keyword""" + html = 'using System;\nnamespace MyApp { }' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from using System') + + def test_detect_csharp_from_namespace(self): + """Test C# detection from 'namespace' keyword""" + html = 'namespace MyNamespace\n{\n public class Test { }\n}' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from namespace') + + def test_detect_csharp_from_property_syntax(self): + """Test C# detection from property syntax""" + html = 'public string Name { get; set; }' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from { get; set; } syntax') + + def test_detect_csharp_from_public_class(self): + """Test C# detection from 'public class' keyword""" + html = 'public class MyClass\n{\n private int value;\n}' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from public class') + + def test_detect_csharp_from_private_class(self): + """Test C# detection from 'private class' keyword""" + html = 'private class Helper { }' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from private class') + + def test_detect_csharp_from_public_static_void(self): + """Test C# detection from 'public static void' keyword""" + html = 'public static void Main(string[] args)\n{\n Console.WriteLine("Test");\n}' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from public static void') + + def test_detect_csharp_from_class_attribute(self): + """Test C# detection from CSS class attribute""" + html = 'var x = 5;' + elem = BeautifulSoup(html, 'html.parser').find('code') + code = elem.get_text() + lang = self.converter.detect_language(elem, code) + self.assertEqual(lang, 'csharp', 'Should detect C# from language-csharp class') + class TestPatternExtraction(unittest.TestCase): """Test pattern extraction from documentation"""