[subsection [title An example subsection]] [paragraph] This is some content for the first paragraph. [paragraph] This is some [term [type emphasis] content] for the second paragraph. [subsection [title Another example subsection]] [paragraph] This is some content for the first paragraph of the next section.
data ImperativeContent = ICParagraph ImperativeParagraph | ICFormalItem ImperativeFormalItem | ICFootnote ImperativeFootnote | ICSubsection ImperativeSubsection | ICSection ImperativeSection | ICPart ImperativePart | ICDocument ImperativeDocument | ICImport ImperativeImport deriving Eq
instance Ord ImperativeContent where compare (ICParagraph _) (ICParagraph _) = EQ compare (ICParagraph _) (ICFormalItem _) = EQ compare (ICParagraph _) (ICFootnote _) = EQ compare (ICParagraph _) (ICSubsection _) = LT compare (ICParagraph _) (ICSection _) = LT compare (ICParagraph _) (ICPart _) = LT compare (ICParagraph _) (ICDocument _) = LT compare (ICFormalItem _) (ICParagraph _) = EQ compare (ICFormalItem _) (ICFormalItem _) = EQ compare (ICFormalItem _) (ICFootnote _) = EQ compare (ICFormalItem _) (ICSubsection _) = LT compare (ICFormalItem _) (ICSection _) = LT compare (ICFormalItem _) (ICPart _) = LT compare (ICFormalItem _) (ICDocument _) = LT compare (ICFootnote _) (ICParagraph _) = EQ compare (ICFootnote _) (ICFormalItem _) = EQ compare (ICFootnote _) (ICFootnote _) = EQ compare (ICFootnote _) (ICSubsection _) = LT compare (ICFootnote _) (ICSection _) = LT compare (ICFootnote _) (ICPart _) = LT compare (ICFootnote _) (ICDocument _) = LT compare (ICSubsection _) (ICParagraph _) = GT compare (ICSubsection _) (ICFormalItem _) = GT compare (ICSubsection _) (ICFootnote _) = GT compare (ICSubsection _) (ICSubsection _) = EQ compare (ICSubsection _) (ICSection _) = LT compare (ICSubsection _) (ICPart _) = LT compare (ICSubsection _) (ICDocument _) = LT compare (ICSection _) (ICParagraph _) = GT compare (ICSection _) (ICFormalItem _) = GT compare (ICSection _) (ICFootnote _) = GT compare (ICSection _) (ICSubsection _) = GT compare (ICSection _) (ICSection _) = EQ compare (ICSection _) (ICPart _) = LT compare (ICSection _) (ICDocument _) = LT compare (ICPart _) (ICParagraph _) = GT compare (ICPart _) (ICFormalItem _) = GT compare (ICPart _) (ICFootnote _) = GT compare (ICPart _) (ICSubsection _) = GT compare (ICPart _) (ICSection _) = GT compare (ICPart _) (ICPart _) = EQ compare (ICPart _) (ICDocument _) = LT compare (ICDocument _) (ICParagraph _) = GT compare (ICDocument _) (ICFormalItem _) = GT compare (ICDocument _) (ICFootnote _) = GT compare (ICDocument _) (ICSubsection _) = GT compare (ICDocument _) (ICSection _) = GT compare (ICDocument _) (ICPart _) = GT compare (ICDocument _) (ICDocument _) = EQ compare (ICImport i) e = compare (importContent i) e compare e (ICImport i) = compare e (importContent i)
importContent :: ImperativeImport -> ImperativeContent importContent _ = undefined
data ImperativeParagraph = ImperativeParagraph { para_type :: Maybe String, para_id :: Maybe ID.T } deriving Eq
imperative_paragraph = (#choice [ (#exact-list [canon_paragraph_name]) (#exact-list [canon_paragraph_name canon_id]) (#exact-list [canon_paragraph_name canon_id canon_type]) (#exact-list [canon_paragraph_name canon_type canon_id]) (#exact-list [canon_paragraph_name canon_type]) ])
data ImperativeFormalItem = ImperativeFormalItem { formal_type :: Maybe String, formal_id :: Maybe ID.T, formal_title :: [I.InlineText] } deriving Eq
imperative_formal_item = (#choice [ (#exact-list [canon_formal_item_name canon_title]) (#exact-list [canon_formal_item_name canon_title canon_id]) (#exact-list [canon_formal_item_name canon_title canon_id canon_type]) (#exact-list [canon_formal_item_name canon_title canon_type canon_id]) (#exact-list [canon_formal_item_name canon_title canon_type]) ])
data ImperativeFootnote = ImperativeFootnote { footnote_type :: Maybe String, footnote_id :: ID.T } deriving Eq
imperative_footnote = (#choice [ (#exact-list [canon_footnote_name canon_id]) (#exact-list [canon_footnote_name canon_id canon_type]) ])
data ImperativeSubsection = ImperativeSubsection { subsection_type :: Maybe String, subsection_id :: Maybe ID.T, subsection_title :: [I.InlineText] } deriving Eq
imperative_subsection = (#choice [ (#exact-list [canon_subsection_name canon_title]) (#exact-list [canon_subsection_name canon_title canon_id]) (#exact-list [canon_subsection_name canon_title canon_id canon_type]) (#exact-list [canon_subsection_name canon_title canon_type canon_id]) (#exact-list [canon_subsection_name canon_title canon_type]) ])
data ImperativeSection = ImperativeSection { section_type :: Maybe String, section_id :: Maybe ID.T, section_title :: [I.InlineText] } deriving Eq
imperative_section = (#choice [ (#exact-list [canon_section_name canon_title]) (#exact-list [canon_section_name canon_title canon_id]) (#exact-list [canon_section_name canon_title canon_id canon_type]) (#exact-list [canon_section_name canon_title canon_type canon_id]) (#exact-list [canon_section_name canon_title canon_type]) ])
data ImperativePart = ImperativePart { part_type :: Maybe String, part_id :: Maybe ID.T, part_title :: [I.InlineText] } deriving Eq
imperative_part = (#choice [ (#exact-list [canon_part_name canon_title]) (#exact-list [canon_part_name canon_title canon_id]) (#exact-list [canon_part_name canon_title canon_id canon_type]) (#exact-list [canon_part_name canon_title canon_type canon_id]) (#exact-list [canon_part_name canon_title canon_type]) ])
data ImperativeDocument = ImperativeDocument { document_type :: Maybe String, document_id :: Maybe ID.T, document_title :: [I.InlineText] } deriving Eq
imperative_document = (#choice [ (#exact-list [canon_document_name canon_title]) (#exact-list [canon_document_name canon_title canon_id]) (#exact-list [canon_document_name canon_title canon_id canon_type]) (#exact-list [canon_document_name canon_title canon_type canon_id]) (#exact-list [canon_document_name canon_title canon_type]) ])