コード例 #1
0
ファイル: RangeNodes.java プロジェクト: eregon/jruby
    @Specialization
    public RubyString toS(VirtualFrame frame, RubyRange.ObjectRange range) {
      notDesignedForCompilation();

      // TODO(CS): cast?
      final RubyString begin = (RubyString) toS.call(frame, range.getBegin(), "to_s", null);
      final RubyString end = (RubyString) toS.call(frame, range.getBegin(), "to_s", null);

      return getContext().makeString(begin + (range.doesExcludeEnd() ? "..." : "..") + end);
    }
コード例 #2
0
ファイル: RangeNodes.java プロジェクト: eregon/jruby
    @Specialization
    public boolean include(VirtualFrame frame, RubyRange.ObjectRange range, Object value) {
      notDesignedForCompilation();

      if (callLess.callBoolean(frame, value, "<", null, range.getBegin())) {
        return false;
      }

      if (range.doesExcludeEnd()) {
        if (callGreaterEqual.callBoolean(frame, value, ">=", null, range.getEnd())) {
          return false;
        }
      } else {
        if (callGreater.callBoolean(frame, value, ">", null, range.getEnd())) {
          return false;
        }
      }

      return true;
    }
コード例 #3
0
ファイル: RangeNodes.java プロジェクト: eregon/jruby
    @Specialization
    public boolean equal(VirtualFrame frame, RubyRange.ObjectRange a, RubyRange.ObjectRange b) {
      notDesignedForCompilation();

      return a.doesExcludeEnd() == b.doesExcludeEnd()
          && equal(frame, a.getBegin(), b.getBegin())
          && equal(frame, a.getEnd(), b.getEnd());
    }
コード例 #4
0
ファイル: RangeNodes.java プロジェクト: eregon/jruby
 @Specialization
 public Object last(RubyRange.ObjectRange range) {
   return range.getEnd();
 }
コード例 #5
0
ファイル: RangeNodes.java プロジェクト: eregon/jruby
 @Specialization
 public RubyRange.ObjectRange initialize(
     RubyRange.ObjectRange range, Object begin, Object end, boolean excludeEnd) {
   range.initialize(begin, end, excludeEnd);
   return range;
 }
コード例 #6
0
ファイル: RangeNodes.java プロジェクト: eregon/jruby
 @Specialization
 public Object each(RubyRange.ObjectRange range) {
   return range.getBegin();
 }