Guest User

Untitled

a guest
Oct 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. // You create the trait.
  2. trait JavaScriptCompilerComponent {
  3. def compiler: JavaScriptCompiler
  4.  
  5. trait JavaScriptCompiler {
  6. def compile(files: Seq[Source]): String
  7. }
  8. }
  9.  
  10. // You implement it.
  11. trait DummyJavaScriptParserComponent extends JavaScriptCompilerComponent {
  12. override val compiler = new DummyJavaScriptCompiler
  13.  
  14. class DummyJavaScriptCompiler extends JavaScriptCompiler {
  15. override def compile(files: Seq[Source]) = {
  16. ...
  17. }
  18. }
  19. }
  20.  
  21. trait PageRenderer {
  22. def render: Elem
  23. }
  24.  
  25. // You add the dependecy.
  26. class MyPageRenderer extends PageRenderer { this: JavaScriptCompilerComponent =>
  27. val jsFiles = Source.fromFile("test.js") :: Nil
  28.  
  29. override def render =
  30. <html>
  31. <script>
  32. {compiler.compile(jsFiles)}
  33. </script>
  34. </html>
  35. }
  36.  
  37. // And you inject it.
  38. val page = new MyPageRenderer with DummyJavaScriptParserComponent
  39. ...
  40. page.render
Add Comment
Please, Sign In to add comment