Package ch.njol.skript.log

Examples of ch.njol.skript.log.ParseLogHandler


  public boolean init(final Expression<?>[] exprs, final int matchedPattern, final Kleenean isDelayed, final ParseResult parser) {
    containers = exprs[0].getConvertedExpression(Object.class);
    if (containers == null)
      return false;
    if (!(containers instanceof Variable) && !String.class.isAssignableFrom(containers.getReturnType()) && !Inventory.class.isAssignableFrom(containers.getReturnType())) {
      final ParseLogHandler h = SkriptLogger.startParseLogHandler();
      try {
        Expression<?> c = containers.getConvertedExpression(String.class);
        if (c == null)
          c = containers.getConvertedExpression(Inventory.class);
        if (c == null) {
          h.printError();
          return false;
        }
        containers = c;
        h.printLog();
      } finally {
        h.stop();
      }
    }
    items = exprs[1].getConvertedExpression(Object.class);
    if (items == null)
      return false;
View Full Code Here


                continue;
              }
              if (Variables.getVariable(name, null, false) != null)
                continue;
              Object o;
              final ParseLogHandler log = SkriptLogger.startParseLogHandler();
              try {
                o = Classes.parseSimple(((EntryNode) n).getValue(), Object.class, ParseContext.SCRIPT);
                if (o == null) {
                  log.printError("Can't understand the value '" + ((EntryNode) n).getValue() + "'");
                  continue;
                }
                log.printLog();
              } finally {
                log.stop();
              }
              @SuppressWarnings("null")
              final ClassInfo<?> ci = Classes.getSuperClassInfo(o.getClass());
              if (ci.getSerializer() == null) {
                Skript.error("Can't save '" + ((EntryNode) n).getValue() + "' in a variable");
View Full Code Here

  }
 
  boolean execute2(final CommandSender sender, final String commandLabel, final String rest) {
    final ScriptCommandEvent event = new ScriptCommandEvent(ScriptCommand.this, sender);
   
    final ParseLogHandler log = SkriptLogger.startParseLogHandler();
    try {
      final boolean ok = SkriptParser.parseArguments(rest, ScriptCommand.this, event);
      if (!ok) {
        final LogEntry e = log.getError();
        if (e != null)
          sender.sendMessage(ChatColor.DARK_RED + e.getMessage());
        sender.sendMessage(Commands.m_correct_usage + " " + usage);
        log.clear();
        log.printLog();
        return false;
      }
      log.clear();
      log.printLog();
    } finally {
      log.stop();
    }
   
    if (Skript.log(Verbosity.VERY_HIGH))
      Skript.info("# /" + name + " " + rest);
    final long startTrigger = System.nanoTime();
View Full Code Here

  @Nullable
  protected Object[] get(final Event e) {
    final String t = text.getSingle(e);
    if (t == null)
      return null;
    final ParseLogHandler h = SkriptLogger.startParseLogHandler();
    try {
      if (c != null) {
        final Parser<?> p = c.getParser();
        assert p != null; // checked in init()
        final Object o = p.parse(t, ParseContext.COMMAND);
        if (o != null) {
          final Object[] one = (Object[]) Array.newInstance(c.getC(), 1);
          one[0] = o;
          return one;
        }
      } else {
        assert pattern != null && plurals != null;
        final ParseResult r = SkriptParser.parse(t, pattern);
        if (r != null) {
          assert plurals.length == r.exprs.length;
          final Object[] os = new Object[r.exprs.length];
          for (int i = 0; i < os.length; i++)
            os[i] = plurals[i] ? r.exprs[i].getArray(null) : r.exprs[i].getSingle(null);
          return os;
        }
      }
      final LogEntry err = h.getError();
      lastError = err != null ? err.getMessage() : null;
      return null;
    } finally {
      h.clear();
      h.printLog();
    }
  }
View Full Code Here

   * @param c
   * @return The parsed object
   */
  @Nullable
  public static <T> T parseSimple(final String s, final Class<T> c, final ParseContext context) {
    final ParseLogHandler log = SkriptLogger.startParseLogHandler();
    try {
      for (final ClassInfo<?> info : getClassInfos()) {
        final Parser<?> parser = info.getParser();
        if (parser == null || !parser.canParse(context) || !c.isAssignableFrom(info.getC()))
          continue;
        log.clear();
        final T t = (T) parser.parse(s, context);
        if (t != null) {
          log.printLog();
          return t;
        }
      }
      log.printError();
    } finally {
      log.stop();
    }
    return null;
  }
View Full Code Here

   * @return The parsed object
   */
  @SuppressWarnings({"rawtypes", "unchecked"})
  @Nullable
  public static <T> T parse(final String s, final Class<T> c, final ParseContext context) {
    final ParseLogHandler log = SkriptLogger.startParseLogHandler();
    try {
      T t = parseSimple(s, c, context);
      if (t != null) {
        log.printLog();
        return t;
      }
      for (final ConverterInfo<?, ?> conv : Converters.getConverters()) {
        if (context == ParseContext.COMMAND && (conv.options & Converter.NO_COMMAND_ARGUMENTS) != 0)
          continue;
        if (c.isAssignableFrom(conv.to)) {
          log.clear();
          final Object o = parseSimple(s, conv.from, context);
          if (o != null) {
            t = (T) ((Converter) conv.converter).convert(o);
            if (t != null) {
              log.printLog();
              return t;
            }
          }
        }
      }
      log.printError();
    } finally {
      log.stop();
    }
    return null;
  }
View Full Code Here

 
  @Nullable
  public <R> Literal<? extends R> getConvertedExpression(final ParseContext context, final Class<? extends R>... to) {
    assert to != null && to.length > 0;
    assert to.length == 1 || !CollectionUtils.contains(to, Object.class);
    final ParseLogHandler log = SkriptLogger.startParseLogHandler();
    try {
      for (final Class<? extends R> t : to) {
        assert t != null;
        final R r = Classes.parse(data, t, context);
        if (r != null) {
          log.printLog();
          return new SimpleLiteral<R>(r, false);
        }
        log.clear();
      }
      if (error != null) {
        log.printLog();
        SkriptLogger.log(error);
      } else {
        log.printError();
      }
      return null;
    } finally {
      log.stop();
    }
   
    // V2
//    if (to[0] != Object.class) {
//      return (Literal<? extends R>) SkriptParser.parseExpression(data, new Converter<String, Literal<? extends R>>() {
View Full Code Here

    final boolean allSingle = Arrays.equals(rs, rs2);
   
    Expression<?> ch = changer;
    if (ch != null) {
      Expression<?> v = null;
      final ParseLogHandler log = SkriptLogger.startParseLogHandler();
      try {
        for (final Class<?> r : rs) {
          log.clear();
          if ((r.isArray() ? r.getComponentType() : r).isAssignableFrom(ch.getReturnType())) {
            v = ch.getConvertedExpression(Object.class);
            break; // break even if v == null as it won't convert to Object apparently
          }
        }
        if (v == null)
          v = ch.getConvertedExpression((Class<Object>[]) rs2);
        if (v == null) {
          if (log.hasError()) {
            log.printError();
            return false;
          }
          log.clear();
          log.printLog();
          final Class<?>[] r = new Class[rs.length];
          for (int i = 0; i < rs.length; i++)
            r[i] = rs[i].isArray() ? rs[i].getComponentType() : rs[i];
          if (rs.length == 1 && rs[0] == Object.class)
            Skript.error("Can't understand this expression: " + changer, ErrorQuality.NOT_AN_EXPRESSION);
          else if (mode == ChangeMode.SET)
            Skript.error(what + " can't be set to " + changer + " because the latter is " + SkriptParser.notOfType(r), ErrorQuality.SEMANTIC_ERROR);
          else
            Skript.error(changer + " can't be " + (mode == ChangeMode.ADD ? "added to" : "removed from") + " " + what + " because the former is " + SkriptParser.notOfType(r), ErrorQuality.SEMANTIC_ERROR);
          return false;
        }
        log.printLog();
      } finally {
        log.stop();
      }
     
      Class<?> x = Utils.getSuperType(rs2);
      single = allSingle;
      for (int i = 0; i < rs.length; i++) {
View Full Code Here

  }
 
  @SuppressWarnings({"rawtypes", "unchecked", "null"})
  @Nullable
  public static Effect parse(final String s, final @Nullable String defaultError) {
    final ParseLogHandler log = SkriptLogger.startParseLogHandler();
    try {
      final EffFunctionCall f = EffFunctionCall.parse(s);
      if (f != null) {
        log.printLog();
        return f;
      } else if (log.hasError()) {
        log.printError();
        return null;
      } else {
        log.printError();
      }
    } finally {
      log.stop();
    }
    return (Effect) SkriptParser.parse(s, (Iterator) Skript.getEffects().iterator(), defaultError);
  }
View Full Code Here

    int end, i2;
   
    while (j < pattern.length()) {
      switch (pattern.charAt(j)) {
        case '[': {
          final ParseLogHandler log = SkriptLogger.startParseLogHandler();
          try {
            res = parse_i(pattern, i, j + 1);
            if (res != null) {
              log.printLog();
              return res;
            }
            log.clear();
            j = nextBracket(pattern, ']', '[', j + 1, true) + 1;
            res = parse_i(pattern, i, j);
            if (res == null)
              log.printError();
            else
              log.printLog();
            return res;
          } finally {
            log.stop();
          }
        }
        case '(': {
          final ParseLogHandler log = SkriptLogger.startParseLogHandler();
          try {
            final int start = j;
            for (; j < pattern.length(); j++) {
              log.clear();
              if (j == start || pattern.charAt(j) == '|') {
                int mark = 0;
                if (j != pattern.length() - 1 && ('0' <= pattern.charAt(j + 1) && pattern.charAt(j + 1) <= '9' || pattern.charAt(j + 1) == '-')) {
                  final int j2 = pattern.indexOf('¦', j + 2);
                  if (j2 != -1) {
                    try {
                      mark = Integer.parseInt(pattern.substring(j + 1, j2));
                      j = j2;
                    } catch (final NumberFormatException e) {}
                  }
                }
                res = parse_i(pattern, i, j + 1);
                if (res != null) {
                  log.printLog();
                  res.mark ^= mark; // doesn't do anything if no mark was set as x ^ 0 == x
                  return res;
                }
              } else if (pattern.charAt(j) == '(') {
                j = nextBracket(pattern, ')', '(', j + 1, true);
              } else if (pattern.charAt(j) == ')') {
                break;
              } else if (j == pattern.length() - 1) {
                throw new MalformedPatternException(pattern, "Missing closing bracket ')'");
              }
            }
            log.printError();
            return null;
          } finally {
            log.stop();
          }
        }
        case '%': {
          if (i == expr.length())
            return null;
          end = pattern.indexOf('%', j + 1);
          if (end == -1)
            throw new MalformedPatternException(pattern, "Odd number of '%'");
          final String name = "" + pattern.substring(j + 1, end);
          final ExprInfo vi = getExprInfo(name);
          if (end == pattern.length() - 1) {
            i2 = expr.length();
          } else {
            i2 = next(expr, i, context);
            if (i2 == -1)
              return null;
          }
          final ParseLogHandler log = SkriptLogger.startParseLogHandler();
          try {
            for (; i2 != -1; i2 = next(expr, i2, context)) {
              log.clear();
              res = parse_i(pattern, i2, end + 1);
              if (res != null) {
                final ParseLogHandler log2 = SkriptLogger.startParseLogHandler();
                try {
                  for (int k = 0; k < vi.classes.length; k++) {
                    if ((flags & vi.flagMask) == 0)
                      continue;
                    log2.clear();
                    @SuppressWarnings("unchecked")
                    final Expression<?> e = new SkriptParser("" + expr.substring(i, i2), flags & vi.flagMask, context).parseExpression(vi.classes[k].getC());
                    if (e != null) {
                      if (!vi.isPlural[k] && !e.isSingle()) {
                        if (context == ParseContext.COMMAND) {
                          Skript.error(Commands.m_too_many_arguments.toString(vi.classes[k].getName().getIndefiniteArticle(), vi.classes[k].getName().toString()), ErrorQuality.SEMANTIC_ERROR);
                          return null;
                        } else {
                          Skript.error("'" + expr.substring(0, i) + "<...>" + expr.substring(i2) + "' can only accept a single " + vi.classes[k].getName() + ", not more", ErrorQuality.SEMANTIC_ERROR);
                          return null;
                        }
                      }
                      if (vi.time != 0) {
                        if (e instanceof Literal<?>)
                          return null;
                        if (ScriptLoader.hasDelayBefore == Kleenean.TRUE) {
                          Skript.error("Cannot use time states after the event has already passed", ErrorQuality.SEMANTIC_ERROR);
                          return null;
                        }
                        if (!e.setTime(vi.time)) {
                          Skript.error(e + " does not have a " + (vi.time == -1 ? "past" : "future") + " state", ErrorQuality.SEMANTIC_ERROR);
                          return null;
                        }
                      }
                      log2.printLog();
                      log.printLog();
                      res.exprs[countUnescaped(pattern, '%', 0, j) / 2] = e;
                      return res;
                    }
                  }
                  // results in useless errors most of the time
//                  Skript.error("'" + expr.substring(i, i2) + "' is " + notOfType(vi.classes), ErrorQuality.NOT_AN_EXPRESSION);
                  return null;
                } finally {
                  log2.printError();
                }
              }
            }
          } finally {
            if (!log.isStopped())
              log.printError();
          }
          return null;
        }
        case '<': {
          end = pattern.indexOf('>', j + 1);// not next()
          if (end == -1)
            throw new MalformedPatternException(pattern, "Missing closing regex bracket '>'");
          Pattern p;
          try {
            p = Pattern.compile(pattern.substring(j + 1, end));
          } catch (final PatternSyntaxException e) {
            throw new MalformedPatternException(pattern, "Invalid regex <" + pattern.substring(j + 1, end) + ">", e);
          }
          final ParseLogHandler log = SkriptLogger.startParseLogHandler();
          try {
            final Matcher m = p.matcher(expr);
            for (i2 = next(expr, i, context); i2 != -1; i2 = next(expr, i2, context)) {
              log.clear();
              m.region(i, i2);
              if (m.matches()) {
                res = parse_i(pattern, i2, end + 1);
                if (res != null) {
                  res.regexes.add(0, m.toMatchResult());
                  log.printLog();
                  return res;
                }
              }
            }
            log.printError(null);
            return null;
          } finally {
            log.stop();
          }
        }
        case ']':
        case ')':
          j++;
View Full Code Here

TOP

Related Classes of ch.njol.skript.log.ParseLogHandler

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.