Skip to content

Commit 9d621bd

Browse files
protoype for scala integration
1 parent ee1b3d6 commit 9d621bd

15 files changed

Lines changed: 731 additions & 0 deletions

File tree

src/codegraphcontext/tools/graph_builder.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ def __init__(self, language_name: str):
6464
elif self.language_name == 'kotlin':
6565
from .languages.kotlin import KotlinTreeSitterParser
6666
self.language_specific_parser = KotlinTreeSitterParser(self)
67+
elif self.language_name == 'scala':
68+
from .languages.scala import ScalaTreeSitterParser
69+
self.language_specific_parser = ScalaTreeSitterParser(self)
6770

6871

6972

@@ -105,6 +108,8 @@ def __init__(self, db_manager: DatabaseManager, job_manager: JobManager, loop: a
105108
'.cs': TreeSitterParser('c_sharp'),
106109
'.php': TreeSitterParser('php'),
107110
'.kt': TreeSitterParser('kotlin'),
111+
'.scala': TreeSitterParser('scala'),
112+
'.sc': TreeSitterParser('scala'),
108113
}
109114
self.create_schema()
110115

@@ -213,6 +218,12 @@ def _pre_scan_for_imports(self, files: list[Path]) -> dict:
213218
if '.kt' in files_by_lang:
214219
from .languages import kotlin as kotlin_lang_module
215220
imports_map.update(kotlin_lang_module.pre_scan_kotlin(files_by_lang['.kt'], self.parsers['.kt']))
221+
if '.scala' in files_by_lang:
222+
from .languages import scala as scala_lang_module
223+
imports_map.update(scala_lang_module.pre_scan_scala(files_by_lang['.scala'], self.parsers['.scala']))
224+
if '.sc' in files_by_lang:
225+
from .languages import scala as scala_lang_module
226+
imports_map.update(scala_lang_module.pre_scan_scala(files_by_lang['.sc'], self.parsers['.sc']))
216227

217228
return imports_map
218229

src/codegraphcontext/tools/languages/scala.py

Lines changed: 510 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class ScalaToolkit:
2+
"""Template placeholder for future implementation."""
3+
4+
def get_cypher_query(query: str) -> str:
5+
raise NotImplementedError("AdvancedLanguageQuery is not implemented yet.")

src/codegraphcontext/utils/tree_sitter_manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
"rust": "rust",
4747
"kt": "kotlin",
4848
"kotlin": "kotlin",
49+
"scala": "scala",
50+
".scala": "scala",
4951
}
5052

5153

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.example.animals
2+
3+
trait Animal {
4+
val name: String
5+
def speak(): String
6+
}
7+
8+
trait Mammal extends Animal {
9+
def hasFur: Boolean = true
10+
}
11+
12+
trait CanRun {
13+
def run(speed: Double): String = s"Running at $speed km/h"
14+
}
15+
16+
class Dog(override val name: String) extends Mammal with CanRun {
17+
override def speak(): String = "Woof!"
18+
}
19+
20+
class Cat(override val name: String) extends Mammal {
21+
override def speak(): String = "Meow"
22+
override val hasFur: Boolean = true
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.example.complex
2+
3+
class Outer {
4+
private val secret = "I am outer"
5+
6+
class Inner {
7+
def reveal: String = secret
8+
}
9+
10+
object InnerObject {
11+
def check: Boolean = true
12+
}
13+
}
14+
15+
object Outer {
16+
private val staticSecret = "I am static"
17+
18+
def getStaticSecret: String = staticSecret
19+
20+
class NestedInObject {
21+
def nothing: Unit = {}
22+
}
23+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.example.functional
2+
3+
object Functional {
4+
def applyFunc(x: Int, f: Int => Int): Int = f(x)
5+
6+
def curriedAdd(x: Int)(y: Int): Int = x + y
7+
8+
val multiplier: Int => Int = (x: Int) => x * 2
9+
10+
def filterList(list: List[Int], p: Int => Boolean): List[Int] = {
11+
list.filter(p)
12+
}
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.example.geometry
2+
3+
abstract class Point(val x: Int, val y: Int) {
4+
def distanceTo(other: Point): Double
5+
}
6+
7+
class Point2D(x: Int, y: Int) extends Point(x, y) {
8+
def distanceTo(other: Point): Double = {
9+
val dx = x - other.x
10+
val dy = y - other.y
11+
Math.sqrt(dx * dx + dy * dy)
12+
}
13+
}
14+
15+
trait Resizable {
16+
this: Point => // Self-type annotation
17+
18+
def resize(factor: Double): Unit = {
19+
// resizing logic
20+
}
21+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.example
2+
3+
import com.example.shapes._
4+
import com.example.utils.Calculator
5+
6+
object Main {
7+
def main(args: Array[String]): Unit = {
8+
println("Hello, Scala!")
9+
10+
val calc = new Calculator()
11+
val sum = calc.add(5, 10)
12+
println(s"Sum: $sum")
13+
14+
val circle = Circle(5.0)
15+
val area = circle.area
16+
println(s"Circle area: $area")
17+
}
18+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.example
2+
3+
package object constants {
4+
val PI = 3.14159
5+
val E = 2.71828
6+
7+
def greet(name: String): String = s"Hello, $name"
8+
}

0 commit comments

Comments
 (0)