HtmlConstants.java
001 /*
002  *  HtmlConstants.java
003  *  Copyright (c) 1998-2008, The University of Sheffield.
004  *
005  *  This code is from the GATE project (http://gate.ac.uk/) and is free
006  *  software licenced under the GNU General Public License version 3. It is
007  *  distributed without any warranty. For more details see COPYING.txt in the
008  *  top level directory (or at http://gatewiki.sf.net/COPYING.txt).
009  *  
010  *  Hamish Cunningham, 13th May 2006
011  */
012 
013 package gate.yam.translate;
014 
015 /**
016  * Constants used when translating HTML. One entry for each type of parse tree
017  * node. Each entry contains the node type name, the start constant and the
018  * end constant.
019  <pre>
020  * constantsTable[CONSTANTNAME] is the node type name
021  * constantsTable[CONSTANTSTART] is the start string
022  * constantsTable[CONSTANTEND] is the end string
023  </pre>
024  * A separate map is defined for predicates, and there are misc patterns for
025  * e.g. headings construction.
026  @author Hamish Cunningham
027  */
028 public interface HtmlConstants
029 {
030   /** Array mapping node type name to start/end strings. */
031   final String[][] htmlConstantsTable = {
032 
033     // ordinary nodes
034     "YamDocument",    "",                     "</body></html>\n"      },
035     "Sep",            "",                     ""                      },
036     "Title",          "",                     ""                      },
037     "Text",           "",                     ""                      },
038     "Verbatim",       "<pre>",                "</pre>"                },
039     "Word",           "",                     ""                      },
040     "Escape",         "<span class=\"cow-escape\">""</span>"        },
041     "Plain",          "",                     ""                      },
042     "Control",        "",                     ""                      },
043     "TargetControl",  "",                     ""                      },
044     "Hr",             "<hr>",                ""                       },
045     "Url",            "<a class=\"_Y_\" href=\"_X_\">""</a>"        },
046     "Anchor",         "<a name=\"_X_\">",     "</a>"                  },
047     "Br",             "<br>",                ""                       },
048     "Nbsp",           "&nbsp;",               ""                      },
049     "Unit",           "",                     ""                      },
050     "SectionHead",    "",                     ""                      },
051     "SectionText",    "",                     ""                      },
052     "Paragraph",      "<p>",                  "</p>"                  },
053     "List",           "",                     ""                      },
054     "ListItem",       "<li>",                 "</li>"                 },
055     "OList",          "<ol>",                 "</ol>"                 },
056     "UList",          "<ul>",                 "</ul>"                 },
057     "Table",          "<table>",              "</table>"              },
058     "Row",            "<tr>",                 "</tr>"                 },
059     "Column",         "<td>",                 "</td>"                 },
060     "TableSep",       "",                     ""                      },
061     "Whsp",           "",                     ""                      },
062     "Contents",       "<div class=\"cow-contents\">""</div>"        },
063     "Predicate",      "",                     ""                      },
064     "TextOrTable",    "",                     ""                      },
065     "Skip",           "",                     ""                      },
066 
067     // controls
068     "*",              "<b>",                  "</b>"                  },
069     "^",              "<tt>",                 "</tt>"                 },
070     "_",              "<em>",                 "</em>"                 },
071     "__",             "<u>",                  "</u>"                  },
072     "<",              "&lt;",                 ""                      },
073     "&",              "&amp;",                ""                      },
074     "%\"",            "<blockquote>",         "</blockquote>"         },
075 
076     // predicates
077     "image",          "<img",                 ">"                     },
078     "footnote",       "<footnote>",           "</footnote>"           },
079     "cite",           "<span class=\"cow-cite\" keys=\"_X_\">",
080                         "</span>"                                       },
081     "include",        "",                     ""                      },
082 
083     // misc useful constants
084     "olistPara",      "<p><ol>",               "</ol></p>",           },
085     "ulistPara",      "<p><ul>",               "</ul></p>",           },
086     "anchorPattern",  "<a class=\"_Y_\" name=\"_X_\"></a>""",       },
087     "linkPattern",    "<a href=\"_X_\">_Y_</a>""",                  },
088     "headingPattern""<h_X_ class=\"_Z_\">_Y_</h_X_>""",           },
089     "nbSpace",        "&nbsp;",               "",                     },
090     "headNumber",     "<span class=\"cow-sec-number\">""</span>"    },
091     "footnoteText",   "<span class=\"cow-footnote-text\" name=\"_X_\">",
092                           "</span>"                                     },
093     "footnoteSection","<span class=\"cow-footnote-section\">",
094                           "</span>"                                     },
095     "comment",        "<!--",                 "-->",                  },
096 
097     // headings
098     "1",              "1",                    "",                     },
099     "2",              "2",                    "",                     },
100     "3",              "3",                    "",                     },
101     "4",              "4",                    "",                     },
102     "5",              "5",                    "",                     },
103     "6",              "6",                    "",                     },
104     "7",              "7",                    "",                     },
105     "8",              "8",                    "",                     },
106     "9",              "9",                    "",                     },
107   };
108 
109   /** Attributes allowed on images. */
110   final String[] imageAttrs =
111     " src=\"_X_\""" alt=\"_X_\""" width=\"_X_\""" height=\"_X_\"",
112       " align=\"_X_\""" border=\"_X_\""};
113 
114   /** Attributes allowed on footnotes. */
115   final String[] footnoteAttrs = "_X_" };
116 
117   /** Attributes allowed on includes. */
118   final String[] includeAttrs = "_X_" };
119 
120   /** Array mapping predicate type name to attributes. */
121   final Object[][] htmlPredicatesTable = {
122     "image", imageAttrs },
123     "footnote", footnoteAttrs },    
124     "include", includeAttrs },
125   };
126 
127 // HtmlConstants