anatoly techtonik committed d0c9227

Check rule result for errors

Comments (0)

Files changed (1)

 # [ ] indented prints after every step
 def wikify(text, rules):
+  """
+  Replaces text according to the given rules. Guarantees
+  that replacements won't affect each other.
+  Raises TypeError when rule returns invalid result.
+  """
   texts = []  # store processed pieces
   subst = []  # store replacements
       res = rule(part)
       if res == None:
+      elif len(res) != 3:
+        raise TypeError(
+          "Rule '%s' returned %d element(s) instead of 3"
+            % (rule.__name__, len(res)))
         # replacing current text with three elements
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.