content: package com.antfortune.freeline.idea.utils;
  
  import com.google.common.base.Predicate;
  import com.google.common.collect.Iterables;
  import org.jetbrains.annotations.NotNull;
  import org.jetbrains.annotations.Nullable;
  import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
  import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
  import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall;
  import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner;
  
  import java.util.Arrays;
  import java.util.Iterator;
  
  /**
   * Created by pengwei on 2016/10/31.
   */
  public class GroovyFileUil {
  
      /**
       * 获取最后一个插件的表达式
       *
       * @param buildScript
       * @return
       */
      public static GrExpression getLastPlugin(GroovyFile buildScript) {
          Iterator var2 = getMethodCalls(buildScript, "apply").iterator();
          GrExpression expression = null;
          while (var2.hasNext()) {
              GrMethodCall methodCall = (GrMethodCall) var2.next();
              expression = methodCall.getInvokedExpression();
          }
          return expression;
      }
  
      public static Iterable<GrMethodCall> getMethodCalls(@NotNull GrStatementOwner parent) {
          return Iterables.filter(Arrays.asList(parent.getStatements()), GrMethodCall.class);
      }
  
      public static Iterable<GrMethodCall> getMethodCalls(@NotNull GrStatementOwner parent, @NotNull final String methodName) {
          return Iterables.filter(getMethodCalls(parent), new Predicate<GrMethodCall>() {
              public boolean apply(@Nullable GrMethodCall input) {
                  return input != null && methodName.equals(getMethodCallName(input));
              }
          });
      }
  
      public static String getMethodCallName(@NotNull GrMethodCall gmc) {
          GrExpression expression = gmc.getInvokedExpression();
          return expression.getText() != null ? expression.getText() : "";
      }
  
  }
  