From 452ceb636e37fab2927c688e7b495841879ea29a Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Fri, 25 Feb 2022 17:22:43 -0500 Subject: Initial code commit --- driver.f90 | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 driver.f90 (limited to 'driver.f90') diff --git a/driver.f90 b/driver.f90 new file mode 100644 index 0000000..eae0b34 --- /dev/null +++ b/driver.f90 @@ -0,0 +1,133 @@ +! Copyright (c) 2022 Approximatrix, LLC +! +! Permission is hereby granted, free of charge, to any person obtaining a copy +! of this software and associated documentation files (the "Software"), to deal +! in the Software without restriction, including without limitation the rights +! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +! copies of the Software, and to permit persons to whom the Software is +! furnished to do so, subject to the following conditions: +! +! The above copyright notice and this permission notice shall be included in +! all copies or substantial portions of the Software. +! +! The Software shall be used for Good, not Evil. +! +! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +! SOFTWARE. + +program driver +use fpoint_pptxzip +implicit none + + type(pptxtracted)::presentation + !character(len=*), parameter::filename = "Welcome to PowerPoint.pptx" !"samplepptx.pptx" + logical::verbose + logical::notes + integer::i, j + character(len=:), pointer::filename, arg + + if(command_argument_count() < 1) then + call usage() + call exit(0) + end if + + verbose = .false. + notes = .false. + filename => null() + do i = 1, command_argument_count() + + call get_command_argument(i, length=j) + allocate(character(len=j)::arg) + call get_command_argument(i, value=arg) + + if(arg == "-n") then + notes = .true. + + else if(arg == "-v") then + verbose = .true. + + else + filename => arg + arg => null() + + end if + + if(associated(arg)) then + deallocate(arg) + arg => null() + end if + + end do + + if(verbose) then + call title() + end if + call maybe_print(verbose, "Loading "//filename) + + if(presentation%open(filename)) then + + call maybe_print(verbose, "File opened at "//trim(presentation%directory)) + + call presentation%parse() + + write(*, '(A)') presentation%to_text() + + call presentation%close() + + else + call maybe_print(verbose, "Failed on "//filename) + call exit(1) + end if + + call exit(0) + +contains + + subroutine title() + implicit none + + Print *, "FPoint - PowerPoint to Text Converter" + Print *, "Copyright 2022 Approximatrix, LLC" + + end subroutine title + + subroutine usage() + implicit none + + character(512)::prg + + call get_command_argument(0, prg) + + call title() + + Print *, " " + Print *, "Usage: "//trim(prg)//" [options] " + Print *, " " + Print *, "Options:" + Print *, " " + Print *, " -n Extract notes instead of slide contents" + Print *, " -v Be somewhat verbose, probably not enough to be interesting" + Print *, " " + Print *, "Output is printed to standard out" + Print *, " " + + end subroutine usage + + subroutine maybe_print(v, str) + implicit none + + logical, intent(in)::v + character(len=*), intent(in)::str + + if(v) then + Print *, str + end if + end subroutine maybe_print + +end program driver + \ No newline at end of file -- cgit v1.2.3