def test_parse_one_level(self): data = """\ ... one # Comment on two ... two *** line with some data ... three """ parser = TreeParser(data) assert parser._text_generated() == """\ ... one # Comment on two ... two *** line with some data ... three ... ~end-marker~ """ assert parser.as_nested_list == ['one', '# Comment on two', 'two', 'line with some data', 'three'] ##pprint(parser.as_json) assert parser.as_json == { '_leaves': ['one', 'three', 'two', 'z-2cf54f23'], '_root': {'members': ['one', 'two', 'z-2cf54f23', 'three']}, '_tree': [u'... one', ' # Comment on two', '... two', '*** line with some data', '... three'], 'one': {'groups': ['_root']}, 'three': {'groups': ['_root']}, 'two': {'comments': ['# Comment on two'], 'groups': ['_root']}, 'z-2cf54f23': {'data': 'line with some data', 'groups': ['_root']} } assert parser.as_tree == data
def test_parse_one_level_initial_indent(self): # Blank line is ignored data = """\ ... one ... two ... three """ parser = TreeParser(data) assert parser._text_generated() == """\ ... one ... two ... three ... ~end-marker~ """ assert parser.as_nested_list == ['one', 'two', 'three'] # No need to keep the initial indent in the data assert parser.as_tree == """\ ... one ... two ... three """ print("+++++++++++++++++++++++++++++++++++++++++++++++++") pprint(parser.as_json) assert parser.as_json == { u'_leaves': [u'one', u'three', u'two'], u'_root': {u'members': [u'one', u'two', u'three']}, u'_tree': [u'... one', u'... two', u'... three'], u'one': {u'groups': [u'_root']}, u'three': {u'groups': [u'_root']}, u'two': {u'groups': [u'_root']} }
def test_parse_to_nested_list(self): data = """\ ... one ... alpha ... two ... beta ... beta_01 ... gamma ... three ... delta ... four """ parser = TreeParser(data) assert parser._text_generated() == """\ ... one ... alpha ... two ... beta ... beta_01 ... gamma ... three ... delta ... four ... ~end-marker~ """ assert parser.as_nested_list == [ 'one', ['alpha'], 'two', ['beta', ['beta_01'], 'gamma'], 'three', ['delta'], 'four' ] ##print("+=" * 35) ##pprint(parser.as_json) assert parser.as_json == { '_leaves': ['alpha', 'beta_01', 'delta', 'four', 'gamma'], '_root': {'members': ['one', 'two', 'three', 'four']}, '_tree': ['... one', ' ... alpha', '... two', ' ... beta', ' ... beta_01', ' ... gamma', '... three', ' ... delta', '... four'], 'alpha': {'groups': ['one']}, 'beta': {'groups': ['two'], 'members': ['beta_01']}, 'beta_01': {'groups': ['beta']}, 'delta': {'groups': ['three']}, 'four': {'groups': ['_root']}, 'gamma': {'groups': ['two']}, 'one': {'groups': ['_root'], 'members': ['alpha']}, 'three': {'groups': ['_root'], 'members': ['delta']}, 'two': {'groups': ['_root'], 'members': ['beta', 'gamma']}, } assert parser.as_tree == data
def test_parse_one_level_with_comments(self): # Check nested list, and that tree formed is identical data = """\ # Comment on one ... one ... two # Inline comment on two # Comment on three ... three """ parser = TreeParser(data) assert parser._text_generated() == """\ # Comment on one ... one # Inline comment on two ... two # Comment on three ... three ... ~end-marker~ """ assert parser.as_nested_list == ['# Comment on one', 'one', '# Inline comment on two', 'two', '# Comment on three', 'three'] ##pprint(parser.as_json) assert parser.as_json == { '_leaves': ['one', 'three', 'two'], '_root': {'members': ['one', 'two', 'three']}, '_tree': [' # Comment on one', '... one', ' # Inline comment on two', '... two', ' # Comment on three', '... three'], 'one': {'comments': ['# Comment on one'], 'groups': ['_root']}, 'three': {'comments': ['# Comment on three'], 'groups': ['_root']}, 'two': {'comments': ['# Inline comment on two'], 'groups': ['_root']}} assert parser.as_tree == """\