whole_func_string: function takeWhile(predicate) {
      return function* (iterable) {
          let i = 0;
          for (const item of iterable) {
              if (!predicate(item, i)) {
                  break;
              }
              yield item;
              i = i + 1;
          }
      };
  }
func_code_string: function takeWhile(predicate) {
      return function* (iterable) {
          let i = 0;
          for (const item of iterable) {
              if (!predicate(item, i)) {
                  break;
              }
              yield item;
              i = i + 1;
          }
      };
  }
func_documentation_string: Take and yield items in an iterable until the passed predicate fails, then abort the sequence