Joy Jupyter kernel loads defs.txt
This commit is contained in:
parent
770cd783fa
commit
b0b9a71fd9
|
|
@ -1,6 +1,6 @@
|
|||
import sys
|
||||
from ipykernel.kernelbase import Kernel
|
||||
from joy.library import initialize, inscribe
|
||||
from joy.library import default_defs, initialize, inscribe
|
||||
from joy.joy import run
|
||||
from joy.utils.stack import stack_to_string
|
||||
from joy.utils.pretty_print import trace
|
||||
|
|
@ -45,6 +45,7 @@ class JoyKernel(Kernel):
|
|||
|
||||
def __init__(self, *a, **b):
|
||||
self.D = initialize()
|
||||
default_defs(self.D)
|
||||
self.S = ()
|
||||
super(JoyKernel, self).__init__(*a, **b)
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ sum [+] step_zero
|
|||
swapd [swap] dip
|
||||
swons swap cons
|
||||
swoncat swap concat
|
||||
sqr dup mul
|
||||
tailrec [i] genrec
|
||||
take [] roll> [shift] times pop
|
||||
ternary binary popd
|
||||
|
|
|
|||
|
|
@ -23,11 +23,14 @@ functions. Its main export is a Python function initialize() that
|
|||
returns a dictionary of Joy functions suitable for use with the joy()
|
||||
function.
|
||||
'''
|
||||
from pkg_resources import resource_stream
|
||||
from io import TextIOWrapper
|
||||
from inspect import getdoc, getmembers, isfunction
|
||||
from functools import wraps
|
||||
from itertools import count
|
||||
import operator, math
|
||||
|
||||
from . import __name__ as _joy_package_name
|
||||
from .parser import text_to_expression, Symbol
|
||||
from .utils import generated_library as genlib
|
||||
from .utils.errors import (
|
||||
|
|
@ -44,6 +47,14 @@ from .utils.stack import (
|
|||
)
|
||||
|
||||
|
||||
def default_defs(dictionary):
|
||||
def_stream = TextIOWrapper(
|
||||
resource_stream(_joy_package_name, 'defs.txt'),
|
||||
encoding='UTF_8',
|
||||
)
|
||||
Def.load_definitions(def_stream, dictionary)
|
||||
|
||||
|
||||
HELP_TEMPLATE = '''\
|
||||
|
||||
==== Help on %s ====
|
||||
|
|
@ -190,7 +201,8 @@ class Def(object):
|
|||
if line.lstrip().startswith('#'):
|
||||
continue
|
||||
name, body = text_to_expression(line)
|
||||
inscribe(class_(name, body), dictionary)
|
||||
if name not in dictionary:
|
||||
inscribe(class_(name, body), dictionary)
|
||||
|
||||
|
||||
#
|
||||
|
|
|
|||
Loading…
Reference in New Issue