Package com.github.sommeri.less4j.core.ast

Examples of com.github.sommeri.less4j.core.ast.SimpleSelector


    SelectorPart lastPart = selector.getLastPart();
    if (lastPart == null || !(lastPart instanceof SimpleSelector))
      return new Extend(token, selector);

    SimpleSelector possibleAll = (SimpleSelector) lastPart;
    if (possibleAll.hasSubsequent() || !possibleAll.hasElement())
      return new Extend(token, selector);

    if (!EXTEND_ALL_KEYWORD.equals(possibleAll.getElementName().getName()))
      return new Extend(token, selector);

    if (AstLogic.hasNonSpaceCombinator(possibleAll)) {
      possibleAll.setElementName(null);
    } else {
      selector.getParts().remove(possibleAll);
    }
    return new Extend(token, selector, true);
  }
View Full Code Here


    return new NestedSelectorAppender(token, directlyBefore, directlyAfter, null);
  }

  public ASTCssNode handleSimpleSelector(HiddenTokenAwareTree token) {
    SimpleSelector result = null;
    token.pushHiddenToKids();
    Iterator<HiddenTokenAwareTree> iterator = token.getChildren().iterator();
    HiddenTokenAwareTree kid = iterator.next();
    if (kid.getType() == LessLexer.ELEMENT_NAME) {
      List<HiddenTokenAwareTree> elementNameParts = kid.getChildren();
      InterpolableName interpolableName = toInterpolableName(kid, elementNameParts);
      result = new SimpleSelector(kid, null, interpolableName, isStarElementName(elementNameParts));
      if (!iterator.hasNext())
        return result;
      kid = iterator.next();
    } else {
      result = new SimpleSelector(kid, null, null, true);
      result.setEmptyForm(true);
    }

    addSubsequent(result, kid);
    while (iterator.hasNext()) {
      kid = iterator.next();
View Full Code Here

      Expression replacement = expressionEvaluator.evaluate((EmbeddedScript) node);
      manipulator.replaceAndSynchronizeSilentness(node, replacement);
      return true;
    }
    case ESCAPED_SELECTOR: {
      SimpleSelector replacement = interpolateEscapedSelector((EscapedSelector) node, expressionEvaluator);
      manipulator.replaceAndSynchronizeSilentness(node, replacement);
      return true;
    }
    case FIXED_NAME_PART: {
      FixedNamePart part = (FixedNamePart) node;
View Full Code Here

  private SimpleSelector interpolateEscapedSelector(EscapedSelector input, ExpressionEvaluator expressionEvaluator) {
    HiddenTokenAwareTree underlying = input.getUnderlyingStructure();
    String value = stringInterpolator.replaceIn(input.getValue(), expressionEvaluator, input.getUnderlyingStructure());
    InterpolableName interpolableName = new InterpolableName(underlying, new FixedNamePart(underlying, value));
    return new SimpleSelector(input.getUnderlyingStructure(), input.getLeadingCombinator(), interpolableName, false);
  }
View Full Code Here

  public SelectorPart cutSuffix(SelectorPart lookFor, SelectorPart inside) {
    validateSimpleSelector(lookFor);
    validateSimpleSelector(inside);

    SimpleSelector remainder = simpleSelectorComparator.cutSuffix((SimpleSelector) lookFor, (SimpleSelector) inside);
    return remainder;
  }
View Full Code Here

  public SelectorPart cutPrefix(SelectorPart lookFor, SelectorPart inside) {
    validateSimpleSelector(lookFor);
    validateSimpleSelector(inside);

    SimpleSelector remainder = simpleSelectorComparator.cutPrefix((SimpleSelector) lookFor, (SimpleSelector) inside);
    return remainder;
  }
View Full Code Here

      selector.getHead().setParent(null);
      selector.removeHead();
    }
   
    if (selector.isEmpty()) {
      SimpleSelector empty = createEmptySimpleSelector(selector);
      selector.addPart(empty);
    }
    return selector;
  }
View Full Code Here

    }
    return selector;
  }

  private SimpleSelector createEmptySimpleSelector(ASTCssNode underlyingStructureSource) {
    SimpleSelector empty = new SimpleSelector(underlyingStructureSource.getUnderlyingStructure(), null, null, true);
    empty.setEmptyForm(true);
    return empty;
  }
View Full Code Here

    SelectorPart head = selector.getHead();
    if (head.getType() != ASTCssNodeType.SIMPLE_SELECTOR)
      return false;

    SimpleSelector simpleHead = (SimpleSelector) head;
    if (!simpleHead.isEmptyForm() || !simpleHead.isStar()) {
      return false;
    }

    if (simpleHead.hasSubsequent())
      return false;

    return true;
  }
View Full Code Here

      return null;
    }
    // lookFor starts with an element - element and subsequents are to be eaten, combinator is there to stay
    SelectorCombinator combinator = inside.hasLeadingCombinator() ? inside.getLeadingCombinator().clone() : null;
    if (hasElement) {
      SimpleSelector result = createNoElementSelector(inside.getUnderlyingStructure(), combinator);
      return result;

    }
    // only some subsequents are to be eaten
    //find matches
    List<ElementSubsequent> lfSubsequent = cutOff.getSubsequent();
    List<ElementSubsequent> insideSubsequent = inside.getSubsequent();
    MatchMarker<ElementSubsequent> match = listsComparator.suffixMatches(lfSubsequent, insideSubsequent, elementSubsequentComparator);
    SimpleSelector result = removeMatch(inside, insideSubsequent, match);
    //check if the whole thing was eaten up - we know that subsequent elements are always compared in whole
    return isEmpty(result) ? null : result;
  }
View Full Code Here

TOP

Related Classes of com.github.sommeri.less4j.core.ast.SimpleSelector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.