classes/html/ConfluenceHtmlTag.psm1

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
class ConfluenceHtmlTag {

    #####################
    # HIDDEN PROPERTIES #
    #####################

    

    #####################
    # PUBLIC PROPERTIES #
    #####################

    [string]
    $Tag

    [string]
    $Contents

    [hashtable]
    $Attributes

    [bool]
    $ForceSplit

    #####################
    # CONSTRUCTORS #
    #####################

    ConfluenceHtmlTag(
        [string] $Tag
    ) {
        $this.Init($Tag, $null, $null)
    }

    ConfluenceHtmlTag(
        [string] $Tag,
        [hashtable] $Attributes
    ) {
        $this.Init($Tag, $null, $Attributes)
    }

    ConfluenceHtmlTag(
        [string] $Tag,
        [string] $Contents
    ) {
        $this.Init($Tag, $Contents, $null)
    }

    ConfluenceHtmlTag(
        [string] $Tag,
        [string] $Contents,
        [hashtable] $Attributes
    ) {
        $this.Init($Tag, $Contents, $Attributes)
    }

    #####################
    # HIDDEN METHODS #
    #####################

    hidden
    [void]
    Init(
        [string] $Tag,
        [string] $Contents,
        [hashtable] $Attributes
    ) {
        $this.Tag = $Tag
        $this.Contents = $Contents
    }

    #####################
    # PUBLIC METHODS #
    #####################

    [void]
    SetAttribute(
        [string] $Key,
        [string] $Value
    ) {
        $this.ClearAttribute($Key)
        $this.Attributes.Add($Key,$Value)
    }

    [void]
    ClearAttribute(
        [string] $Key
    ) {
        if ($this.Attributes.ContainsKey($Key)) {
            $this.Attributes.Remove($key)
        }
    }

    [string]
    ToString() {
        $attrStr = ""
        if ($this.Attributes.Count -gt 0) {
            foreach($key in $this.Attributes.Keys) {
                $attrStr += " {0}=""{1}""" -f $key, $this.Attributes[$key]
            }
        }
        if(!$this.ForceSplit -and ($null -eq $this.Contents -or $this.Contents -eq "")) {
            $toReturn = "<{0}{1} />" -f $this.Tag, $attrStr
        } else {
            $toReturn = "<{0}{2}>{1}</{0}>" -f $this.Tag, $this.Contents, $attrStr
        }
        return $toReturn
    }
}