Пример #1
0
        public override Node VisitStylesheet([NotNull] StylesheetContext context)
        {
            var stylesheet = new StylesheetNode(context.Start, context.LABEL().GetText());

            foreach (PageContext page in context.page())
            {
                stylesheet.AddChild(Visit(page));
            }

            return(stylesheet);
        }
Пример #2
0
        public static QLSNode Parse(string style)
        {
            AntlrInputStream  inputStream       = new AntlrInputStream(style);
            QLSGrammarLexer   QLSLexer          = new QLSGrammarLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(QLSLexer);
            QLSGrammarParser  QLSParser         = new QLSGrammarParser(commonTokenStream);

            StylesheetContext context = QLSParser.stylesheet();
            StylesheetVisitor visitor = new StylesheetVisitor();

            return(visitor.VisitStylesheet(context));
        }
Пример #3
0
        public void ToEdit(IValueProvider valueProvider)
        {
            var htmlFiles            = valueProvider.GetFiles(Entities.FileType.Html);
            List <FileContext> files = new List <FileContext>();

            var searcher = new HtmlStyleFilesSearcher();

            foreach (var item in htmlFiles)
            {
                var list = searcher.Search(item.Tree);
                files.AddRange(list);
            }

            var uniqFiles = files.Distinct();

            File commonFile = new File();

            commonFile.FileName   = IO.Path.GetRandomFileName() + ".css";
            commonFile.SearchName = commonFile.FileName;
            commonFile.Type       = FileType.Css;

            StylesheetContext context = new StylesheetContext(null, 0);

            foreach (var item in uniqFiles)
            {
                var style   = item.File.Tree as StylesheetContext;
                var nesteds = style.nestedStatement();
                foreach (var nested in nesteds)
                {
                    nested.parent = context;
                    context.AddChild(nested);
                }
                valueProvider.RemoveFile(item.File.FileName);
            }

            commonFile.Tree = context;

            valueProvider.AddFile(commonFile);

            HtmlAddStyleEditor htmlAddStyle = new HtmlAddStyleEditor();

            foreach (var item in htmlFiles)
            {
                htmlAddStyle.Add(item.Tree, new File[] { commonFile });
            }

            foreach (var item in files)
            {
                item.Context.Remove();
            }
        }
Пример #4
0
        public override QLSNode VisitStylesheet(StylesheetContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("Context can't be null.");
            }

            string id      = context.ID().GetText();
            var    styles  = VisitDefaults(context.defaults());
            var    qlsNode = new QLSStructuralNode(Location.FromContext(context), QLSNodeType.Stylesheet, id, styles);

            foreach (PageContext pageContext in context.page())
            {
                qlsNode.AddNode(VisitPage(pageContext));
            }

            return(qlsNode);
        }
Пример #5
0
		public void Parse(string value, StylesheetContext context)
		{
		    _css = value;
		    _context = context;

			char[] data = value.ToCharArray();
			int cs;
			int eof = data.Length;
			
			int pe = eof;
			
			
/* #line 2 "../ExCSS/Parser.generated.cs" */
	{
	cs = selector_start;
	}

/* #line 45 "Parser.rl" */
			
/* #line 5 "../ExCSS/Parser.generated.cs" */
	{
	sbyte _klen;
	short _trans;
	short _keys;

	if ( p == pe )
		goto _test_eof;
	if ( cs == 0 )
		goto _out;
_resume:
	_keys = _selector_key_offsets[cs];
	_trans = (short)_selector_index_offsets[cs];

	_klen = _selector_single_lengths[cs];
	if ( _klen > 0 ) {
		short _lower = _keys;
		short _mid;
		short _upper = (short) (_keys + _klen - 1);
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = (short) (_lower + ((_upper-_lower) >> 1));
			if ( data[p] < _selector_trans_keys[_mid] )
				_upper = (short) (_mid - 1);
			else if ( data[p] > _selector_trans_keys[_mid] )
				_lower = (short) (_mid + 1);
			else {
				_trans += (short) (_mid - _keys);
				goto _match;
			}
		}
		_keys += (short) _klen;
		_trans += (short) _klen;
	}

	_klen = _selector_range_lengths[cs];
	if ( _klen > 0 ) {
		short _lower = _keys;
		short _mid;
		short _upper = (short) (_keys + (_klen<<1) - 2);
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = (short) (_lower + (((_upper-_lower) >> 1) & ~1));
			if ( data[p] < _selector_trans_keys[_mid] )
				_upper = (short) (_mid - 2);
			else if ( data[p] > _selector_trans_keys[_mid+1] )
				_lower = (short) (_mid + 2);
			else {
				_trans += (short)((_mid - _keys)>>1);
				goto _match;
			}
		}
		_trans += (short) _klen;
	}

_match:
	cs = _selector_trans_targs[_trans];

	if ( cs == 0 )
		goto _out;
	if ( ++p != pe )
		goto _resume;
	_test_eof: {}
	_out: {}
	}

/* #line 46 "Parser.rl" */
		}