]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
doc parse two lines for getting the context 18339/head
authorAlfredo Deza <adeza@redhat.com>
Fri, 6 Oct 2017 12:57:01 +0000 (08:57 -0400)
committerKefu Chai <kchai@redhat.com>
Tue, 17 Oct 2017 02:57:32 +0000 (10:57 +0800)
So that signatures can get parsed when they are split like:

PG::RecoveryState::RepWaitBackfillReserved::react(
  const RemoteReservationCanceled &evt)

Signed-off-by: Alfredo Deza <adeza@redhat.com>
(cherry picked from commit 9e2a52ccec4a5c833dd861ae528d52efbc0f9e5f)

doc/scripts/gen_state_diagram.py

index 14017fac3f1ef1158ddade2f6117d547d62febb1..fccde26295c4cf6ff93b22d930843c76418b64b0 100755 (executable)
@@ -82,14 +82,22 @@ class StateMachineRenderer(object):
             )
 
     def read_input(self, input_lines):
+        previous_line = None
         for line in input_lines:
             self.get_state(line)
             self.get_event(line)
-            self.get_context(line)
-
-    def get_context(self, line):
-        match = re.search(r"(\w+::)*::(?P<tag>\w+)::\w+\(const (?P<event>\w+)",
-                          line)
+            # pass two lines at a time to get the context so that regexes can
+            # match on split signatures
+            self.get_context(line, previous_line)
+            previous_line = line
+
+    def get_context(self, line, previous_line):
+        match = re.search(r"(\w+::)*::(?P<tag>\w+)::\w+\(const (?P<event>\w+)", line)
+        if match is None and previous_line is not None:
+            # it is possible that we need to match on the previous line as well, so join
+            # them to make them one line and try and get this matching
+            joined_line = ' '.join([previous_line, line])
+            match = re.search(r"(\w+::)*::(?P<tag>\w+)::\w+\(\s*const (?P<event>\w+)", joined_line)
         if match is not None:
             self.context.append((match.group('tag'), self.context_depth, match.group('event')))
         if '{' in line: