Merge remote-tracking branch 'origin/latest' into latest

This commit is contained in:
aNNiMON 2023-08-12 23:59:25 +03:00
commit aa62b71520
4 changed files with 20 additions and 11 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.own linguist-language=Scala

View File

@ -8,7 +8,7 @@ OwnLang - dynamic functional programming language inspired by Scala and Python.
| Free | Pro | Desktop |
| :--: | :-: | :-----: |
| [![Free](https://developer.android.com/images/brand/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=com.annimon.ownlang.free) | [![Pro](https://developer.android.com/images/brand/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=com.annimon.ownlang) | [v1.5.0](https://github.com/aNNiMON/Own-Programming-Language-Tutorial/releases/tag/1.5.0)
| [![Free](https://developer.android.com/images/brand/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=com.annimon.ownlang.free) | [![Pro](https://developer.android.com/images/brand/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=com.annimon.ownlang) | [v1.5.0](https://github.com/aNNiMON/Own-Programming-Language-Tutorial/releases/tag/v1.5.0)
Also available as AUR package:

View File

@ -8,6 +8,7 @@ public class ClassInstanceValue implements Value {
private final String className;
private final MapValue thisMap;
private ClassMethod constructor;
private UserDefinedFunction toString;
public ClassInstanceValue(String name) {
this.className = name;
@ -27,12 +28,16 @@ public class ClassInstanceValue implements Value {
}
public void addMethod(String name, ClassMethod method) {
if (name.equals("toString")) {
toString = method;
}
thisMap.set(name, method);
if (name.equals(className)) {
constructor = method;
}
}
public void callConstructor(Value[] args) {
if (constructor != null) {
constructor.execute(args);
@ -69,7 +74,10 @@ public class ClassInstanceValue implements Value {
@Override
public String asString() {
return "class " + className + "@" + thisMap;
if (toString != null) {
return toString.execute(new Value[] {}).asString();
}
return className + "@" + thisMap;
}
@Override

View File

@ -58,7 +58,7 @@ public final class date implements Module {
value.set(YEAR, NumberValue.of(calendar.get(Calendar.YEAR)));
value.set(MONTH, NumberValue.of(calendar.get(Calendar.MONTH)));
value.set(DAY, NumberValue.of(calendar.get(Calendar.DAY_OF_MONTH)));
value.set(HOUR, NumberValue.of(calendar.get(Calendar.HOUR)));
value.set(HOUR, NumberValue.of(calendar.get(Calendar.HOUR_OF_DAY)));
value.set(MINUTE, NumberValue.of(calendar.get(Calendar.MINUTE)));
value.set(SECOND, NumberValue.of(calendar.get(Calendar.SECOND)));
value.set(MILLISECOND, NumberValue.of(calendar.get(Calendar.MILLISECOND)));