Skip to content

Commit

Permalink
Minor cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
mattmoore committed Feb 19, 2021
1 parent 35311ca commit ab8c864
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/main/scala/lexi/Compiler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import lexi.ir.nodes.IrTree
import lexi.ir.phases.IrAnalysis

case class Compiler(
var context: Context = new Context
context: Context = new Context
) {
def run(sources: Vector[Source]): Vector[CompilationUnit] =
sources.map(CompilationUnit(_))
Expand Down
10 changes: 5 additions & 5 deletions src/main/scala/lexi/Language.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ enum Language(value: String) {
}

object Language {
def withFileType(fileType: String): Language =
fileType match {
case "kt" => Kotlin
case "scala" => Scala
}
def withFileType(fileType: String): Either[Throwable, Language] = fileType match {
case "kt" => Right(Kotlin)
case "scala" => Right(Scala)
case _ => Left(Exception("Unable to determine language for the file type."))
}
}
24 changes: 12 additions & 12 deletions src/main/scala/lexi/Source.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,24 @@ case class Source(

object Source {
def fromFile(file: String): Either[Throwable, Source] =
Try(Files.readString(Path.of(file))).toEither match {
case Right(content) =>
Right(
Source(
file = file,
text = content,
language = languageFromFile(file)
)
)
case Left(exception) => Left(exception)
}
for {
language <- fileLanguage(file)
content <- readFile(file)
} yield Source(
file = file,
text = content,
language = language
)

def fromString(source: String, language: Language): Source =
new Source(file = null, text = source, language = language)

def languageFromFile(file: String): Language =
def fileLanguage(file: String): Either[Throwable, Language] =
Language.withFileType(getFileExtension(file))

def readFile(file: String): Either[Throwable, String] =
Try(Files.readString(Path.of(file))).toEither

private def getFileExtension(file: String): String =
file.substring(file.lastIndexOf('.') + 1)
}

0 comments on commit ab8c864

Please sign in to comment.