@startuml
title Development Data Pipeline
 
hide circle
skinparam {
	DefaultFontName Roboto Condensed
	DefaultFontSize 16
	shadowing false
	' --barely-blue: hsl(208, 80%, 99%); #FAFDFE
	' --noon-blue: hsl(208, 80%, 88%); #C8E2F9
	' --morning-blue: hsl(208, 80%, 66%); #63ADEE
	' --barely-orange: hsl(32, 80%, 99%); #FEFDFA
	' --noon-orange: hsl(32, 80%, 88%); #F9E2C8
	' --morning-orange: hsl(32, 80%, 66%); #EEAD63
	' --evening-orange: hsl(32, 80%, 44%); #CA7616
	' --barely-green: hsl(96, 80%, 99%); #FCFEFA
	' --noon-green: hsl(96, 80%, 77%); #BBF395
	' --morning-green: hsl(96, 80%, 55%); #7AE830
	FileBorderColor #dddddd
	FileBackgroundColor #eeeeee
	ComponentBorderColor #dddddd
	ComponentBackgroundColor #eeeeee
	CloudBorderColor #dddddd
	CloudBackgroundColor #eeeeee
	ArrowColor #cccccc
	ActivityBackgroundColor #C8E2F9
	ActivityBorderColor #C8E2F9
	RectangleBackgroundColor #C8E2F9
	RectangleBorderColor #C8E2F9
	EntityBackgroundColor #C8E2F9
	EntityBorderColor #C8E2F9
}
 
