/// <summary> /// Разбирает строку типа : FontSymbol(51,9502608,18,'RN_UZgeo_punkt',0,0) /// </summary> public static void Parse(string data, ref FontSymbol fontsymbol) { string[] arguments = GetParams(data, "FontSymbol"); if (arguments.Length < 6) { throw new Exception("Invalid numbers of params"); } fontsymbol.SymbolCode = int.Parse(arguments[0]); fontsymbol.SymbolColor = int.Parse(arguments[1]); fontsymbol.PointSize = int.Parse(arguments[2]); fontsymbol.FontName = arguments[3]; fontsymbol.FontName = fontsymbol.FontName.Replace('\'', ' ').Trim(); fontsymbol.FontName = fontsymbol.FontName.Replace('\"', ' ').Trim(); fontsymbol.FontStyle = int.Parse(arguments[4]); fontsymbol.Angle = arguments[5] == "*" ? int.MinValue : int.Parse(arguments[5]); fontsymbol.Valid = true; }
static void Main(string[] args) { { // FONTAWESOME :-) Console.WriteLine("MAKE FontAwesome"); var data = new Data(); ExCSS.Parser p = new ExCSS.Parser(); var css = p.Parse(File.ReadAllText("font-awesome.css")); foreach (var item in css.StyleRules) { ExCSS.StyleRule srule = item as ExCSS.StyleRule; //.fa-glass:before string cleanName = srule.Value.Replace(".fa-", "").Replace(":before", "").Replace("-", "_"); foreach (var name in cleanName.Split(',')) { FontSymbol d = new FontSymbol(); d.Name = MakeCamelText(name); var decl = srule.Declarations.FirstOrDefault(A => A.Name.ToLower() == "content"); if (decl != null) { var term = decl.Term as ExCSS.PrimitiveTerm; if (term != null) { d.Hex = string.Format("{0:X}", (int)(term.Value as string)[0]); data.Symbols.Add(d); } } } } MakeJson(data, "fontawesome.json", false); Console.WriteLine("MAKE FontAwesome DONE."); } Console.Read(); }