Move tons of stuff into oldstuff/

This commit is contained in:
2020-06-04 09:54:59 -04:00
parent 49038bb8ef
commit aa1345b6ed
213 changed files with 0 additions and 12 deletions

View File

View File

@@ -0,0 +1,53 @@
import argparse
import json
import os
import random
import sys
sys.path.insert(
0,
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
)
from mathpractice.sheet import Sheet
from mathpractice.html_formatter import HTMLFormatter
from mathpractice.json_formatter import JSONFormatter
def main(sysargs=sys.argv[:]):
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument('-L', '--lowest-factor', type=int, default=0)
parser.add_argument('-H', '--highest-factor', type=int, default=15)
parser.add_argument('-t', '--total', type=int, default=100)
parser.add_argument('-s', '--seed', type=float, default=random.random())
parser.add_argument(
'-f', '--format',
type=str, choices=('html', 'json'), default='html'
)
args = parser.parse_args(sysargs[1:])
sheet = Sheet.generate(
args.lowest_factor,
args.highest_factor,
total=args.total,
seed=args.seed
)
if args.format == 'html':
sys.stdout.write(
HTMLFormatter().format(sheet)
)
elif args.format == 'json':
sys.stdout.write(
JSONFormatter().format(sheet)
)
else:
raise ArgumentError('unknown format {}'.format(args.format))
sys.stdout.write('\n')
return 0
if __name__ == '__main__':
sys.exit(main())

View File

@@ -0,0 +1,73 @@
import textwrap
class HTMLFormatter(object):
STYLE = textwrap.dedent("""\
body {
color: black;
font-size: 18px;
font-family: Arial, sans-serif;
}
.ex {
display: inline;
text-align: right;
padding: 3px;
margin: 24px;
float: left;
}
.op {
padding-right: 18px;
}
.eq {
min-width: 48px;
border-bottom: 1px solid black;
}
""")
def __init__(self, style=''):
self.style = style if style != '' else self.STYLE
def format(self, sheet):
gen = [self._format_header(sheet.seed)]
for (f0, f1), answer in sheet.entries:
gen.append(self._format_entry(f0, f1, answer))
gen.append(self._format_footer())
return '\n'.join(gen)
def _format_header(self, seed):
return '\n'.join([
'<!DOCTYPE html>',
'<html>',
'<head>',
'<title>MATHS</title>',
'<!-- SEED={} -->'.format(seed),
'<style type="text/css">',
self.style,
'</style>',
'</head>',
'<body>'
])
def _format_entry(self, f0, f1, answer):
return '\n'.join([
'<div class="ex">',
'<p>',
'<span class="fac">{}</span>'.format(f0),
'</p>',
'<p class="eq">',
'<span class="op">x</span>',
'<span class="fac">{}</span>'.format(f1),
'</p>',
'<p>',
'<span class="ans" style="display:none">{}</span>'.format(answer),
'</p>',
'</div>'
])
def _format_footer(self):
return '</body></html>'

View File

@@ -0,0 +1,12 @@
import json
class JSONFormatter(object):
def format(self, sheet):
return json.dumps(
{
'seed': sheet.seed,
'entries': sheet.entries
},
indent=4
)

View File

@@ -0,0 +1,16 @@
import random
class Sheet(object):
def __init__(self, seed=None, entries=()):
self.seed = seed
self.entries = entries
@classmethod
def generate(cls, lowest_factor, highest_factor, total=100, seed=None):
entries = []
for f0 in range(lowest_factor, highest_factor):
for f1 in range(lowest_factor, highest_factor):
entries.append(((f0, f1), f0 * f1))
random.seed(seed)
random.shuffle(entries)
return cls(seed=seed, entries=entries)

View File

@@ -0,0 +1,22 @@
body {
color: black;
font-size: 18px;
font-family: Arial, sans-serif;
}
.ex {
display: inline;
text-align: right;
padding: 3px;
margin: 24px;
float: left;
}
.op {
padding-right: 18px;
}
.eq {
min-width: 48px;
border-bottom: 1px solid black;
}