Skip to content

Instantly share code, notes, and snippets.

@blink1073
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blink1073/0ef0291026c4bae5af89 to your computer and use it in GitHub Desktop.
Save blink1073/0ef0291026c4bae5af89 to your computer and use it in GitHub Desktop.
Octave Metakernel
from subprocess import check_output
import os
from metakernel import ProcessMetaKernel, REPLWrapper, u
class OctaveKernel(ProcessMetaKernel):
# Identifiers:
implementation = 'octave_metakernel'
language = 'octave'
language_info = {
'mimetype': 'text/x-octave',
'language': 'octave',
# ------ If different from 'language':
# 'codemirror_mode': 'language',
# 'pygments_lexer': 'language',
'file_extension': 'm',
}
_banner = None
@property
def banner(self):
if self._banner is None:
self._banner = check_output(['octave', '--version']).decode('utf-8')
return self._banner
def makeWrapper(self):
"""Start a bash shell and return a :class:`REPLWrapper` object.
Note that this is equivalent :function:`metakernel.pyexpect.bash`,
but is used here as an example of how to be cross-platform.
"""
if os.name == 'nt':
orig_prompt = u(chr(3))
prompt_cmd = u('disp(char(3))')
change_prompt = None
else:
orig_prompt = 'octave.*>'
prompt_cmd = None
change_prompt = "PS1('{0}'); PS2('{1}')"
return REPLWrapper('octave', orig_prompt, change_prompt,
prompt_cmd=prompt_cmd)
if __name__ == '__main__':
from IPython.kernel.zmq.kernelapp import IPKernelApp
IPKernelApp.launch_instance(kernel_class=OctaveKernel)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment