Skip to content

Commit 42a2f26

Browse files
Quote properties on edges too (#40)
* Quote properties on edges too * Bump version --------- Co-authored-by: Guillaume Dalle <22795598+gdalle@users.noreply.github.com>
1 parent 01d4dac commit 42a2f26

File tree

4 files changed

+116
-101
lines changed

4 files changed

+116
-101
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "MetaGraphs"
22
uuid = "626554b9-1ddb-594c-aa3c-2596fe9399a5"
3-
version = "0.7.2"
3+
version = "0.8.0"
44

55
[deps]
66
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"

src/persistence.jl

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@ end
1616
loadgraph(fn::AbstractString, gname::String, ::MGFormat) = loadmg(fn)
1717
savegraph(fn::AbstractString, g::AbstractMetaGraph) = savemg(fn, g)
1818

19+
# escaping unescaped quotation marks
20+
# i.e. replacing `"`` with `\"` while leaving `\"` as is
21+
escape_quotes(s::AbstractString) = replace(s, r"([^\\])\"" => s"\1\\\\\"")
22+
23+
# According to the DOT language specification https://graphviz.org/doc/info/lang.html
24+
# we can quote everyhthing that's not an XML/HTML literal
25+
function quote_prop(p::AbstractString)
26+
if occursin(r"<+.*>+$", p)
27+
# The label is an HTML string, no additional quotes here.
28+
return p
29+
else
30+
return "\"" * escape_quotes(p) * "\""
31+
end
32+
end
33+
# if the property value is _not_ a string it cannot be XML/HTML literal, so just put it in quotes
34+
quote_prop(p::Any) = "\"" * escape_quotes(string(p)) * "\""
35+
# NOTE: down there I only quote property _values_. DOT allows quoting property _names_ too
36+
# I don't do that as long as names are Symbols and can't have spaces and commas and stuff.
37+
# That will break if someone uses a DOT keyword as a property name, as they must be quoted.
38+
1939
function savedot(io::IO, g::AbstractMetaGraph)
2040

2141
if is_directed(g)
@@ -27,24 +47,18 @@ function savedot(io::IO, g::AbstractMetaGraph)
2747
end
2848

2949
for p in props(g)
30-
write(io, "$(p[1])=$(p[2]);\n")
50+
write(io, "$(p[1])=$(quote_prop(p[2]));\n")
3151
end
3252

3353
for v in vertices(g)
3454
write(io, "$v")
3555
if length(props(g, v)) > 0
3656
write(io, " [ ")
37-
end
38-
for p in props(g, v)
39-
key = p[1]
40-
if key .=== :label && occursin(r"<+.*>+$", p[2])
41-
# The label is an HTML string, no additional quotes here.
42-
write(io, "$key=$(p[2]),")
43-
else
44-
write(io, "$key=\"$(p[2])\",")
57+
58+
for p in props(g, v)
59+
write(io, "$(p[1])=$(quote_prop(p[2])), ")
4560
end
46-
end
47-
if length(props(g, v)) > 0
61+
4862
write(io, "];")
4963
end
5064
write(io, "\n")
@@ -53,7 +67,7 @@ function savedot(io::IO, g::AbstractMetaGraph)
5367
for e in edges(g)
5468
write(io, "$(src(e)) $dash $(dst(e)) [ ")
5569
for p in props(g,e)
56-
write(io, "$(p[1])=$(p[2]), ")
70+
write(io, "$(p[1])=$(quote_prop(p[2])), ")
5771
end
5872
write(io, "]\n")
5973
end

test/diagram_ref.dot

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,56 @@
11
digraph G {
2-
pack=true;
3-
1 [ color="orange",style="filled",penwidth="2.0",fillcolor="#dddddd",name="weather",label="NOAA\nWeather",shape="record",];
4-
2 [ color="orange",style="filled",penwidth="2.0",fillcolor="#dddddd",name="cost",label="Vaccination\nCost",shape="record",];
5-
3 [ color="orange",style="filled",penwidth="2.0",fillcolor="#dddddd",name="demo",label="Census\nDemographics",shape="record",];
6-
4 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="fed",label="Fed Forcast",shape="record",];
7-
5 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="epi",label="SIR",shape="record",];
8-
6 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="ode",label="ODE Solver",shape="record",];
9-
7 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="rate",label="{Transition\nRate}",shape="record",];
10-
8 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="unit",label="Unit",shape="record",];
11-
9 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="personper",label="Person/s",shape="record",];
12-
10 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="person",label="Person",shape="record",];
13-
11 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="second",label="second (s)",shape="record",];
14-
12 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="dollars",label="$",shape="record",];
15-
13 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="inf",label="Infection\nRate",shape="record",];
16-
14 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="mort",label="Mortality\nRate",shape="record",];
17-
15 [ color="#66AA55",style="filled",penwidth="2.0",fillcolor="#dddddd",name="birth",label="Birth\nRate",shape="record",];
18-
16 [ color="#DD1133",style="filled",penwidth="2.0",fillcolor="#dddddd",name="twenty",label="0.2 Persons/s",shape="record",];
19-
17 [ color="#DD1133",style="filled",penwidth="2.0",fillcolor="#dddddd",name="thirty",label="0.3 Persons/s",shape="record",];
20-
18 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="ind",label="Individual\nContact\nModel",shape="record",];
21-
19 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="temp",label="Temperature",shape="record",];
22-
20 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="age",label="Age",shape="record",];
23-
21 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="dGDP",label="Economic Growth",shape="record",];
24-
22 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="cases",label="Flu\nCases",shape="record",];
25-
23 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="prices",label="Vacc\nPrice",shape="record",];
26-
24 [ color="#5DADE2",style="filled",penwidth="2.0",fillcolor="#dddddd",name="regres",label="Regression",shape="record",];
27-
25 [ color="#000000",style="filled",penwidth="2.0",fillcolor="#dddddd",name="html",label=<<U><B>Title </B></U> <BR/> Some text.>,shape="record",];
28-
1 -> 19 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
29-
3 -> 15 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
30-
3 -> 20 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
31-
4 -> 21 [ color=missing, dir=none, penwidth=missing, style=missing, ]
32-
5 -> 22 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
33-
6 -> 5 [ color=missing, dir=none, penwidth=missing, style=missing, ]
34-
7 -> 9 [ color=missing, dir=none, penwidth=missing, style=missing, ]
35-
9 -> 8 [ color=missing, dir=none, penwidth=missing, style=missing, ]
36-
10 -> 8 [ color=missing, dir=none, penwidth=missing, style=missing, ]
37-
11 -> 8 [ color=missing, dir=none, penwidth=missing, style=missing, ]
38-
12 -> 2 [ color=missing, dir=none, penwidth=missing, style=missing, ]
39-
12 -> 8 [ color=missing, dir=none, penwidth=missing, style=missing, ]
40-
13 -> 7 [ color=black, dir=none, penwidth=2.0, style=dashed, ]
41-
13 -> 18 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
42-
14 -> 7 [ color=black, dir=none, penwidth=2.0, style=dashed, ]
43-
14 -> 18 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
44-
15 -> 7 [ color=black, dir=none, penwidth=2.0, style=dashed, ]
45-
15 -> 18 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
46-
16 -> 14 [ color=missing, dir=none, penwidth=missing, style=missing, ]
47-
17 -> 13 [ color=missing, dir=none, penwidth=missing, style=missing, ]
48-
18 -> 5 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
49-
19 -> 13 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
50-
20 -> 14 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
51-
21 -> 23 [ color=missing, dir=none, penwidth=missing, style=missing, ]
52-
22 -> 24 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
53-
23 -> 24 [ color=missing, dir=none, penwidth=missing, style=missing, ]
54-
24 -> 2 [ color=orange, dir=none, penwidth=4.0, style=solid, ]
55-
25 -> 4 [ color=black, dir=none, penwidth=2.0, style=solid, ]
2+
pack="true";
3+
1 [ color="orange", style="filled", penwidth="2.0", fillcolor="#dddddd", name="weather", label="NOAA\nWeather", shape="record", ];
4+
2 [ color="orange", style="filled", penwidth="2.0", fillcolor="#dddddd", name="cost", label="Vaccination\nCost", shape="record", ];
5+
3 [ color="orange", style="filled", penwidth="2.0", fillcolor="#dddddd", name="demo", label="Census\nDemographics", shape="record", ];
6+
4 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="fed", label="Fed Forcast", shape="record", ];
7+
5 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="epi", label="SIR", shape="record", ];
8+
6 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="ode", label="ODE Solver", shape="record", ];
9+
7 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="rate", label="{Transition\nRate}", shape="record", ];
10+
8 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="unit", label="Unit", shape="record", ];
11+
9 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="personper", label="Person/s", shape="record", ];
12+
10 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="person", label="Person", shape="record", ];
13+
11 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="second", label="second (s)", shape="record", ];
14+
12 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="dollars", label="$", shape="record", ];
15+
13 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="inf", label="Infection\nRate", shape="record", ];
16+
14 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="mort", label="Mortality\nRate", shape="record", ];
17+
15 [ color="#66AA55", style="filled", penwidth="2.0", fillcolor="#dddddd", name="birth", label="Birth\nRate", shape="record", ];
18+
16 [ color="#DD1133", style="filled", penwidth="2.0", fillcolor="#dddddd", name="twenty", label="0.2 Persons/s", shape="record", ];
19+
17 [ color="#DD1133", style="filled", penwidth="2.0", fillcolor="#dddddd", name="thirty", label="0.3 Persons/s", shape="record", ];
20+
18 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="ind", label="Individual\n\"Contact\"\nModel", shape="record", ];
21+
19 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="temp", label="Temperature", shape="record", ];
22+
20 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="age", label="Age", shape="record", ];
23+
21 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="dGDP", label="Economic Growth", shape="record", ];
24+
22 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="cases", label="Flu\nCases", shape="record", ];
25+
23 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="prices", label="Vacc\nPrice", shape="record", ];
26+
24 [ color="#5DADE2", style="filled", penwidth="2.0", fillcolor="#dddddd", name="regres", label="Regression", shape="record", ];
27+
25 [ color="#000000", style="filled", penwidth="2.0", fillcolor="#dddddd", name="html", label=<<U><B>Title </B></U> <BR/> Some text.>, shape="record", ];
28+
1 -> 19 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
29+
3 -> 15 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
30+
3 -> 20 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
31+
4 -> 21 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
32+
5 -> 22 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
33+
6 -> 5 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
34+
7 -> 9 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
35+
9 -> 8 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
36+
10 -> 8 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
37+
11 -> 8 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
38+
12 -> 2 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
39+
12 -> 8 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
40+
13 -> 7 [ color="black", dir="none", penwidth="2.0", label="", style="dashed", ]
41+
13 -> 18 [ color="orange", dir="none", penwidth="4.0", label="one, other", style="solid", ]
42+
14 -> 7 [ color="black", dir="none", penwidth="2.0", label="", style="dashed", ]
43+
14 -> 18 [ color="orange", dir="none", penwidth="4.0", label="cause", style="solid", ]
44+
15 -> 7 [ color="black", dir="none", penwidth="2.0", label="", style="dashed", ]
45+
15 -> 18 [ color="orange", dir="none", penwidth="4.0", label="one, other, and third one", style="solid", ]
46+
16 -> 14 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
47+
17 -> 13 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
48+
18 -> 5 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
49+
19 -> 13 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
50+
20 -> 14 [ color="orange", dir="none", penwidth="4.0", label="", style="solid", ]
51+
21 -> 23 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
52+
22 -> 24 [ color="orange", dir="none", penwidth="4.0", label="with single \" here", style="solid", ]
53+
23 -> 24 [ color="missing", dir="none", penwidth="missing", label="", style="missing", ]
54+
24 -> 2 [ color="orange", dir="none", penwidth="4.0", label="with \"quoted\" word", style="solid", ]
55+
25 -> 4 [ color="black", dir="none", penwidth="2.0", label="", style="solid", ]
5656
}

