Inspiration

Competitive Coding Platforms are Competitive ( yes. ) People take typing tests just to increase the speed of their submission. One of the bottlenecks is spending a lot of time initializing files, testing it for sample inputs and so on. We aim to reduce that

What it does

It is a VSCode Extension which takes in a contest link from the user, detects how many problems are there in the contest, and makes a directory for each problem,

In Each Problem directory , there are :

  • Sample test cases (in .txt format)
  • Problem statements in ( Markdown-LateX file )
  • Solution file (User provided C++ template)

Furthermore , There are commands which can Build and run your solution file and can have the result file in the same problem directory

How we built it

Most of the extension is built on Node.js , using npm as the package manager. Boilerplate was developed through yo. Axios, request-promise and cheerios are used to get data from contest url. Fs was used to have File IO , and turndown was used to generate the markdown problem statement child_process is also used to have exec, to run bash commands.

The extension was developed inside VSCode's Extension Development Environment.

Challenges we ran into

The problem statement scraping was the biggest challenge. Axios and request-promise ignored all tags except

so we had no idea how Math was being shown. Deep look into it , We found that MML was being used . So we had to manually convert the result to KaTEX which is supported by VScode's extension. Running bash commands through Node wasnt an easy task either . Asynchronous events had to be dealt with.

Accomplishments that we're proud of

The project has had the required features we desired at the start of the hackathon. And A lot of learning has happened. We got a refresher on Node,js, and this was the first time we built a VSCode Extension

What we learned

As it was our first time building a VScode extension. We got to know a lot about contexts, how files interact with each other. how to effectively test. But, the main learning was to not use async functions unless necessary

What's next for CoPPeR

The extension to be published on the VScode marketplace. We also want to improve on the sidebars and ui elements to interact in a more accessible way

Built With

+ 7 more
Share this project:

Updates