All: add keywords.
[jackhill/mal.git] / vb / printer.vb
CommitLineData
ee7cd585
JM
1Imports System
2Imports System.Collections.Generic
3Imports System.Text.RegularExpressions
4Imports Mal
5Imports MalVal = Mal.types.MalVal
6Imports MalList = Mal.types.MalList
7
8Namespace Mal
9 Public Class printer
10 Shared Function join(value As List(Of MalVal),
11 delim As String,
12 print_readably As Boolean) As String
13 Dim strs As New List(Of String)
14 For Each mv As MalVal In value
15 strs.Add(mv.ToString(print_readably))
16 Next
17 return String.Join(delim, strs.ToArray())
18 End Function
19
20 Shared Function join(value As Dictionary(Of String, MalVal),
21 delim As String,
22 print_readably As Boolean) As String
23 Dim strs As New List(Of String)
24 For Each entry As KeyValuePair(Of String, MalVal) In value
b8ee29b2
JM
25 If entry.Key.Length > 0 and entry.Key(0) = ChrW(&H029e) Then
26 strs.Add(":" & entry.Key.Substring(1))
27 Else If print_readably Then
ee7cd585
JM
28 strs.Add("""" & entry.Key.ToString() & """")
29 Else
30 strs.Add(entry.Key.ToString())
31 End If
32 strs.Add(entry.Value.ToString(print_readably))
33 Next
34 return String.Join(delim, strs.ToArray())
35 End Function
36
37 Shared Function _pr_str(mv As MalVal,
38 print_readably As Boolean) As String
39 return mv.ToString(print_readably)
40 End Function
41
42 Shared Function _pr_str_args(args As MalList,
43 sep As String,
44 print_readably As Boolean) As String
45 return join(args.getValue(), sep, print_readably)
46 End Function
47
48 Shared Function escapeString(str As String) As String
49 return Regex.Escape(str)
50 End Function
51 End Class
52End Namespace