Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions problemtools/ProblemPlasTeX/ProblemsetMacros.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
import sys
import os
import os.path
import codecs
import cgi
import io
from plasTeX.DOM import Node
from plasTeX.Base import Command
from plasTeX.Base import DimenCommand
from plasTeX.Logging import getLogger
import plasTeX.Packages.graphics as graphics

if sys.version_info.major == 2:
import cgi
def plastex_escape(s):
return cgi.escape(s)
else:
def plastex_escape(s):
return s

log = getLogger()
status = getLogger('status')

Expand Down Expand Up @@ -46,8 +53,8 @@ class sampletable(Command):
args = 'header1 file1:str header2 file2:str'

def read_sample_file(self, filename):
data = open(filename, 'rb').read().decode('utf8')
data = cgi.escape(data)
data = io.open(filename, 'r', encoding='utf-8').read()
data = plastex_escape(data)
return data

def invoke(self, tex):
Expand All @@ -70,7 +77,7 @@ class sampletableinteractive(Command):
args = 'header read write file:str'

def read_sample_interaction(self, filename):
data = open(filename, 'rb').read().decode('utf8')
data = io.open(filename, 'r', encoding='utf-8').read()
messages = []
cur_msg = []
cur_mode = None
Expand All @@ -82,12 +89,12 @@ def read_sample_interaction(self, filename):
line = line[1:]
if mode != cur_mode:
if cur_mode: messages.append({'mode': cur_mode,
'data': cgi.escape('\n'.join(cur_msg))})
'data': plastex_escape('\n'.join(cur_msg))})
cur_msg = []
cur_msg.append(line)
cur_mode = mode
if cur_mode: messages.append({'mode': cur_mode,
'data': cgi.escape('\n'.join(cur_msg))})
'data': plastex_escape('\n'.join(cur_msg))})
return messages

def invoke(self, tex):
Expand Down
8 changes: 5 additions & 3 deletions problemtools/ProblemPlasTeX/listingsutf8.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from plasTeX.Base import Command
from plasTeX.Logging import getLogger

import cgi
import os
import io

import ProblemsetMacros

log = getLogger()

Expand All @@ -13,8 +15,8 @@ class lstinputlisting(Command):
args = '* [ options:dict ] file:str'

def read_file(self, filename):
data = open(filename, 'r').read().decode('utf8')
data = cgi.escape(data)
data = io.open(filename, 'r', encoding='utf-8').read()
data = ProblemsetMacros.plastex_escape(data)
return data

def invoke(self, tex):
Expand Down
3 changes: 2 additions & 1 deletion problemtools/verifyproblem.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,8 @@ def __init__(self, problem, datadir, parent=None):
configfile = os.path.join(self._datadir, 'testdata.yaml')
if os.path.isfile(configfile):
try:
self.config = yaml.safe_load(file(configfile))
with open(configfile) as f:
self.config = yaml.safe_load(f)
except Exception as e:
self.error(e)
self.config = {}
Expand Down