@@ -615,6 +615,211 @@ class Sabberworm\CSS\CSSList\Document#4 (2) {
615615#header {margin : 10px 2em 1cm 2% ;font-family : Verdana ,Helvetica ," Gill Sans" ,sans-serif ;color : red !important ;}
616616```
617617
618+ ## Class diagram
619+
620+ ``` mermaid
621+ classDiagram
622+ direction LR
623+
624+ %% top namespace
625+
626+ class OutputFormat {
627+ }
628+
629+ class OutputFormatter {
630+ }
631+
632+ OutputFormatter --> "1" OutputFormat : oFormat
633+ OutputFormat --> "1" OutputFormatter : oFormatter
634+ OutputFormat --> "1" OutputFormat : oNextLevelFormat
635+
636+ class Parser {
637+ }
638+
639+ class ParserState {
640+ }
641+
642+ Parser --> "1" ParserState : oParserState
643+
644+ class Renderable {
645+ }
646+ <<interface>> Renderable
647+
648+ class Settings {
649+ }
650+
651+
652+ %% namespace Comment
653+
654+ class Comment {
655+ }
656+ class Commentable {
657+ }
658+
659+ <<interface>> Commentable
660+ Comment ..|> Renderable
661+
662+
663+ %% namespace CSSList
664+
665+ class AtRuleBlockList {
666+ }
667+ class CSSBlockList {
668+ }
669+ class CSSList {
670+ }
671+ class Document {
672+ }
673+ class KeyFrame {
674+ }
675+
676+ AtRuleBlockList --|> CSSBlockList
677+ AtRuleBlockList ..|> AtRule
678+ CSSBlockList --|> CSSList
679+ CSSList ..|> Renderable
680+ CSSList ..|> Commentable
681+ Document --|> CSSBlockList
682+ KeyFrame --|> CSSList
683+ KeyFrame ..|> AtRule
684+
685+ CSSList --> "*" Comment : aComments
686+ CSSList --> "*" RuleSet : aContents
687+ CSSList --> "*" CSSList : aContents
688+ CSSList --> "*" Import : aContents
689+ CSSList --> "*" Charset : aContents
690+
691+ %% namespace Parsing
692+
693+ class Anchor {
694+ }
695+ class OutputException {
696+ }
697+ class ParserState {
698+ }
699+ class SourceException {
700+ }
701+ class UnexpectedEOFException {
702+ }
703+ class UnexpectedTokenException {
704+ }
705+
706+ OutputException --|> SourceException
707+ UnexpectedEOFException --|> UnexpectedTokenException
708+ UnexpectedTokenException --|> SourceException
709+
710+ Anchor --> "1" ParserState : oParserState
711+ ParserState --> "1" Settings : oParserSettings
712+
713+ %% namespace Property
714+
715+ class AtRule {
716+ }
717+ class Charset {
718+ }
719+ class CSSNamespace {
720+ }
721+ class Import {
722+ }
723+ class KeyframeSelector {
724+ }
725+ class Selector {
726+ }
727+
728+ <<interface>> AtRule
729+ AtRule --|> Renderable
730+ AtRule --|> Commentable
731+ Charset ..|> AtRule
732+ CSSNamespace ..|> AtRule
733+ Import ..|> AtRule
734+ KeyframeSelector --|> Selector
735+
736+ Charset --> "1" CSSString : oCharset
737+ Charset --> "*" Comment : aComments
738+ CSSNamespace --> "*" Comment : aComments
739+ Import --> "*" Comment : aComments
740+
741+
742+ %% namespace Rule
743+
744+ class Rule {
745+ }
746+
747+ Rule ..|> Renderable
748+ Rule ..|> Commentable
749+
750+ Rule --> "1" RuleValueList : mValue
751+ Rule --> "*" Comment : aComments
752+
753+
754+ %% namespace RuleSet
755+
756+ class AtRuleSet {
757+ }
758+ class DeclarationBlock {
759+ }
760+ class RuleSet {
761+ }
762+
763+ AtRuleSet --|> RuleSet
764+ AtRuleSet ..|> AtRule
765+ DeclarationBlock --|> RuleSet
766+ RuleSet ..|> Renderable
767+ RuleSet ..|> Commentable
768+
769+ DeclarationBlock --> "*" Selector : aSelectors
770+ RuleSet --> "*" Rule : aRules
771+ RuleSet --> "*" Comment : aComments
772+
773+
774+ %% namespace Value
775+
776+ class CalcFunction {
777+ }
778+ class CalcRuleValueList {
779+ }
780+ class Color {
781+ }
782+ class CSSFunction {
783+ }
784+ class CSSString {
785+ }
786+ class LineName {
787+ }
788+ class PrimitiveValue {
789+ }
790+ class RuleValueList {
791+ }
792+ class Size {
793+ }
794+ class URL {
795+ }
796+ class Value {
797+ }
798+ class ValueList {
799+ }
800+
801+ CalcFunction --|> CSSFunction
802+ CalcRuleValueList --|> RuleValueList
803+ Color --|> CSSFunction
804+ CSSFunction --|> ValueList
805+ CSSString --|> PrimitiveValue
806+ LineName --|> ValueList
807+ PrimitiveValue --|> Value
808+ RuleValueList --|> ValueList
809+ Size --|> PrimitiveValue
810+ URL --|> PrimitiveValue
811+ Value ..|> Renderable
812+ ValueList --|> Value
813+
814+ URL --> "1" CSSString : oURL
815+ ValueList --> "*" RuleValueList : aComponents
816+ ValueList --> "*" CSSFunction : aComponents
817+ ValueList --> "*" CSSString : aComponents
818+ ValueList --> "*" LineName : aComponents
819+ ValueList --> "*" Size : aComponents
820+ ValueList --> "*" URL : aComponents
821+ ```
822+
618823## Contributors/Thanks to
619824
620825* [ oliverklee] ( https://github.com/oliverklee ) for lots of refactorings, code modernizations and CI integrations
0 commit comments