PCLT-0.1: PCLT.cabal
Name: PCLT
Synopsis: Extension to Show: templating, catalogizing, languages, parameters, etc.
Description:
\"PCLT\" is an abbreviation for \"Parametric Composable Localizable
Templates\" - in fact it should also hold Detalizable.
Term \"Detailizable content (message)\" in this package
has a following meaning: some content, representing which
it is possible to regulate, in how much details it is represented.
.
Conceptually, this package is a powerful extension to the well known
Show class, that (extension) is thought to be embeded in any
Haskell program, which requires multilanguage support, and/or where
messages should be detailizable.
.
The PCLT catalog consists of:
.
* Catalog ID
.
* Config, which defines rules and constraints,
that are used when catalog gets formed, and when it is used
to generate messages.
.
* Tempates of messages, possibly related. Each catalog entry
is referenced by an ID, and is called \"localizable (in languages)
template\", while it's localization in concrete language is called
\"localized (in a languages) template\".
.
Each catalog entry (localizable template) consists of
.
* ID
.
* A requirement to detailization level (to used by reciever of
representation), which if is not statisfied, the template
isn't used.
.
* A map of localized templates by languages - the different
translations of one same message.
.
Each localized template is a sequence of chunks:
.
* plain texts,
.
* named parameters placeholders,
.
* placeholders for insertion of other template (reference on
other template, also called composites).
.
To make a message one needs to specify
.
* a catalog,
.
* a language,
.
* detailization level to orient on
.
* a localizable template ID,
.
* a map of parameters together with their values.
.
The last two fields (localizable template ID + a map of parameters
together with their values) is called instaniation (of
templated message). In the program it wrapped in a PCSI data type.
.
A parameter value may be
.
* plain text
.
* newline
.
* nothing
.
* a reference to other instaniation (localizable template ID +
a map of parameters together with their values)
.
* a list of other other instaniation
.
* a parameter wrapping, where wrapper is an indentation of text
(N whitespaces insertion after each newline character)
.
* a list of parameter values.
.
This package comes together with another one - a dependent package
PCLT-DB (section Database), which provides
.
* a (PostgreSQL 8.4) DB structure where to keep/manage data
used for PCLT catalogs formation,
.
* simple interface to read this data in haskell program, and
.
* a prototype of a longterm service which regularly updates
catalog MVar with data from DB.
.
IMPORTANT!!! : It is highly recommended to use /ISO 639(3)/ standard
for language names, since PCLT-DB package is oriented on 3 letters
(not bigger) language names. Without modifications PCLT-DB won't
work for bigger (then 3-letters) names.
.
ToDo considerations for the next versions:
.
(0) Consider using state monad in order to put catalog into
an implicit context... and maybe also other uses if monads.
.
(1) Rewrite MakeCatalog, so that it uses CatalogMaths functions.
Otherwise the both modules do similar work, and keeping double
code is a bad style.
.
(2) Introduction of a new parameter value type: \"reparsable\"
wrapping for parameter value.
.
(3) CatalogMaths extension.
.
(4) Enchance required SDLs with min & max functions.
.
(5) Sacrificing ldtSubcompositesMap of LocalizedTemplate,
which initially was introduced to enchance speed of messages
generation, in favor of making catalogs easier to modify
(which curently isn't supported and isn't an easy task).
Version: 0.1
Copyright: Copyright (c) 2009 Andrejs Sisojevs
License: LGPL
License-File: COPYRIGHT
Author: Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru>
Maintainer: Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru>
Stability: alpha
Homepage: http://github.com/Andrey-Sisoyev/PCLT
Category: Text
Tested-With: GHC == 6.10.4
Cabal-Version: >= 1.6
Build-Type: Simple
Extra-Source-Files:
COPYRIGHT
COPYING
doinst.sh
models/PCLT.BriefModulesStructure.odg
models/PCLT.BriefModulesStructure.odg.png
initial_data/PCLT.PCLTCatalog.ods
examples/HelloWorld/HelloWorld.hs
examples/HelloWorld/HelloWorld.NoPCLT.hs
examples/HelloWorld/HelloWorld.PCLTCatalog.ods
Library
Build-Depends:
base >= 4 && < 5, bytestring, containers, mtl, utf8-string
Exposed-Modules:
Data.ByteString.Lazy.UTF8.Unified
Text.ConstraintedLBS
Text.PCLT
Text.PCLT.Parser.AdvancedSepBy
Text.PCLT.CommonTypes
Text.PCLT.Catalog
Text.PCLT.Catalog__
Text.PCLT.CatalogMaths
Text.PCLT.CatalogMaths__
Text.PCLT.Config
Text.PCLT.HasStaticRawPCLTs
Text.PCLT.InitialDefaultCatalog
Text.PCLT.MakeCatalog
Text.PCLT.MakeCatalog__
Text.PCLT.MakeMessage
Text.PCLT.MakeMessage2
Text.PCLT.MakeMessage__
Text.PCLT.SDL
Text.PCLT.SDL__
Text.PCLT.PCSI
Text.PCLT.ShowAsPCSI
Text.PCLT.ShowAsPCSI__
Text.PCLT.Template
Text.PCLT.Template__
Text.PCLT.CatalogFromHSRT
Text.PCLT.CatalogFromHSRT__
Text.PCLT.SH__
Other-Modules:
Data.MyHelpers
Text.PCLT.Parser.ParserInternals
Extensions:
BangPatterns, UnboxedTuples, DeriveDataTypeable, ScopedTypeVariables
ghc-options:
-funbox-strict-fields