class J2119::Oxford
We have to recognize lots of lists like so:
X X or X X, X, or X
Examples: one of “Foo”, “Bar”, or “Baz” a Token1, a Token2, or a Token3
Constants
- BASIC
Public Class Methods
break_role_list(matcher, list)
click to toggle source
# File lib/j2119/oxford.rb, line 52 def self.break_role_list(matcher, list) pieces = [] re = Regexp.compile "^an?\\s+(#{matcher.role_matcher})(,\\s+)?" while list =~ re pieces << $1 list = $' end if list =~ /^\s*(and|or)\s+an?\s+(#{matcher.role_matcher})/ pieces << $2 end pieces end
break_string_list(list)
click to toggle source
# File lib/j2119/oxford.rb, line 42 def self.break_string_list list pieces = [] re = Regexp.compile "^[^\"]*\"([^\"]*)\"" while list =~ re pieces << $1 list = $' end pieces end
re(particle, opts = {})
click to toggle source
# File lib/j2119/oxford.rb, line 26 def self.re(particle, opts = {}) has_capture, inter, has_connector, last = BASIC.split 'X' has_connector.gsub!('or', opts[:connector]) if opts[:connector] if opts[:use_article] particle = "an?\\s+(#{particle})" else particle = "(#{particle})" end if opts[:capture_name] has_capture.gsub!('CAPTURE', opts[:capture_name]) else has_capture.gsub!('?<CAPTURE>', '') end [ has_capture, inter, has_connector, last].join(particle) end