Mercurial Hosting > luan
diff core/src/luan/modules/HtmlLuan.java @ 426:23a93c118042
fix LuanTable.get() to use metatables
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 01 May 2015 18:44:20 -0600 |
parents | 23b99a5039b5 |
children | dae264ad6a7b |
line wrap: on
line diff
--- a/core/src/luan/modules/HtmlLuan.java Fri May 01 17:18:23 2015 -0600 +++ b/core/src/luan/modules/HtmlLuan.java Fri May 01 18:44:20 2015 -0600 @@ -99,7 +99,7 @@ String tagText = text.substring(i2+1,i); try { LuanTable tag = parseTag(tagText); - String tagName = (String)tag.get("name"); + String tagName = (String)tag.rawGet("name"); if( containerTags.contains(tagName) ) { i2 = i; String endTagName = '/' + tagName; @@ -200,7 +200,7 @@ while( i<len ) { i2 = toEndName(text,i,len); String attrName = unquote(text.substring(i,i2).toLowerCase()); - if( attributes.get(attrName) != null ) + if( attributes.rawGet(attrName) != null ) throw new BadTag("duplicate attribute: "+attrName); i = i2; while( i<len && Character.isWhitespace(text.charAt(i)) ) i++; @@ -282,20 +282,20 @@ buf.append( o ); } else if( o instanceof LuanTable ) { LuanTable t = (LuanTable)o; - String type = (String)t.get("type"); + String type = (String)t.get(luan,"type"); if( type==null ) throw luan.exception( "no type in element of table for 'Html.to_string'" ); if( type.equals("comment") ) { - buf.append( "<!--" ).append( t.get("text") ).append( "-->" ); + buf.append( "<!--" ).append( t.get(luan,"text") ).append( "-->" ); } else if( type.equals("cdata") ) { - buf.append( "<![CDATA[" ).append( t.get("text") ).append( "]]" ); + buf.append( "<![CDATA[" ).append( t.get(luan,"text") ).append( "]]" ); } else if( type.equals("tag") ) { - buf.append( tagToString(t) ); + buf.append( tagToString(luan,t) ); } else if( type.equals("container") ) { - LuanTable tag = (LuanTable)t.get("tag"); - buf.append( tagToString(tag) ); - buf.append( t.get("text") ); - buf.append( "</" ).append( tag.get("name") ).append( ">" ); + LuanTable tag = (LuanTable)t.get(luan,"tag"); + buf.append( tagToString(luan,tag) ); + buf.append( t.get(luan,"text") ); + buf.append( "</" ).append( tag.get(luan,"name") ).append( ">" ); } else { throw luan.exception( "invalid element type for 'Html.to_string'" ); } @@ -305,11 +305,11 @@ return buf.toString(); } - private static String tagToString(LuanTable tbl) { + private static String tagToString(LuanState luan,LuanTable tbl) throws LuanException { StringBuilder buf = new StringBuilder(); buf.append('<'); - buf.append(tbl.get("name")); - LuanTable attributes = (LuanTable)tbl.get("attributes"); + buf.append(tbl.get(luan,"name")); + LuanTable attributes = (LuanTable)tbl.get(luan,"attributes"); for( Map.Entry<Object,Object> attr : attributes ) { buf.append( ' ' ); buf.append( attr.getKey() ); @@ -319,7 +319,7 @@ buf.append( quote((String)val) ); } } - if( tbl.get("is_empty").equals(Boolean.TRUE) ) + if( tbl.get(luan,"is_empty").equals(Boolean.TRUE) ) buf.append('/'); buf.append('>'); return buf.toString();