Mercurial > hg > Members > aka > jupyter_CbC_kernel
diff jupyter_c_kernel/kernel.py @ 55:4a03cede4763
Merge pull request #27 from spoorcc/issue-14
Fix #14: Add args magic to provide cli-args to user program
committer: GitHub <noreply@github.com>
author | Brendan Rius <brendan.rius@gmail.com> |
---|---|
date | Thu, 13 Apr 2017 11:29:48 +0200 |
parents | 7857f8eea835 |
children | 40c903dde893 |
line wrap: on
line diff
--- a/jupyter_c_kernel/kernel.py Wed Apr 12 20:59:16 2017 +0200 +++ b/jupyter_c_kernel/kernel.py Thu Apr 13 11:29:48 2017 +0200 @@ -2,6 +2,7 @@ from threading import Thread from ipykernel.kernelbase import Kernel +import re import subprocess import tempfile import os @@ -118,7 +119,9 @@ def _filter_magics(self, code): - magics = {'cflags': [], 'ldflags': []} + magics = {'cflags': [], + 'ldflags': [], + 'args': []} for line in code.splitlines(): if line.startswith('//%'): @@ -128,6 +131,10 @@ if key in ['ldflags', 'cflags']: for flag in value.split(): magics[key] += [flag] + elif key == "args": + # Split arguments respecting quotes + for argument in re.findall(r'(?:[^\s,"]|"(?:\\.|[^"])*")+', value): + magics['args'] += [argument.strip('"')] return magics @@ -151,7 +158,7 @@ return {'status': 'ok', 'execution_count': self.execution_count, 'payload': [], 'user_expressions': {}} - p = self.create_jupyter_subprocess([self.master_path, binary_file.name]) + p = self.create_jupyter_subprocess([self.master_path, binary_file.name] + magics['args']) while p.poll() is None: p.write_contents() p.write_contents()