Documentation ¶
Index ¶
- Constants
- Variables
- func BareFile(name string) string
- func BaseList(paths []string) []string
- func CommentsToString(comments []comment.Comment) string
- func ConvertPDFToJPEGs(pdfPath string, jpegPath string, outputFile string) error
- func Copy(source, destination string) error
- func CopyIsComplete(source, dest []string) bool
- func CopyOverWrite(source, destination string) error
- func CountPDFInDir(dir string) (int, error)
- func CountPages(inputPath string) (int, error)
- func CropToQuestion(inputPath, outputPath string) error
- func DoOneCoverPage(ct CoverPageTask, logger *zerolog.Logger) error
- func DoOneFinalCoverPage(ct CoverPageTask, logger *zerolog.Logger) error
- func EnsureDir(dirName string) error
- func EnsureDirAll(dirName string) error
- func GetAnonymousFileName(course, anonymousIdentity string) string
- func GetAnonymousFromPath(path string) string
- func GetAnonymousFromPathBasic(path string) string
- func GetDone(path string) bool
- func GetField(fields []pagedata.Field, key string) string
- func GetFileList(dir string) ([]string, error)
- func GetFileListThisDir(dir string) ([]string, error)
- func GetPDFPath(filename, directory string) (string, error)
- func GetPageSummaryMap(pdMap map[int]pagedata.PageData) (map[int]PageReport, error)
- func GetPageSummaryMapFromFile(path string) (map[int]PageReport, error)
- func GetRequiredQuestions(qfile string) ([]string, error)
- func GetShortActorName(name string) string
- func GetShortLearnDate(sub parselearn.Submission) (string, error)
- func GetSubDirList(dir string) ([]string, error)
- func IsArchive(path string) bool
- func IsCSV(path string) bool
- func IsEmptyDir(name string) (bool, error)
- func IsPDF(path string) bool
- func IsTXT(path string) bool
- func IsZIP(path string) bool
- func ItemExists(sliceType interface{}, item interface{}) bool
- func SetDone(path string, logger *zerolog.Logger)
- func ValidStageForExport(stage string) bool
- func ValidStageForProcessedPapers(stage string) bool
- func WritePageReportsToCSV(reports []PageReport, outputPath string) error
- type CoverPageCommand
- type CoverPageTask
- type FlattenTask
- type Ingester
- func (g *Ingester) AddCheckBar(exam string, checker string) error
- func (g *Ingester) AddCheckCoverBar(exam string, checker string) error
- func (g *Ingester) AddEnterActiveBar(exam string, enterer string) error
- func (g *Ingester) AddEnterInactiveBar(exam string) error
- func (g *Ingester) AddFinalCover(exam string, checker string) error
- func (g *Ingester) AddLabelBar(exam, labeller string) error
- func (g *Ingester) AddMarkBar(exam string, marker string) error
- func (g *Ingester) AddMarkBarByQ(exam string, marker string) error
- func (g *Ingester) AddModerateActiveBar(exam string, moderator string) error
- func (g *Ingester) AddModerateInActiveBar(exam string) error
- func (g *Ingester) BareFile(name string) string
- func (g *Ingester) BaseList(paths []string) []string
- func (g *Ingester) CheckReport(exam string) error
- func (g *Ingester) CleanFromIngest() error
- func (g *Ingester) Copy(source, destination string) error
- func (g *Ingester) CopyIfNewerThanDestination(source, destination string, logger *zerolog.Logger) (bool, error)
- func (g *Ingester) CopyIfNewerThanDestinationInDir(source, destinationDir string, logger *zerolog.Logger) (bool, error)
- func (g *Ingester) CopyIsComplete(source, dest []string) bool
- func (g *Ingester) CopyToDir(source, destinationDir string) error
- func (g *Ingester) CoverPage(cp CoverPageCommand, logger *zerolog.Logger) error
- func (g *Ingester) EnsureDir(dirName string) error
- func (g *Ingester) EnsureDirAll(dirName string) error
- func (g *Ingester) EnsureDirectoryStructure() error
- func (g *Ingester) Etc() string
- func (g *Ingester) Exam() string
- func (g *Ingester) Export() string
- func (g *Ingester) ExportFiles(exam, stage, actor string) error
- func (g *Ingester) ExtractConf() string
- func (g *Ingester) FinalCoverPage(cp CoverPageCommand, logger *zerolog.Logger) error
- func (g *Ingester) FinalReport(exam string) error
- func (g *Ingester) FlattenLayoutSVG() string
- func (g *Ingester) FlattenNewPapers(exam string) error
- func (g *Ingester) FlattenOneNewPDF(inputPath, outputPath string, pageDataMap map[int]pagedata.PageData, ...) (int, error)
- func (g *Ingester) FlattenProcessedPapers(exam, stage string) error
- func (g *Ingester) FlattenProcessedPapersFromDir(exam, stage string) (string, error)
- func (g *Ingester) FlattenProcessedPapersToDir(exam, stage string) (string, error)
- func (g *Ingester) GetAnonymousFileName(course, anonymousIdentity string) string
- func (g *Ingester) GetEmptySubDirs(dir string) ([]string, error)
- func (g *Ingester) GetExamDir(exam, dir string) string
- func (g *Ingester) GetExamDirNamed(exam, dir, name string) string
- func (g *Ingester) GetExamDirSub(exam, dir, sub string) string
- func (g *Ingester) GetExamRoot(exam string) string
- func (g *Ingester) GetExportDir(exam, dir, name string) string
- func (g *Ingester) GetExportDirs(exam, stage, actor string) (string, string, string, error)
- func (g *Ingester) GetFileList(dir string) ([]string, error)
- func (g *Ingester) GetFileListThisDir(dir string) ([]string, error)
- func (g *Ingester) GetNamedTaskDecoration(task, name string) string
- func (g *Ingester) GetShortActorName(name string) string
- func (g *Ingester) Identity() string
- func (g *Ingester) IdentityCSV() string
- func (g *Ingester) Ingest() string
- func (g *Ingester) IngestConf() string
- func (g *Ingester) IngestTemplate() string
- func (g *Ingester) IsArchive(path string) bool
- func (g *Ingester) IsCsv(path string) bool
- func (g *Ingester) IsPDF(path string) bool
- func (g *Ingester) IsSameAsSelfInDir(source, destinationDir string) bool
- func (g *Ingester) IsTxt(path string) bool
- func (g *Ingester) IsZip(path string) bool
- func (g *Ingester) ItemExists(sliceType interface{}, item interface{}) bool
- func (g *Ingester) MergeOverlayOnePDF(mt MergeTask, logger *zerolog.Logger) (int, error)
- func (g *Ingester) MergeOverlayPapers(mc MergeCommand, logger *zerolog.Logger) error
- func (g *Ingester) MergeProcessedPapers(exam, stage string) error
- func (g *Ingester) MergeProcessedPapersFromDir(exam, stage string) (string, error)
- func (g *Ingester) MergeProcessedPapersToDir(exam, stage string) (string, error)
- func (g *Ingester) MigrateTempImages(exam string, test bool) error
- func (g *Ingester) MigrateVersionDirStruct(exam string, test bool) error
- func (g *Ingester) MoveIfNewerThanDestination(source, destination string, logger *zerolog.Logger) (bool, error)
- func (g *Ingester) MoveIfNewerThanDestinationInDir(source, destinationDir string, logger *zerolog.Logger) (bool, error)
- func (g *Ingester) MoveToDir(source, destinationDir string) error
- func (g *Ingester) OutputPath(dir, inPath, decoration string) string
- func (g *Ingester) OverlayConf() string
- func (g *Ingester) OverlayLayoutSVG() string
- func (g *Ingester) OverlayOnePDF(ot OverlayTask, logger *zerolog.Logger) (int, error)
- func (g *Ingester) OverlayPapers(oc OverlayCommand, logger *zerolog.Logger) error
- func (g *Ingester) OverlayTemplate() string
- func (g *Ingester) RemoveEmptySubDirs(dir string, test bool) error
- func (g *Ingester) ReportOnProcessedDir(exam, dir string, showOK bool, showMark bool, reconcile bool) ([]string, error)
- func (g *Ingester) Root() string
- func (g *Ingester) SetBackgroundIsVanilla(vanilla bool)
- func (g *Ingester) SetChangeAncestor(change bool)
- func (g *Ingester) SetIngestTemplatePath(path string) error
- func (g *Ingester) SetOpticalShrink(shrink int)
- func (g *Ingester) SetOverlayTemplatePath(path string) error
- func (g *Ingester) SetSkipQuestionFile(skip bool)
- func (g *Ingester) SetTesting()
- func (g *Ingester) SetUseFullAssignmentName()
- func (g *Ingester) SetupConf() string
- func (g *Ingester) SetupExamDirs(exam string) error
- func (g *Ingester) SetupGradexDirs() error
- func (g *Ingester) SortCheck(exam string) error
- func (g *Ingester) SortQuestions(exam string) error
- func (g *Ingester) SplitForEnter(exam string) error
- func (g *Ingester) SplitForModeration(exam string, minFiles int, minPercent float64) error
- func (g *Ingester) StageFromIngest() error
- func (g *Ingester) TempPDF() string
- func (g *Ingester) TempTXT() string
- func (g *Ingester) Usr() string
- func (g *Ingester) ValidateNewPapers() error
- func (g *Ingester) Var() string
- type Mark
- type MarkCompare
- type MarkSub
- type MergeCommand
- type MergeFile
- type MergeTask
- type OverlayCommand
- type OverlayTask
- type PDFSummary
- type Page
- type PageCollection
- type PageReport
- type PageSummary
- type Q
- type QuestionSub
Constants ¶
const ( QuestionReady = "questionReady" QuestionSent = "questionSent" MarkerReady = "markerReady" MarkerSent = "markerSent" ModeratorReady = "moderatorReady" ModeratorSent = "moderatorSent" CheckerReady = "checkerReady" CheckerSent = "checkerSent" ReMarkerReady = "remarkerReady" ReMarkerSent = "remarkerSent" ReCheckerReady = "recheckerReady" ReCheckerSent = "recheckerSent" PageBad = pageBad MarkerProcessed = markerProcessed ModeratorActive = moderatorActive ModeratorInactive = moderatorInactive //External stages Checked = checked )
Variables ¶
var (
ExamStage = []string{
config,
pageBad,
acceptedReceipts,
acceptedPapers,
tempImages,
tempPages,
anonPapers,
questionImages,
questionPages,
questionReady,
questionSent,
questionBack,
questionSplit,
markerReady,
markerSent,
markerBack,
markerFlattened,
markerProcessed,
moderatorInactive,
moderatorActive,
moderatorReady,
moderatorSent,
moderatorBack,
moderatorFlattened,
moderatorProcessed,
enterInactive,
enterActive,
enterReady,
enterSent,
enterBack,
enterFlattened,
enterProcessed,
checkerReady,
checkerSent,
checkerBack,
checkerFlattened,
checkerProcessed,
finalCover,
reMarkerInactive,
reMarkerActive,
reMarkerReady,
reMarkerSent,
reMarkerBack,
reMarkerFlattened,
reMarkerProcessed,
reModeratorInactive,
reModeratorActive,
reModeratorReady,
reModeratorSent,
reModeratorBack,
reModeratorFlattened,
reModeratorProcessed,
reCheckerReady,
reCheckerSent,
reCheckerBack,
reCheckerFlattened,
reCheckerProcessed,
finalPapers,
reports,
}
)
Functions ¶
func CommentsToString ¶ added in v0.5.0
func ConvertPDFToJPEGs ¶
func CopyIsComplete ¶
func CopyOverWrite ¶ added in v0.5.0
func CountPDFInDir ¶ added in v0.7.2
func CountPages ¶
func CropToQuestion ¶
func DoOneCoverPage ¶ added in v0.6.0
func DoOneCoverPage(ct CoverPageTask, logger *zerolog.Logger) error
func DoOneFinalCoverPage ¶ added in v0.9.0
func DoOneFinalCoverPage(ct CoverPageTask, logger *zerolog.Logger) error
func EnsureDirAll ¶
func GetAnonymousFileName ¶
func GetAnonymousFromPath ¶ added in v0.8.0
looks for the word between - and .pdf (case insensitive) at the end of the string
func GetAnonymousFromPathBasic ¶ added in v0.8.0
looks for the word between - and .pdf (case insensitive) at the end of the string
func GetFileList ¶
func GetFileListThisDir ¶
func GetPDFPath ¶
when we read the Learn receipt, we might get a suffix for a word doc etc so find the pdf file in the target directory with the same base prefix name but possibly variable capitalisation of the suffix (handmade file!)
func GetPageSummaryMap ¶ added in v0.5.0
func GetPageSummaryMapFromFile ¶ added in v0.5.0
func GetPageSummaryMapFromFile(path string) (map[int]PageReport, error)
func GetRequiredQuestions ¶ added in v0.7.0
func GetShortActorName ¶ added in v0.5.0
some external libraries use this, like pagedata
func GetShortLearnDate ¶
func GetShortLearnDate(sub parselearn.Submission) (string, error)
func GetSubDirList ¶ added in v0.5.0
func IsEmptyDir ¶ added in v0.5.0
func ItemExists ¶
func ItemExists(sliceType interface{}, item interface{}) bool
Mod from array to slice, from https://www.golangprograms.com/golang-check-if-array-element-exists.html
func ValidStageForExport ¶ added in v0.5.0
func ValidStageForProcessedPapers ¶ added in v0.5.0
initial sanity check on stage that has been specified also used by merge "half" of the process (see merge.go)
func WritePageReportsToCSV ¶ added in v0.6.1
func WritePageReportsToCSV(reports []PageReport, outputPath string) error
Types ¶
type CoverPageCommand ¶ added in v0.6.0
type CoverPageTask ¶ added in v0.6.0
type CoverPageTask struct { Command CoverPageCommand Path string }
type FlattenTask ¶
type Ingester ¶
type Ingester struct { Redo bool UseFullAssignmentName bool SkipQuestionFile bool //TODO revert to private, probably // contains filtered or unexported fields }
func (*Ingester) AddCheckCoverBar ¶ added in v0.6.0
Add a cover page summarising the marking done so far
func (*Ingester) AddEnterActiveBar ¶ added in v0.5.0
func (*Ingester) AddEnterInactiveBar ¶ added in v0.5.0
func (*Ingester) AddFinalCover ¶ added in v0.9.0
Add a cover page summarising the finalised marking summary
func (*Ingester) AddLabelBar ¶
func (*Ingester) AddModerateActiveBar ¶
func (*Ingester) AddModerateInActiveBar ¶
func (*Ingester) CheckReport ¶ added in v0.7.0
func (*Ingester) CleanFromIngest ¶
func (*Ingester) CopyIfNewerThanDestination ¶ added in v0.5.0
func (g *Ingester) CopyIfNewerThanDestination(source, destination string, logger *zerolog.Logger) (bool, error)
if the source file is not newer, it's not an error we just won't move it - anything left we deal with later also, we delete "<file>.done" indicator
func (*Ingester) CopyIfNewerThanDestinationInDir ¶ added in v0.5.0
func (g *Ingester) CopyIfNewerThanDestinationInDir(source, destinationDir string, logger *zerolog.Logger) (bool, error)
returns true if moved
func (*Ingester) CopyIsComplete ¶
func (*Ingester) CoverPage ¶ added in v0.6.0
func (g *Ingester) CoverPage(cp CoverPageCommand, logger *zerolog.Logger) error
func (*Ingester) EnsureDirAll ¶
func (*Ingester) EnsureDirectoryStructure ¶
This must remain idempotent so we can call it every startup
func (*Ingester) ExportFiles ¶ added in v0.5.0
func (*Ingester) ExtractConf ¶
func (*Ingester) FinalCoverPage ¶ added in v0.9.0
func (g *Ingester) FinalCoverPage(cp CoverPageCommand, logger *zerolog.Logger) error
func (*Ingester) FinalReport ¶ added in v0.9.0
func (*Ingester) FlattenLayoutSVG ¶
note these rely on info contained in the instantiated ingester because they can be set on the command line
func (*Ingester) FlattenNewPapers ¶
func (*Ingester) FlattenOneNewPDF ¶ added in v0.5.0
func (*Ingester) FlattenProcessedPapers ¶ added in v0.5.0
func (*Ingester) FlattenProcessedPapersFromDir ¶ added in v0.5.0
func (*Ingester) FlattenProcessedPapersToDir ¶ added in v0.5.0
func (*Ingester) GetAnonymousFileName ¶
func (*Ingester) GetEmptySubDirs ¶ added in v0.5.0
func (*Ingester) GetExamDir ¶ added in v0.5.0
func (*Ingester) GetExamDirNamed ¶ added in v0.5.0
func (*Ingester) GetExamDirSub ¶ added in v0.5.0
note that inactive moderator back would use this function as destination := GetExamDir(exam, moderatorBack, inactive)
func (*Ingester) GetExamRoot ¶ added in v0.5.0
func (*Ingester) GetExportDir ¶ added in v0.5.0
func (*Ingester) GetExportDirs ¶ added in v0.5.0
func (*Ingester) GetFileListThisDir ¶
func (*Ingester) GetNamedTaskDecoration ¶ added in v0.5.0
func (*Ingester) GetShortActorName ¶ added in v0.5.0
func (*Ingester) IdentityCSV ¶
func (*Ingester) IngestConf ¶
func (*Ingester) IngestTemplate ¶
func (*Ingester) IsSameAsSelfInDir ¶
func (*Ingester) ItemExists ¶
Mod from array to slice, from https://www.golangprograms.com/golang-check-if-array-element-exists.html
func (*Ingester) MergeOverlayOnePDF ¶ added in v0.5.0
---------------- MergeOverlayOnePDF -----------------------------------------------------
-----------------------------------------------------------------------------------------
func (*Ingester) MergeOverlayPapers ¶ added in v0.5.0
func (g *Ingester) MergeOverlayPapers(mc MergeCommand, logger *zerolog.Logger) error
we pass pointer to logger that has a processing stage string pre-prended to it so we can tell what stage overlay is being used at
func (*Ingester) MergeProcessedPapers ¶ added in v0.5.0
func (*Ingester) MergeProcessedPapersFromDir ¶ added in v0.5.0
func (*Ingester) MergeProcessedPapersToDir ¶ added in v0.5.0
func (*Ingester) MigrateTempImages ¶ added in v0.5.0
on update from 0.4 -0.5 temp images moved
func (*Ingester) MigrateVersionDirStruct ¶ added in v0.5.0
func (*Ingester) MoveIfNewerThanDestination ¶
func (g *Ingester) MoveIfNewerThanDestination(source, destination string, logger *zerolog.Logger) (bool, error)
if the source file is not newer, it's not an error we just won't move it - anything left we deal with later also, we delete "<file>.done" indicator
func (*Ingester) MoveIfNewerThanDestinationInDir ¶
func (g *Ingester) MoveIfNewerThanDestinationInDir(source, destinationDir string, logger *zerolog.Logger) (bool, error)
returns true if moved
func (*Ingester) OutputPath ¶
func (*Ingester) OverlayConf ¶
func (*Ingester) OverlayLayoutSVG ¶
func (*Ingester) OverlayOnePDF ¶
-----------------------------OverlayOnePDF----------------------------------------- do one file, dynamically assembling the data we need make the latest pagedata from what we get in the OverlayTask struct return the number of pages -----------------------------------------------------------------------------------
func (*Ingester) OverlayPapers ¶
func (g *Ingester) OverlayPapers(oc OverlayCommand, logger *zerolog.Logger) error
we pass pointer to logger that has a processing stage string pre-prended to it so we can tell what stage overlay is being used at
func (*Ingester) OverlayTemplate ¶
func (*Ingester) RemoveEmptySubDirs ¶ added in v0.5.0
func (*Ingester) ReportOnProcessedDir ¶ added in v0.5.0
func (*Ingester) SetBackgroundIsVanilla ¶ added in v0.5.0
func (*Ingester) SetChangeAncestor ¶ added in v0.8.0
func (*Ingester) SetIngestTemplatePath ¶ added in v0.4.0
func (*Ingester) SetOpticalShrink ¶ added in v0.5.0
func (*Ingester) SetOverlayTemplatePath ¶ added in v0.4.0
func (*Ingester) SetSkipQuestionFile ¶ added in v0.7.2
func (*Ingester) SetTesting ¶
func (g *Ingester) SetTesting()
func (*Ingester) SetUseFullAssignmentName ¶ added in v0.3.0
func (g *Ingester) SetUseFullAssignmentName()
func (*Ingester) SetupExamDirs ¶ added in v0.5.0
func (*Ingester) SetupGradexDirs ¶ added in v0.5.0
func (*Ingester) SortQuestions ¶
func (*Ingester) SplitForEnter ¶ added in v0.5.0
func (*Ingester) SplitForModeration ¶
func (*Ingester) StageFromIngest ¶
wait for user to press an "do ingest button", then filewalk to get the paths
func (*Ingester) ValidateNewPapers ¶
type Mark ¶ added in v0.7.0
func GetMarksFromCoverPage ¶ added in v0.7.0
func GetMarksFromCoverPage(path string) ([]Mark, pagedata.ItemDetail, error)
type MarkCompare ¶ added in v0.9.0
type MergeCommand ¶ added in v0.5.0
type OverlayCommand ¶
type OverlayCommand struct { CoverPath string //get a cover page from here if it exists, and if cover page exists FromPath string ToPath string ExamName string TemplatePath string SpreadName string ProcessDetail pagedata.ProcessDetail Msg *chmsg.Messager PathDecoration string //this is the "-ma1" for marker1, "mo2" for moderator 2, "d" for done etc OpticalBoxSpread string ReadOpticalBoxes bool AncestorPath string OmitPreviousComments bool //this is for the checked stage, where we don't want earlier comments PropagateTextFieldValues bool // this is for enter active - copy textfield values out of pagedata into enter bar }
type OverlayTask ¶
type OverlayTask struct { InputPath string CoverPath string //no cover page if empty "" AncestorPath string //no redo of ancestry if empty Msg *chmsg.Messager NewFieldMap map[int][]pagedata.Field OldPageDataMap map[int]pagedata.PageData //this has the individual bits filled in? OutputPath string PageCount int ProcessDetail pagedata.ProcessDetail SpreadName string Template string Who string OpticalBoxSpread string ReadOpticalBoxes bool TextFields map[int]map[string]extract.TextField OmitPreviousComments bool //this is for the checked stage, where we don't want earlier comments PropagateTextFieldValues bool // this is for enter active - copy textfield values out of pagedata into enter bar }
type PDFSummary ¶
type PageCollection ¶ added in v0.5.0
type PageCollection struct { Seen []PageSummary Marked []PageSummary Bad []PageSummary Skipped []PageSummary }
type PageReport ¶ added in v0.5.0
type PageReport struct { Error string `csv:"error"` What string `csv:"what"` Who string `csv:"who"` When string `csv:"when"` Original string `csv:"original"` OwnPath string `csv:"path"` WasFor string `csv:"wasfor"` PageNumber int `csv:"page"` Status string `csv:"status"` MergeMessage string `csv:"message"` Comments string `csv:"comments"` IsLinked bool `csv:"linked"` FirstLink string `csv:"firstlink"` LastLink string `csv:"lastlink"` }
func (*PageReport) String ¶ added in v0.5.0
func (p *PageReport) String() string