example_03.bmx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. SuperStrict
  2. Framework brl.standardio
  3. Import text.markdown
  4. Import text.pikchr
  5. Import text.graphviz
  6. Local sb:TStringBuilder = New TStringBuilder
  7. Local highlighter:THighlighter = New THighlighter
  8. sb.Append("<!DOCTYPE html><html><head><meta charset=~qutf-8~q><title>Markdown</title>")
  9. sb.Append("<body>")
  10. TMarkdown.ParseToHtml("""
  11. Hello !
  12. ```pikchr
  13. A: ellipse thick
  14. line thin color gray left 70% from 2mm left of (A.w,A.n)
  15. line same from 2mm left of (A.w,A.s)
  16. text "height" at (7/8<previous.start,previous.end>,1/2<1st line,2ndline>)
  17. line thin color gray from previous text.n up until even with 1st line ->
  18. line thin color gray from previous text.s down until even with 2nd line ->
  19. X1: line thin color gray down 50% from 2mm below (A.w,A.s)
  20. X2: line thin color gray down 50% from 2mm below (A.e,A.s)
  21. text "width" at (1/2<X1,X2>,6/8<X1.start,X1.end>)
  22. line thin color gray from previous text.w left until even with X1 ->
  23. line thin color gray from previous text.e right until even with X2 ->
  24. ```
  25. hmm...
  26. ```csharp
  27. Console.WriteLine("Hello World!");
  28. ```
  29. World!
  30. ```dot
  31. digraph U {
  32. eee -> {
  33. a [label="abc &aelig; z"]
  34. 2[label="ü"];
  35. 3[label="ä"];
  36. 4[label="ö"];
  37. d [label=" well &#9679; ok"]
  38. F [label="f: &#958;"]
  39. B [label= "Fichier non trouvé"]
  40. p1 [label="p1: &#9816;"]
  41. p2 [label="p2: &#x2658;"]
  42. }
  43. }
  44. ```
  45. """, sb,,,,highlighter)
  46. sb.Append("</body></html>")
  47. Local s:String = sb.ToString()
  48. Local buf:Byte[] = New Byte[s.length * 3]
  49. Local length:size_t = buf.length
  50. s.ToUTF8StringBuffer(buf, length)
  51. SaveByteArray( buf, "markdown.html" )
  52. Type THighlighter Extends TMDHtmlCodeHighlighter
  53. Method Text:Int(lang:String, info:String[], txt:String, output:TStringBuilder)
  54. Select lang
  55. Case "pikchr"
  56. Local width:Int, height:Int
  57. Local out:String = Pikchr(txt, Null, EPikChrFlags.NONE, width, height)
  58. output.Append("<div style=~qmax-width:").Append(width).Append("px~q>")
  59. output.Append(out)
  60. output.Append("</div>")
  61. Return True
  62. Case "dot"
  63. Local g:TGVGraphviz = New TGVGraphviz
  64. Local graph:TAGraph = TAGraph.FromString(txt)
  65. Local engine:String = "dot"
  66. Local parts:String[] = info[0].Split(" ")
  67. If parts.Length > 1 Then
  68. engine = parts[1]
  69. End If
  70. graph.Unflatten(4)
  71. Local res:Int = g.Layout(graph, engine)
  72. Local svg:String = g.ToSvg(graph)
  73. output.Append(svg)
  74. Return True
  75. End Select
  76. Return False
  77. End Method
  78. End Type