Skip to content

Commit 2e2d73a

Browse files
committed
Accept arbitrary strings as the language
1 parent c75b12a commit 2e2d73a

File tree

5 files changed

+19
-25
lines changed

5 files changed

+19
-25
lines changed

Diff for: Changelog.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog for tttool
22

3+
## 1.2 (2013-03-08)
4+
5+
* The `language` fields takes arbitrary strings, which will hopefully be
6+
understood by the text-to-speak engine.
7+
38
## 1.1 (2015-02-15)
49

510
* The yaml files support a `language` field, specifying the default language

Diff for: gen-windows-release.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22

33
set -e
4-
wine cabal install --bindir=.
4+
wine cabal install --distdir=dist-win --bindir=.
55
(cd Audio/digits/; ./build.sh)
66

77
rev=$(git describe --tags)

Diff for: src/Language.hs

+6-14
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
11
{-# LANGUAGE OverloadedStrings #-}
2-
module Language where
2+
module Language where
33

44
import Data.Aeson.Types
5-
import Control.Monad
6-
import Data.Text
5+
import Control.Applicative ((<$>))
76

8-
9-
data Language = En | De | Fr
7+
newtype Language = Language String
108

119
defaultLanguage :: Language
12-
defaultLanguage = En
10+
defaultLanguage = Language "en"
1311

1412
ppLang :: Language -> String
15-
ppLang En = "en"
16-
ppLang De = "de"
17-
ppLang Fr = "fr"
13+
ppLang (Language l) = l
1814

1915
instance ToJSON Language where
2016
toJSON = toJSON . ppLang
2117

2218
instance FromJSON Language where
23-
parseJSON (String "en") = return En
24-
parseJSON (String "de") = return De
25-
parseJSON (String "fr") = return Fr
26-
parseJSON (String s) = fail $ "Unknown language \"" ++ unpack s ++ "\"."
27-
parseJSON _ = mzero
19+
parseJSON s = Language <$> parseJSON s
2820

Diff for: src/TextToSpeech.hs

+6-9
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,24 @@ pico lang tmp txt =
3131
("pico2wave", ["--wave", tmp, "--lang", l, txt])
3232
where
3333
l = case lang of
34-
En -> "en-GB"
35-
De -> "de-DE"
36-
Fr -> "fr-FR"
34+
Language "en" -> "en-GB"
35+
Language "de" -> "de-DE"
36+
Language "fr" -> "fr-FR"
37+
Language s -> s
3738

3839
espeak :: Language -> FilePath -> String -> (String, [String])
3940
espeak lang tmp txt =
4041
("espeak", ["-v", l, "-w", tmp, "-s", "120", txt])
4142
where
4243
l = case lang of
43-
En -> "en"
44-
De -> "de"
45-
Fr -> "fr"
44+
Language s -> s
4645

4746
espeak_contrib :: Language -> FilePath -> String -> (String, [String])
4847
espeak_contrib lang tmp txt =
4948
("./contrib/espeak", ["-v", l, "-w", tmp, "-s", "120", txt])
5049
where
5150
l = case lang of
52-
En -> "en"
53-
De -> "de"
54-
Fr -> "fr"
51+
Language s -> s
5552

5653

5754
engines :: Language -> FilePath -> String -> [(String, [String])]

Diff for: tttool.cabal

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
-- documentation, see http://haskell.org/cabal/users-guide/
33

44
name: tttool
5-
version: 1.1
5+
version: 1.2
66
synopsis: Working with files for the Tiptoi® pen
77
description: The Ravensburger Tiptoi® pen is programmed via special
88
files. Their file format has been reverse engineered; this

0 commit comments

Comments
 (0)