diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/Plot.java b/src/main/java/com/github/sh0nk/matplotlib4j/Plot.java index 823ce8a..81e6117 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/Plot.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/Plot.java @@ -15,6 +15,10 @@ static Plot create(PythonConfig pythonConfig) { return new PlotImpl(pythonConfig, false); } + CustomBuilder cmd(String key); + + CustomBuilder cmd(String methodPrefix, String key, Boolean returns); + GridBuilder grid(); LegendBuilder legend(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/PlotImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/PlotImpl.java index 45f7341..8010bbd 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/PlotImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/PlotImpl.java @@ -26,6 +26,16 @@ public class PlotImpl implements Plot { this(PythonConfig.systemDefaultPythonConfig(), dryRun); } + @Override + public CustomBuilder cmd(String key) { + return new CustomBuilderImpl(key); + } + + @Override + public CustomBuilder cmd(String methodPrefix, String key, Boolean returns) { + return new CustomBuilderImpl(methodPrefix, key, returns); + } + @Override public LegendBuilder legend() { LegendBuilder builder = new LegendBuilderImpl(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilder.java index bd80a3f..35d2333 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilder.java @@ -1,13 +1,13 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilder; -import java.util.List; /** * matplotlib.pyplot.plot(*args, **kwargs) */ -public interface AxLineBuilder extends Builder, Line2DBuilder<AxLineBuilder> { +public interface AxLineBuilder extends Builder, Line2DBuilder<AxLineBuilder>, KwArgsBuilder<AxLineBuilder> { AxLineBuilder at(Number value); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilderImpl.java index 32350cf..4d49823 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/AxLineBuilderImpl.java @@ -66,6 +66,31 @@ public AxLineBuilder color(String arg) { return line2DBuilder.color(arg); } + @Override + public AxLineBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public AxLineBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public AxLineBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public AxLineBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public AxLineBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilder.java index 6b2370f..8c39da7 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilder.java @@ -1,5 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilder; import java.util.List; @@ -7,7 +8,7 @@ /** * matplotlib.pyplot.bar(*args, **kwargs) */ -public interface BarBuilder extends Builder, Line2DBuilder<BarBuilder> { +public interface BarBuilder extends Builder, Line2DBuilder<BarBuilder>, KwArgsBuilder<BarBuilder> { BarBuilder add(List<? extends Number> nums); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilderImpl.java index 41d6491..e2038d6 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/BarBuilderImpl.java @@ -49,6 +49,31 @@ public BarBuilder color(String arg) { return line2DBuilder.color(arg); } + @Override + public BarBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public BarBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public BarBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public BarBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public BarBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/Builder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/Builder.java index 6aa5e29..d405157 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/Builder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/Builder.java @@ -3,5 +3,13 @@ public interface Builder { String build(); + default boolean returns() { + return true; + } + + default String getMethodPrefix() { + return "plt."; + } + String getMethodName(); } diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilder.java index b7026db..1420bcc 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilder.java @@ -1,6 +1,8 @@ package com.github.sh0nk.matplotlib4j.builder; -public interface CLabelBuilder extends Builder { +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; + +public interface CLabelBuilder extends Builder, KwArgsBuilder<CLabelBuilder> { CLabelBuilder fontsize(String arg); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilderImpl.java index b08bfe0..add9995 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CLabelBuilderImpl.java @@ -1,5 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; +import java.util.List; + public class CLabelBuilderImpl implements CLabelBuilder { private final CompositeBuilder<CLabelBuilder> innerBuilder = new CompositeBuilder<>(this); @@ -48,6 +50,31 @@ public CLabelBuilder useClabeltext(boolean arg) { return innerBuilder.addToKwargs("use_clabeltext", arg); } + @Override + public CLabelBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public CLabelBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public CLabelBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public CLabelBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public CLabelBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CompositeBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CompositeBuilder.java index 28399e0..89755ce 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CompositeBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CompositeBuilder.java @@ -1,6 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; import com.github.sh0nk.matplotlib4j.TypeConversion; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.google.common.base.Joiner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,7 +15,7 @@ * * @param <T> Owner builder class */ -public class CompositeBuilder<T extends Builder> implements Builder { +public class CompositeBuilder<T extends Builder> implements Builder, KwArgsBuilder<T> { private final static Logger LOGGER = LoggerFactory.getLogger(CompositeBuilder.class); @@ -107,9 +108,10 @@ public String build() { } // retName - sb.append(retName).append(" = "); + if (ownerBuilder.returns()) + sb.append(retName).append(" = "); - sb.append("plt."); + sb.append(ownerBuilder.getMethodPrefix()); sb.append(ownerBuilder.getMethodName()); sb.append("("); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilder.java index 8ad803c..365ab6a 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilder.java @@ -1,8 +1,9 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import java.util.List; -public interface ContourBuilder extends Builder { +public interface ContourBuilder extends Builder, KwArgsBuilder<ContourBuilder> { /** * Equivalent to {@code pyplot.contour(Z)} diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilderImpl.java index e031667..3cec643 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ContourBuilderImpl.java @@ -48,6 +48,31 @@ public String getRetName() { return innerBuilder.getRetName(); } + @Override + public ContourBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public ContourBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public ContourBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public ContourBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public ContourBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CustomBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CustomBuilder.java new file mode 100644 index 0000000..7f852d0 --- /dev/null +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CustomBuilder.java @@ -0,0 +1,18 @@ +package com.github.sh0nk.matplotlib4j.builder; + +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; +import java.util.List; + +public interface CustomBuilder extends Builder, KwArgsBuilder<CustomBuilder> { + + CustomBuilder addToArgs(List<?> objs); + + CustomBuilder add2DimListToArgs(List<? extends List<? extends Number>> numbers); + + CustomBuilder addToArgs(String v); + + CustomBuilder addToArgsWithoutQuoting(String v); + + CustomBuilder addToArgs(Number n); + +} diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/CustomBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CustomBuilderImpl.java new file mode 100644 index 0000000..78538a6 --- /dev/null +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/CustomBuilderImpl.java @@ -0,0 +1,93 @@ +package com.github.sh0nk.matplotlib4j.builder; + +import java.util.List; + +public class CustomBuilderImpl implements CustomBuilder { + + private final CompositeBuilder<CustomBuilder> innerBuilder = new CompositeBuilder<>(this); + private final String key; + private final String methodPrefix; + private final Boolean returns; + + public CustomBuilderImpl(String key) { + this(null, key, null); + } + + public CustomBuilderImpl(String methodPrefix, String key, Boolean returns) { + this.methodPrefix = methodPrefix; + this.key = key; + this.returns = returns; + } + + @Override + public CustomBuilder addToArgs(List<?> objs) { + return innerBuilder.addToArgs(objs); + } + + @Override + public CustomBuilder add2DimListToArgs(List<? extends List<? extends Number>> numbers) { + return innerBuilder.addToArgs(numbers); + } + + @Override + public CustomBuilder addToArgs(String v) { + return innerBuilder.addToArgs(v); + } + + @Override + public CustomBuilder addToArgsWithoutQuoting(String v) { + return innerBuilder.addToArgsWithoutQuoting(v); + } + + @Override + public CustomBuilder addToArgs(Number n) { + return innerBuilder.addToArgs(n); + } + + @Override + public CustomBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public CustomBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public CustomBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public CustomBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public CustomBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public String build() { + return innerBuilder.build(); + } + + @Override + public boolean returns() { + if (returns != null) return returns; + return CustomBuilder.super.returns(); + } + + @Override + public String getMethodPrefix() { + if (methodPrefix != null) return methodPrefix; + return CustomBuilder.super.getMethodPrefix(); + } + + @Override + public String getMethodName() { + return key; + } +} diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilder.java index b1e319a..fdfffe9 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilder.java @@ -1,13 +1,14 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilder; import com.github.sh0nk.matplotlib4j.kwargs.TextArgsBuilder; /** * matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)[source] */ -public interface GridBuilder extends Builder, TextArgsBuilder<GridBuilder>, Line2DBuilder<GridBuilder> { +public interface GridBuilder extends Builder, TextArgsBuilder<GridBuilder>, Line2DBuilder<GridBuilder>, KwArgsBuilder<GridBuilder> { enum WhichType { major, diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilderImpl.java index 53b2296..f7eb8af 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/GridBuilderImpl.java @@ -2,6 +2,7 @@ import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilder; import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilderImpl; +import java.util.List; public class GridBuilderImpl implements GridBuilder { @@ -57,7 +58,30 @@ public GridBuilder color(String arg) { return line2DBuilder.color(arg); } - // TODO("Add kwargs") + @Override + public GridBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public GridBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public GridBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public GridBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public GridBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } @Override public String build() { diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilder.java index 07ffd68..e342c87 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilder.java @@ -1,5 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.PatchBuilder; import java.util.List; @@ -8,7 +9,7 @@ /** * matplotlib.pyplot.hist(x, **kwargs) */ -public interface HistBuilder extends Builder, PatchBuilder<HistBuilder> { +public interface HistBuilder extends Builder, PatchBuilder<HistBuilder>, KwArgsBuilder<HistBuilder> { enum HistType { bar, diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilderImpl.java index 962bc6b..0747104 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/HistBuilderImpl.java @@ -122,6 +122,31 @@ public HistBuilder label(String arg) { return patchBuilder.label(arg); } + @Override + public HistBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public HistBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public HistBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public HistBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public HistBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { Preconditions.checkArgument(!xList.isEmpty(), ".add() is needed to be called at least once."); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilder.java index e13bc84..fd79ab8 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilder.java @@ -1,5 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.TextArgsBuilder; @@ -7,7 +8,7 @@ * matplotlib.pyplot.xlabel(s, *args, **kwargs) * matplotlib.pyplot.ylabel(s, *args, **kwargs) */ -public interface LabelBuilder extends Builder, TextArgsBuilder<LabelBuilder> { +public interface LabelBuilder extends Builder, TextArgsBuilder<LabelBuilder>, KwArgsBuilder<LabelBuilder> { } diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilderImpl.java index 8f111c1..1321ca6 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LabelBuilderImpl.java @@ -1,5 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; +import java.util.List; + public class LabelBuilderImpl implements LabelBuilder { private CompositeBuilder<LabelBuilder> innerBuilder = new CompositeBuilder<>(this); @@ -18,6 +20,31 @@ public static LabelBuilderImpl yLabelBuilder(String label) { return new LabelBuilderImpl(label, "ylabel"); } + @Override + public LabelBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public LabelBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public LabelBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public LabelBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public LabelBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilder.java index 399f3d0..97a504a 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilder.java @@ -1,9 +1,11 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; + /** * matplotlib.pyplot.legend(*args, **kwargs) */ -public interface LegendBuilder extends Builder { +public interface LegendBuilder extends Builder, KwArgsBuilder<LegendBuilder> { LegendBuilder loc(int arg); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilderImpl.java index 5876621..632411a 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/LegendBuilderImpl.java @@ -1,5 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; +import java.util.List; + public class LegendBuilderImpl implements LegendBuilder { private CompositeBuilder<LegendBuilder> innerBuilder = new CompositeBuilder<>(this); @@ -19,6 +21,31 @@ public LegendBuilder loc(double x, double y) { return innerBuilder.addToKwargsWithoutQuoting("loc", String.format("(%d, %d)", x, y)); } + @Override + public LegendBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public LegendBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public LegendBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public LegendBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public LegendBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilder.java index 1f50309..12f1c21 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilder.java @@ -1,8 +1,9 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import java.util.List; -public interface PColorBuilder extends Builder { +public interface PColorBuilder extends Builder, KwArgsBuilder<PColorBuilder> { /** * Equivalent to {@code pyplot.pcolor(C)} diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilderImpl.java index 6132c12..50d40c3 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PColorBuilderImpl.java @@ -48,6 +48,31 @@ public String getRetName() { return innerBuilder.getRetName(); } + @Override + public PColorBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public PColorBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public PColorBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public PColorBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public PColorBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilder.java index 7f70a8c..760903f 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilder.java @@ -1,5 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilder; import java.util.List; @@ -8,7 +9,7 @@ /** * matplotlib.pyplot.plot(*args, **kwargs) */ -public interface PlotBuilder extends Builder, Line2DBuilder<PlotBuilder> { +public interface PlotBuilder extends Builder, Line2DBuilder<PlotBuilder>, KwArgsBuilder<PlotBuilder> { PlotBuilder add(List<? extends Number> nums); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilderImpl.java index 90dab0e..d83b4d7 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/PlotBuilderImpl.java @@ -63,6 +63,31 @@ public PlotBuilder color(String arg) { return line2DBuilder.color(arg); } + @Override + public PlotBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public PlotBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public PlotBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public PlotBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public PlotBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilder.java index 425544b..2e47757 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilder.java @@ -1,9 +1,11 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; + /** * matplotlib.pyplot.savefig(fname, **kwargs) */ -public interface SaveFigBuilder extends Builder { +public interface SaveFigBuilder extends Builder, KwArgsBuilder<SaveFigBuilder> { enum Orientation { horizontal, diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilderImpl.java index 6bb93d0..d20232e 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SaveFigBuilderImpl.java @@ -1,5 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; +import java.util.List; + public class SaveFigBuilderImpl implements SaveFigBuilder { private final CompositeBuilder<SaveFigBuilder> innerBuilder = new CompositeBuilder<>(this); @@ -48,6 +50,31 @@ public SaveFigBuilder bboxInches(double arg) { return innerBuilder.addToKwargs("bboxInches", arg); } + @Override + public SaveFigBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public SaveFigBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public SaveFigBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public SaveFigBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public SaveFigBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilder.java index 1c584a4..c65232f 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilder.java @@ -1,12 +1,13 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.TextArgsBuilder; /** * matplotlib.pyplot.xscale(scale, **kwargs) * matplotlib.pyplot.yscale(scale, **kwargs) */ -public interface ScaleBuilder extends Builder, TextArgsBuilder<ScaleBuilder> { +public interface ScaleBuilder extends Builder, TextArgsBuilder<ScaleBuilder>, KwArgsBuilder<ScaleBuilder> { enum Scale { linear, diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilderImpl.java index ae7d948..6049bcd 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScaleBuilderImpl.java @@ -1,5 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; +import java.util.List; + public class ScaleBuilderImpl implements ScaleBuilder { private CompositeBuilder<ScaleBuilder> innerBuilder = new CompositeBuilder<>(this); @@ -18,6 +20,31 @@ public static ScaleBuilderImpl yScaleBuilder(Scale scale) { return new ScaleBuilderImpl(scale, "yscale"); } + @Override + public ScaleBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public ScaleBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public ScaleBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public ScaleBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public ScaleBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilder.java index f1ffb04..9079504 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilder.java @@ -1,5 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.Line2DBuilder; import java.util.List; @@ -8,7 +9,7 @@ /** * matplotlib.pyplot.scatter(*args, **kwargs) */ -public interface ScatterBuilder extends Builder { +public interface ScatterBuilder extends Builder, KwArgsBuilder<ScatterBuilder> { ScatterBuilder add(List<? extends Number> x); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilderImpl.java index 451d04d..4666aa2 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/ScatterBuilderImpl.java @@ -75,6 +75,31 @@ public ScatterBuilder plotnonfinite(boolean plotnonfinite) { return innerBuilder.addToKwargs("plotnonfinite", plotnonfinite); } + @Override + public ScatterBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public ScatterBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public ScatterBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public ScatterBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public ScatterBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilder.java index 34af2ea..654af26 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilder.java @@ -1,4 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; -public interface SubplotBuilder extends Builder { +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; + +public interface SubplotBuilder extends Builder, KwArgsBuilder<SubplotBuilder> { } diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilderImpl.java index 14287df..68e7189 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/SubplotBuilderImpl.java @@ -1,5 +1,7 @@ package com.github.sh0nk.matplotlib4j.builder; +import java.util.List; + public class SubplotBuilderImpl implements SubplotBuilder { private final CompositeBuilder<SubplotBuilder> innerBuilder = new CompositeBuilder<>(this); @@ -9,6 +11,31 @@ public SubplotBuilderImpl(int nrows, int ncols, int index) { innerBuilder.addToArgs(index); } + @Override + public SubplotBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public SubplotBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public SubplotBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public SubplotBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public SubplotBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilder.java index 8e5ac7d..cae9447 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilder.java @@ -1,4 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; -public interface TextBuilder extends Builder { +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; + +public interface TextBuilder extends Builder, KwArgsBuilder<TextBuilder> { } diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilderImpl.java index a48e197..153656e 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TextBuilderImpl.java @@ -2,6 +2,7 @@ import com.github.sh0nk.matplotlib4j.kwargs.TextArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.TextArgsBuilderImpl; +import java.util.List; public class TextBuilderImpl implements TextBuilder { @@ -15,6 +16,31 @@ public TextBuilderImpl(double x, double y, String s) { innerBuilder.addToArgs(s); } + @Override + public TextBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public TextBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public TextBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public TextBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public TextBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilder.java index 7cd28e7..12f5e9a 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilder.java @@ -1,5 +1,6 @@ package com.github.sh0nk.matplotlib4j.builder; +import com.github.sh0nk.matplotlib4j.kwargs.KwArgsBuilder; import com.github.sh0nk.matplotlib4j.kwargs.TextArgsBuilder; import java.util.List; @@ -9,7 +10,7 @@ * matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs) * matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs) */ -public interface TicksBuilder extends Builder, TextArgsBuilder<TicksBuilder> { +public interface TicksBuilder extends Builder, TextArgsBuilder<TicksBuilder>, KwArgsBuilder<TicksBuilder> { TicksBuilder labels(List<String> labels); } diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilderImpl.java b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilderImpl.java index 421484a..d56920b 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilderImpl.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/builder/TicksBuilderImpl.java @@ -35,6 +35,31 @@ public static TicksBuilderImpl yTicksBuilder(List<? extends Number> ticks) { return new TicksBuilderImpl(ticks, "yticks"); } + @Override + public TicksBuilder addToKwargs(String k, String v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public TicksBuilder addToKwargsWithoutQuoting(String k, String v) { + return innerBuilder.addToKwargsWithoutQuoting(k, v); + } + + @Override + public TicksBuilder addToKwargs(String k, Number n) { + return innerBuilder.addToKwargs(k, n); + } + + @Override + public TicksBuilder addToKwargs(String k, List<? extends Number> v) { + return innerBuilder.addToKwargs(k, v); + } + + @Override + public TicksBuilder addToKwargs(String k, boolean v) { + return innerBuilder.addToKwargs(k, v); + } + @Override public String build() { return innerBuilder.build(); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/KwArgsBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/KwArgsBuilder.java new file mode 100644 index 0000000..7194f05 --- /dev/null +++ b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/KwArgsBuilder.java @@ -0,0 +1,18 @@ +package com.github.sh0nk.matplotlib4j.kwargs; + +import com.github.sh0nk.matplotlib4j.builder.Builder; +import java.util.List; + +public interface KwArgsBuilder<T extends Builder> { + + T addToKwargs(String k, String v); + + T addToKwargsWithoutQuoting(String k, String v); + + T addToKwargs(String k, Number n); + + T addToKwargs(String k, List<? extends Number> v); + + T addToKwargs(String k, boolean v); + +} diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/KwargsBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/KwargsBuilder.java deleted file mode 100644 index bc908dc..0000000 --- a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/KwargsBuilder.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.sh0nk.matplotlib4j.kwargs; - -public interface KwargsBuilder { - -} diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/Line2DBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/Line2DBuilder.java index eb62521..4606f08 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/Line2DBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/Line2DBuilder.java @@ -2,7 +2,7 @@ import com.github.sh0nk.matplotlib4j.builder.Builder; -public interface Line2DBuilder<T extends Builder> extends KwargsBuilder { +public interface Line2DBuilder<T extends Builder> { T linestyle(String arg); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/PatchBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/PatchBuilder.java index 0b48512..e9fb0bb 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/PatchBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/PatchBuilder.java @@ -2,7 +2,7 @@ import com.github.sh0nk.matplotlib4j.builder.Builder; -public interface PatchBuilder<T extends Builder> extends KwargsBuilder { +public interface PatchBuilder<T extends Builder> { T linestyle(String arg); diff --git a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/TextArgsBuilder.java b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/TextArgsBuilder.java index b95977d..d1fc050 100644 --- a/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/TextArgsBuilder.java +++ b/src/main/java/com/github/sh0nk/matplotlib4j/kwargs/TextArgsBuilder.java @@ -2,7 +2,7 @@ import com.github.sh0nk.matplotlib4j.builder.Builder; -public interface TextArgsBuilder<T extends Builder> extends KwargsBuilder { +public interface TextArgsBuilder<T extends Builder> { }