comparison src/luan/modules/parsers/Css.java @ 1330:f41919741100

fix security
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 11 Feb 2019 01:38:55 -0700
parents 8d54bcc0b6d3
children 25746915a241
comparison
equal deleted inserted replaced
1329:5a39b006acd1 1330:f41919741100
1 package luan.modules.parsers; 1 package luan.modules.parsers;
2 2
3 import luan.LuanState; 3 import luan.LuanState;
4 import luan.LuanTable; 4 import luan.LuanTable;
5 import luan.LuanException;
5 import luan.lib.parser.Parser; 6 import luan.lib.parser.Parser;
6 7
7 8
8 public final class Css { 9 public final class Css {
9 10
10 public static LuanTable style(LuanState luan,String text) { 11 public static LuanTable style(LuanState luan,String text) {
11 return new Css(luan,text).parseStyle(); 12 try {
13 return new Css(luan,text).parseStyle();
14 } catch(LuanException e) {
15 throw new RuntimeException(e);
16 }
12 } 17 }
13 18
14 private final LuanState luan; 19 private final LuanState luan;
15 private final Parser parser; 20 private final Parser parser;
16 21
17 private Css(LuanState luan,String text) { 22 private Css(LuanState luan,String text) {
18 this.luan = luan; 23 this.luan = luan;
19 this.parser = new Parser(text); 24 this.parser = new Parser(text);
20 } 25 }
21 26
22 private LuanTable parseStyle() { 27 private LuanTable parseStyle() throws LuanException {
23 LuanTable tbl = new LuanTable(luan); 28 LuanTable tbl = new LuanTable(luan);
24 while( matchSpace() ); 29 while( matchSpace() );
25 while( !parser.endOfInput() ) { 30 while( !parser.endOfInput() ) {
26 int start = parser.currentIndex(); 31 int start = parser.currentIndex();
27 if( !matchPropertyChar() ) 32 if( !matchPropertyChar() )
35 40
36 start = parser.currentIndex(); 41 start = parser.currentIndex();
37 while( !parser.endOfInput() && parser.noneOf(";") ); 42 while( !parser.endOfInput() && parser.noneOf(";") );
38 String val = parser.textFrom(start).trim(); 43 String val = parser.textFrom(start).trim();
39 44
40 tbl.rawPut(prop,val); 45 tbl.put(prop,val);
41 parser.match(';'); 46 parser.match(';');
42 while( matchSpace() ); 47 while( matchSpace() );
43 } 48 }
44 return tbl; 49 return tbl;
45 } 50 }