All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.sommeri.less4j.utils.debugonly.AdHocScopeChecker Maven / Gradle / Ivy

Go to download

Less language is an extension of css and less4j compiles it into regular css. It adds several dynamic features into css: variables, expressions, nested rules. Less4j is a port. The original compiler was written in JavaScript and is called less.js. The less language is mostly defined in less.js documentation/issues and by what less.js actually do. Links to less.js: * home page: http://lesscss.org/ * source code & issues: https://github.com/cloudhead/less.js

There is a newer version: 1.17.2
Show newest version
package com.github.sommeri.less4j.utils.debugonly;

import java.util.ArrayList;
import java.util.List;

import com.github.sommeri.less4j.core.compiler.scopes.FullMixinDefinition;
import com.github.sommeri.less4j.core.compiler.scopes.IScope;

//marked deprecated so I get a warning if it is referenced somewhere
@Deprecated
public class AdHocScopeChecker {

  public AdHocScopeChecker() {
  }

  public void validate(IScope scope) {
    check(scope);

    List childs = new ArrayList(scope.getChilds());
    for (IScope kid : childs) {
      validate(kid);
    }

  }

  private void check(IScope scope) {
    for (FullMixinDefinition mixinDefinition : scope.getAllMixins()) {
      IScope mixinScope = mixinDefinition.getScope();
      if (mixinScope == null)
        throw new IllegalStateException("double WTF: mixin definition without scope");
      
      if (mixinScope.getParent()!=scope && grandParent(mixinScope)!=scope)
        throw new IllegalStateException("WTF");
    }
  }

  private IScope grandParent(IScope mixinScope) {
    if (!mixinScope.hasParent())
      return null;
    
    return mixinScope.getParent().getParent();
  }

 }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy