Commits

Shlomi Fish committed 0195a33

Refactoring: extract a common method.

Comments (0)

Files changed (3)

perl/modules/XML-Grammar-Fiction/lib/XML/Grammar/Fiction/App/FromProto.pm

         parser_class => "XML::Grammar::Fiction::FromProto::Parser::QnD",
     });
 
-    eval {
-        my $output_xml = $converter->convert({
+    $converter->_convert_while_handling_errors(
+        {
+            convert_args =>
+            {
                 source => { file => shift(@ARGV), },
-            }
-        );
-
-        open my $out, ">", $output_filename;
-        binmode $out, ":utf8";
-        print {$out} $output_xml;
-        close($out);
-    };
-
-    # Error handling.
-
-    my $e;
-    if ($e = Exception::Class->caught("XML::Grammar::Fiction::Err::Parse::TagsMismatch"))
-    {
-        warn $e->error(), "\n";
-        warn "Open: ", $e->opening_tag->name(),
-            " at line ", $e->opening_tag->line(), "\n"
-            ;
-        warn "Close: ",
-            $e->closing_tag->name(), " at line ",
-            $e->closing_tag->line(), "\n";
-
-        exit(-1);
-    }
-    elsif ($e = Exception::Class->caught("XML::Grammar::Fiction::Err::Parse::LineError"))
-    {
-        warn $e->error(), "\n";
-        warn "At line ", $e->line(), "\n";
-        exit(-1);
-    }
-    elsif ($e = Exception::Class->caught())
-    {
-        if (ref($e))
-        {
-            $e->rethrow();
+            },
+            output_filename => $output_filename,
         }
-        else
-        {
-            die $e;
-        }
-    }
+    );
 
     exit(0);
 }

perl/modules/XML-Grammar-Fiction/lib/XML/Grammar/FictionBase/TagsTree2XML.pm

 
     return;
 }
+
+sub _convert_while_handling_errors
+{
+    my ($self, $args) = @_;
+
+    eval {
+        my $output_xml = $self->convert(
+            $args->{convert_args},
+        );
+
+        open my $out, ">", $args->{output_filename};
+        binmode $out, ":utf8";
+        print {$out} $output_xml;
+        close($out);
+    };
+
+    # Error handling.
+
+    my $e;
+    if ($e = Exception::Class->caught("XML::Grammar::Fiction::Err::Parse::TagsMismatch"))
+    {
+        warn $e->error(), "\n";
+        warn "Open: ", $e->opening_tag->name(),
+            " at line ", $e->opening_tag->line(), "\n"
+            ;
+        warn "Close: ",
+            $e->closing_tag->name(), " at line ",
+            $e->closing_tag->line(), "\n";
+
+        exit(-1);
+    }
+    elsif ($e = Exception::Class->caught("XML::Grammar::Fiction::Err::Parse::LineError"))
+    {
+        warn $e->error(), "\n";
+        warn "At line ", $e->line(), "\n";
+        exit(-1);
+    }
+    elsif ($e = Exception::Class->caught())
+    {
+        if (ref($e))
+        {
+            $e->rethrow();
+        }
+        else
+        {
+            die $e;
+        }
+    }
+
+    return;
+}
+
 =head2 meta()
 
 Internal - (to settle pod-coverage.).

perl/modules/XML-Grammar-Fiction/lib/XML/Grammar/Screenplay/App/FromProto.pm

         parser_class => "XML::Grammar::Screenplay::FromProto::Parser::QnD",
     });
 
-    eval
-    {
-        my $output_xml = $converter->convert({
+    $converter->_convert_while_handling_errors(
+        {
+            convert_args =>
+            {
                 source => { file => shift(@ARGV), },
-            }
-        );
+            },
+            output_filename => $output_filename,
+        }
+    );
 
-        open my $out, ">", $output_filename;
-        binmode $out, ":utf8";
-        print {$out} $output_xml;
-        close($out);
-    };
-
-    my $e;
-    if ($e = Exception::Class->caught("XML::Grammar::Fiction::Err::Parse::TagsMismatch"))
-    {
-        warn $e->error(), "\n";
-        warn "Open: ", $e->opening_tag->name(),
-            " at line ", $e->opening_tag->line(), "\n"
-            ;
-        warn "Close: ",
-            $e->closing_tag->name(), " at line ",
-            $e->closing_tag->line(), "\n";
-
-        exit(-1);
-    }
-    elsif ($e = Exception::Class->caught("XML::Grammar::Fiction::Err::Parse::LineError"))
-    {
-        warn $e->error(), "\n";
-        warn "At line ", $e->line(), "\n";
-        exit(-1);
-    }
-    elsif ($e = Exception::Class->caught())
-    {
-        if (ref($e))
-        {
-            $e->rethrow();
-        }
-        else
-        {
-            die $e;
-        }
-    }
 
     exit(0);
 }
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 ProjectModifiedEvent.java.
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.