Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
parse comment mode
Browse files Browse the repository at this point in the history
xuwei-k committed Mar 14, 2024

Verified

This commit was signed with the committer’s verified signature.
pradyunsg Pradyun Gedam
1 parent 7886f52 commit 3a4e476
Showing 3 changed files with 44 additions and 1 deletion.
7 changes: 7 additions & 0 deletions core/src/main/scala/scalameta_ast/Args.scala
Original file line number Diff line number Diff line change
@@ -28,6 +28,13 @@ object Args {
dialect: Option[String],
) extends Args

case class Comment(
src: String,
format: Boolean,
scalafmtConfig: Conf,
dialect: Option[String],
) extends Args

case class Raw(
src: String,
format: Boolean,
26 changes: 25 additions & 1 deletion core/src/main/scala/scalameta_ast/ScalametaAST.scala
Original file line number Diff line number Diff line change
@@ -319,6 +319,13 @@ class ScalametaAST {
patch = patch,
initialExtractor = initialExtractor,
)
case "comment" =>
Args.Comment(
src = src,
format = format,
scalafmtConfig = scalafmtConfig,
dialect = dialect,
)
case _ =>
Args.Raw(
src = src,
@@ -334,7 +341,7 @@ class ScalametaAST {
def convert(
args: Args
): Output = {
val input = convert.apply(args.src)
lazy val input = convert.apply(args.src)
val ((ast, parsedOpt), astBuildMs) = stopwatch {
val dialects = args.dialect.fold(dialectsDefault) { x =>
stringToDialects.getOrElse(
@@ -363,6 +370,23 @@ class ScalametaAST {
}
tokensToString(loop(input, dialects)) -> None

case _: Args.Comment =>
scala.meta.contrib.CommentOps
.docTokens(
new scala.meta.tokens.Token.Comment(
input = Input.String(args.src),
dialect = dialects.head,
start = 0,
end = args.src.length,
value = args.src
)
)
.map(_.map { x =>
val q: String => String = "\"" + _ + "\""
s"""DocToken(kind = ${x.kind}, name = ${x.name.map(q)}, body = ${x.body.map(q)})"""
})
.toString -> None

case a: NotToken =>
val tree = loopParse(
input,
12 changes: 12 additions & 0 deletions sources/main.js
Original file line number Diff line number Diff line change
@@ -342,6 +342,18 @@ const App = () => {
<span>Tokens</span>
</label>
</div>
<div>
<label>
<input
type="radio"
name="output_type"
value="comment"
checked=${outputType === "comment"}
onChange=${() => setOutputType("comment")}
/>
<span>Comment</span>
</label>
</div>
</fieldset>
</div>
<div class="row">

0 comments on commit 3a4e476

Please sign in to comment.