Skip to content

Commit 79684f1

Browse files
committed
refactor(selector): have CssConditionTranslator use visitor
1 parent a666ccb commit 79684f1

28 files changed

Lines changed: 231 additions & 108 deletions

src/main/java/io/github/seleniumquery/by/secondgen/csstree/condition/AstCssConditionVisitor.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/main/java/io/github/seleniumquery/by/secondgen/csstree/condition/CssAndCondition.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.github.seleniumquery.by.secondgen.csstree.condition;
1818

1919
import io.github.seleniumquery.by.secondgen.finder.ElementFinder;
20+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssAndCondition;
2021

2122
/**
2223
* Chains conditions.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*
2+
* Copyright (c) 2017 seleniumQuery authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.github.seleniumquery.by.secondgen.csstree.selector;
18+
19+
import io.github.seleniumquery.by.secondgen.csstree.condition.CssAndCondition;
20+
import io.github.seleniumquery.by.secondgen.csstree.condition.CssCondition;
21+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssClassAttributeCondition;
22+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssContainsPrefixAttributeCondition;
23+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssContainsSubstringAttributeCondition;
24+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssContainsWordAttributeCondition;
25+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssEndsWithAttributeCondition;
26+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssEqualsOrHasAttributeCondition;
27+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssIdAttributeCondition;
28+
import io.github.seleniumquery.by.secondgen.csstree.condition.attribute.CssStartsWithAttributeCondition;
29+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssAndCondition;
30+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssConditionVisitor;
31+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssClassAttributeCondition;
32+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssContainsPrefixAttributeCondition;
33+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssContainsSubstringAttributeCondition;
34+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssContainsWordAttributeCondition;
35+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssEndsWithAttributeCondition;
36+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssEqualsOrHasAttributeCondition;
37+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssIdAttributeCondition;
38+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssStartsWithAttributeCondition;
39+
40+
public class CssConditionVisitor implements AstCssConditionVisitor<CssCondition> {
41+
42+
@Override
43+
public CssCondition visit(AstCssAndCondition astCssAndCondition) {
44+
return new CssAndCondition(astCssAndCondition);
45+
}
46+
47+
@Override
48+
public CssCondition visit(AstCssClassAttributeCondition astCssClassAttributeCondition) {
49+
return new CssClassAttributeCondition(astCssClassAttributeCondition);
50+
}
51+
52+
@Override
53+
public CssCondition visit(AstCssContainsPrefixAttributeCondition astCssContainsPrefixAttributeCondition) {
54+
return new CssContainsPrefixAttributeCondition(astCssContainsPrefixAttributeCondition);
55+
}
56+
57+
@Override
58+
public CssCondition visit(AstCssContainsSubstringAttributeCondition astCssContainsSubstringAttributeCondition) {
59+
return new CssContainsSubstringAttributeCondition(astCssContainsSubstringAttributeCondition);
60+
}
61+
62+
@Override
63+
public CssCondition visit(AstCssContainsWordAttributeCondition astCssContainsWordAttributeCondition) {
64+
return new CssContainsWordAttributeCondition(astCssContainsWordAttributeCondition);
65+
}
66+
67+
@Override
68+
public CssCondition visit(AstCssEndsWithAttributeCondition astCssEndsWithAttributeCondition) {
69+
return new CssEndsWithAttributeCondition(astCssEndsWithAttributeCondition);
70+
}
71+
72+
@Override
73+
public CssCondition visit(AstCssEqualsOrHasAttributeCondition astCssEqualsOrHasAttributeCondition) {
74+
return new CssEqualsOrHasAttributeCondition(astCssEqualsOrHasAttributeCondition);
75+
}
76+
77+
@Override
78+
public CssCondition visit(AstCssIdAttributeCondition astCssIdAttributeCondition) {
79+
return new CssIdAttributeCondition(astCssIdAttributeCondition);
80+
}
81+
82+
@Override
83+
public CssCondition visit(AstCssStartsWithAttributeCondition astCssStartsWithAttributeCondition) {
84+
return new CssStartsWithAttributeCondition(astCssStartsWithAttributeCondition);
85+
}
86+
87+
}

src/main/java/io/github/seleniumquery/by/secondgen/csstree/condition/AstCssAndCondition.java renamed to src/main/java/io/github/seleniumquery/by/secondgen/parser/ast/condition/AstCssAndCondition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.github.seleniumquery.by.secondgen.csstree.condition;
17+
package io.github.seleniumquery.by.secondgen.parser.ast.condition;
18+
19+
import io.github.seleniumquery.by.secondgen.csstree.condition.CssCondition;
1820

1921
public class AstCssAndCondition implements AstCssCondition {
2022

src/main/java/io/github/seleniumquery/by/secondgen/csstree/condition/AstCssCondition.java renamed to src/main/java/io/github/seleniumquery/by/secondgen/parser/ast/condition/AstCssCondition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
* limitations under the License.
1515
*/
1616

17-
package io.github.seleniumquery.by.secondgen.csstree.condition;
17+
package io.github.seleniumquery.by.secondgen.parser.ast.condition;
1818

1919
public interface AstCssCondition {
20+
2021
<T> T accept(AstCssConditionVisitor<T> visitor);
22+
2123
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Copyright (c) 2017 seleniumQuery authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.github.seleniumquery.by.secondgen.parser.ast.condition;
18+
19+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssClassAttributeCondition;
20+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssContainsPrefixAttributeCondition;
21+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssContainsSubstringAttributeCondition;
22+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssContainsWordAttributeCondition;
23+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssEndsWithAttributeCondition;
24+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssEqualsOrHasAttributeCondition;
25+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssIdAttributeCondition;
26+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute.AstCssStartsWithAttributeCondition;
27+
28+
public interface AstCssConditionVisitor<T> {
29+
30+
T visit(AstCssAndCondition astCssAndCondition);
31+
32+
T visit(AstCssClassAttributeCondition astCssClassAttributeCondition);
33+
T visit(AstCssContainsPrefixAttributeCondition astCssContainsPrefixAttributeCondition);
34+
T visit(AstCssContainsSubstringAttributeCondition astCssContainsSubstringAttributeCondition);
35+
T visit(AstCssContainsWordAttributeCondition astCssContainsWordAttributeCondition);
36+
T visit(AstCssEndsWithAttributeCondition astCssEndsWithAttributeCondition);
37+
T visit(AstCssEqualsOrHasAttributeCondition astCssEqualsOrHasAttributeCondition);
38+
T visit(AstCssIdAttributeCondition astCssIdAttributeCondition);
39+
T visit(AstCssStartsWithAttributeCondition astCssStartsWithAttributeCondition);
40+
41+
}

src/main/java/io/github/seleniumquery/by/secondgen/parser/ast/condition/attribute/AstCssAttributeCondition.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute;
1818

19-
public interface AstCssAttributeCondition {
19+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssCondition;
2020

21-
<T> T accept(AstCssAttributeConditionVisitor<T> visitor);
21+
public interface AstCssAttributeCondition extends AstCssCondition {
2222

2323
}

src/main/java/io/github/seleniumquery/by/secondgen/parser/ast/condition/attribute/AstCssAttributeConditionVisitor.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,10 @@
1616

1717
package io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute;
1818

19-
public interface AstCssAttributeConditionVisitor<T> {
19+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssConditionVisitor;
20+
21+
public interface AstCssAttributeConditionVisitor<T> extends AstCssConditionVisitor<T> {
22+
2023

21-
T visit(AstCssClassAttributeCondition astCssClassAttributeCondition);
22-
T visit(AstCssContainsPrefixAttributeCondition astCssContainsPrefixAttributeCondition);
23-
T visit(AstCssContainsSubstringAttributeCondition astCssContainsSubstringAttributeCondition);
24-
T visit(AstCssContainsWordAttributeCondition astCssContainsWordAttributeCondition);
25-
T visit(AstCssEndsWithAttributeCondition astCssEndsWithAttributeCondition);
26-
T visit(AstCssEqualsOrHasAttributeCondition astCssEqualsOrHasAttributeCondition);
27-
T visit(AstCssIdAttributeCondition astCssIdAttributeCondition);
28-
T visit(AstCssStartsWithAttributeCondition astCssStartsWithAttributeCondition);
2924

3025
}

src/main/java/io/github/seleniumquery/by/secondgen/parser/ast/condition/attribute/AstCssClassAttributeCondition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute;
1818

19+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssConditionVisitor;
20+
1921
public class AstCssClassAttributeCondition implements AstCssAttributeCondition {
2022

2123
public final String unescapedClassName;
@@ -25,7 +27,7 @@ public AstCssClassAttributeCondition(String unescapedClassName) {
2527
}
2628

2729
@Override
28-
public <T> T accept(AstCssAttributeConditionVisitor<T> visitor) {
30+
public <T> T accept(AstCssConditionVisitor<T> visitor) {
2931
return visitor.visit(this);
3032
}
3133

src/main/java/io/github/seleniumquery/by/secondgen/parser/ast/condition/attribute/AstCssContainsPrefixAttributeCondition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@
1616

1717
package io.github.seleniumquery.by.secondgen.parser.ast.condition.attribute;
1818

19+
import io.github.seleniumquery.by.secondgen.parser.ast.condition.AstCssConditionVisitor;
20+
1921
public class AstCssContainsPrefixAttributeCondition extends AstCssAttributeConditionBase {
2022

2123
public AstCssContainsPrefixAttributeCondition(String attributeName, String wantedValue) {
2224
super(attributeName, wantedValue);
2325
}
2426

2527
@Override
26-
public <T> T accept(AstCssAttributeConditionVisitor<T> visitor) {
28+
public <T> T accept(AstCssConditionVisitor<T> visitor) {
2729
return visitor.visit(this);
2830
}
2931

0 commit comments

Comments
 (0)