test/dotformat.jl

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,35 @@ using Test
33
using Graphs
44

55
property_set=[
6-
(src="thirty",dst="inf",color="missing",penwidth="missing",style="missing",),
7-
(src="twenty",dst="mort",color="missing",penwidth="missing",style="missing",),
8-
(src="rate",dst="personper",color="missing",penwidth="missing",style="missing",),
9-
(src="person",dst="unit",color="missing",penwidth="missing",style="missing",),
10-
(src="personper",dst="unit",color="missing",penwidth="missing",style="missing",),
11-
(src="second",dst="unit",color="missing",penwidth="missing",style="missing",),
12-
(src="dollars",dst="unit",color="missing",penwidth="missing",style="missing",),
13-
(src="dGDP",dst="prices",color="missing",penwidth="missing",style="missing",),
14-
(src="prices",dst="regres",color="missing",penwidth="missing",style="missing",),
15-
(src="fed",dst="dGDP",color="missing",penwidth="missing",style="missing",),
16-
(src="ode",dst="epi",color="missing",penwidth="missing",style="missing",),
17-
(src="dollars",dst="cost",color="missing",penwidth="missing",style="missing",),
18-
(src="mort",dst="rate",color="black",penwidth="2.0",style="dashed",),
19-
(src="inf",dst="rate",color="black",penwidth="2.0",style="dashed",),
20-
(src="birth",dst="rate",color="black",penwidth="2.0",style="dashed",),
21-
(src="mort",dst="ind",color="orange",penwidth="4.0",style="solid",),
22-
(src="ind",dst="epi",color="orange",penwidth="4.0",style="solid",),
23-
(src="ind",dst="epi",color="orange",penwidth="4.0",style="solid",),
24-
(src="inf",dst="ind",color="orange",penwidth="4.0",style="solid",),
25-
(src="birth",dst="ind",color="orange",penwidth="4.0",style="solid",),
26-
(src="temp",dst="inf",color="orange",penwidth="4.0",style="solid",),
27-
(src="age",dst="mort",color="orange",penwidth="4.0",style="solid",),
28-
(src="demo",dst="birth",color="orange",penwidth="4.0",style="solid",),
29-
(src="epi",dst="cases",color="orange",penwidth="4.0",style="solid",),
30-
(src="cases",dst="regres",color="orange",penwidth="4.0",style="solid",),
31-
(src="weather",dst="temp",color="orange",penwidth="4.0",style="solid",),
32-
(src="demo",dst="age",color="orange",penwidth="4.0",style="solid",),
33-
(src="regres",dst="cost",color="orange",penwidth="4.0",style="solid",),
34-
(src="html",dst="fed",color="black",penwidth="2.0",style="solid",)
6+
(src="thirty",dst="inf",color="missing",penwidth="missing",style="missing",label=""),
7+
(src="twenty",dst="mort",color="missing",penwidth="missing",style="missing",label="",),
8+
(src="rate",dst="personper",color="missing",penwidth="missing",style="missing",label="",),
9+
(src="person",dst="unit",color="missing",penwidth="missing",style="missing",label="",),
10+
(src="personper",dst="unit",color="missing",penwidth="missing",style="missing",label="",),
11+
(src="second",dst="unit",color="missing",penwidth="missing",style="missing",label="",),
12+
(src="dollars",dst="unit",color="missing",penwidth="missing",style="missing",label="",),
13+
(src="dGDP",dst="prices",color="missing",penwidth="missing",style="missing",label="",),
14+
(src="prices",dst="regres",color="missing",penwidth="missing",style="missing",label="",),
15+
(src="fed",dst="dGDP",color="missing",penwidth="missing",style="missing",label="",),
16+
(src="ode",dst="epi",color="missing",penwidth="missing",style="missing",label="",),
17+
(src="dollars",dst="cost",color="missing",penwidth="missing",style="missing",label="",),
18+
(src="mort",dst="rate",color="black",penwidth="2.0",style="dashed",label="",),
19+
(src="inf",dst="rate",color="black",penwidth="2.0",style="dashed",label="",),
20+
(src="birth",dst="rate",color="black",penwidth="2.0",style="dashed",label="",),
21+
(src="mort",dst="ind",color="orange",penwidth="4.0",style="solid",label="cause",),
22+
(src="ind",dst="epi",color="orange",penwidth="4.0",style="solid",label="two words",),
23+
(src="ind",dst="epi",color="orange",penwidth="4.0",style="solid",label="",),
24+
(src="inf",dst="ind",color="orange",penwidth="4.0",style="solid",label="one, other",),
25+
(src="birth",dst="ind",color="orange",penwidth="4.0",style="solid",label="one, other, and third one",),
26+
(src="temp",dst="inf",color="orange",penwidth="4.0",style="solid",label="",),
27+
(src="age",dst="mort",color="orange",penwidth="4.0",style="solid",label="",),
28+
(src="demo",dst="birth",color="orange",penwidth="4.0",style="solid",label="",),
29+
(src="epi",dst="cases",color="orange",penwidth="4.0",style="solid",label="",),
30+
(src="cases",dst="regres",color="orange",penwidth="4.0",style="solid",label="with single \" here",),
31+
(src="weather",dst="temp",color="orange",penwidth="4.0",style="solid",label="",),
32+
(src="demo",dst="age",color="orange",penwidth="4.0",style="solid",label="",),
33+
(src="regres",dst="cost",color="orange",penwidth="4.0",style="solid",label="with \"quoted\" word",),
34+
(src="html",dst="fed",color="black",penwidth="2.0",style="solid",label="",)
3535
]
3636

