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–115 unchanged (115 lines)
116 accum.append(" ");
117 else
118 accum.append(" ");
119 break;
120 case '<':
121 // escape when in character data or when in a xml attribue val; not needed in html attr val
122 if (!inAttribute)
123 accum.append("&lt;");
124 else
125 accum.append(c);
126 break;
127 case '>':
128 if (!inAttribute)
…lines 129–267 unchanged (139 lines)

After

…lines 1–115 unchanged (115 lines)
116 accum.append("&nbsp;");
117 else
118 accum.append("&#xa0;");
119 break;
120 case '<':
121 // escape when in character data or when in a xml attribue val; not needed in html attr val
122 if (!inAttribute || escapeMode == EscapeMode.xhtml)
123 accum.append("&lt;");
124 else
125 accum.append(c);
126 break;
127 case '>':
128 if (!inAttribute)
…lines 129–267 unchanged (139 lines)

Before

program
package_declaration
package "package"
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "nodes"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "helper"
. "."
identifier "StringUtil"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "parser"
. "."
identifier "Parser"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "io"
. "."
identifier "IOException"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "io"
. "."
identifier "InputStream"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "nio"
. "."
identifier "charset"
. "."
identifier "CharsetEncoder"
; ";"
import_declaration
import "import"
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
asterisk
* "*"
; ";"
block_comment "/**\n * HTML entities, and escape routines.\n * Source: <a hre"...
class_declaration
modifiers
public "public"
class "class"
identifier "Entities"
class_body
{ "{"
enum_declaration (+96 nodes collapsed)
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "String"
, ","
type_identifier "Character"
> ">"
variable_declarator
identifier "full"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "Character"
, ","
type_identifier "String"
> ">"
variable_declarator
identifier "xhtmlByVal"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "String"
, ","
type_identifier "Character"
> ">"
variable_declarator
identifier "base"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "Character"
, ","
type_identifier "String"
> ">"
variable_declarator
identifier "baseByVal"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "Character"
, ","
type_identifier "String"
> ">"
variable_declarator
identifier "fullByVal"
; ";"
constructor_declaration
modifiers
private "private"
identifier "Entities"
formal_parameters
( "("
) ")"
constructor_body
{ "{"
} "}"
block_comment "/**\n * Check if the input is a known named entity\n *"...
method_declaration (+26 nodes collapsed)
block_comment "/**\n * Check if the input is a known named entity in the"...
method_declaration (+26 nodes collapsed)
block_comment "/**\n * Get the Character value of the named entity\n "...
method_declaration (+26 nodes collapsed)
method_declaration (+71 nodes collapsed)
line_comment "// this method is ugly, and does a lot. but other breakups c"...
method_declaration
modifiers
static "static"
void_type "void"
identifier "escape"
formal_parameters (+29 nodes collapsed)
block
{ "{"
local_variable_declaration
boolean_type "boolean"
variable_declarator
identifier "lastWasWhite"
= "="
false "false"
; ";"
local_variable_declaration
boolean_type "boolean"
variable_declarator
identifier "reachedNonWhite"
= "="
false "false"
; ";"
local_variable_declaration
modifiers
final "final"
type_identifier "EscapeMode"
variable_declarator
identifier "escapeMode"
= "="
method_invocation
identifier "out"
. "."
identifier "escapeMode"
argument_list
( "("
) ")"
; ";"
local_variable_declaration
modifiers
final "final"
type_identifier "CharsetEncoder"
variable_declarator
identifier "encoder"
= "="
method_invocation
identifier "out"
. "."
identifier "encoder"
argument_list
( "("
) ")"
; ";"
local_variable_declaration (+28 nodes collapsed)
local_variable_declaration (+22 nodes collapsed)
local_variable_declaration
modifiers
final "final"
integral_type
int "int"
variable_declarator
identifier "length"
= "="
method_invocation
identifier "string"
. "."
identifier "length"
argument_list
( "("
) ")"
; ";"
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "codePoint"
; ";"
for_statement
for "for"
( "("
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "offset"
= "="
decimal_integer_literal "0"
; ";"
binary_expression
identifier "offset"
< "<"
identifier "length"
; ";"
assignment_expression
identifier "offset"
+= "+="
method_invocation
identifier "Character"
. "."
identifier "charCount"
argument_list
( "("
identifier "codePoint"
) ")"
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "codePoint"
= "="
method_invocation
identifier "string"
. "."
identifier "codePointAt"
argument_list
( "("
identifier "offset"
) ")"
; ";"
if_statement (+80 nodes collapsed)
line_comment "// surrogate pairs, split implementation for efficiency on s"...
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "codePoint"
< "<"
field_access
identifier "Character"
. "."
identifier "MIN_SUPPLEMENTARY_CODE_POINT"
) ")"
block
{ "{"
local_variable_declaration
modifiers
final "final"
integral_type
char "char"
variable_declarator
identifier "c"
= "="
cast_expression
( "("
integral_type
char "char"
) ")"
identifier "codePoint"
; ";"
line_comment "// html specific and required escapes:"
switch_expression
switch "switch"
parenthesized_expression
( "("
identifier "c"
) ")"
switch_block
{ "{"
switch_block_statement_group (+21 nodes collapsed)
switch_block_statement_group (+47 nodes collapsed)
switch_block_statement_group
switch_label
case "case"
character_literal "'<'"
: ":"
line_comment "// escape when in character data or when in a xml attribue v"...
if_statement
if "if"
parenthesized_expression
( "("
unary_expression
! "!"
identifier "inAttribute"
) ")"
expression_statement
method_invocation
identifier "accum"
. "."
identifier "append"
argument_list
( "("
string_literal
" "\""
string_fragment "&lt;"
" "\""
) ")"
; ";"
else "else"
expression_statement
method_invocation
identifier "accum"
. "."
identifier "append"
argument_list
( "("
identifier "c"
) ")"
; ";"
break_statement
break "break"
; ";"
switch_block_statement_group (+40 nodes collapsed)
switch_block_statement_group (+38 nodes collapsed)
switch_block_statement_group (+109 nodes collapsed)
} "}"
} "}"
else "else"
block (+84 nodes collapsed)
} "}"
} "}"
method_declaration (+25 nodes collapsed)
block_comment "/**\n * Unescape the input string.\n * @param string t"...
method_declaration (+31 nodes collapsed)
block_comment "/*\n * Provides a fast-path for Encoder.canEncode, which "...
method_declaration (+77 nodes collapsed)
enum_declaration (+78 nodes collapsed)
line_comment "// xhtml has restricted entities"
field_declaration (+58 nodes collapsed)
static_initializer (+149 nodes collapsed)
method_declaration (+232 nodes collapsed)
method_declaration (+176 nodes collapsed)
} "}"

