diff --git a/src/skill_seekers/cli/language_detector.py b/src/skill_seekers/cli/language_detector.py index 4510d85..5694d35 100644 --- a/src/skill_seekers/cli/language_detector.py +++ b/src/skill_seekers/cli/language_detector.py @@ -327,10 +327,10 @@ LANGUAGE_PATTERNS: dict[str, list[tuple[str, int]]] = { "scala": [ (r"\bcase\s+class\s+\w+", 5), (r"\btrait\s+\w+", 5), - (r"\bdef\s+\w+.*:\s*\w+", 5), + (r"\bdef\s+\w+[^:]*:\s*\w+\s*=", 5), (r"\bimport\s+scala\.", 4), (r"\bmatch\s*\{", 4), - (r"\bval\s+\w+.*:\s*\w+", 4), + (r"\bval\s+\w+\s*:\s*\w+\s*=", 4), (r"\bobject\s+\w+", 5), (r"=>", 3), (r"\bdef\s+\w+\[\w+\]", 4), diff --git a/tests/test_pdf_extractor.py b/tests/test_pdf_extractor.py index 4cd23a5..3b240e9 100644 --- a/tests/test_pdf_extractor.py +++ b/tests/test_pdf_extractor.py @@ -128,15 +128,15 @@ class TestLanguageDetection(unittest.TestCase): code = """ $primary-color: #3498db; - + @mixin border-radius($radius) { border-radius: $radius; } - + .button { color: $primary-color; @include border-radius(5px); - + &:hover { background: darken($primary-color, 10%); } @@ -146,17 +146,17 @@ class TestLanguageDetection(unittest.TestCase): language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "scss") self.assertGreater(confidence, 0.8) - + def test_detect_dart_with_confidence(self): """Test Dart detection""" extractor = self.PDFExtractor.__new__(self.PDFExtractor) from skill_seekers.cli.language_detector import LanguageDetector - + extractor.language_detector = LanguageDetector(min_confidence=0.15) - + code = """ import 'package:flutter/material.dart'; - + class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { @@ -166,7 +166,7 @@ class TestLanguageDetection(unittest.TestCase): } } """ - + language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "dart") self.assertGreater(confidence, 0.6) @@ -175,12 +175,12 @@ class TestLanguageDetection(unittest.TestCase): """Test Scala detection""" extractor = self.PDFExtractor.__new__(self.PDFExtractor) from skill_seekers.cli.language_detector import LanguageDetector - + extractor.language_detector = LanguageDetector(min_confidence=0.15) - + code = """ case class Person(name: String, age: Int) - + object Main extends App { val person = Person("Alice", 30) person match { @@ -189,7 +189,7 @@ class TestLanguageDetection(unittest.TestCase): } } """ - + language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "scala") self.assertGreater(confidence, 0.7) @@ -198,23 +198,23 @@ class TestLanguageDetection(unittest.TestCase): """Test SASS detection""" extractor = self.PDFExtractor.__new__(self.PDFExtractor) from skill_seekers.cli.language_detector import LanguageDetector - + extractor.language_detector = LanguageDetector(min_confidence=0.15) - + code = """ $primary-color: #3498db - + =border-radius($radius) border-radius: $radius - + .button color: $primary-color +border-radius(5px) - + &:hover background: darken($primary-color, 10%) """ - + language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "sass") self.assertGreater(confidence, 0.8) @@ -223,19 +223,19 @@ class TestLanguageDetection(unittest.TestCase): """Test Elixir detection""" extractor = self.PDFExtractor.__new__(self.PDFExtractor) from skill_seekers.cli.language_detector import LanguageDetector - + extractor.language_detector = LanguageDetector(min_confidence=0.15) - + code = """ defmodule MyApp.User do def greet(name) do "Hello, #{name}" end - + defp calculate_age(birth_year) do 2024 - birth_year end - + def process(data) do data |> String.trim() @@ -244,7 +244,7 @@ class TestLanguageDetection(unittest.TestCase): end end """ - + language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "elixir") self.assertGreater(confidence, 0.8) @@ -253,9 +253,9 @@ class TestLanguageDetection(unittest.TestCase): """Test Lua detection""" extractor = self.PDFExtractor.__new__(self.PDFExtractor) from skill_seekers.cli.language_detector import LanguageDetector - + extractor.language_detector = LanguageDetector(min_confidence=0.15) - + code = """ local function calculate_sum(numbers) local total = 0 @@ -264,12 +264,12 @@ class TestLanguageDetection(unittest.TestCase): end return total end - + local items = {1, 2, 3, 4, 5} local result = calculate_sum(items) print("Sum: " .. result) """ - + language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "lua") self.assertGreater(confidence, 0.7) @@ -278,32 +278,32 @@ class TestLanguageDetection(unittest.TestCase): """Test Perl detection""" extractor = self.PDFExtractor.__new__(self.PDFExtractor) from skill_seekers.cli.language_detector import LanguageDetector - + extractor.language_detector = LanguageDetector(min_confidence=0.15) - - code = """ + + code = r""" #!/usr/bin/perl use strict; use warnings; - + sub process_line { my $line = shift; chomp($line); - + if ($line =~ /^(\w+)=(\w+)$/) { my ($name, $value) = ($1, $2); return "$name has value $value"; } return undef; } - + my @lines = ("foo=10", "bar=20"); foreach my $line (@lines) { my $result = process_line($line); print $result if defined $result; } """ - + language, confidence = extractor.detect_language_from_code(code) self.assertEqual(language, "perl") self.assertGreater(confidence, 0.8)