3737
# name, label, color
@@ -53,7 +53,7 @@ vprops = [
5353
("birth","Birth\\nRate","#66AA55"),
5454
("twenty","0.2 Persons/s","#DD1133"),
5555
("thirty","0.3 Persons/s","#DD1133"),
56-
("ind","Individual\\nContact\\nModel","#5DADE2"),
56+
("ind","Individual\\n\"Contact\"\\nModel","#5DADE2"),
5757
("temp","Temperature","#5DADE2"),
5858
("age","Age","#5DADE2"),
5959
("dGDP","Economic Growth","#5DADE2"),
@@ -79,17 +79,18 @@ set_indexing_prop!(g, :name)
7979
# add edges
8080
for prop in property_set
8181
src, dst = g[prop.src, :name], g[prop.dst, :name]
82-
add_edge!(g, src,dst)
82+
add_edge!(g, src, dst)
8383
set_prop!(g, src, dst, :color, prop.color)
8484
set_prop!(g, src, dst, :penwidth, prop.penwidth)
8585
set_prop!(g, src, dst, :style, prop.style)
86+
set_prop!(g, src, dst, :label, prop.label)
8687
end
8788

8889
# set global edge properties
8990
for e in edges(g)
9091
set_prop!(g, e, :dir, :none)
9192
end
92-
# set global vertex properties
93+
# set global vertex properties
9394
for v in vertices(g)
9495
set_prop!(g, v, :shape, :record)
9596
set_prop!(g, v, :style, :filled)
@@ -112,7 +113,7 @@ end
112113
# - <...> : OK
113114
# - both : NOK ("< or >" as bounding characters, resulting HTML in file will not be parsed correctly by dot.)
114115
quote_regex = r"label\s*=\s*\"(?:[^\"\\]|\\.)*\"" # source: https://stackoverflow.com/questions/249791/regex-for-quoted-string-with-escaping-quotes
115-
html_regex = r"label\s*=\s*<.*>"
116+
html_regex = r"label\s*=\s*<.*>"
116117
invalid_quote_regex = r"label\s*=\s*\"<(?:[^\"\\]|\\.)*>\""
117118
for line in eachline(fp)
118119
test_val = false
@@ -126,7 +127,7 @@ end
126127
# no worries, proper HTML surrounding brackets found.
127128
test_val = true
128129
end
129-
@test test_val
130+
@test test_val
130131
end
131132
end
132133

0 commit comments

Comments
 (0)