From 52fcc9118c0996c47c96959226f8da1719c4e002 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sat, 30 Jul 2022 01:31:56 +0800 Subject: [PATCH] :rocket: input now can choose `std::getline` to read one line. --- lib.nas | 4 ++-- nasal_builtin.h | 6 +++++- stl/lib.nas | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib.nas b/lib.nas index 8fab0c8..83569df 100644 --- a/lib.nas +++ b/lib.nas @@ -25,8 +25,8 @@ var system=func(str){ } # input uses std::cin and returns what we input. -var input=func(){ - return __input(); +var input=func(end=nil){ + return __input(end); } # split a string by separator for example: diff --git a/nasal_builtin.h b/nasal_builtin.h index e9d9cc2..4a322f1 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -277,8 +277,12 @@ nas_ref builtin_system(nas_ref* local,nasal_gc& gc) } nas_ref builtin_input(nas_ref* local,nasal_gc& gc) { + nas_ref end=local[1]; nas_ref ret=gc.alloc(vm_str); - std::cin>>ret.str(); + if(end.type!=vm_str || end.str().length()>1) + std::cin>>ret.str(); + else + std::getline(std::cin,ret.str(),end.str()[0]); return ret; } nas_ref builtin_fin(nas_ref* local,nasal_gc& gc) diff --git a/stl/lib.nas b/stl/lib.nas index 8fab0c8..83569df 100644 --- a/stl/lib.nas +++ b/stl/lib.nas @@ -25,8 +25,8 @@ var system=func(str){ } # input uses std::cin and returns what we input. -var input=func(){ - return __input(); +var input=func(end=nil){ + return __input(end); } # split a string by separator for example: