Parcourir la source

Added overwrite fucntion for derivative line generation.

Taddeus Kroes il y a 14 ans
Parent
commit
70eeb83e48
3 fichiers modifiés avec 14 ajouts et 1 suppressions
  1. 1 1
      external/graph_drawing
  2. 9 0
      src/node.py
  3. 4 0
      tests/test_node.py

+ 1 - 1
external/graph_drawing

@@ -1 +1 @@
-Subproject commit c0a73ab43d1ef2ffdb1f1177afb006a983978150
+Subproject commit 775db0cb2ceeb6e795db7303bf1c747ae2bd53c5

+ 9 - 0
src/node.py

@@ -239,6 +239,15 @@ class ExpressionNode(Node, ExpressionBase):
         self.type = TYPE_OPERATOR
         self.op = OP_MAP[args[0]]
 
+    def construct_function(self, children):
+        if self.op == OP_DERIV:
+            f = children[0]
+
+            if len(children) < 2:
+                return '[' + f + ']\''
+
+            return 'd/d' + children[1] + ' (' + f + ')'
+
     def __str__(self):  # pragma: nocover
         return generate_line(self)
 

+ 4 - 0
tests/test_node.py

@@ -218,3 +218,7 @@ class TestNode(RulesTestCase):
         self.assertFalse(bc.contains(a))
         self.assertTrue(ln0.contains(a))
         self.assertFalse(ln1.contains(a))
+
+    def test_construct_function(self):
+        self.assertEqual(str(tree('der(x ^ 2)')), '[x ^ 2]\'')
+        self.assertEqual(str(tree('der(x ^ 2, x)')), 'd/dx (x ^ 2)')