Skip to content

Commit 4fe0f6e

Browse files
committed
Remove target control from API
1 parent 6b0b488 commit 4fe0f6e

File tree

15 files changed

+44
-68
lines changed

15 files changed

+44
-68
lines changed

ansi4j-css-api/src/main/java/com/techsenger/ansi4j/css/api/GroupStyleGenerator.java

-7
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@
2828
@NotThreadSafe
2929
public interface GroupStyleGenerator<T extends AttributeGroup<T>> {
3030

31-
/**
32-
* Returns the type of the control this generator creates declarations for.
33-
*
34-
* @return
35-
*/
36-
TargetControl getTargetControl();
37-
3831
/**
3932
* Returns the key of the attribute group this generator creates declarations for.
4033
*

ansi4j-css-api/src/main/java/com/techsenger/ansi4j/css/api/StyleProcessor.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,16 @@ public StyleProcessor build() {
7575
AttributeRegistry getAttributeRegistry();
7676

7777
/**
78-
* Returns a generator for for the specified control and group.
78+
* Returns a generator for for the specified group.
7979
* @return
8080
*/
81-
<T extends AttributeGroup<T>> GroupStyleGenerator<T> getGenerator(TargetControl targetControl,
82-
AttributeGroup.Key<T> key);
81+
<T extends AttributeGroup<T>> GroupStyleGenerator<T> getGenerator(AttributeGroup.Key<T> key);
8382

8483
/**
8584
* Processes a function fragment using attribute registry and generators.
8685
*
8786
* @param functionFragment
8887
* @return declarations or empty list.
8988
*/
90-
ProcessorResult process(FunctionFragment functionFragment, TargetControl targetControl);
89+
ProcessorResult process(FunctionFragment functionFragment);
9190
}

ansi4j-css-api/src/main/java/com/techsenger/ansi4j/css/api/text/RtfxTextAreaStyleGenerator.java

-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.techsenger.ansi4j.css.api.text;
1818

19-
import com.techsenger.ansi4j.css.api.TargetControl;
2019
import java.util.List;
2120

