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–196 unchanged (196 lines)
197 else if (tq.matchChomp(":only-of-type"))
198 evals.add(new Evaluator.IsOnlyOfType());
199 else if (tq.matchChomp(":empty"))
200 evals.add(new Evaluator.IsEmpty());
201 else if (tq.matchChomp(":root"))
202 evals.add(new Evaluator.IsRoot());
203 else // unhandled
204 throw new Selector.SelectorParseException("Could not parse query '%s': unexpected token at '%s'", query, tq.remainder());
205
206 }
207
208 private void byId() {
209 String id = tq.consumeCssIdentifier();
…lines 210–379 unchanged (170 lines)

After

…lines 1–196 unchanged (196 lines)
197 else if (tq.matchChomp(":only-of-type"))
198 evals.add(new Evaluator.IsOnlyOfType());
199 else if (tq.matchChomp(":empty"))
200 evals.add(new Evaluator.IsEmpty());
201 else if (tq.matchChomp(":root"))
202 evals.add(new Evaluator.IsRoot());
203 else if (tq.matchChomp(":matchText"))
204 evals.add(new Evaluator.MatchText());
205 else // unhandled
206 throw new Selector.SelectorParseException("Could not parse query '%s': unexpected token at '%s'", query, tq.remainder());
207
208 }
209
210 private void byId() {
…lines 211–381 unchanged (171 lines)

Before

program
package_declaration
package "package"
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "select"
; ";"
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 "helper"
. "."
identifier "Validate"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "parser"
. "."
identifier "TokenQueue"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "ArrayList"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "List"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "regex"
. "."
identifier "Matcher"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "regex"
. "."
identifier "Pattern"
; ";"
import_declaration
import "import"
static "static"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "internal"
. "."
identifier "Normalizer"
. "."
identifier "normalize"
; ";"
block_comment "/**\n * Parses a CSS selector into an Evaluator tree.\n */"
class_declaration
modifiers
public "public"
class "class"
identifier "QueryParser"
class_body
{ "{"
field_declaration (+41 nodes collapsed)
field_declaration (+52 nodes collapsed)
field_declaration
modifiers
private "private"
type_identifier "TokenQueue"
variable_declarator
identifier "tq"
; ";"
field_declaration
modifiers
private "private"
type_identifier "String"
variable_declarator
identifier "query"
; ";"
field_declaration (+23 nodes collapsed)
block_comment "/**\n * Create a new QueryParser.\n * @param query CSS"...
constructor_declaration (+37 nodes collapsed)
block_comment "/**\n * Parse a CSS query into an Evaluator.\n * @para"...
method_declaration (+73 nodes collapsed)
block_comment "/**\n * Parse the query\n * @return Evaluator\n */"
method_declaration (+209 nodes collapsed)
method_declaration (+494 nodes collapsed)
method_declaration (+195 nodes collapsed)
method_declaration
modifiers
private "private"
void_type "void"
identifier "findElements"
formal_parameters
( "("
) ")"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment "#"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "byId"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment "."
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "byClass"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression (+23 nodes collapsed)
expression_statement
method_invocation
identifier "byTag"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment "["
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "byAttribute"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment "*"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "allElements"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":lt("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "indexLessThan"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":gt("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "indexGreaterThan"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":eq("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "indexEquals"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":has("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "has"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":contains("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "contains"
argument_list
( "("
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":containsOwn("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "contains"
argument_list
( "("
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":containsData("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "containsData"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":matches("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "matches"
argument_list
( "("
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":matchesOwn("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "matches"
argument_list
( "("
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":not("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "not"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-child("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
false "false"
, ","
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-last-child("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
true "true"
, ","
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-of-type("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
false "false"
, ","
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-last-of-type("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
true "true"
, ","
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":first-child"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsFirstChild"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":last-child"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsLastChild"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":first-of-type"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsFirstOfType"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":last-of-type"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsLastOfType"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":only-child"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsOnlyChild"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":only-of-type"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsOnlyOfType"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":empty"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsEmpty"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":root"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsRoot"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
line_comment "// unhandled"
throw_statement (+26 nodes collapsed)
} "}"
method_declaration (+53 nodes collapsed)
method_declaration (+59 nodes collapsed)
method_declaration (+185 nodes collapsed)
method_declaration (+446 nodes collapsed)
method_declaration (+29 nodes collapsed)
line_comment "// pseudo selectors :lt, :gt, :eq"
method_declaration (+34 nodes collapsed)
method_declaration (+34 nodes collapsed)
method_declaration (+34 nodes collapsed)
line_comment "//pseudo selectors :first-child, :last-child, :nth-child, .."...
field_declaration (+34 nodes collapsed)
field_declaration (+23 nodes collapsed)
method_declaration (+447 nodes collapsed)
method_declaration (+68 nodes collapsed)
line_comment "// pseudo selector :has(el)"
method_declaration (+79 nodes collapsed)
line_comment "// pseudo selector :contains(text), containsOwn(text)"
method_declaration (+118 nodes collapsed)
line_comment "// pseudo selector :containsData(data)"
method_declaration (+81 nodes collapsed)
line_comment "// :matches(regex), matchesOwn(regex)"
method_declaration (+126 nodes collapsed)
line_comment "// :not(selector)"
method_declaration (+79 nodes collapsed)
} "}"

After

program
package_declaration
package "package"
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "select"
; ";"
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 "helper"
. "."
identifier "Validate"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "parser"
. "."
identifier "TokenQueue"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "ArrayList"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "List"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "regex"
. "."
identifier "Matcher"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "regex"
. "."
identifier "Pattern"
; ";"
import_declaration
import "import"
static "static"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "internal"
. "."
identifier "Normalizer"
. "."
identifier "normalize"
; ";"
block_comment "/**\n * Parses a CSS selector into an Evaluator tree.\n */"
class_declaration
modifiers
public "public"
class "class"
identifier "QueryParser"
class_body
{ "{"
field_declaration (+41 nodes collapsed)
field_declaration (+52 nodes collapsed)
field_declaration
modifiers
private "private"
type_identifier "TokenQueue"
variable_declarator
identifier "tq"
; ";"
field_declaration
modifiers
private "private"
type_identifier "String"
variable_declarator
identifier "query"
; ";"
field_declaration (+23 nodes collapsed)
block_comment "/**\n * Create a new QueryParser.\n * @param query CSS"...
constructor_declaration (+37 nodes collapsed)
block_comment "/**\n * Parse a CSS query into an Evaluator.\n * @para"...
method_declaration (+73 nodes collapsed)
block_comment "/**\n * Parse the query\n * @return Evaluator\n */"
method_declaration (+209 nodes collapsed)
method_declaration (+494 nodes collapsed)
method_declaration (+195 nodes collapsed)
method_declaration
modifiers
private "private"
void_type "void"
identifier "findElements"
formal_parameters
( "("
) ")"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment "#"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "byId"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment "."
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "byClass"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression (+23 nodes collapsed)
expression_statement
method_invocation
identifier "byTag"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment "["
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "byAttribute"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment "*"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "allElements"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":lt("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "indexLessThan"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":gt("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "indexGreaterThan"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":eq("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "indexEquals"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":has("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "has"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":contains("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "contains"
argument_list
( "("
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":containsOwn("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "contains"
argument_list
( "("
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":containsData("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "containsData"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":matches("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "matches"
argument_list
( "("
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":matchesOwn("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "matches"
argument_list
( "("
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matches"
argument_list
( "("
string_literal
" "\""
string_fragment ":not("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "not"
argument_list
( "("
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-child("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
false "false"
, ","
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-last-child("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
true "true"
, ","
false "false"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-of-type("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
false "false"
, ","
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":nth-last-of-type("
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "cssNthChild"
argument_list
( "("
true "true"
, ","
true "true"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":first-child"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsFirstChild"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":last-child"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsLastChild"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":first-of-type"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsFirstOfType"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":last-of-type"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsLastOfType"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":only-child"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsOnlyChild"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":only-of-type"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsOnlyOfType"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":empty"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsEmpty"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":root"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "IsRoot"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "tq"
. "."
identifier "matchChomp"
argument_list
( "("
string_literal
" "\""
string_fragment ":matchText"
" "\""
) ")"
) ")"
expression_statement
method_invocation
identifier "evals"
. "."
identifier "add"
argument_list
( "("
object_creation_expression
new "new"
scoped_type_identifier
type_identifier "Evaluator"
. "."
type_identifier "MatchText"
argument_list
( "("
) ")"
) ")"
; ";"
else "else"
line_comment "// unhandled"
throw_statement (+26 nodes collapsed)
} "}"
method_declaration (+53 nodes collapsed)
method_declaration (+59 nodes collapsed)
method_declaration (+185 nodes collapsed)
method_declaration (+446 nodes collapsed)
method_declaration (+29 nodes collapsed)
line_comment "// pseudo selectors :lt, :gt, :eq"
method_declaration (+34 nodes collapsed)
method_declaration (+34 nodes collapsed)
method_declaration (+34 nodes collapsed)
line_comment "//pseudo selectors :first-child, :last-child, :nth-child, .."...
field_declaration (+34 nodes collapsed)
field_declaration (+23 nodes collapsed)
method_declaration (+447 nodes collapsed)
method_declaration (+68 nodes collapsed)
line_comment "// pseudo selector :has(el)"
method_declaration (+79 nodes collapsed)
line_comment "// pseudo selector :contains(text), containsOwn(text)"
method_declaration (+118 nodes collapsed)
line_comment "// pseudo selector :containsData(data)"
method_declaration (+81 nodes collapsed)
line_comment "// :matches(regex), matchesOwn(regex)"
method_declaration (+126 nodes collapsed)
line_comment "// :not(selector)"
method_declaration (+79 nodes collapsed)
} "}"