byexamples / byexamples/byexample
Typing text in Ruby, Javascript and C/C++ not always works
- Dominant language
- Python
- Stars
- 67
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
`+type` (`+input`) is an experimental feature and Javascript and C/C++ don't support them because the interpreters don't disable the echoing.
But these languages could still use `+type` if the example that uses `+type` it also uses `+pass`, discarding the output as a workaround for the echoing problem.
However this not always works and worst, Ruby, which does not have an echoing problem, it is also buggy.
Here are the test cases:
Ruby (it should not require `+pass`):
```ruby
>> print "num: "; gets # byexample: +type Does Not Work
num: [42]
=> "42\n"
>> gets # byexample: +type It Works
[it works!]
=> "it works!\n"
```
C/C++ (it requires `+pass`):
```cpp
?: int n;
?: std::cout << "num: " << std::flush; std::cin >> n; // byexample: +type +pass It Works
num: [42]
?: n
(int) 42
?: std::string what;
?: getline(std::cin, what); // byexample: +type +pass Hungs! A Newline is Missing!
[it works!]
?: what
(std::string &) "it works!"
```
Javascript (it requires `+pass`):
```javascript
> const readline = require('readline');
> const rl = readline.createInterface({
. input: process.stdin,
. terminal: false
. });
> var num;
> rl.question('num: ', (n) => { // byexample: +input +pass
. num = n;
. });
num: [42]
> num
42
```
**byexample version**
`byexample 10.1.0`
Contributor guide
Assessment
This issue has not been assessed yet.