def md_to_pyxform_survey(self, md_raw, kwargs={}, autoname=True): if autoname: kwargs = self._autonameInputs(kwargs) _md = [] for line in md_raw.split("\n"): if re.match(r"^\s+\#", line): # ignore lines which start with pound sign continue elif re.match(r"^(.*)(\#[^\|]+)$", line): # keep everything before the # outside of the last occurrence of | _md.append(re.match(r"^(.*)(\#[^\|]+)$", line).groups()[0].strip()) else: _md.append(line.strip()) md = "\n".join(_md) if kwargs.get("debug"): print md def list_to_dicts(arr): headers = arr[0] def _row_to_dict(row): out_dict = {} for i in range(0, len(row)): col = row[i] if col not in [None, ""]: out_dict[headers[i]] = col return out_dict return [_row_to_dict(r) for r in arr[1:]] sheets = {} for sheet, contents in md_table_to_ss_structure(md): sheets[sheet] = list_to_dicts(contents) return self._ss_structure_to_pyxform_survey(sheets, kwargs)
def md_to_pyxform_survey(self, md_raw, kwargs=None, autoname=True, warnings=None): if kwargs is None: kwargs = {} if autoname: kwargs = self._autoname_inputs(kwargs) _md = [] for line in md_raw.split("\n"): if re.match(r"^\s+#", line): # ignore lines which start with pound sign continue elif re.match(r"^(.*)(#[^|]+)$", line): # keep everything before the # outside of the last occurrence # of | _md.append( re.match(r"^(.*)(#[^|]+)$", line).groups()[0].strip()) else: _md.append(line.strip()) md = "\n".join(_md) if kwargs.get("debug"): logger.debug(md) def list_to_dicts(arr): headers = arr[0] def _row_to_dict(row): out_dict = {} for i in range(0, len(row)): col = row[i] if col not in [None, ""]: out_dict[headers[i]] = col return out_dict return [_row_to_dict(r) for r in arr[1:]] sheets = {} for sheet, contents in md_table_to_ss_structure(md): sheets[sheet] = list_to_dicts(contents) return self._ss_structure_to_pyxform_survey(sheets, kwargs, warnings=warnings)
def md_to_pyxform_survey(self, md_raw, kwargs={}, autoname=True): if autoname: kwargs = self._autonameInputs(kwargs) _md = [] for line in md_raw.split('\n'): if re.match(r'^\s+\#', line): # ignore lines which start with pound sign continue elif re.match(r'^(.*)(\#[^\|]+)$', line): # keep everything before the # outside of the last occurrence # of | _md.append( re.match(r'^(.*)(\#[^\|]+)$', line).groups()[0].strip()) else: _md.append(line.strip()) md = '\n'.join(_md) if kwargs.get('debug'): print md def list_to_dicts(arr): headers = arr[0] def _row_to_dict(row): out_dict = {} for i in range(0, len(row)): col = row[i] if col not in [None, '']: out_dict[headers[i]] = col return out_dict return [_row_to_dict(r) for r in arr[1:]] sheets = {} for sheet, contents in md_table_to_ss_structure(md): sheets[sheet] = list_to_dicts(contents) return self._ss_structure_to_pyxform_survey(sheets, kwargs)