-
Notifications
You must be signed in to change notification settings - Fork 0
/
factory.py
69 lines (56 loc) · 1.58 KB
/
factory.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import random
from record import Record
class Factory:
"""
This class generates a list of records
:param n : The length of the list
:type n : int
:param order : {'ascending', 'descending', 'random'}. Default is ascending
:type order : str
:param mode : {'empty', 'filled'} If 'filled', fills the records with some data. Default is 'empty'.
:type mode : str
:param size : The number of lines of the record's data
:type size : int
"""
size = 50
def __init__(self, n, order='ascending', mode='empty'):
self.n = n
self.order = order
self.mode = mode
def make_record(self, key):
"""
Generates a record to be inserted in the list.
If the class param <mode> is 'filled', the record will be filled with some data
:param key : The key of the record
:return : A record with the key that can have an amount of data
:rtype : Record
"""
data = None
if self.mode == 'filled':
data = self.fill_record()
record = Record(key, data)
return record
def fill_record(self):
"""
Generates the data for a record
:return : The data of the record
:rtype : str
"""
data = self.size * '..................................................\n'
return data
def make_list(self):
"""
Uses the class parameters to generate a list of records.
The list can be in ascending, descending or random order.
:return : a list of size n
:rtype : list
"""
list = []
for i in range(self.n):
register = self.make_record(i + 1)
list.append(register)
if self.order == 'random':
random.shuffle(list)
elif self.order == 'descending':
list.reverse()
return list