Skip to content
This repository was archived by the owner on Jun 7, 2023. It is now read-only.

Commit fd33ff6

Browse files
committed
Convert activecode
1 parent 2378369 commit fd33ff6

File tree

2 files changed

+30
-37
lines changed

2 files changed

+30
-37
lines changed

runestone/activecode/activecode.py

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ def setup(app):
5353
app.add_config_value("activecode_hide_load_history", False, "html")
5454
app.add_config_value("wasm_uri", "/_static", "html")
5555

56-
app.add_node(ActivcodeNode, html=(visit_ac_node, depart_ac_node))
56+
app.add_node(ActivecodeNode, html=(visit_ac_node, depart_ac_node),
57+
xml=(visit_ac_xml, depart_ac_xml))
5758

5859
app.connect("doctree-resolved", process_activcode_nodes)
5960
app.connect("env-purge-doc", purge_activecodes)
@@ -79,16 +80,18 @@ def setup(app):
7980
"""
8081

8182

82-
class ActivcodeNode(nodes.General, nodes.Element, RunestoneIdNode):
83-
def __init__(self, content, **kwargs):
84-
"""
83+
class ActivecodeNode(nodes.General, nodes.Element, RunestoneIdNode):
84+
pass
85+
86+
87+
def visit_ac_xml(self, node):
88+
res = TEMPLATE_START % node["runestone_options"]
89+
self.output.append(res)
90+
8591

86-
Arguments:
87-
- `self`:
88-
- `content`:
89-
"""
90-
super(ActivcodeNode, self).__init__(name=content["name"], **kwargs)
91-
self.runestone_options = content
92+
def depart_ac_xml(self, node):
93+
res = TEMPLATE_END % node["runestone_options"]
94+
self.output.append(res)
9295

9396

9497
# self for these functions is an instance of the writer class. For example
@@ -97,15 +100,15 @@ def __init__(self, content, **kwargs):
97100
def visit_ac_node(self, node):
98101
# print self.settings.env.activecodecounter
99102

100-
# todo: handle above in node.runestone_options
101-
# todo handle 'hidecode' not in node.runestone_options:
102-
# todo: handle if 'gradebutton' in node.runestone_options: res += GRADES
103+
# todo: handle above in node["runestone_options"]
104+
# todo handle 'hidecode' not in node["runestone_options"]:
105+
# todo: handle if 'gradebutton' in node["runestone_options"]: res += GRADES
103106

104-
node.delimiter = "_start__{}_".format(node.runestone_options["divid"])
107+
node["delimiter"] = "_start__{}_".format(node["runestone_options"]["divid"])
105108

106-
self.body.append(node.delimiter)
109+
self.body.append(node["delimiter"])
107110

108-
res = TEMPLATE_START % node.runestone_options
111+
res = TEMPLATE_START % node["runestone_options"]
109112
self.body.append(res)
110113

111114

@@ -114,16 +117,16 @@ def depart_ac_node(self, node):
114117
etc and did not want to do all of the processing in visit_ac_node any finishing touches could be
115118
added here.
116119
"""
117-
res = TEMPLATE_END % node.runestone_options
120+
res = TEMPLATE_END % node["runestone_options"]
118121
self.body.append(res)
119122

120123
addHTMLToDB(
121-
node.runestone_options["divid"],
122-
node.runestone_options["basecourse"],
123-
"".join(self.body[self.body.index(node.delimiter) + 1 :]),
124+
node["runestone_options"]["divid"],
125+
node["runestone_options"]["basecourse"],
126+
"".join(self.body[self.body.index(node["delimiter"]) + 1 :]),
124127
)
125128

126-
self.body.remove(node.delimiter)
129+
self.body.remove(node["delimiter"])
127130

128131

129132
def process_activcode_nodes(app, env, docname):
@@ -448,8 +451,10 @@ def run(self):
448451
"This should only affect the grading interface. Everything else should be fine."
449452
)
450453

451-
acnode = ActivcodeNode(self.options, rawsource=self.block_text)
452-
acnode.source, acnode.line = self.state_machine.get_source_and_line(self.lineno)
454+
acnode = ActivecodeNode(self.options, rawsource=self.block_text)
455+
acnode["runestone_options"] = self.options
456+
acnode["source"], acnode["line"] = self.state_machine.get_source_and_line(
457+
self.lineno)
453458
self.add_name(acnode) # make this divid available as a target for :ref:
454459

455460
maybeAddToAssignment(self)

runestone/mchoice/multiplechoice.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,10 @@
3333

3434
class MChoiceNode(nodes.General, nodes.Element, RunestoneIdNode):
3535
pass
36-
# def __init__(self, content, **kwargs):
37-
# """
38-
39-
# Arguments:
40-
# - `self`:
41-
# - `content`:
42-
# """
43-
44-
# super(MChoiceNode, self).__init__(**kwargs)
45-
# pdb.set_trace()
46-
# if type(content) == str:
47-
# self.runestone_options = self.attributes['opts']
48-
# else:
49-
# self.runestone_options = content
5036

5137

38+
# TODO: refactor the common parts of visit_mc_xml and visit_mc_node -- copy/paste ok for
39+
# proof of concept but not long term.
5240
def visit_mc_xml(self, node):
5341

5442
res = ""

0 commit comments

Comments
 (0)