diff options
| author | bjorn <bjorn@bringert.net> | 2008-08-18 09:25:43 +0000 |
|---|---|---|
| committer | bjorn <bjorn@bringert.net> | 2008-08-18 09:25:43 +0000 |
| commit | 3a21fcd4baf8accd94096394c191fd3fe4727078 (patch) | |
| tree | b7150d7bd27aba8784cc992ec4f42f889aad23e3 /src | |
| parent | d22474ea8db54b87c8ea5081353a098390d3d9e1 (diff) | |
Added languageCode function to the PGF API.
Diffstat (limited to 'src')
| -rw-r--r-- | src/PGF.hs | 13 |
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 |
