Class: Kleene::NaiveOnlineRegex
- Inherits:
-
Object
- Object
- Kleene::NaiveOnlineRegex
- Defined in:
- lib/kleene/naive_online_regex.rb
Instance Method Summary collapse
-
#ingest(input, debug = false) ⇒ Object
#ingest(input) is the online-style matching interface.
-
#initialize(regexen, window_size = 100) ⇒ NaiveOnlineRegex
constructor
A new instance of NaiveOnlineRegex.
-
#matches ⇒ Object
Hash(Regexp, Set(MatchData)).
-
#matches_for(regex) ⇒ Object
Set(MatchData) | Nil.
- #reset ⇒ Object
- #resize_buffer! ⇒ Object
Constructor Details
#initialize(regexen, window_size = 100) ⇒ NaiveOnlineRegex
Returns a new instance of NaiveOnlineRegex.
7 8 9 10 11 12 |
# File 'lib/kleene/naive_online_regex.rb', line 7 def initialize(regexen, window_size = 100) @regexen = regexen @window_size = window_size reset end |
Instance Method Details
#ingest(input, debug = false) ⇒ Object
#ingest(input) is the online-style matching interface
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/kleene/naive_online_regex.rb', line 20 def ingest(input, debug = false) # : Set(OnlineMatch) @buffer << input new_online_matches = Set.new @regexen.each do |regex| existing_matches_for_regex = (@matches_per_regex[regex] ||= Set.new) scan_matches = @buffer.scan_matches(regex).to_set new_matches = scan_matches - existing_matches_for_regex # new_matches : Set(MatchData) existing_matches_for_regex.merge(new_matches) new_online_matches.merge(new_matches.map {|match_data| OnlineMatch.new(regex, match_data) }) end resize_buffer! new_online_matches end |
#matches ⇒ Object
Hash(Regexp, Set(MatchData))
34 35 36 |
# File 'lib/kleene/naive_online_regex.rb', line 34 def matches # Hash(Regexp, Set(MatchData)) @matches_per_regex end |
#matches_for(regex) ⇒ Object
Set(MatchData) | Nil
38 39 40 |
# File 'lib/kleene/naive_online_regex.rb', line 38 def matches_for(regex) # Set(MatchData) | Nil @matches_per_regex[regex] end |
#reset ⇒ Object
14 15 16 17 |
# File 'lib/kleene/naive_online_regex.rb', line 14 def reset @buffer = "" @matches_per_regex = Hash.new # Hash(Regexp, Set(MatchData)) end |
#resize_buffer! ⇒ Object
42 43 44 45 46 |
# File 'lib/kleene/naive_online_regex.rb', line 42 def resize_buffer! if @buffer.size > @window_size @buffer = @buffer[-@window_size..-1] end end |