diff options
author | Jeffrey Armstrong <jeff@approximatrix.com> | 2022-02-25 17:22:43 -0500 |
---|---|---|
committer | Jeffrey Armstrong <jeff@approximatrix.com> | 2022-02-25 17:22:43 -0500 |
commit | 452ceb636e37fab2927c688e7b495841879ea29a (patch) | |
tree | dee91a09e774c998f6b978f1ef4fa780e18029b1 /driver.f90 | |
download | fpoint-452ceb636e37fab2927c688e7b495841879ea29a.tar.gz fpoint-452ceb636e37fab2927c688e7b495841879ea29a.zip |
Initial code commit
Diffstat (limited to 'driver.f90')
-rw-r--r-- | driver.f90 | 133 |
1 files changed, 133 insertions, 0 deletions
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 <support@approximatrix.com> +! +! 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] <input filename>" + 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 |