After

program
package_declaration
package "package"
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "nodes"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "helper"
. "."
identifier "StringUtil"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "parser"
. "."
identifier "Parser"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "io"
. "."
identifier "IOException"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "io"
. "."
identifier "InputStream"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "nio"
. "."
identifier "charset"
. "."
identifier "CharsetEncoder"
; ";"
import_declaration
import "import"
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
asterisk
* "*"
; ";"
block_comment "/**\n * HTML entities, and escape routines.\n * Source: <a hre"...
class_declaration
modifiers
public "public"
class "class"
identifier "Entities"
class_body
{ "{"
enum_declaration (+96 nodes collapsed)
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "String"
, ","
type_identifier "Character"
> ">"
variable_declarator
identifier "full"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "Character"
, ","
type_identifier "String"
> ">"
variable_declarator
identifier "xhtmlByVal"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "String"
, ","
type_identifier "Character"
> ">"
variable_declarator
identifier "base"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "Character"
, ","
type_identifier "String"
> ">"
variable_declarator
identifier "baseByVal"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
generic_type
type_identifier "Map"
type_arguments
< "<"
type_identifier "Character"
, ","
type_identifier "String"
> ">"
variable_declarator
identifier "fullByVal"
; ";"
constructor_declaration
modifiers
private "private"
identifier "Entities"
formal_parameters
( "("
) ")"
constructor_body
{ "{"
} "}"
block_comment "/**\n * Check if the input is a known named entity\n *"...
method_declaration (+26 nodes collapsed)
block_comment "/**\n * Check if the input is a known named entity in the"...
method_declaration (+26 nodes collapsed)
block_comment "/**\n * Get the Character value of the named entity\n "...
method_declaration (+26 nodes collapsed)
method_declaration (+71 nodes collapsed)
line_comment "// this method is ugly, and does a lot. but other breakups c"...
method_declaration
modifiers
static "static"
void_type "void"
identifier "escape"
formal_parameters (+29 nodes collapsed)
block
{ "{"
local_variable_declaration
boolean_type "boolean"
variable_declarator
identifier "lastWasWhite"
= "="
false "false"
; ";"
local_variable_declaration
boolean_type "boolean"
variable_declarator
identifier "reachedNonWhite"
= "="
false "false"
; ";"
local_variable_declaration
modifiers
final "final"
type_identifier "EscapeMode"
variable_declarator
identifier "escapeMode"
= "="
method_invocation
identifier "out"
. "."
identifier "escapeMode"
argument_list
( "("
) ")"
; ";"
local_variable_declaration
modifiers
final "final"
type_identifier "CharsetEncoder"
variable_declarator
identifier "encoder"
= "="
method_invocation
identifier "out"
. "."
identifier "encoder"
argument_list
( "("
) ")"
; ";"
local_variable_declaration (+28 nodes collapsed)
local_variable_declaration (+22 nodes collapsed)
local_variable_declaration
modifiers
final "final"
integral_type
int "int"
variable_declarator
identifier "length"
= "="
method_invocation
identifier "string"
. "."
identifier "length"
argument_list
( "("
) ")"
; ";"
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "codePoint"
; ";"
for_statement
for "for"
( "("
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "offset"
= "="
decimal_integer_literal "0"
; ";"
binary_expression
identifier "offset"
< "<"
identifier "length"
; ";"
assignment_expression
identifier "offset"
+= "+="
method_invocation
identifier "Character"
. "."
identifier "charCount"
argument_list
( "("
identifier "codePoint"
) ")"
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "codePoint"
= "="
method_invocation
identifier "string"
. "."
identifier "codePointAt"
argument_list
( "("
identifier "offset"
) ")"
; ";"
if_statement (+80 nodes collapsed)
line_comment "// surrogate pairs, split implementation for efficiency on s"...
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "codePoint"
< "<"
field_access
identifier "Character"
. "."
identifier "MIN_SUPPLEMENTARY_CODE_POINT"
) ")"
block
{ "{"
local_variable_declaration
modifiers
final "final"
integral_type
char "char"
variable_declarator
identifier "c"
= "="
cast_expression
( "("
integral_type
char "char"
) ")"
identifier "codePoint"
; ";"
line_comment "// html specific and required escapes:"
switch_expression
switch "switch"
parenthesized_expression
( "("
identifier "c"
) ")"
switch_block
{ "{"
switch_block_statement_group (+21 nodes collapsed)
switch_block_statement_group (+47 nodes collapsed)
switch_block_statement_group
switch_label
case "case"
character_literal "'<'"
: ":"
line_comment "// escape when in character data or when in a xml attribue v"...
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
unary_expression
! "!"
identifier "inAttribute"
|| "||"
binary_expression
identifier "escapeMode"
== "=="
field_access
identifier "EscapeMode"
. "."
identifier "xhtml"
) ")"
expression_statement
method_invocation
identifier "accum"
. "."
identifier "append"
argument_list
( "("
string_literal
" "\""
string_fragment "&lt;"
" "\""
) ")"
; ";"
else "else"
expression_statement
method_invocation
identifier "accum"
. "."
identifier "append"
argument_list
( "("
identifier "c"
) ")"
; ";"
break_statement
break "break"
; ";"
switch_block_statement_group (+40 nodes collapsed)
switch_block_statement_group (+38 nodes collapsed)
switch_block_statement_group (+109 nodes collapsed)
} "}"
} "}"
else "else"
block (+84 nodes collapsed)
} "}"
} "}"
method_declaration (+25 nodes collapsed)
block_comment "/**\n * Unescape the input string.\n * @param string t"...
method_declaration (+31 nodes collapsed)
block_comment "/*\n * Provides a fast-path for Encoder.canEncode, which "...
method_declaration (+77 nodes collapsed)
enum_declaration (+78 nodes collapsed)
line_comment "// xhtml has restricted entities"
field_declaration (+58 nodes collapsed)
static_initializer (+149 nodes collapsed)
method_declaration (+232 nodes collapsed)
method_declaration (+176 nodes collapsed)
} "}"