slowtable 2.1.0

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:

This package provides sub packages which can be used individually:

slowtable:common - slowtable common

slowtable:parser - slowtable parser

slowtable:filter - slowtable filter

slowtable:tablemaker - slowtable tablemaker


Set of tools to manage timetables, including a parser to read timetables for FAST NUCES Lahore.


  1. Simple UNIX philosophy following tools
  2. JSON for communication
  3. Regex based filtering
  4. Advanced filtering tool
  5. Colored output (per section)


  1. Libreoffice - convert xlsx to ods, since slowparser only accepts ods
  2. A D compiler, and dub - both can be downloaded from here
  3. git - to clone repo, or you can download the code from github


Run the following to clone and build:

git clone
cd slowtable
dub build :parser -b=release
dub build :filter -b=release
dub build :tablemaker -b=release

This will create executables in the bin folder.


Run any of these tools with the --help flag to show help.


Reads a FAST NUCES Lahore's timetable file (timetable must be first sheet), and outputs an array of array of JSON objects describing each class:

			"day": "mon",
			"duration": 80,
			"name": "data structures",
			"section": "BDS-3B",
			"time": "08:30:00",
			"venue": "Seminar Hall"

The outermost array is an array of timetables, where each timetable is an array of objects.


Reads array of JSON objects for classes, and runs them through a set of filters, outputting objects in same structure, which pass the filter.


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:

./slowfilter input.ods -s BSE-4

To only include courses for BSE-4A and BCS-4A, run the following:

slowfilter -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:

slowfilter -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:

slowfilter -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:

slowfilter -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):

slowfilter -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):

slowfilter -s BSE-4 -ncs 'Software Design (BSE-4B)'


Takes input array of timetables, and outputs html rendering for them.


First to convert an xlsx timetable file to ods, run the following:

libreoffice --headless --convert-to ods path/to/timetable.xlsx

Then use slowparser to extract JSON information from it:

slowparser timetable.ods > timetable.json

From there onwards, slowtable tools can be used with the JSON data:

cat timetable.json | slowfilter -s BSE-5 > bse5-timetable.json
cat bse5-timetable.json | tablemaker > bse5-timetable.html

The generated HTML file can be opened by a web browser.


This program uses TransientResponse's dlang-ods library.

  • Nafees Hassan
Sub packages:
slowtable:common, slowtable:parser, slowtable:filter, slowtable:tablemaker
2.3.2 2024-Jan-17
2.3.1 2024-Jan-17
2.3.0 2024-Jan-15
2.2.0 2023-Oct-06
2.1.0 2023-Aug-21
Show all 9 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 20 downloads total

Short URL: