forked from GitHub/gf-core
module Markup for marking up subphrases with html tags (or other things). Implemented for Eng and Swe so far.
This commit is contained in:
@@ -10,6 +10,7 @@ abstract Lang =
|
||||
Lexicon
|
||||
,Construction --- could be compiled here, but not in concretes, as they call Syntax and Grammar
|
||||
,Documentation
|
||||
,Markup
|
||||
** {
|
||||
flags startcat=Phr ;
|
||||
} ;
|
||||
|
||||
25
lib/src/abstract/MarkHTML.gf
Normal file
25
lib/src/abstract/MarkHTML.gf
Normal file
@@ -0,0 +1,25 @@
|
||||
abstract MarkHTML = {
|
||||
|
||||
-- HTML markup to be used in Markup.gf. Will have a common implementation for all languages.
|
||||
-- AR 11/2/2014
|
||||
|
||||
cat
|
||||
Mark ;
|
||||
|
||||
fun
|
||||
i_Mark : Mark ;
|
||||
b_Mark : Mark ;
|
||||
ul_Mark : Mark ;
|
||||
li_Mark : Mark ;
|
||||
h1_Mark : Mark ;
|
||||
h2_Mark : Mark ;
|
||||
table_Mark : Mark ;
|
||||
tr_Mark : Mark ;
|
||||
td_Mark : Mark ;
|
||||
p_Mark : Mark ;
|
||||
|
||||
a_Mark : String -> Mark ;
|
||||
|
||||
stringMark : String -> String -> Mark ; -- make your own markup
|
||||
|
||||
}
|
||||
20
lib/src/abstract/Markup.gf
Normal file
20
lib/src/abstract/Markup.gf
Normal file
@@ -0,0 +1,20 @@
|
||||
abstract Markup = Cat, MarkHTML ** {
|
||||
|
||||
-- Adding markup to sentences and their parts. By default both start and end tags.
|
||||
-- For instance
|
||||
--
|
||||
-- MarkupNP boldMarkup everything_NP ==> <b> everything </b>
|
||||
--
|
||||
-- AR 11/2/2014
|
||||
|
||||
fun
|
||||
MarkupCN : Mark -> CN -> CN ;
|
||||
MarkupNP : Mark -> NP -> NP ;
|
||||
MarkupAP : Mark -> AP -> AP ;
|
||||
MarkupAdv : Mark -> Adv -> Adv ;
|
||||
MarkupS : Mark -> S -> S ;
|
||||
MarkupUtt : Mark -> Utt -> Utt ;
|
||||
MarkupPhr : Mark -> Phr -> Phr ;
|
||||
MarkupText : Mark -> Text -> Text ;
|
||||
|
||||
}
|
||||
35
lib/src/common/MarkHTMLX.gf
Normal file
35
lib/src/common/MarkHTMLX.gf
Normal file
@@ -0,0 +1,35 @@
|
||||
--# -path=.:../abstract
|
||||
|
||||
concrete MarkHTMLX of MarkHTML = open HTML, Prelude in {
|
||||
|
||||
lincat
|
||||
Mark = {begin,end : Str} ;
|
||||
|
||||
lin
|
||||
i_Mark = mkMark "i" ;
|
||||
b_Mark = mkMark "b" ;
|
||||
ul_Mark = mkMark "ul" ;
|
||||
li_Mark = mkMark "li" ;
|
||||
h1_Mark = mkMark "h1" ;
|
||||
h2_Mark = mkMark "h2" ;
|
||||
table_Mark = mkMark "table" ;
|
||||
tr_Mark = mkMark "tr" ;
|
||||
td_Mark = mkMark "td" ;
|
||||
p_Mark = mkMark "p" ;
|
||||
|
||||
a_Mark url = {begin = "<a href=" ++ Predef.BIND ++ url.s ++ Predef.BIND ++ ">" ; end = "</a>"} ;
|
||||
|
||||
stringMark begin end = {begin = begin.s ; end = end.s} ;
|
||||
|
||||
oper
|
||||
mkMark = overload {
|
||||
mkMark : Str -> Mark
|
||||
= \s -> lin Mark {begin = tag s ; end = endtag s} ;
|
||||
mkMark : Str -> Str -> Mark
|
||||
= \s,t -> lin Mark {begin = tag s ; end = endtag t} ;
|
||||
} ;
|
||||
|
||||
appMark : {begin,end : Str} -> Str -> Str
|
||||
= \m,s -> m.begin ++ s ++ m.end ;
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ concrete LangEng of Lang =
|
||||
LexiconEng
|
||||
,ConstructionEng
|
||||
,DocumentationEng
|
||||
,MarkupEng
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
15
lib/src/english/MarkupEng.gf
Normal file
15
lib/src/english/MarkupEng.gf
Normal file
@@ -0,0 +1,15 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete MarkupEng of Markup = CatEng, MarkHTMLX ** {
|
||||
|
||||
lin
|
||||
MarkupCN m cn = {s = \\n,c => appMark m (cn.s ! n ! c) ; g = cn.g} ;
|
||||
MarkupNP m np = {s = \\c => appMark m (np.s ! c) ; a = np.a} ;
|
||||
MarkupAP m ap = {s = \\a => appMark m (ap.s ! a) ; isPre = ap.isPre} ;
|
||||
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||
MarkupS m s = {s = appMark m s.s} ;
|
||||
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||
MarkupText m txt = {s = appMark m txt.s} ;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
resource HTML = open Prelude in {
|
||||
|
||||
oper
|
||||
tag : Str -> Str = \t -> "<" + t + ">" ;
|
||||
endtag : Str -> Str = \t -> tag ("/" + t) ;
|
||||
|
||||
13
lib/src/scandinavian/MarkupScand.gf
Normal file
13
lib/src/scandinavian/MarkupScand.gf
Normal file
@@ -0,0 +1,13 @@
|
||||
incomplete concrete MarkupScand of Markup = CatScand, MarkHTMLX ** open ResScand in {
|
||||
|
||||
lin
|
||||
MarkupCN m cn = {s = \\n,d,c => appMark m (cn.s ! n ! d ! c) ; g = cn.g ; isMod = cn.isMod} ;
|
||||
MarkupNP m np = {s = \\c => appMark m (np.s ! c) ; a = np.a} ;
|
||||
MarkupAP m ap = {s = \\a => appMark m (ap.s ! a) ; isPre = ap.isPre} ;
|
||||
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||
MarkupS m s = {s = \\o => appMark m (s.s ! o)} ;
|
||||
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||
MarkupText m txt = {s = appMark m txt.s} ;
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ concrete LangSwe of Lang =
|
||||
LexiconSwe
|
||||
,ConstructionSwe
|
||||
,DocumentationSwe
|
||||
,MarkupSwe
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
3
lib/src/swedish/MarkupSwe.gf
Normal file
3
lib/src/swedish/MarkupSwe.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../scandinavian
|
||||
|
||||
concrete MarkupSwe of Markup = CatSwe, MarkHTMLX ** MarkupScand with (ResScand = ResSwe) ;
|
||||
Reference in New Issue
Block a user