Mercurial Hosting > luan
diff src/luan/modules/parsers/Html.java @ 1330:f41919741100
fix security
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 11 Feb 2019 01:38:55 -0700 |
parents | 8d54bcc0b6d3 |
children | 25746915a241 |
line wrap: on
line diff
--- a/src/luan/modules/parsers/Html.java Sun Feb 10 02:01:49 2019 -0700 +++ b/src/luan/modules/parsers/Html.java Mon Feb 11 01:38:55 2019 -0700 @@ -6,13 +6,18 @@ import java.util.HashSet; import luan.LuanState; import luan.LuanTable; +import luan.LuanException; import luan.lib.parser.Parser; public final class Html { public static LuanTable toList(LuanState luan,String text,LuanTable containerTagsTbl) { - return new Html(luan,text,containerTagsTbl).parse(); + try { + return new Html(luan,text,containerTagsTbl).parse(); + } catch(LuanException e) { + throw new RuntimeException(e); + } } private final LuanState luan; @@ -27,7 +32,7 @@ } } - private LuanTable parse() { + private LuanTable parse() throws LuanException { List list = new ArrayList(); StringBuilder sb = new StringBuilder(); while( !parser.endOfInput() ) { @@ -61,7 +66,7 @@ return new LuanTable(luan,list); } - private LuanTable parseComment() { + private LuanTable parseComment() throws LuanException { parser.begin(); if( !parser.match("<!--") ) return parser.failure(null); @@ -72,12 +77,12 @@ } String text = parser.textFrom(start); LuanTable tbl = new LuanTable(luan); - tbl.rawPut("type","comment"); - tbl.rawPut("text",text); + tbl.put("type","comment"); + tbl.put("text",text); return parser.success(tbl); } - private LuanTable parseCdata() { + private LuanTable parseCdata() throws LuanException { parser.begin(); if( !parser.match("<![CDATA[") ) return parser.failure(null); @@ -88,12 +93,12 @@ } String text = parser.textFrom(start); LuanTable tbl = new LuanTable(luan); - tbl.rawPut("type","cdata"); - tbl.rawPut("text",text); + tbl.put("type","cdata"); + tbl.put("text",text); return parser.success(tbl); } - private LuanTable parseContainer(LuanTable tag) { + private LuanTable parseContainer(LuanTable tag) throws LuanException { String endTagName = '/' + (String)tag.rawGet("name"); int start = parser.begin(); int end; @@ -110,15 +115,15 @@ } String text = parser.text.substring(start,end); LuanTable tbl = new LuanTable(luan); - tbl.rawPut("type","container"); - tbl.rawPut("tag",tag); - tbl.rawPut("text",text); + tbl.put("type","container"); + tbl.put("tag",tag); + tbl.put("text",text); return parser.success(tbl); } - private LuanTable parseTag() { + private LuanTable parseTag() throws LuanException { LuanTable tbl = new LuanTable(luan); - tbl.rawPut("type","tag"); + tbl.put("type","tag"); int tagStart = parser.begin(); if( !parser.match('<') ) return parser.failure(null); @@ -128,26 +133,26 @@ return parser.failure(null); while( matchNameChar() ); String name = parser.textFrom(start).toLowerCase(); - tbl.rawPut("name",name); + tbl.put("name",name); LuanTable attributes = new LuanTable(luan); - tbl.rawPut("attributes",attributes); + tbl.put("attributes",attributes); String attrName; while( (attrName = parseAttrName()) != null ) { String attrValue = parseAttrValue(); - attributes.rawPut( attrName, attrValue!=null ? attrValue : true ); + attributes.put( attrName, attrValue!=null ? attrValue : true ); if( attrName.equals("style") && attrValue!=null ) { LuanTable style = Css.style(luan,attrValue); if( style!=null ) - tbl.rawPut("style",style); + tbl.put("style",style); } } while( matchSpace() ); boolean isEmpty = parser.match('/'); - tbl.rawPut("is_empty",isEmpty); + tbl.put("is_empty",isEmpty); if( !parser.match('>') ) return parser.failure(null); String raw = parser.textFrom(tagStart); - tbl.rawPut("raw",raw); + tbl.put("raw",raw); return parser.success(tbl); }