mirror of
https://github.com/Open-Argon/argon-v3.git
synced 2025-12-06 08:56:07 +00:00
attempt to fix index step bug
This commit is contained in:
14
.replit
Normal file
14
.replit
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
run = "./run"
|
||||||
|
hidden = ["Makefile", "main"]
|
||||||
|
|
||||||
|
[languages.go]
|
||||||
|
pattern = "**/*.go"
|
||||||
|
|
||||||
|
[languages.go.languageServer]
|
||||||
|
start = "gopls"
|
||||||
|
|
||||||
|
[nix]
|
||||||
|
channel = "stable-22_11"
|
||||||
|
|
||||||
|
[gitHubImport]
|
||||||
|
requiredFiles = [".replit", "replit.nix"]
|
||||||
6
replit.nix
Normal file
6
replit.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ pkgs }: {
|
||||||
|
deps = [
|
||||||
|
pkgs.go
|
||||||
|
pkgs.gopls
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -211,22 +211,37 @@ func mapGet(r ArMapGet, stack stack, stacklevel int) (any, ArErr) {
|
|||||||
}
|
}
|
||||||
if !slice {
|
if !slice {
|
||||||
return m[startindex], ArErr{}
|
return m[startindex], ArErr{}
|
||||||
|
} else if step == 1 {
|
||||||
|
return m[startindex:endindex], ArErr{}
|
||||||
}
|
}
|
||||||
fmt.Println(startindex, endindex, step)
|
output := ArArray{}
|
||||||
return m[startindex:endindex], ArErr{}
|
for i := startindex; i < endindex; i += step {
|
||||||
|
output = append(output, output[i])
|
||||||
|
}
|
||||||
|
return output, ArErr{}
|
||||||
case string:
|
case string:
|
||||||
startindex := 0
|
startindex := 0
|
||||||
endindex := 1
|
endindex := 1
|
||||||
step := 1
|
step := 1
|
||||||
|
slice := false
|
||||||
|
|
||||||
if !r.index {
|
if !r.index {
|
||||||
key, err := runVal(r.start, stack, stacklevel+1)
|
key, err := runVal(r.start, stack, stacklevel+1)
|
||||||
if err.EXISTS {
|
if err.EXISTS {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if key == "length" {
|
switch key {
|
||||||
|
case "length":
|
||||||
return newNumber().SetInt64(int64(len(m))), ArErr{}
|
return newNumber().SetInt64(int64(len(m))), ArErr{}
|
||||||
}
|
}
|
||||||
|
return nil, ArErr{
|
||||||
|
"IndexError",
|
||||||
|
"" + anyToArgon(key, true, true, 3, 0, false, 0) + " does not exist in array",
|
||||||
|
r.line,
|
||||||
|
r.path,
|
||||||
|
r.code,
|
||||||
|
true,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if r.start != nil {
|
if r.start != nil {
|
||||||
sindex, err := runVal(r.start, stack, stacklevel+1)
|
sindex, err := runVal(r.start, stack, stacklevel+1)
|
||||||
@@ -272,6 +287,7 @@ func mapGet(r ArMapGet, stack stack, stacklevel int) (any, ArErr) {
|
|||||||
true,
|
true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
slice = true
|
||||||
num := eindex.(number)
|
num := eindex.(number)
|
||||||
if !num.IsInt() {
|
if !num.IsInt() {
|
||||||
return nil, ArErr{
|
return nil, ArErr{
|
||||||
@@ -302,6 +318,7 @@ func mapGet(r ArMapGet, stack stack, stacklevel int) (any, ArErr) {
|
|||||||
true,
|
true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
slice = true
|
||||||
num := step.(number)
|
num := step.(number)
|
||||||
if !num.IsInt() {
|
if !num.IsInt() {
|
||||||
return nil, ArErr{
|
return nil, ArErr{
|
||||||
@@ -355,7 +372,17 @@ func mapGet(r ArMapGet, stack stack, stacklevel int) (any, ArErr) {
|
|||||||
true,
|
true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return string(([]byte(m))[startindex:endindex:step]), ArErr{}
|
fmt.Println(startindex, endindex,step)
|
||||||
|
if !slice {
|
||||||
|
return string(m[startindex]), ArErr{}
|
||||||
|
} else if step == 1 {
|
||||||
|
return string(m[startindex:endindex]), ArErr{}
|
||||||
|
}
|
||||||
|
output := []byte{}
|
||||||
|
for i := startindex; i < endindex; i += step {
|
||||||
|
output = append(output, output[i])
|
||||||
|
}
|
||||||
|
return string(output), ArErr{}
|
||||||
}
|
}
|
||||||
|
|
||||||
key, err := runVal(r.start, stack, stacklevel+1)
|
key, err := runVal(r.start, stack, stacklevel+1)
|
||||||
@@ -421,6 +448,7 @@ func indexGetParse(code UNPARSEcode, index int, codelines []UNPARSEcode) (ArMapG
|
|||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
fmt.Println(args)
|
||||||
if len(args) > 3 {
|
if len(args) > 3 {
|
||||||
return ArMapGet{}, false, ArErr{
|
return ArMapGet{}, false, ArErr{
|
||||||
"SyntaxError",
|
"SyntaxError",
|
||||||
|
|||||||
Reference in New Issue
Block a user