summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbjorn <bjorn@bringert.net>2008-08-18 09:25:43 +0000
committerbjorn <bjorn@bringert.net>2008-08-18 09:25:43 +0000
commit3a21fcd4baf8accd94096394c191fd3fe4727078 (patch)
treeb7150d7bd27aba8784cc992ec4f42f889aad23e3 /src
parentd22474ea8db54b87c8ea5081353a098390d3d9e1 (diff)
Added languageCode function to the PGF API.
Diffstat (limited to 'src')
-rw-r--r--src/PGF.hs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/PGF.hs b/src/PGF.hs
index 33c17b81b..8ae924c42 100644
--- a/src/PGF.hs
+++ b/src/PGF.hs
@@ -22,7 +22,7 @@ module PGF(
CId, mkCId, prCId,
-- ** Language
- Language, languages, abstractName,
+ Language, languages, abstractName, languageCode,
-- ** Category
Category, categories, startCat,
@@ -68,6 +68,7 @@ import qualified PGF.Parsing.FCFG.Incremental as Incremental
import GF.Text.UTF8
import GF.Data.ErrM
+import GF.Data.Utilities
import qualified Data.Map as Map
import System.Random (newStdGen)
@@ -153,6 +154,13 @@ generateAllDepth :: PGF -> Category -> Maybe Int -> [Tree]
-- | List of all languages available in the given grammar.
languages :: PGF -> [Language]
+-- | Gets the RFC 4646 language tag
+-- of the language which the given concrete syntax implements,
+-- if this is listed in the source grammar.
+-- Example language tags include @"en"@ for English,
+-- and @"en-UK"@ for British English.
+languageCode :: PGF -> Language -> Maybe String
+
-- | The abstract language name is the name of the top-level
-- abstract module
abstractName :: PGF -> Language
@@ -219,6 +227,9 @@ abstractName pgf = prCId (absname pgf)
languages pgf = [prCId l | l <- cncnames pgf]
+languageCode pgf lang =
+ fmap (replace '_' '-') $ lookConcrFlag pgf (mkCId lang) (mkCId "language")
+
categories pgf = [prCId c | c <- Map.keys (cats (abstract pgf))]
startCat pgf = lookStartCat pgf