org.jruby.RubyClass.getConstantNames()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(8.9k)|赞(0)|评价(0)|浏览(83)

本文整理了Java中org.jruby.RubyClass.getConstantNames方法的一些代码示例,展示了RubyClass.getConstantNames的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.getConstantNames方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称:RubyClass
方法名:getConstantNames

RubyClass.getConstantNames介绍

暂无

代码示例

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

private static void updateConstants(RubyObject receiver, BiVariableMap vars) {
  Collection<String> names = receiver.getMetaClass().getConstantNames();
  for (String name : names) {
    IRubyObject value = receiver.getMetaClass().getConstant(name);
    BiVariable var = null;
    List<String> savedNames = vars.getNames();
    // Need to check that this constant has been stored in BiVariableMap.
    for (int i=0; i<savedNames.size(); i++) {
      if (name.equals(savedNames.get(i))) {
        var = (BiVariable) vars.getVariables().get(i);
        if (receiver == var.getReceiver()) {
          var.setRubyObject(value);
        } else {
          var = null;
        }
      }
    }
    if (var == null) {
      var = new Constant(receiver, name, value);
      ((Constant) var).markInitialized();
      vars.update(name, var);
    }
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

private static void updateConstants(RubyObject receiver, BiVariableMap vars) {
  Collection<String> names = receiver.getMetaClass().getConstantNames();
  for (String name : names) {
    IRubyObject value = receiver.getMetaClass().getConstant(name);
    BiVariable var = null;
    List<String> savedNames = vars.getNames();
    // Need to check that this constant has been stored in BiVariableMap.
    for (int i=0; i<savedNames.size(); i++) {
      if (name.equals(savedNames.get(i))) {
        var = (BiVariable) vars.getVariables().get(i);
        if (receiver == var.getReceiver()) {
          var.setRubyObject(value);
        } else {
          var = null;
        }
      }
    }
    if (var == null) {
      var = new Constant(receiver, name, value);
      ((Constant) var).markInitialized();
      vars.update(name, var);
    }
  }
}

代码示例来源:origin: org.jruby/jruby-core

/**
   * Attempts to remove this constant from top self or receiver.
   *
   */
  @Override
  public void remove() {
    final Ruby runtime = getRuntime();
    final IRubyObject rubyName = JavaUtil.convertJavaToRuby(runtime, name);
    final RubyClass metaClass = receiver.getMetaClass();
    if (metaClass.getConstantNames().contains(name)) {
      metaClass.remove_const(runtime.getCurrentContext(), rubyName);
    }
    else if (getTopSelf().getMetaClass().getConstantNames().contains(name)) {
      getTopSelf().getMetaClass().remove_const(runtime.getCurrentContext(), rubyName);
    }
    else if (getTopSelf().getMetaClass().getSuperClass().getConstantNames().contains(name)) {
      getTopSelf().getMetaClass().getSuperClass().remove_const(runtime.getCurrentContext(), rubyName);
    }
  }
}

代码示例来源:origin: org.jruby/jruby-complete

/**
   * Attempts to remove this constant from top self or receiver.
   *
   */
  @Override
  public void remove() {
    final Ruby runtime = getRuntime();
    final IRubyObject rubyName = JavaUtil.convertJavaToRuby(runtime, name);
    final RubyClass metaClass = receiver.getMetaClass();
    if (metaClass.getConstantNames().contains(name)) {
      metaClass.remove_const(runtime.getCurrentContext(), rubyName);
    }
    else if (getTopSelf().getMetaClass().getConstantNames().contains(name)) {
      getTopSelf().getMetaClass().remove_const(runtime.getCurrentContext(), rubyName);
    }
    else if (getTopSelf().getMetaClass().getSuperClass().getConstantNames().contains(name)) {
      getTopSelf().getMetaClass().getSuperClass().remove_const(runtime.getCurrentContext(), rubyName);
    }
  }
}

代码示例来源:origin: org.jruby/jruby-complete

private static void updateConstants(final RubyObject receiver, final BiVariableMap vars) {
  final RubyClass klazz = receiver.getMetaClass();
  final Collection<String> constantNames = klazz.getConstantNames();
  for ( final String name : constantNames ) {
    final IRubyObject value = klazz.getConstant(name);
    final BiVariable var = vars.getVariable(receiver, name);
    if (var == null) {
      vars.update(name, new Constant(receiver, name, value));
    }
    else {
      var.setRubyObject(value);
    }
  }
}

代码示例来源:origin: org.jruby/jruby-core

private static void updateConstants(final RubyObject receiver, final BiVariableMap vars) {
  final RubyClass klazz = receiver.getMetaClass();
  final Collection<String> constantNames = klazz.getConstantNames();
  for ( final String name : constantNames ) {
    final IRubyObject value = klazz.getConstant(name);
    final BiVariable var = vars.getVariable(receiver, name);
    if (var == null) {
      vars.update(name, new Constant(receiver, name, value));
    }
    else {
      var.setRubyObject(value);
    }
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/**
   * Attempts to remove this constant from top self or receiver.
   *
   */
  public void remove() {
    IRubyObject rubyName = JavaUtil.convertJavaToRuby(receiver.getRuntime(), name);
    if (receiver.getMetaClass().getConstantNames().contains(name)) {
      receiver.getMetaClass().remove_const(receiver.getRuntime().getCurrentContext(), rubyName);
    } else if (receiver.getRuntime().getTopSelf().getMetaClass().getConstantNames().contains(name)) {
      receiver.getRuntime().getTopSelf().getMetaClass().remove_const(receiver.getRuntime().getCurrentContext(), rubyName);
    } else if (receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().getConstantNames().contains(name)) {
      receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().remove_const(receiver.getRuntime().getCurrentContext(), rubyName);
    }
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/**
   * Attempts to remove this constant from top self or receiver.
   *
   */
  public void remove() {
    IRubyObject rubyName = JavaUtil.convertJavaToRuby(receiver.getRuntime(), name);
    if (receiver.getMetaClass().getConstantNames().contains(name)) {
      receiver.getMetaClass().remove_const(receiver.getRuntime().getCurrentContext(), rubyName);
    } else if (receiver.getRuntime().getTopSelf().getMetaClass().getConstantNames().contains(name)) {
      receiver.getRuntime().getTopSelf().getMetaClass().remove_const(receiver.getRuntime().getCurrentContext(), rubyName);
    } else if (receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().getConstantNames().contains(name)) {
      receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().remove_const(receiver.getRuntime().getCurrentContext(), rubyName);
    }
  }
}

代码示例来源:origin: org.jruby/jruby-complete

if ( klazz.getConstantNames().contains(key) ) {
  value = klazz.getConstant(key);
else if (getTopSelf(receiver).getMetaClass().getConstantNames().contains(key)) {
  value = getTopSelf(receiver).getMetaClass().getConstant(key);
else if (getTopSelf(receiver).getMetaClass().getSuperClass().getConstantNames().contains(key)) {
  value = getTopSelf(receiver).getMetaClass().getSuperClass().getConstant(key);

代码示例来源:origin: org.jruby/jruby-core

if ( klazz.getConstantNames().contains(key) ) {
  value = klazz.getConstant(key);
else if (getTopSelf(receiver).getMetaClass().getConstantNames().contains(key)) {
  value = getTopSelf(receiver).getMetaClass().getConstant(key);
else if (getTopSelf(receiver).getMetaClass().getSuperClass().getConstantNames().contains(key)) {
  value = getTopSelf(receiver).getMetaClass().getSuperClass().getConstant(key);

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/**
 * Retrieves a constant by key from Ruby runtime after the evaluation.
 * This method is used when eager retrieval is off.
 *
 * @param receiver receiver object returned when a script is evaluated.
 * @param vars map to save retrieved instance variables.
 * @param key instace varible name
 */
public static void retrieveByKey(RubyObject receiver, BiVariableMap vars, String key) {
  // if the specified key doesn't exist, this method is called before the
  // evaluation. Don't update value in this case.
  IRubyObject value = null;
  if (receiver.getMetaClass().getConstantNames().contains(key)) {
    value = receiver.getMetaClass().getConstant(key);
  } else if (receiver.getRuntime().getTopSelf().getMetaClass().getConstantNames().contains(key)) {
    value = receiver.getRuntime().getTopSelf().getMetaClass().getConstant(key);
  } else if (receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().getConstantNames().contains(key)) {
    value = receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().getConstant(key);
  }
  if (value == null) return;
  // the specified key is found, so let's update
  BiVariable var = vars.getVariable(receiver, key);
  if (var != null) {
    var.setRubyObject(value);
  } else {
    var = new Constant(receiver, key, value);
    vars.update(key, var);
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/**
 * Retrieves a constant by key from Ruby runtime after the evaluation.
 * This method is used when eager retrieval is off.
 *
 * @param receiver receiver object returned when a script is evaluated.
 * @param vars map to save retrieved instance variables.
 * @param key instace varible name
 */
public static void retrieveByKey(RubyObject receiver, BiVariableMap vars, String key) {
  // if the specified key doesn't exist, this method is called before the
  // evaluation. Don't update value in this case.
  IRubyObject value = null;
  if (receiver.getMetaClass().getConstantNames().contains(key)) {
    value = receiver.getMetaClass().getConstant(key);
  } else if (receiver.getRuntime().getTopSelf().getMetaClass().getConstantNames().contains(key)) {
    value = receiver.getRuntime().getTopSelf().getMetaClass().getConstant(key);
  } else if (receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().getConstantNames().contains(key)) {
    value = receiver.getRuntime().getTopSelf().getMetaClass().getSuperClass().getConstant(key);
  }
  if (value == null) return;
  // the specified key is found, so let's update
  BiVariable var = vars.getVariable(receiver, key);
  if (var != null) {
    var.setRubyObject(value);
  } else {
    var = new Constant(receiver, key, value);
    vars.update(key, var);
  }
}

相关文章

微信公众号

最新文章

更多

RubyClass类方法