Skip to content

Commit

Permalink
Add more custom commands and properties
Browse files Browse the repository at this point in the history
  • Loading branch information
ThexXTURBOXx committed Sep 16, 2023
1 parent a8d81eb commit 0773f86
Show file tree
Hide file tree
Showing 43 changed files with 602 additions and 29 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/github/sh0nk/matplotlib4j/Plot.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ static Plot create(PythonConfig pythonConfig) {
return new PlotImpl(pythonConfig, false);
}

CustomBuilder cmd(String key);

GridBuilder grid();

LegendBuilder legend();
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/github/sh0nk/matplotlib4j/PlotImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ public class PlotImpl implements Plot {
this(PythonConfig.systemDefaultPythonConfig(), dryRun);
}

@Override
public CustomBuilder cmd(String key) {
return new CustomBuilderImpl(key);
}

@Override
public LegendBuilder legend() {
LegendBuilder builder = new LegendBuilderImpl();
Expand Down
Original file line number Diff line number Diff line change
@@ -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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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 java.util.List;


/**
* 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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,13 @@
public interface Builder {
String build();

default boolean returns() {
return true;
}

default String getMethodPrefix() {
return "plt.";
}

String getMethodName();
}
Original file line number Diff line number Diff line change
@@ -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);

Expand Down
Original file line number Diff line number Diff line change
@@ -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);
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);

Expand Down Expand Up @@ -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("(");

Expand Down
Original file line number Diff line number Diff line change
@@ -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)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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);

}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
Loading

0 comments on commit 0773f86

Please sign in to comment.