mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Merge remote-tracking branch 'origin/latest' into latest
This commit is contained in:
commit
aa62b71520
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.own linguist-language=Scala
|
@ -8,7 +8,7 @@ OwnLang - dynamic functional programming language inspired by Scala and Python.
|
|||||||
|
|
||||||
| Free | Pro | Desktop |
|
| 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:
|
Also available as AUR package:
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ public class ClassInstanceValue implements Value {
|
|||||||
private final String className;
|
private final String className;
|
||||||
private final MapValue thisMap;
|
private final MapValue thisMap;
|
||||||
private ClassMethod constructor;
|
private ClassMethod constructor;
|
||||||
|
private UserDefinedFunction toString;
|
||||||
|
|
||||||
public ClassInstanceValue(String name) {
|
public ClassInstanceValue(String name) {
|
||||||
this.className = name;
|
this.className = name;
|
||||||
@ -27,12 +28,16 @@ public class ClassInstanceValue implements Value {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addMethod(String name, ClassMethod method) {
|
public void addMethod(String name, ClassMethod method) {
|
||||||
|
if (name.equals("toString")) {
|
||||||
|
toString = method;
|
||||||
|
}
|
||||||
thisMap.set(name, method);
|
thisMap.set(name, method);
|
||||||
if (name.equals(className)) {
|
if (name.equals(className)) {
|
||||||
constructor = method;
|
constructor = method;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void callConstructor(Value[] args) {
|
public void callConstructor(Value[] args) {
|
||||||
if (constructor != null) {
|
if (constructor != null) {
|
||||||
constructor.execute(args);
|
constructor.execute(args);
|
||||||
@ -69,7 +74,10 @@ public class ClassInstanceValue implements Value {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString() {
|
public String asString() {
|
||||||
return "class " + className + "@" + thisMap;
|
if (toString != null) {
|
||||||
|
return toString.execute(new Value[] {}).asString();
|
||||||
|
}
|
||||||
|
return className + "@" + thisMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -58,7 +58,7 @@ public final class date implements Module {
|
|||||||
value.set(YEAR, NumberValue.of(calendar.get(Calendar.YEAR)));
|
value.set(YEAR, NumberValue.of(calendar.get(Calendar.YEAR)));
|
||||||
value.set(MONTH, NumberValue.of(calendar.get(Calendar.MONTH)));
|
value.set(MONTH, NumberValue.of(calendar.get(Calendar.MONTH)));
|
||||||
value.set(DAY, NumberValue.of(calendar.get(Calendar.DAY_OF_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(MINUTE, NumberValue.of(calendar.get(Calendar.MINUTE)));
|
||||||
value.set(SECOND, NumberValue.of(calendar.get(Calendar.SECOND)));
|
value.set(SECOND, NumberValue.of(calendar.get(Calendar.SECOND)));
|
||||||
value.set(MILLISECOND, NumberValue.of(calendar.get(Calendar.MILLISECOND)));
|
value.set(MILLISECOND, NumberValue.of(calendar.get(Calendar.MILLISECOND)));
|
||||||
|
Loading…
Reference in New Issue
Block a user