aboutsummaryrefslogtreecommitdiff
path: root/vb/printer.vb
blob: 3f3e6e26b8770990f1bfea7243e5968b677c38aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Imports System
Imports System.Collections.Generic
Imports System.Text.RegularExpressions
Imports Mal
Imports MalVal = Mal.types.MalVal
Imports MalList = Mal.types.MalList

Namespace Mal
    Public Class printer
        Shared Function join(value As List(Of MalVal),
                             delim As String,
                             print_readably As Boolean) As String
            Dim strs As New List(Of String)
            For Each mv As MalVal In value
                strs.Add(mv.ToString(print_readably))
            Next
            return String.Join(delim, strs.ToArray())
        End Function

        Shared Function join(value As Dictionary(Of String, MalVal),
                             delim As String,
                             print_readably As Boolean) As String
            Dim strs As New List(Of String)
            For Each entry As KeyValuePair(Of String, MalVal) In value
                If entry.Key.Length > 0 and entry.Key(0) = ChrW(&H029e) Then
                    strs.Add(":" & entry.Key.Substring(1))
                Else If print_readably Then
                    strs.Add("""" & entry.Key.ToString() & """")
                Else
                    strs.Add(entry.Key.ToString())
                End If
                strs.Add(entry.Value.ToString(print_readably))
            Next
            return String.Join(delim, strs.ToArray())
        End Function

        Shared Function _pr_str(mv As MalVal,
                               print_readably As Boolean) As String
            return mv.ToString(print_readably)
        End Function

        Shared Function _pr_str_args(args As MalList,
                                     sep As String,
                                     print_readably As Boolean) As String
            return join(args.getValue(), sep, print_readably)
        End Function

        Shared Function escapeString(str As String) As String
            return Regex.Escape(str)
        End Function
    End Class
End Namespace