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
xlsx
toods
, sincestparse
only 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.
It takes one optional argument: maximum number of combinations to generate.
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 2 months ago
- Nafees10/slowtable
- MIT
- Copyright © 2023-2024, Nafees Hassan
- Authors:
- Dependencies:
- utils, dxml, archive
- Versions:
-
2.6.2 2024-Aug-25 2.6.1 2024-Aug-09 2.6.0 2024-Jul-05 2.5.0 2024-Jul-01 2.4.0 2024-Jun-25 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
1 downloads this month
-
26 downloads total
-
- Score:
- 0.6
- Short URL:
- slowtable.dub.pm