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
|
Lexicon
|
||||||
,Construction --- could be compiled here, but not in concretes, as they call Syntax and Grammar
|
,Construction --- could be compiled here, but not in concretes, as they call Syntax and Grammar
|
||||||
,Documentation
|
,Documentation
|
||||||
|
,Markup
|
||||||
** {
|
** {
|
||||||
flags startcat=Phr ;
|
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
|
LexiconEng
|
||||||
,ConstructionEng
|
,ConstructionEng
|
||||||
,DocumentationEng
|
,DocumentationEng
|
||||||
|
,MarkupEng
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
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 {
|
resource HTML = open Prelude in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
tag : Str -> Str = \t -> "<" + t + ">" ;
|
tag : Str -> Str = \t -> "<" + t + ">" ;
|
||||||
endtag : Str -> Str = \t -> tag ("/" + 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
|
LexiconSwe
|
||||||
,ConstructionSwe
|
,ConstructionSwe
|
||||||
,DocumentationSwe
|
,DocumentationSwe
|
||||||
|
,MarkupSwe
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
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