You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
import PyOrgMode
|
|
import copy
|
|
try:
|
|
import unittest2 as unittest
|
|
except ImportError:
|
|
import unittest
|
|
|
|
|
|
def Get_Scheduled_Elements(element, data=[]):
|
|
"""Grab the data from all scheduled elements for all the tree defined by
|
|
'element' recursively. Returns all the elements as an array.
|
|
"""
|
|
if hasattr(element, "content"):
|
|
for child in element.content:
|
|
if hasattr(child, "TYPE"):
|
|
if child.TYPE == "SCHEDULE_ELEMENT":
|
|
# This element is scheduled, we are creating a copy of it
|
|
data.append(copy.deepcopy(child.parent))
|
|
Get_Scheduled_Elements(child, data)
|
|
return data
|
|
|
|
|
|
class TestAgenda(unittest.TestCase):
|
|
def test_agenda(self):
|
|
# Creating the input and output files data structures
|
|
input_file = PyOrgMode.OrgDataStructure()
|
|
output_file = PyOrgMode.OrgDataStructure()
|
|
|
|
# Loading from agenda.org file
|
|
input_file.load_from_file("agenda.org")
|
|
|
|
# Get the scheduled elements (those with SCHEDULE, DEADLINE in them,
|
|
# not in the node name)
|
|
scheduled_elements = Get_Scheduled_Elements(input_file.root)
|
|
|
|
# Assign these element to the root (reparent each elements recursively,
|
|
# relevel them cleanly)
|
|
output_file.root.append_clean(scheduled_elements)
|
|
|
|
output_file.save_to_file("test_scheduled_output.org")
|
|
with open("test_scheduled_output.org") as f:
|
|
saved = f.readlines()
|
|
|
|
self.assertEqual(saved, ['* Element 1\n',
|
|
' SCHEDULED: <2011-02-08>\n',
|
|
'* Element 3\n',
|
|
' DEADLINE: <2011-02-08>\n',
|
|
'** Test\n',
|
|
'** Element 4\n',
|
|
' SCHEDULED: <2011-02-08>\n',
|
|
'*** Couic\n',
|
|
'* Element 4\n',
|
|
' SCHEDULED: <2011-02-08>\n',
|
|
'** Couic\n'])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|