Skip to content

Commit 1a365d2

Browse files
author
arthurmelton
committed
split and split keep
1 parent 6dca091 commit 1a365d2

File tree

3 files changed

+147
-2
lines changed

3 files changed

+147
-2
lines changed

examples/Get File Extension.nys

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
log(last(split(last(arg()), ".")))

examples/test.nys

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
func(count(number)) {
2-
dec int number = number+1;
3-
log(number);
2+
dec int new_number: number+1;
3+
log(new_number);
4+
count(count(new_number));
45
}
56
count(0);

src/run/functions.rs

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,86 @@ pub fn getstring(
291291
}
292292
}
293293
skips = leng;
294+
} else if vec[y] == "split" {
295+
imput_s.push_str(
296+
split(
297+
y,
298+
vec.to_vec(),
299+
memory_names.clone(),
300+
memory_values.clone(),
301+
memory_types.clone(),
302+
func_names.clone(),
303+
func_par.clone(),
304+
func_code.clone(),
305+
dev,
306+
uses.clone(),
307+
)
308+
.to_string()
309+
.as_str(),
310+
);
311+
let mut leng = 0;
312+
let mut n2 = 0;
313+
let mut skip1 = false;
314+
for elem in y + 1..vec.len() {
315+
if !skip1 {
316+
if vec[y + 1] != "(" {
317+
println!("You have to put a parentheses after a log");
318+
std::process::exit(1);
319+
}
320+
if contents[elem] == "(" {
321+
n2 += 1;
322+
} else if contents[elem] == ")" {
323+
n2 -= 1;
324+
}
325+
if n2 == 0 {
326+
skip1 = true;
327+
for _z in y + 1..elem + 1 {
328+
leng += 1;
329+
}
330+
}
331+
}
332+
}
333+
skips = leng;
334+
} else if vec[y] == "splitK" {
335+
imput_s.push_str(
336+
split_k(
337+
y,
338+
vec.to_vec(),
339+
memory_names.clone(),
340+
memory_values.clone(),
341+
memory_types.clone(),
342+
func_names.clone(),
343+
func_par.clone(),
344+
func_code.clone(),
345+
dev,
346+
uses.clone(),
347+
)
348+
.to_string()
349+
.as_str(),
350+
);
351+
let mut leng = 0;
352+
let mut n2 = 0;
353+
let mut skip1 = false;
354+
for elem in y + 1..vec.len() {
355+
if !skip1 {
356+
if vec[y + 1] != "(" {
357+
println!("You have to put a parentheses after a log");
358+
std::process::exit(1);
359+
}
360+
if contents[elem] == "(" {
361+
n2 += 1;
362+
} else if contents[elem] == ")" {
363+
n2 -= 1;
364+
}
365+
if n2 == 0 {
366+
skip1 = true;
367+
for _z in y + 1..elem + 1 {
368+
leng += 1;
369+
}
370+
}
371+
}
372+
}
373+
skips = leng;
294374
} else if vec[y] == "length" {
295375
imput_s.push_str(
296376
length(
@@ -1430,6 +1510,69 @@ pub fn round(
14301510
.round() as i32
14311511
}
14321512

1513+
pub fn split(
1514+
x: usize,
1515+
contents: Vec<String>,
1516+
memory_names: Vec<String>,
1517+
memory_values: Vec<String>,
1518+
memory_types: Vec<String>,
1519+
func_names: Vec<String>,
1520+
func_par: Vec<String>,
1521+
func_code: Vec<String>,
1522+
dev: bool,
1523+
uses: Vec<String>,
1524+
) -> String {
1525+
let mut items = getstring(
1526+
x,
1527+
contents,
1528+
memory_names,
1529+
memory_values,
1530+
memory_types,
1531+
func_names,
1532+
func_par,
1533+
func_code,
1534+
dev,
1535+
uses,
1536+
0,
1537+
);
1538+
let replacer:String = items.last().unwrap().to_string();
1539+
items.pop();
1540+
items.join("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v").replace(&replacer, "zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v")
1541+
}
1542+
1543+
pub fn split_k(
1544+
x: usize,
1545+
contents: Vec<String>,
1546+
memory_names: Vec<String>,
1547+
memory_values: Vec<String>,
1548+
memory_types: Vec<String>,
1549+
func_names: Vec<String>,
1550+
func_par: Vec<String>,
1551+
func_code: Vec<String>,
1552+
dev: bool,
1553+
uses: Vec<String>,
1554+
) -> String {
1555+
let mut items = getstring(
1556+
x,
1557+
contents,
1558+
memory_names,
1559+
memory_values,
1560+
memory_types,
1561+
func_names,
1562+
func_par,
1563+
func_code,
1564+
dev,
1565+
uses,
1566+
0,
1567+
);
1568+
let replacer:String = items.last().unwrap().to_string();
1569+
items.pop();
1570+
let mut replaced:String = "zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v".to_string();
1571+
replaced.push_str(&*replacer);
1572+
replaced.push_str("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v");
1573+
items.join("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v").replace(&replacer, &replaced).to_string().strip_prefix("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v").unwrap().strip_suffix("zzGVgfHaNtPMe7H9RRyx3rWC9JyyZdMkc2v").unwrap().to_string()
1574+
}
1575+
14331576
pub fn length(
14341577
x: usize,
14351578
contents: Vec<String>,

0 commit comments

Comments
 (0)