mirror of
https://github.com/zekexiao/pocketlang.git
synced 2025-02-11 07:00:58 +08:00
Merge pull request #65 from xSavitar/attr-range-start-end
Add support for `.start` and `.end` attributes on Range objects
This commit is contained in:
commit
e90763c878
@ -1318,9 +1318,19 @@ Var varGetAttrib(PKVM* vm, Var on, String* attrib) {
|
||||
Range* range = (Range*)obj;
|
||||
SWITCH_ATTRIB(attrib->data) {
|
||||
|
||||
CASE_ATTRIB("as_list", 0x1562c22) :
|
||||
CASE_ATTRIB("as_list", 0x1562c22):
|
||||
return VAR_OBJ(rangeAsList(vm, range));
|
||||
|
||||
// We can't use '.start', '.end' since 'end' in pocketlang is a
|
||||
// keyword. Also we can't use '.from', '.to' since 'from' is a keyword
|
||||
// too. So, we're using '.first' and '.last' to access the range limits.
|
||||
|
||||
CASE_ATTRIB("first", 0x4881d841):
|
||||
return VAR_NUM(range->from);
|
||||
|
||||
CASE_ATTRIB("last", 0x63e1d819):
|
||||
return VAR_NUM(range->to);
|
||||
|
||||
CASE_DEFAULT:
|
||||
ERR_NO_ATTRIB(vm, on, attrib);
|
||||
return VAR_NULL;
|
||||
@ -1329,7 +1339,8 @@ Var varGetAttrib(PKVM* vm, Var on, String* attrib) {
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
case OBJ_SCRIPT: {
|
||||
case OBJ_SCRIPT:
|
||||
{
|
||||
Script* scr = (Script*)obj;
|
||||
|
||||
// Search in functions.
|
||||
@ -1422,6 +1433,8 @@ do { \
|
||||
|
||||
case OBJ_RANGE:
|
||||
ATTRIB_IMMUTABLE("as_list");
|
||||
ATTRIB_IMMUTABLE("first");
|
||||
ATTRIB_IMMUTABLE("last");
|
||||
ERR_NO_ATTRIB(vm, on, attrib);
|
||||
return;
|
||||
|
||||
|
@ -54,7 +54,7 @@ assert((1 << 0) == 1)
|
||||
assert((1 << 2) == 4)
|
||||
assert((3 << 2) == 12)
|
||||
|
||||
assert((1 >> 0) == 0)
|
||||
assert((1 >> 1) == 0)
|
||||
assert((8 >> 1) == 4)
|
||||
assert((8 >> 2) == 2)
|
||||
assert((4 >> 2) == 1)
|
||||
|
@ -29,6 +29,12 @@ def fn(p1, p2, p3) end
|
||||
assert(fn.name == "fn")
|
||||
assert(fn.arity == 3)
|
||||
|
||||
## range
|
||||
r = 1..5
|
||||
assert(r.as_list == [1, 2, 3, 4])
|
||||
assert(r.first == 1)
|
||||
assert(r.last == 5)
|
||||
|
||||
## Math functions
|
||||
from math import PI, sin, cos, tan, abs
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user