User:ABSHK/GSoC21/Log

From BRL-CAD

Development Log for Gsoc'21[edit]

Community Bonding Period (May 17 - June 6)[edit]

  • May 17 - May 23
    • Made a prototype script to download the User Manual from WikiBooks.
  • May 24 - May 31
    • Learnt to use cmake and how to execute a .py script using add_custom_command.
  • June 1 - June 7
    • Went through WikiMedia's rules for using their API. Learnt about the URL-Headers to use while accessing the WikiBooks API.

Coding Period (June 7 - August 16)[edit]

  • Week - 1 (June 7 - June 13)
    • Started with making the .py script
    • Implemented function prototypes
    • Made function getPage() to download the page given at the url using the WikiMedia API.
    • Made function getFooter() to add footer to the HTML pages with proper attribution (CC-BY-SA-3.0).
    • Made function cleanSoup() to remove the redundant HTML tags from the pages.
    • Made function getUrl() to get clean, formatted URLs.
  • Week - 2 (June 14 - June 20)
    • Made function getMaths() to download the Math Formulas in the User Manual as SVG Images.
    • Made function getTags() to deal with <a> tags and the hrefs.
    • Made function getImages() to download the images in the Manual.
    • Made a config.yml file for ease of maintenance of the script.
    • Made function getCSS() to download the CSS (more about which is given at API:Styling_content).
    • Made function getStyled() to improve the styling of the pages.
  • Week - 3 (June 21 - June 27)
    • Explored GitHub Actions, to run the program and generate the documentation on GitHub.
    • Added feature to zip the docs, thus reducing the file size by 25%.
    • Created GitHub Action to generate a zipped doc file and release it.
    • Changed getUrl() to getParsedUrl(), which now returns a parsed URL (using urllib.parse.urlparse()).
    • Miscellaneous code optimizations in cleanSoup(), for a cleaner and smaller code.
  • Week - 4 (June 28 - July 4)
    • Explored the different options available for conversion of HTML to PDF.
    • Chose the tool wkhtmltopdf for the conversion process, and made GitHub action to install the same.
    • Created function getPdf() to get the pages converted to pdf.
    • Changed the parser handling the XML response of the API.
  • Week - 5 (July 5 - July 11)
    • Added an argument `pdf` to the functions, to help them distinguish if the webpage being dealt with is to be converted into a pdf.
    • Changed the program to create a PDF from Print Version of the manual to get a single big file for easier navigation.
    • Worked on various issues arising in the PDF conversion according to input from the mentors.
  • Week - 6 (July 12 - July 18)
    • Phase - 1 Evaluations
  • Weeks - 7 & 8 (July 19 - Aug 1)
    • Explored and learnt more about CMakeLists for help in the integration part of the program.
    • Made a python script to download the generated Manual from OpenSCAD Documentation.
  • Weeks - 9 & 10 (Aug 2 - Aug 15)
    • Changed python script and added static links to the documentation resources.
    • Created function is_connected() to check if an internet connection is available.
    • Created CMakeLists.txt inside the `resources` folder which now handles the download part instead of the main CMakeLists.txt
    • Added option inside main CMakeLists.txt to enable download of the User Manual.
    • Added the files generated by CMakeLists.txt and the python script to .gitnore.
    • Added the option `Offline Documentation` to the help menu.
    • The option `Offline Documentation now hides if the user chooses not to download the User Manual.