Sha256: 9437a776b65d423328577e9085a234847ab8f97f2f2592b85f37c572fd83d787

Contents?: true

Size: 1.99 KB

Versions: 19

Compression:

Stored size: 1.99 KB

Contents

package com.benlangfeld.ruby_speech;

import org.jruby.Ruby;
import org.jruby.RubyClass;
import org.jruby.RubyModule;
import org.jruby.RubyObject;
import org.jruby.anno.JRubyClass;
import org.jruby.anno.JRubyMethod;
import org.jruby.runtime.ObjectAllocator;
import org.jruby.runtime.ThreadContext;
import org.jruby.runtime.Visibility;
import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.javasupport.util.RuntimeHelpers;

import java.util.regex.*;

@JRubyClass(name="RubySpeech::GRXML::Matcher")
public class RubySpeechGRXMLMatcher extends RubyObject {

  Pattern p;

  public RubySpeechGRXMLMatcher(final Ruby runtime, RubyClass rubyClass) {
    super(runtime, rubyClass);
  }

  @JRubyMethod(visibility=Visibility.PRIVATE)
  public IRubyObject compile_regex(ThreadContext context, IRubyObject regex) {
    Ruby runtime = context.getRuntime();
    p = Pattern.compile(regex.toString());
    return runtime.getNil();
  }

  @JRubyMethod(visibility=Visibility.PUBLIC)
  public IRubyObject find_match(ThreadContext context, IRubyObject buffer)
  {
    Ruby runtime = context.getRuntime();
    String string_buffer = buffer.toString();
    Matcher m = p.matcher(string_buffer);

    if (m.matches()) {
      if (is_max_match(string_buffer)) {
        return RuntimeHelpers.invoke(context, this, "match_for_buffer", buffer, runtime.getTrue());
      }
      return callMethod(context, "match_for_buffer", buffer);
    } else if (m.hitEnd()) {
      RubyModule potential_match = runtime.getClassFromPath("RubySpeech::GRXML::PotentialMatch");
      return potential_match.callMethod(context, "new");
    }
    RubyModule nomatch = runtime.getClassFromPath("RubySpeech::GRXML::NoMatch");
    return nomatch.callMethod(context, "new");
  }

  public Boolean is_max_match(String buffer)
  {
    String search_set = "0123456789#*ABCD";
    for (int i = 0; i < 16; i++) {
      String new_buffer = buffer + search_set.charAt(i);
      Matcher m = p.matcher(new_buffer);
      if (m.matches()) return false;
    }
    return true;
  }

}

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
ruby_speech-2.3.2-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.3.2 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.3.1-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.3.1 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.3.0-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.3.0 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.2.2-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.2.2 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.2.1-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.2.1 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.2.0-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.2.0 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.1.2-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.1.2 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.1.1-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.1.1 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.1.0-java ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.1.0 ext/ruby_speech/RubySpeechGRXMLMatcher.java
ruby_speech-2.0.2 ext/ruby_speech/RubySpeechGRXMLMatcher.java