slowtable ~master
timetable tools
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
slowtable
Set of tools to manage timetables, including a parser to read timetables for FAST NUCES Lahore.
Features
- Simple UNIX philosophy following tools
- Simple serialized format, human readable
- Regex based filtering
- Advanced filtering tool
- Colored output (per section)
Prerequisites
- Libreoffice - convert
xlsxtoods, sincestparseonly acceptsods - A D compiler (
ldc), anddub- both can be downloaded from here git- to clone repo, or you can download the code from github
Building
Run the following to clone and build:
git clone https://github.com/Nafees10/slowtable
cd slowtable
dub build -c=app
./link.sh
This will create a multi-call binary slowtable in the bin folder.
The ./link.sh script will create symlinks in ~/.local/bin/ for following
tools:
Tools
Run any of these tools with the --help flag to show help.
stparse
Reads a FAST NUCES Lahore's timetable file (timetable must be first sheet), and outputs a serialized list of Classes, tab separated values, with a tab at start:
TimetableName
courseName courseSection venue day timeISOString durationMinutes
...
over
for example:
Fall2023.ods[0]
...
operations research BSE-5C E&M-2 mon 143000 80
operations research BSE-5B CE-1 mon 113000 80
operations research BSE-5A CS-1 mon 100000 80
operations research BSE-5C E&M-2 wed 143000 80
operations research BSE-5A CS-1 wed 100000 80
operations research BSE-5B CS-5 fri 113000 80
...
over
stdelab
Renames labs to courses. Useful when output of stparse is going to stcomb,
pass it through stdelab so stcomb sees labs as same as course, generating
same sections for both.
Example:
stparse tt.ods 0 10 | stdelab > tt
stfilter
Reads list of classes, and runs them through a set of filters, outputting objects in same structure, which pass the filter.
Filtering
The filter ignores any non-alphanumeric characters in courses names, to make
filtering easier, and it also lowercases all course names. But section names are
kept as it is.
For example, the course Software Design & Architecture will be read as
software design architecture.
All filters are regular expressions.
When no -s, -c, or -cs filters are provided, the -c filter is defaulted
to be .* so it includes all courses of all sections. So any negating filters
can be used without the -s, -c, or -cs filters.
-s section
Use the -s flag to filter for sections.
For example, to only include courses for all sections of BSE-4, run the
following:
stparse input.ods | stfilter -s BSE-4
To only include courses for BSE-4A and BCS-4A, run the following:
stfilter -s BSE-4A BCS-4A
-ns section
Use the -ns flag to filter out a section.
For example, to exclude all Masters courses, while keeping all BS courses:
stfilter -ns 'M\S\S-'
this uses the regex filter M\S\S to match any section that begins with M
followed by 2 alphabets followed by a -.
-c course
Use the -c flag to filter for courses, i.e: include all sections of a
specific course.
For example, to include all sections of Object Oriented Programming, run the
following:
stfilter -c 'Object Oriented Programming'
-nc course
Use the -nc flag to filter out a course.
For example, to include all courses of BSE-4, except for Data Structures:
stfilter -s BSE-4 -nc 'Data Structures'
-cs course (section)
Use the -cs flag to include a specific course of a specific section.
For example, to include all BSE-4A courses, along with
Database Systems (BSE-4B):
stfilter -s BSE-4A -cs 'Database (BSE-4B)'
-ncs course (section)
Use the -cs flag to exclude a specific course of a specific section.
For example, to include all BSE-4 courses, except for
Software Design .. (BSE-4B):
stfilter -s BSE-4 -ncs 'Software Design (BSE-4B)'
sthtml
Takes input (stdin) timetable(s), and outputs HTML for each.
Example:
cat BSE-5 | sthtml > BSE-5.html
stcomb
Takes input timetables, and outputs all possible non-clashing combinations, sorted from best to worst.
Parameters: (optional)
-c maxCount- maxCount is integer, of maximum number of output combination timetables. Default 200.a,b,c [-k K]- from amonga,b,cpickK
The -k option is useful when you have to select multiple electives from a
given pool.
Example:
cat BSE-5 | stcomb | sthtml > BSE-5-all.html
Usage
First to convert an xlsx timetable file to ods, run the following:
libreoffice --headless --convert-to ods path/to/timetable.xlsx
Then use stparse to extract timetable information from it:
stparse timetable.ods > timetable
From there onwards, slowtable tools can be used with the timetable data:
cat timetable | stfilter -s BSE-5 > bse5-timetable
cat bse5-timetable | sthtml > bse5-timetable.html
cat bse5-timetable | stcomb | sthtml > bse5-timetables-all.html
The generated HTML files can be opened by a web browser.
Acknowledgments
This program uses TransientResponse's
dlang-ods library.
- ~master released 4 months ago
- Nafees10/slowtable
- MIT
- Copyright © 2023-2024, Nafees Hassan
- Authors:
- Dependencies:
- utils, dxml, archive
- Versions:
-
Show all 19 versions2.7.4 2025-Aug-10 2.7.3 2025-Aug-10 2.7.2 2025-Aug-10 2.7.1 2025-Jan-17 2.7.0 2025-Jan-17 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
6 downloads this month
-
51 downloads total
-
- Score:
- 0.6
- Short URL:
- slowtable.dub.pm