@@ -5,7 +5,6 @@ import com.vladsch.flexmark.html._
5
5
import util .HTML ._
6
6
7
7
import dotty .tools .scaladoc .snippets ._
8
- import dotty .tools .scaladoc .util .HTML ._
9
8
10
9
case class SnippetLine (content : String , lineNo : Int , classes : Set [String ] = Set .empty, messages : Seq [String ] = Seq .empty, attributes : Map [String , String ] = Map .empty):
11
10
def withClass (cls : String ) = this .copy(classes = classes + cls)
@@ -134,15 +133,26 @@ object SnippetRenderer:
134
133
div(cls := " snippet-label" )(name)
135
134
).toString
136
135
137
- def renderSnippetWithMessages (snippetName : Option [String ], codeLines : Seq [String ], messages : Seq [SnippetCompilerMessage ], hasContext : Boolean ): String =
136
+ def renderSnippetWithMessages (snippetName : Option [String ], codeLines : Seq [String ], messages : Seq [SnippetCompilerMessage ], hasContext : Boolean , success : Boolean ): String =
138
137
val transformedLines = wrapCodeLines.andThen(addCompileMessages(messages)).apply(codeLines).map(_.toHTML)
139
138
val codeHTML = s """ <code class="language-scala"> ${transformedLines.mkString(" " )}</code> """
140
- s """ <div class="snippet" scala-snippet ${if hasContext then " hasContext" else " " }><div class="buttons"></div><pre> $codeHTML</pre> ${snippetName.fold(" " )(snippetLabel(_))}</div> """
139
+ val isRunnable = ! hasContext && success
140
+ val attrs = Seq (
141
+ Option .when(isRunnable)(Attr (" runnable" ) := " " )
142
+ ).flatten
143
+ div(cls := " snippet" , Attr (" scala-snippet" ) := " " , attrs)(
144
+ div(cls := " buttons" )(),
145
+ pre(
146
+ raw(codeHTML)
147
+ ),
148
+ raw(snippetName.fold(" " )(snippetLabel(_)))
149
+ ).toString
141
150
142
151
def renderSnippetWithMessages (node : ExtendedFencedCodeBlock ): String =
143
152
renderSnippetWithMessages(
144
153
node.name,
145
154
node.codeBlock.getContentChars.toString.split(" \n " ).map(_ + " \n " ).toSeq,
146
155
node.compilationResult.toSeq.flatMap(_.messages),
147
- node.hasContext
156
+ node.hasContext,
157
+ node.compilationResult.fold(false )(_.isSuccessful)
148
158
)
0 commit comments