aboutsummaryrefslogtreecommitdiff
path: root/driver.f90
diff options
context:
space:
mode:
Diffstat (limited to 'driver.f90')
-rw-r--r--driver.f90133
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