Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CSSParser
- {
- const string CSSComments = @"(?<!"")\/\*.+?\*\/(?!"")";
- const string CSSGroups = @"(?<selector>(?:(?:[^,{]+),?)*?)\{(?:(?<name>[^}:]+):?(?<value>[^};]+);?)*?\}";
- //return the contents of a single css file, broken up into classes
- public static CSSData ReadCSS(string cssPath)
- {
- string cssString = File.ReadAllText("Assets/Resources/OEBPS/"+cssPath);
- cssString = Regex.Replace(cssString, CSSComments, "");
- Regex rStyles = new Regex(CSSGroups, RegexOptions.IgnoreCase);
- char[] whiteSpace = {'\r','\n','\f','\t','\v'};
- MatchCollection MatchList = rStyles.Matches(cssString);
- CSSData CSS = new CSSData();
- CSS.Path = cssPath;
- foreach(Match item in MatchList)
- {
- if (item != null && item.Groups != null && item.Groups["selector"] != null && item.Groups["selector"].Captures != null &&
- item.Groups["selector"].Captures[0] != null && !string.IsNullOrEmpty(item.Groups["selector"].Value))
- {
- string Selector = item.Groups["selector"].Captures[0].Value.Trim();
- List<KeyValuePair<string, string>> Style = new List<KeyValuePair<string, string>>();
- for(int i = 0; i < item.Groups["name"].Captures.Count; i++)
- {
- string Class = item.Groups["name"].Captures[i].Value;
- string Value = item.Groups["value"].Captures[i].Value;
- if (!string.IsNullOrEmpty(Class) && !string.IsNullOrEmpty(Value))
- {
- Class = Class.Trim(whiteSpace).Trim(); //trim regular spaces plus \n etc.
- Value = Value.Trim(whiteSpace).Trim();
- if (!string.IsNullOrEmpty(Class) && !string.IsNullOrEmpty(Value))
- Style.Add(new KeyValuePair<string, string>(Class, Value));
- }
- }
- CSS.CSS.Add(new KeyValuePair<string, List<KeyValuePair<string, string>>>(Selector,Style));
- }
- }
- return CSS;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement