module Sound.Audacity.Project where import qualified Sound.Audacity.Project.Track.Label as LabelTrack import qualified Sound.Audacity.Project.Track.Wave as WaveTrack import qualified Sound.Audacity.XML.Attribute as Attr import qualified Sound.Audacity.XML as XML import qualified Text.HTML.Tagchup.Format as Format import qualified Text.HTML.Tagchup.Tag as Tag import qualified Text.XML.Basic.ProcessingInstruction as PI import qualified Text.XML.Basic.Name.MixedCase as Name import qualified Text.XML.Basic.Tag as XmlTag data T = Cons { T -> String name_ :: String, T -> Double selectionStart_, T -> Double selectionEnd_ :: Double, T -> Int vpos_ :: Int, T -> Double h_ :: Double, T -> Double zoom_ :: Double, T -> Double rate_ :: Double, T -> [Track] tracks_ :: [Track] } deflt :: T deflt :: T deflt = Cons :: String -> Double -> Double -> Int -> Double -> Double -> Double -> [Track] -> T Cons { name_ :: String name_ = String "", selectionStart_ :: Double selectionStart_ = Double 0, selectionEnd_ :: Double selectionEnd_ = Double 0, vpos_ :: Int vpos_ = Int 0, h_ :: Double h_ = Double 0, zoom_ :: Double zoom_ = Double 1, rate_ :: Double rate_ = Double 44100, tracks_ :: [Track] tracks_ = [] } data Track = WaveTrack WaveTrack.T | LabelTrack LabelTrack.T format :: T -> ShowS format :: T -> ShowS format T x = [T T String] -> ShowS forall name string. (Tag name, Attribute name, C string) => [T name string] -> ShowS Format.xmlCondensed ([[T T String]] -> [T T String] XML.unlines ([[T T String]] -> [T T String]) -> [[T T String]] -> [T T String] forall a b. (a -> b) -> a -> b $ T -> [[T T String]] toXML T x) toXML :: T -> [[Tag.T Name.T String]] toXML :: T -> [[T T String]] toXML T x = [Name T -> T T String -> T T String forall name string. Name name -> T name string -> T name string Tag.processing Name T forall name. Tag name => Name name XmlTag.xmlName (T T String -> T T String) -> T T String -> T T String forall a b. (a -> b) -> a -> b $ [T T String] -> T T String forall name string. [T name string] -> T name string PI.Known ([T T String] -> T T String) -> [T T String] -> T T String forall a b. (a -> b) -> a -> b $ String -> String -> T T String forall a. String -> a -> T T a XML.attr String "version" String "1.0" T T String -> [T T String] -> [T T String] forall a. a -> [a] -> [a] : String -> String -> T T String forall a. String -> a -> T T a XML.attr String "standalone" String "no" T T String -> [T T String] -> [T T String] forall a. a -> [a] -> [a] : []] [T T String] -> [[T T String]] -> [[T T String]] forall a. a -> [a] -> [a] : [Name T -> String -> T T String forall name string. Name name -> String -> T name string Tag.special Name T forall name. Tag name => Name name XmlTag.doctypeName (String -> T T String) -> String -> T T String forall a b. (a -> b) -> a -> b $ String "project PUBLIC \"-//audacityproject-1.3.0//DTD//EN\" " String -> ShowS forall a. [a] -> [a] -> [a] ++ String "\"http://audacity.sourceforge.net/xml/audacityproject-1.3.0.dtd\""] [T T String] -> [[T T String]] -> [[T T String]] forall a. a -> [a] -> [a] : String -> T -> [T T (T -> String)] -> [[T T String]] -> [[T T String]] forall a. String -> a -> [T T (a -> String)] -> [[T T String]] -> [[T T String]] XML.tag String "project" T x (String -> (T -> String) -> T T (T -> String) forall a. String -> (a -> String) -> T T (a -> String) Attr.string String "xmlns" (String -> T -> String forall a b. a -> b -> a const String "http://audacity.sourceforge.net/xml/") T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> String) -> T T (T -> String) forall a. String -> (a -> String) -> T T (a -> String) Attr.string String "projname" T -> String name_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> String) -> T T (T -> String) forall a. String -> (a -> String) -> T T (a -> String) Attr.string String "version" (String -> T -> String forall a b. a -> b -> a const String "1.3.0") T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> String) -> T T (T -> String) forall a. String -> (a -> String) -> T T (a -> String) Attr.string String "audacityversion" (String -> T -> String forall a b. a -> b -> a const String "2.0.0") T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> Double) -> T T (T -> String) forall a. String -> (a -> Double) -> T T (a -> String) Attr.double String "sel0" T -> Double selectionStart_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> Double) -> T T (T -> String) forall a. String -> (a -> Double) -> T T (a -> String) Attr.double String "sel1" T -> Double selectionEnd_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> Int) -> T T (T -> String) forall a. String -> (a -> Int) -> T T (a -> String) Attr.int String "vpos" T -> Int vpos_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> Double) -> T T (T -> String) forall a. String -> (a -> Double) -> T T (a -> String) Attr.double String "h" T -> Double h_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> Double) -> T T (T -> String) forall a. String -> (a -> Double) -> T T (a -> String) Attr.double String "zoom" T -> Double zoom_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : String -> (T -> Double) -> T T (T -> String) forall a. String -> (a -> Double) -> T T (a -> String) Attr.double String "rate" T -> Double rate_ T T (T -> String) -> [T T (T -> String)] -> [T T (T -> String)] forall a. a -> [a] -> [a] : []) ((Track -> [[T T String]]) -> [Track] -> [[T T String]] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap Track -> [[T T String]] trackToXML (T -> [Track] tracks_ T x)) trackToXML :: Track -> [[Tag.T Name.T String]] trackToXML :: Track -> [[T T String]] trackToXML (LabelTrack T x) = T -> [[T T String]] LabelTrack.toXML T x trackToXML (WaveTrack T x) = T -> [[T T String]] WaveTrack.toXML T x