rectangle CypherCharacterReader
rectangle CypherCharacterRenderer
rectangle CypherCharacterTemplateBlockIdentifier
rectangle CypherMachineRenderer
rectangle CypherMachineTemplateBlockIdentifier
rectangle DND5ECharacterReader
rectangle DND5ECharacterRenderer
rectangle DND5ECharacterTemplateBlockIdentifier
rectangle DND5EMachineRenderer
rectangle DND5EMachineTemplateBlockIdentifier
rectangle FileListFromDirectory
rectangle FilesFromDirectory
rectangle FileTextToBookData
rectangle FileTextToMachineData
rectangle FileTextToMarkdown
rectangle FileTextToPlantUml
rectangle PlantUmlTemplateBlockIdentifier
rectangle PlantUmlTemplateRenderer
rectangle PrintTemplateBlockIdentifier
rectangle PrintTemplateRenderer
rectangle RenderedTemplateSaver
rectangle SourceDirectoryProvider
rectangle SourceDirectoryWatcher
rectangle SourceFileOperationToFileText
rectangle StoryGraphRenderer
rectangle StoryGraphTemplateBlockIdentifier
rectangle TableOfContentsReader
rectangle TableOfContentsRenderer
rectangle TemplateBlockReader
rectangle CypherCharacterJoiner
rectangle CypherMachineTemplateBlockLoader
rectangle DND5ECharacterJoiner
rectangle DND5EMachineTemplateBlockLoader
rectangle MarkdownFilesAggregator
rectangle PlantUmlJoiner
rectangle PrintBlockJoiner
rectangle StoryGraphJoiner
rectangle TableOfContentsJoiner
entity "BookData" as BookData
entity "BookTemplateBlock" as BookTemplateBlock
entity "CypherCharacterData" as CypherCharacterData
entity "CypherCharacterDataTemplateBlock" as CypherCharacterDataTemplateBlock
entity "CypherCharacterTemplateBlock" as CypherCharacterTemplateBlock
entity "CypherMachineDataTemplateBlock" as CypherMachineDataTemplateBlock
entity "CypherMachineTemplateBlock" as CypherMachineTemplateBlock
entity "DND5ECharacterData" as DND5ECharacterData
entity "DND5ECharacterDataTemplateBlock" as DND5ECharacterDataTemplateBlock
entity "DND5ECharacterTemplateBlock" as DND5ECharacterTemplateBlock
entity "DND5EMachineDataTemplateBlock" as DND5EMachineDataTemplateBlock
entity "DND5EMachineTemplateBlock" as DND5EMachineTemplateBlock
entity "FileText" as FileText
entity "HasPlantUmlTemplateBlock" as HasPlantUmlTemplateBlock
entity "HasPrintTemplateBlock" as HasPrintTemplateBlock
entity "HasTemplateBlock" as HasTemplateBlock
entity "MachineData" as MachineData
entity "MachineTemplateBlock" as MachineTemplateBlock
entity "MarkdownFile" as MarkdownFile
entity "MarkdownFileList" as MarkdownFileList
entity "OperationBase" as OperationBase
entity "PlantUmlFile" as PlantUmlFile
entity "PlantUmlTemplateBlock" as PlantUmlTemplateBlock
entity "PrintTemplateBlock" as PrintTemplateBlock
entity "RenderedCypherCharacterDataTemplateBlock" as RenderedCypherCharacterDataTemplateBlock
entity "RenderedCypherMachineDataTemplateBlock" as RenderedCypherMachineDataTemplateBlock
entity "RenderedDND5ECharacterDataTemplateBlock" as RenderedDND5ECharacterDataTemplateBlock
entity "RenderedDND5EMachineDataTemplateBlock" as RenderedDND5EMachineDataTemplateBlock
entity "RenderedHasPlantUmlTemplateBlock" as RenderedHasPlantUmlTemplateBlock
entity "RenderedHasPrintTemplateBlock" as RenderedHasPrintTemplateBlock
entity "RenderedStoryGraphFiles" as RenderedStoryGraphFiles
entity "RenderedTableOfContentsBlock" as RenderedTableOfContentsBlock
entity "RenderedTemplateBlock" as RenderedTemplateBlock
entity "SourceDirectory" as SourceDirectory
entity "SourceDirectoryFileListOperation" as SourceDirectoryFileListOperation
entity "SourceDirectoryOperation" as SourceDirectoryOperation
entity "SourceFileOperation" as SourceFileOperation
entity "StoryGraphFiles" as StoryGraphFiles
entity "StoryGraphTemplateBlock" as StoryGraphTemplateBlock
entity "TableOfContentsBlock" as TableOfContentsBlock
entity "TableOfContentsItems" as TableOfContentsItems
entity "TableOfContentsTemplateBlock" as TableOfContentsTemplateBlock
entity "TemplateBlock" as TemplateBlock
TemplateBlock <.. BookTemplateBlock : extends
HasTemplateBlock <.. CypherCharacterDataTemplateBlock : extends
BookTemplateBlock <.. CypherCharacterTemplateBlock : extends
HasTemplateBlock <.. CypherMachineDataTemplateBlock : extends
MachineTemplateBlock <.. CypherMachineTemplateBlock : extends
HasTemplateBlock <.. DND5ECharacterDataTemplateBlock : extends
BookTemplateBlock <.. DND5ECharacterTemplateBlock : extends
HasTemplateBlock <.. DND5EMachineDataTemplateBlock : extends
MachineTemplateBlock <.. DND5EMachineTemplateBlock : extends
HasTemplateBlock <.. HasPlantUmlTemplateBlock : extends
HasTemplateBlock <.. HasPrintTemplateBlock : extends
TemplateBlock <.. MachineTemplateBlock : extends
TemplateBlock <.. PlantUmlTemplateBlock : extends
TemplateBlock <.. PrintTemplateBlock : extends
RenderedTemplateBlock <.. RenderedCypherCharacterDataTemplateBlock : extends
RenderedTemplateBlock <.. RenderedCypherMachineDataTemplateBlock : extends
RenderedTemplateBlock <.. RenderedDND5ECharacterDataTemplateBlock : extends
RenderedTemplateBlock <.. RenderedDND5EMachineDataTemplateBlock : extends
RenderedTemplateBlock <.. RenderedHasPlantUmlTemplateBlock : extends
RenderedTemplateBlock <.. RenderedHasPrintTemplateBlock : extends
RenderedTemplateBlock <.. RenderedStoryGraphFiles : extends
RenderedTemplateBlock <.. RenderedTableOfContentsBlock : extends
OperationBase <.. SourceDirectoryFileListOperation : extends
OperationBase <.. SourceDirectoryOperation : extends
OperationBase <.. SourceFileOperation : extends
HasTemplateBlock <.. StoryGraphFiles : extends
HasTemplateBlock <.. TableOfContentsBlock : extends
TemplateBlock <.. TableOfContentsTemplateBlock : extends
BookData --> CypherCharacterReader
CypherCharacterReader --> CypherCharacterData
CypherCharacterDataTemplateBlock --> CypherCharacterRenderer
CypherCharacterRenderer --> RenderedCypherCharacterDataTemplateBlock
TemplateBlock --> CypherCharacterTemplateBlockIdentifier
CypherCharacterTemplateBlockIdentifier --> CypherCharacterTemplateBlock
CypherMachineDataTemplateBlock --> CypherMachineRenderer
CypherMachineRenderer --> RenderedCypherMachineDataTemplateBlock
TemplateBlock --> CypherMachineTemplateBlockIdentifier
CypherMachineTemplateBlockIdentifier --> CypherMachineTemplateBlock
BookData --> DND5ECharacterReader
DND5ECharacterReader --> DND5ECharacterData
DND5ECharacterDataTemplateBlock --> DND5ECharacterRenderer
DND5ECharacterRenderer --> RenderedDND5ECharacterDataTemplateBlock
TemplateBlock --> DND5ECharacterTemplateBlockIdentifier
DND5ECharacterTemplateBlockIdentifier --> DND5ECharacterTemplateBlock
DND5EMachineDataTemplateBlock --> DND5EMachineRenderer
DND5EMachineRenderer --> RenderedDND5EMachineDataTemplateBlock
TemplateBlock --> DND5EMachineTemplateBlockIdentifier
DND5EMachineTemplateBlockIdentifier --> DND5EMachineTemplateBlock
SourceDirectoryOperation --> FileListFromDirectory
FileListFromDirectory --> SourceDirectoryFileListOperation
SourceDirectoryFileListOperation --> FilesFromDirectory
FilesFromDirectory --> SourceFileOperation
FileText --> FileTextToBookData
FileTextToBookData --> BookData
FileText --> FileTextToMachineData
FileTextToMachineData --> MachineData
FileText --> FileTextToMarkdown
FileTextToMarkdown --> MarkdownFile
FileText --> FileTextToPlantUml
FileTextToPlantUml --> PlantUmlFile
TemplateBlock --> PlantUmlTemplateBlockIdentifier
PlantUmlTemplateBlockIdentifier --> PlantUmlTemplateBlock
HasPlantUmlTemplateBlock --> PlantUmlTemplateRenderer
PlantUmlTemplateRenderer --> RenderedHasPlantUmlTemplateBlock
TemplateBlock --> PrintTemplateBlockIdentifier
PrintTemplateBlockIdentifier --> PrintTemplateBlock
HasPrintTemplateBlock --> PrintTemplateRenderer
PrintTemplateRenderer --> RenderedHasPrintTemplateBlock
RenderedTemplateBlock --> RenderedTemplateSaver
RenderedCypherCharacterDataTemplateBlock --> RenderedTemplateSaver
RenderedDND5ECharacterDataTemplateBlock --> RenderedTemplateSaver
RenderedHasPlantUmlTemplateBlock --> RenderedTemplateSaver
RenderedHasPrintTemplateBlock --> RenderedTemplateSaver
RenderedTableOfContentsBlock --> RenderedTemplateSaver
RenderedCypherMachineDataTemplateBlock --> RenderedTemplateSaver
RenderedDND5EMachineDataTemplateBlock --> RenderedTemplateSaver
RenderedStoryGraphFiles --> RenderedTemplateSaver
SourceDirectoryProvider --> SourceDirectory
SourceDirectory --> SourceDirectoryWatcher
SourceDirectoryWatcher --> SourceDirectoryOperation
SourceFileOperation --> SourceFileOperationToFileText
SourceFileOperationToFileText --> FileText
StoryGraphFiles --> StoryGraphRenderer
StoryGraphRenderer --> RenderedStoryGraphFiles
TemplateBlock --> StoryGraphTemplateBlockIdentifier
StoryGraphTemplateBlockIdentifier --> StoryGraphTemplateBlock
MarkdownFileList --> TableOfContentsReader
TableOfContentsReader --> TableOfContentsItems
TableOfContentsBlock --> TableOfContentsRenderer
TableOfContentsRenderer --> RenderedTableOfContentsBlock
MarkdownFile --> TemplateBlockReader
TemplateBlockReader --> TemplateBlock
CypherCharacterData --> CypherCharacterJoiner
CypherCharacterTemplateBlock --> CypherCharacterJoiner
CypherCharacterJoiner --> CypherCharacterDataTemplateBlock
MachineData --> CypherMachineTemplateBlockLoader
CypherMachineTemplateBlock --> CypherMachineTemplateBlockLoader
CypherMachineTemplateBlockLoader --> CypherMachineDataTemplateBlock
DND5ECharacterData --> DND5ECharacterJoiner
DND5ECharacterTemplateBlock --> DND5ECharacterJoiner
DND5ECharacterJoiner --> DND5ECharacterDataTemplateBlock
MachineData --> DND5EMachineTemplateBlockLoader
DND5EMachineTemplateBlock --> DND5EMachineTemplateBlockLoader
DND5EMachineTemplateBlockLoader --> DND5EMachineDataTemplateBlock
SourceDirectoryFileListOperation --> MarkdownFilesAggregator
MarkdownFile --> MarkdownFilesAggregator
MarkdownFilesAggregator --> MarkdownFileList
PlantUmlTemplateBlock --> PlantUmlJoiner
PlantUmlFile --> PlantUmlJoiner
PlantUmlJoiner --> HasPlantUmlTemplateBlock
PrintTemplateBlock --> PrintBlockJoiner
SourceDirectoryFileListOperation --> PrintBlockJoiner
PrintBlockJoiner --> HasPrintTemplateBlock
MarkdownFileList --> StoryGraphJoiner
StoryGraphTemplateBlock --> StoryGraphJoiner
StoryGraphJoiner --> StoryGraphFiles
TableOfContentsTemplateBlock --> TableOfContentsJoiner
TableOfContentsItems --> TableOfContentsJoiner
TableOfContentsJoiner --> TableOfContentsBlock
@enduml