byexamples / byexamples/byexample

Typing text in Ruby, Javascript and C/C++ not always works

Open
#189 0 comments 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.