lib/regexp-examples/backreferences.rb in regexp-examples-0.3.2 vs lib/regexp-examples/backreferences.rb in regexp-examples-0.4.0

- old
+ new

@@ -1,20 +1,26 @@ module RegexpExamples class BackReferenceReplacer def substitute_backreferences(full_examples) full_examples.map do |full_example| - while full_example.match(/__(\w+?)__/) - full_example.sub!(/__(\w+?)__/, find_backref_for(full_example, $1)) + begin + while full_example.match(/__(\w+?)__/) + full_example.sub!(/__(\w+?)__/, find_backref_for(full_example, $1)) + end + full_example + rescue RegexpExamples::BackrefNotFound + # For instance, one "full example" from /(a|(b)) \2/: "a __2__" + # should be rejected because the backref (\2) does not exist + nil end - full_example - end + end.compact end private def find_backref_for(full_example, group_id) full_example.all_subgroups.detect do |subgroup| subgroup.group_id == group_id - end + end || raise(RegexpExamples::BackrefNotFound) end end end