Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–75 unchanged (75 lines)
76 [TestCase("Series T Se.3 afl.3 en 4", "Series T", 3, new[] { 3, 4 })]
77 [TestCase("Series Title (S15E06-08) City Sushi", "Series Title", 15, new[] { 6, 7, 8 })]
78 [TestCase("Босх: Спадок (S2E1-4) / Series: Legacy (S2E1-4) (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, new[] { 1, 2, 3, 4 })]
79 [TestCase("Босх: Спадок / Series: Legacy / S2E1-4 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, new[] { 1, 2, 3, 4 })]
80 [TestCase("Series Title - S26E96-97-98-99-100 - Episode 5931 + Episode 5932 + Episode 5933 + Episode 5934 + Episode 5935", "Series Title", 26, new[] { 96, 97, 98, 99, 100 })]
81 [TestCase("Series falls - Temporada 1 [HDTV][Cap.111_120]", "Series falls", 1, new[] { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 })]
82
83 // [TestCase("", "", , new [] { })]
84 public void should_parse_multiple_episodes(string postTitle, string title, int season, int[] episodes)
85 {
86 var result = Parser.Parser.ParseTitle(postTitle);
87 result.SeasonNumber.Should().Be(season);
88 result.EpisodeNumbers.Should().BeEquivalentTo(episodes);
…lines 89–95 unchanged (7 lines)

After

…lines 1–75 unchanged (75 lines)
76 [TestCase("Series T Se.3 afl.3 en 4", "Series T", 3, new[] { 3, 4 })]
77 [TestCase("Series Title (S15E06-08) City Sushi", "Series Title", 15, new[] { 6, 7, 8 })]
78 [TestCase("Босх: Спадок (S2E1-4) / Series: Legacy (S2E1-4) (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, new[] { 1, 2, 3, 4 })]
79 [TestCase("Босх: Спадок / Series: Legacy / S2E1-4 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Series: Legacy", 2, new[] { 1, 2, 3, 4 })]
80 [TestCase("Series Title - S26E96-97-98-99-100 - Episode 5931 + Episode 5932 + Episode 5933 + Episode 5934 + Episode 5935", "Series Title", 26, new[] { 96, 97, 98, 99, 100 })]
81 [TestCase("Series falls - Temporada 1 [HDTV][Cap.111_120]", "Series falls", 1, new[] { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 })]
82 [TestCase("Series.S101E01-E02.Some.Title.Name.1080p.WEB-DL.AAC2.0.H.264-Release", "Series", 101, new[] { 1, 2 })]
83 [TestCase("Series.2006.S101E01-E02.Some.Title.Name.1080p.WEB-DL.AAC2.0.H.264-Release", "Series 2006", 101, new[] { 1, 2 })]
84
85 // [TestCase("", "", , new [] { })]
86 public void should_parse_multiple_episodes(string postTitle, string title, int season, int[] episodes)
87 {
88 var result = Parser.Parser.ParseTitle(postTitle);
89 result.SeasonNumber.Should().Be(season);
…lines 90–97 unchanged (8 lines)

Before

compilation_unit
using_directive
using "using"
identifier "FluentAssertions"
; ";"
using_directive
using "using"
qualified_name
identifier "NUnit"
. "."
identifier "Framework"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "Framework"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "ParserTests"
declaration_list
{ "{"
class_declaration
attribute_list
[ "["
attribute
identifier "TestFixture"
] "]"
modifier
public "public"
class "class"
identifier "MultiEpisodeParserFixture"
base_list
: ":"
identifier "CoreTest"
declaration_list
{ "{"
method_declaration
attribute_list (+42 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+35 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+50 nodes collapsed)
attribute_list (+40 nodes collapsed)
attribute_list (+38 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
comment "// [TestCase(\"My Name Is Sonarr - S03E01-E02 - My Name Is Co"...
comment "// [TestCase(\"Adventure Series - 5x01 - x02 - Dev the Human "...
attribute_list (+40 nodes collapsed)
attribute_list (+40 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+35 nodes collapsed)
attribute_list (+35 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+38 nodes collapsed)
attribute_list (+38 nodes collapsed)
attribute_list (+40 nodes collapsed)
attribute_list (+50 nodes collapsed)
comment "// [TestCase(\"\", \"\", , new [] { })]"
modifier
public "public"
predefined_type "void"
identifier "should_parse_multiple_episodes"
parameter_list (+22 nodes collapsed)
block (+130 nodes collapsed)
} "}"
} "}"

After

compilation_unit
using_directive
using "using"
identifier "FluentAssertions"
; ";"
using_directive
using "using"
qualified_name
identifier "NUnit"
. "."
identifier "Framework"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "Framework"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "ParserTests"
declaration_list
{ "{"
class_declaration
attribute_list
[ "["
attribute
identifier "TestFixture"
] "]"
modifier
public "public"
class "class"
identifier "MultiEpisodeParserFixture"
base_list
: ":"
identifier "CoreTest"
declaration_list
{ "{"
method_declaration
attribute_list (+42 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+35 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+33 nodes collapsed)
attribute_list (+50 nodes collapsed)
attribute_list (+40 nodes collapsed)
attribute_list (+38 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
comment "// [TestCase(\"My Name Is Sonarr - S03E01-E02 - My Name Is Co"...
comment "// [TestCase(\"Adventure Series - 5x01 - x02 - Dev the Human "...
attribute_list (+40 nodes collapsed)
attribute_list (+40 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+35 nodes collapsed)
attribute_list (+35 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+34 nodes collapsed)
attribute_list (+36 nodes collapsed)
attribute_list (+38 nodes collapsed)
attribute_list (+38 nodes collapsed)
attribute_list (+40 nodes collapsed)
attribute_list (+50 nodes collapsed)
attribute_list
[ "["
attribute
identifier "TestCase"
attribute_argument_list
( "("
attribute_argument
string_literal
" "\""
string_literal_content "Series.S101E01-E02.Some.Title.Name.1080p.WEB-DL.AAC2.0.H.264"...
" "\""
, ","
attribute_argument
string_literal
" "\""
string_literal_content "Series"
" "\""
, ","
attribute_argument
integer_literal "101"
, ","
attribute_argument
implicit_array_creation_expression
new "new"
[ "["
] "]"
initializer_expression
{ "{"
integer_literal "1"
, ","
integer_literal "2"
} "}"
) ")"
] "]"
attribute_list
[ "["
attribute
identifier "TestCase"
attribute_argument_list
( "("
attribute_argument
string_literal
" "\""
string_literal_content "Series.2006.S101E01-E02.Some.Title.Name.1080p.WEB-DL.AAC2.0."...
" "\""
, ","
attribute_argument
string_literal
" "\""
string_literal_content "Series 2006"
" "\""
, ","
attribute_argument
integer_literal "101"
, ","
attribute_argument
implicit_array_creation_expression
new "new"
[ "["
] "]"
initializer_expression
{ "{"
integer_literal "1"
, ","
integer_literal "2"
} "}"
) ")"
] "]"
comment "// [TestCase(\"\", \"\", , new [] { })]"
modifier
public "public"
predefined_type "void"
identifier "should_parse_multiple_episodes"
parameter_list (+22 nodes collapsed)
block (+130 nodes collapsed)
} "}"
} "}"