class_docstr: A class that can read notebook cells from their text representation
class_docstr_tok: ["A","class","that","can","read","notebook","cells","from","their","text","representation"]
docstr: Parse cell till its end and set content, lines_to_next_cell.
  Return the position of next cell start
docstr_tok: ["Parse","cell","till","its","end","and","set","content",",","lines_to_next_cell",".","Return","the","position","of","next","cell","start"]
code: def find_cell_content(self, lines):
      """Parse cell till its end and set content, lines_to_next_cell.
      Return the position of next cell start"""
      (
          cell_end_marker,
          next_cell_start,
          self.explicit_eoc,
      ) = self.find_cell_end(lines)
  
      # Metadata to dict
      if self.metadata is None:
          cell_start = 0
          self.metadata = {}
      else:
          cell_start = 1
  
      # Cell content
      source = lines[cell_start:cell_end_marker]
      self.org_content = copy(source)
  
      # Exactly two empty lines at the end of cell (caused by PEP8)?
      if self.ext == ".py" and self.explicit_eoc:
          if last_two_lines_blank(source):
              source = source[:-2]
              lines_to_end_of_cell_marker = 2
          else:
              lines_to_end_of_cell_marker = 0
  
          pep8_lines = pep8_lines_between_cells(
              source, lines[cell_end_marker:], self.ext
          )
          if lines_to_end_of_cell_marker != (
              0 if pep8_lines == 1 else 2
          ):
              self.metadata[
                  "lines_to_end_of_cell_marker"
              ] = lines_to_end_of_cell_marker
  
      # Uncomment content
      self.explicit_soc = cell_start > 0
      self.content = self.extract_content(source)
  
      # Is this an inactive cell?
      if self.cell_type == "code":
          if not is_active(".ipynb", self.metadata):
              if self.metadata.get("active") == "":
                  del self.metadata["active"]
              self.cell_type = "raw"
          elif self.ext in [".md", ".markdown"] and not self.language:
              # Markdown files in version >= 1.3 represent code chunks with no language as Markdown cells
              if self.format_version not in ["1.0", "1.1"]:
                  self.cell_type = "markdown"
                  self.explicit_eoc = False
                  cell_end_marker += 1
                  self.content = lines[:cell_end_marker]
              # Previous versions mapped those to raw cells
              else:
                  self.cell_type = "raw"
  
      # Explicit end of cell marker?
      if (
          next_cell_start + 1 < len(lines)
          and _BLANK_LINE.match(lines[next_cell_start])
          and not _BLANK_LINE.match(lines[next_cell_start + 1])
      ):
          next_cell_start += 1
      elif (
          self.explicit_eoc
          and next_cell_start + 2 < len(lines)
          and _BLANK_LINE.match(lines[next_cell_start])
          and _BLANK_LINE.match(lines[next_cell_start + 1])
          and not _BLANK_LINE.match(lines[next_cell_start + 2])
      ):
          next_cell_start += 2
  
      self.lines_to_next_cell = count_lines_to_next_cell(
          cell_end_marker,
          next_cell_start,
          len(lines),
          self.explicit_eoc,
      )
  
      return next_cell_start
  
imports: import re
  import warnings
  from copy import copy
  from nbformat.v4.nbbase import new_code_cell, new_markdown_cell, new_raw_cell
  from packaging.version import parse
  from .doxygen import doxygen_to_markdown
  from .languages import _SCRIPT_EXTENSIONS
  from .cell_metadata import is_active, is_json_metadata, rmd_options_to_metadata, text_to_metadata
  from .languages import _JUPYTER_LANGUAGES_LOWER_AND_UPPER
  from .magics import is_magic, need_explicit_marker, uncomment_magic, unescape_code_start
  from .pep8 import pep8_lines_between_cells
  from .stringparser import StringParser
label_desc: Use image node_id 6 for calling the BaseCellReader obj's underlying member method code with example usage: obj.find_cell_content(lines) and returns: next_cell_start