module Script where import Text.XML.HaXml.XmlContent import Text.XML.HaXml.OneOfN {-Type decls-} data Script = Script Script_Attrs [Action] deriving (Eq,Show) data Script_Attrs = Script_Attrs { scriptAuthor :: (Maybe String) , scriptDate :: (Maybe String) , scriptDescription :: (Maybe String) } deriving (Eq,Show) data Action = Action Action_Attrs [(OneOf7 Filter Reification Stat Parttime Timepart Haskore Midi)] deriving (Eq,Show) data Action_Attrs = Action_Attrs { actionInput :: String , actionOutput :: (Maybe String) , actionWarnings :: (Maybe Action_warnings) } deriving (Eq,Show) data Action_warnings = Action_warnings_yes | Action_warnings_no deriving (Eq,Show) data Filter = Filter { filterSelect :: Filter_select , filterMode :: (Maybe Filter_mode) } deriving (Eq,Show) data Filter_select = Filter_select_note | Filter_select_note_grace | Filter_select_note_cue | Filter_select_note_normal deriving (Eq,Show) data Filter_mode = Filter_mode_yes | Filter_mode_no deriving (Eq,Show) data Reification = Reification { reificationValue :: Reification_value } deriving (Eq,Show) data Reification_value = Reification_value_1 | Reification_value_2 | Reification_value_3 | Reification_value_4 | Reification_value_5 deriving (Eq,Show) data Stat = Stat Stat_Attrs [Count] deriving (Eq,Show) data Stat_Attrs = Stat_Attrs { statVerbose :: (Maybe Stat_verbose) } deriving (Eq,Show) data Stat_verbose = Stat_verbose_yes | Stat_verbose_no deriving (Eq,Show) data Count = Count { countSelect :: Count_select } deriving (Eq,Show) data Count_select = Count_select_part | Count_select_measure | Count_select_music_data | Count_select_note | Count_select_note_grace | Count_select_note_cue | Count_select_note_normal deriving (Eq,Show) data Parttime = Parttime deriving (Eq,Show) data Timepart = Timepart deriving (Eq,Show) data Haskore = Haskore deriving (Eq,Show) data Midi = Midi { midiPlay :: (Maybe Midi_play) } deriving (Eq,Show) data Midi_play = Midi_play_yes | Midi_play_no deriving (Eq,Show) {-Instance decls-} instance HTypeable Script where toHType x = Defined "script" [] [] instance XmlContent Script where toContents (Script as a) = [CElem (Elem "script" (toAttrs as) (concatMap toContents a)) ()] parseContents = do { e@(Elem _ as _) <- element ["script"] ; interior e $ return (Script (fromAttrs as)) `apply` many parseContents } `adjustErr` ("in