slowtable 2.0.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
slowtable
Set of tools to manage timetables, including a parser to read timetables for FAST NUCES Lahore.
Features
- Simple UNIX philosophy following tools
- JSON for communication
- Regex based filtering
- Advanced filtering tool
- Colored output (per section)
Prerequisites
- Libreoffice - convert
xlsx
toods
, sinceslowparser
only acceptsods
- A D compiler, and
dub
- 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 :slowparser -b=release
dub build :slowfilter -b=release
dub build :tablemaker -b=release
This will create executables in the bin
folder.
Tools
Run any of these tools with the --help
flag to show help.
slowparser
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.
slowfilter
Reads array of JSON objects for 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:
./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)'
tablemaker
Takes input array of timetables, and outputs html rendering for them.
Usage
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.
Acknowledgments
This program uses TransientResponse's dlang-ods
library.
- 2.0.0 released a year ago
- Nafees10/slowtable
- MIT
- Copyright © 2023, Nafees Hassan
- Authors:
- Sub packages:
- slowtable:common, slowtable:parser, slowtable:filter, slowtable:tablemaker
- Dependencies:
- none
- 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