2221
/**
@@ -25,11 +24,6 @@
2524
*/
2625
public class RtfxTextAreaStyleGenerator extends AbstractTextStyleGenerator {
2726

28-
@Override
29-
public TargetControl getTargetControl() {
30-
return TargetControl.RTFX_TEXT_AREA;
31-
}
32-
3327
@Override
3428
protected void doIntensityIncreased(List<String> declarations) {
3529
declarations.add("-fx-font-weight: bold");

ansi4j-css-api/src/main/java/com/techsenger/ansi4j/css/api/text/TextFlowStyleGenerator.java

-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.techsenger.ansi4j.css.api.text;
1818

19-
import com.techsenger.ansi4j.css.api.TargetControl;
2019
import java.util.List;
2120

2221
/**
@@ -25,11 +24,6 @@
2524
*/
2625
public class TextFlowStyleGenerator extends AbstractTextStyleGenerator {
2726

28-
@Override
29-
public TargetControl getTargetControl() {
30-
return TargetControl.TEXT_FLOW;
31-
}
32-
3327
@Override
3428
protected void doIntensityIncreased(List<String> declarations) {
3529
declarations.add("-fx-font-weight: bold");

ansi4j-css-api/src/main/java/com/techsenger/ansi4j/css/api/text/WebViewStyleGenerator.java

-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.techsenger.ansi4j.css.api.text;
1818

19-
import com.techsenger.ansi4j.css.api.TargetControl;
2019
import java.util.List;
2120

2221
/**
@@ -29,11 +28,6 @@ public WebViewStyleGenerator() {
2928

3029
}
3130

32-
@Override
33-
public TargetControl getTargetControl() {
34-
return TargetControl.WEB_VIEW;
35-
}
36-
3731
@Override
3832
protected void doIntensityIncreased(List<String> declarations) {
3933
declarations.add("font-weight: bold");

ansi4j-css-api/src/main/java/com/techsenger/ansi4j/css/api/TargetControl.java ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/TargetControl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.techsenger.ansi4j.css.api;
17+
package com.techsenger.ansi4j.css.demo;
1818

1919
/**
2020
*

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/attribute/AttributeSampleService.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import static com.techsenger.ansi4j.css.api.text.TextAttributeGroup.Blinking;
3737
import static com.techsenger.ansi4j.css.api.text.TextAttributeGroup.Underline;
3838
import static com.techsenger.ansi4j.css.api.text.TextAttributeGroup.Intensity;
39+
import com.techsenger.ansi4j.css.demo.TargetControl;
3940

4041
/**
4142
*
@@ -46,8 +47,9 @@ class AttributeSampleService {
4647
private final TextAttributeGroup attributeGroup;
4748

4849
AttributeSampleService() {
49-
this.attributeGroup = Ansi4jUtils.createProcessor(Constants.FG_COLOR, Constants.BG_COLOR,
50-
new XtermPalette256()).getAttributeRegistry().getGroup(TextAttributeGroup.KEY);
50+
//we need only group instance.
51+
this.attributeGroup = Ansi4jUtils.createProcessor(TargetControl.WEB_VIEW, Constants.FG_COLOR,
52+
Constants.BG_COLOR, new XtermPalette256()).getAttributeRegistry().getGroup(TextAttributeGroup.KEY);
5153
}
5254

5355
public List<AbstractAttributeSample<?>> createSamples() {

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/content/ContentBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.techsenger.ansi4j.css.demo.content;
1818

19-
import com.techsenger.ansi4j.css.api.TargetControl;
19+
import com.techsenger.ansi4j.css.demo.TargetControl;
2020

2121
/**
2222
*

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/content/RtfxTextAreaContentBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.techsenger.ansi4j.css.demo.content;
1818

19-
import com.techsenger.ansi4j.css.api.TargetControl;
19+
import com.techsenger.ansi4j.css.demo.TargetControl;
2020
import javafx.util.Pair;
2121
import org.fxmisc.richtext.model.StyleSpans;
2222
import org.fxmisc.richtext.model.StyleSpansBuilder;

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/content/TextFlowContentBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.techsenger.ansi4j.css.demo.content;
1818

19-
import com.techsenger.ansi4j.css.api.TargetControl;
19+
import com.techsenger.ansi4j.css.demo.TargetControl;
2020
import java.util.ArrayList;
2121
import java.util.List;
2222
import javafx.scene.text.Text;

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/content/WebViewContentBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import com.google.common.escape.Escaper;
2020
import com.google.common.html.HtmlEscapers;
21-
import com.techsenger.ansi4j.css.api.TargetControl;
21+
import com.techsenger.ansi4j.css.demo.TargetControl;
2222
import com.techsenger.ansi4j.css.api.color.ColorUtils;
2323
import com.techsenger.ansi4j.css.demo.Constants;
2424
import java.util.Map;

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/text/ProcessingService.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ public Pair<String, StyleSpans<String>> getRtfxTextAreaContent(String inputText,
7373

7474
private <T> T getContent(String inputText, int defFgColor, int defBgColor,
7575
Palette16 palette, ContentBuilder<T> contentBuilder) {
76-
var styleProcessor = Ansi4jUtils.createProcessor(defFgColor, defBgColor, palette);
76+
var styleProcessor = Ansi4jUtils.createProcessor(contentBuilder.getTargetControl(),
77+
defFgColor, defBgColor, palette);
7778
parse(inputText, styleProcessor, contentBuilder);
7879
return contentBuilder.build();
7980
}
@@ -91,7 +92,7 @@ private void parse(String inputText, StyleProcessor styleProcessor, ContentBuild
9192
contentBuilder.endStyle();
9293
styleStarted = false;
9394
}
94-
var result = styleProcessor.process(functionFragment, contentBuilder.getTargetControl());
95+
var result = styleProcessor.process(functionFragment);
9596
if (!result.getStyleDeclarations().isEmpty()) {
9697
style = String.join(";", result.getStyleDeclarations());
9798
styleStarted = true;

ansi4j-css-demo/src/main/java/com/techsenger/ansi4j/css/demo/utils/Ansi4jUtils.java

+20-4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.techsenger.ansi4j.core.api.Environment;
2020
import com.techsenger.ansi4j.core.api.ParserFactory;
2121
import com.techsenger.ansi4j.core.api.iso6429.ControlFunctionType;
22+
import com.techsenger.ansi4j.css.api.GroupStyleGenerator;
2223
import com.techsenger.ansi4j.css.api.StyleProcessor;
2324
import com.techsenger.ansi4j.css.api.color.Color;
2425
import com.techsenger.ansi4j.css.api.color.ColorUtils;
@@ -29,6 +30,7 @@
2930
import com.techsenger.ansi4j.css.api.text.TextFlowStyleGenerator;
3031
import com.techsenger.ansi4j.css.api.text.WebViewStyleGenerator;
3132
import com.techsenger.ansi4j.css.demo.Constants;
33+
import com.techsenger.ansi4j.css.demo.TargetControl;
3234
import java.util.List;
3335

3436
/**
@@ -50,7 +52,8 @@ public static ParserFactory createParserFactory() {
5052
return factory;
5153
}
5254

53-
public static StyleProcessor createProcessor(int defaultFgColor, int defaultBgColor, Palette16 palette16) {
55+
public static StyleProcessor createProcessor(TargetControl targetControl, int defaultFgColor, int defaultBgColor,
56+
Palette16 palette16) {
5457
Palette256 palette256 = null;
5558
if (palette16 instanceof Palette256) {
5659
palette256 = (Palette256) palette16;
@@ -64,11 +67,24 @@ public static StyleProcessor createProcessor(int defaultFgColor, int defaultBgCo
6467
.palette256(palette256)
6568
.build();
6669

70+
GroupStyleGenerator generator;
71+
switch (targetControl) {
72+
case WEB_VIEW:
73+
generator = new WebViewStyleGenerator();
74+
break;
75+
case TEXT_FLOW:
76+
generator = new TextFlowStyleGenerator();
77+
break;
78+
case RTFX_TEXT_AREA:
79+
generator = new RtfxTextAreaStyleGenerator();
80+
break;
81+
default:
82+
throw new AssertionError();
83+
}
84+
6785
var processor = new StyleProcessor.Builder()
6886
.configs(config)
69-
.generators(new WebViewStyleGenerator(),
70-
new TextFlowStyleGenerator(),
71-
new RtfxTextAreaStyleGenerator())
87+
.generators(generator)
7288
.build();
7389
return processor;
7490
}

ansi4j-css-impl/src/main/java/com/techsenger/ansi4j/css/impl/StyleProcessorImpl.java

+8-24
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import com.techsenger.ansi4j.css.api.attribute.AttributeRegistry;
2929
import com.techsenger.ansi4j.css.api.GroupStyleGenerator;
3030
import com.techsenger.ansi4j.css.api.ProcessorResult;
31-
import com.techsenger.ansi4j.css.api.TargetControl;
3231

3332
/**
3433
*
@@ -38,8 +37,7 @@ public final class StyleProcessorImpl implements StyleProcessor {
3837

3938
private final Map<Function, FunctionEvaluator> evaluatorsByFunction = new HashMap<>();
4039

41-
private final Map<TargetControl, Map<AttributeGroup.Key<?>, GroupStyleGenerator<?>>>
42-
generatorsByControlAndGroupKey = new HashMap<>();
40+
private final Map<AttributeGroup.Key<?>, GroupStyleGenerator<?>> generatorsByGroupKey = new HashMap<>();
4341

4442
private final AttributeRegistryImpl attributeRegistry;
4543

@@ -52,24 +50,13 @@ public StyleProcessorImpl(StyleProcessorConfig config) {
5250
config.getGenerators().forEach(g -> {
5351
var group = this.attributeRegistry.getGroup(g.getGroupKey());
5452
((GroupStyleGenerator) g).initialize(group);
55-
56-
var generatorsByGroupAndKey = this.generatorsByControlAndGroupKey.get(g.getTargetControl());
57-
if (generatorsByGroupAndKey == null) {
58-
generatorsByGroupAndKey = new HashMap<>();
59-
this.generatorsByControlAndGroupKey.put(g.getTargetControl(), generatorsByGroupAndKey);
60-
}
61-
generatorsByGroupAndKey.put(g.getGroupKey(), g);
53+
generatorsByGroupKey.put(g.getGroupKey(), g);
6254
});
6355
}
6456

6557
@Override
66-
public <T extends AttributeGroup<T>> GroupStyleGenerator<T> getGenerator(TargetControl targetControl,
67-
AttributeGroup.Key<T> key) {
68-
var generatorsByGroup = this.generatorsByControlAndGroupKey.get(targetControl);
69-
if (generatorsByGroup == null) {
70-
return null;
71-
}
72-
return (GroupStyleGenerator<T>) generatorsByGroup.get(key);
58+
public <T extends AttributeGroup<T>> GroupStyleGenerator<T> getGenerator(AttributeGroup.Key<T> key) {
59+
return (GroupStyleGenerator<T>) generatorsByGroupKey.get(key);
7360
}
7461

7562
@Override
@@ -78,19 +65,16 @@ public AttributeRegistry getAttributeRegistry() {
7865
}
7966

8067
@Override
81-
public ProcessorResult process(FunctionFragment functionFragment, TargetControl targetControl) {
68+
public ProcessorResult process(FunctionFragment functionFragment) {
8269
var result = new ProcessorResultImpl();
8370
var function = functionFragment.getFunction();
8471
var evaluator = this.evaluatorsByFunction.get(function);
8572
if (evaluator != null) {
8673
evaluator.evaluate(functionFragment, result);
8774
this.attributeRegistry.applyChanges(result.getAttributeChanges());
88-
var generatorsByGroup = this.generatorsByControlAndGroupKey.get(targetControl);
89-
if (generatorsByGroup != null) {
90-
for (var generator : generatorsByGroup.values()) {
91-
var declarations = generator.generate();
92-
result.getStyleDeclarations().addAll(declarations);
93-
}
75+
for (var generator : generatorsByGroupKey.values()) {
76+
var declarations = generator.generate();
77+
result.getStyleDeclarations().addAll(declarations);
9478
}
9579
}
9680
result.makeListsUnmodifiable();

ansi4j-css-it/src/test/java/com/techsenger/ansi4j/css/it/StyleProcessorIT.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.slf4j.Logger;
3333
import org.slf4j.LoggerFactory;
3434
import com.techsenger.ansi4j.css.api.StyleProcessor;
35-
import com.techsenger.ansi4j.css.api.TargetControl;
3635
import com.techsenger.ansi4j.css.api.attribute.AttributeChange;
3736
import com.techsenger.ansi4j.css.api.color.Palette256;
3837
import com.techsenger.ansi4j.css.api.text.WebViewStyleGenerator;
@@ -85,7 +84,7 @@ public void process_noItalicWithDefaultItalic_correctDeclarations() {
8584
} else if (fragment.getType() == FragmentType.FUNCTION) {
8685
FunctionFragment functionFragment = (FunctionFragment) fragment;
8786
if (functionFragment.getFunction() == ControlSequenceFunction.SGR) {
88-
var result = processor.process(functionFragment, TargetControl.WEB_VIEW);
87+
var result = processor.process(functionFragment);
8988
assertThat(result.getAttributeChanges()).hasSize(1);
9089
var change = (AttributeChange<Boolean>) result.getAttributeChanges().get(0);
9190
assertThat(change.getOldValue() == Boolean.TRUE);

0 commit comments

Comments
 (0)