docs for refactoring design
This commit is contained in:
parent
e53dcdcf4d
commit
7edee42053
|
@ -0,0 +1,533 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||||
|
<!--Created by yEd 3.16.2.1-->
|
||||||
|
<key attr.name="Description" attr.type="string" for="graph" id="d0"/>
|
||||||
|
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||||
|
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||||
|
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||||
|
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||||
|
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||||
|
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||||
|
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||||
|
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||||
|
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||||
|
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||||
|
<graph edgedefault="directed" id="G">
|
||||||
|
<data key="d0"/>
|
||||||
|
<node id="n0">
|
||||||
|
<data key="d6">
|
||||||
|
<y:ShapeNode>
|
||||||
|
<y:Geometry height="100.75" width="245.0" x="55.75" y="32.0"/>
|
||||||
|
<y:Fill color="#FFCC00" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="sides" modelPosition="n" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.501953125" x="101.2490234375" y="-21.96875">Config</y:NodeLabel>
|
||||||
|
<y:Shape type="roundrectangle"/>
|
||||||
|
</y:ShapeNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n1">
|
||||||
|
<data key="d4"/>
|
||||||
|
<data key="d6">
|
||||||
|
<y:ShapeNode>
|
||||||
|
<y:Geometry height="178.75" width="308.75" x="344.875" y="-46.0"/>
|
||||||
|
<y:Fill color="#FFCC00" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="sides" modelPosition="n" textColor="#000000" verticalTextPosition="bottom" visible="true" width="85.404296875" x="111.6728515625" y="-21.96875">Book Content</y:NodeLabel>
|
||||||
|
<y:Shape type="roundrectangle"/>
|
||||||
|
</y:ShapeNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n2">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="73.0" x="75.75" y="62.0"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="53.4296875" x="9.78515625" y="17.515625">CLI Args<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n3">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="73.0" x="207.75" y="62.5"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="64.134765625" x="4.4326171875" y="17.515625">book.toml<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n4">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="115.0" x="366.0" y="62.5"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="88.10546875" x="13.447265625" y="17.515625">SUMMARY.md<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n5">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="90.0" x="540.0" y="62.5"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.3046875" x="11.34765625" y="10.53125">markdown
|
||||||
|
chapters<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n6">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="128.0" x="528.0" y="577.7202141900937"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="100.181640625" x="13.9091796875" y="17.515625">template assets<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n7">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="com.yworks.entityRelationship.big_entity">
|
||||||
|
<y:Geometry height="113.0" width="80.0" x="110.0" y="257.0"/>
|
||||||
|
<y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" backgroundColor="#B7C9E3" configuration="com.yworks.entityRelationship.label.name" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="72.3671875" x="3.81640625" y="4.0">BookConfig</y:NodeLabel>
|
||||||
|
<y:NodeLabel alignment="left" autoSizePolicy="content" configuration="com.yworks.entityRelationship.label.attributes" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="73.84375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="top" visible="true" width="58.169921875" x="2.0" y="29.96875">root
|
||||||
|
src
|
||||||
|
dest
|
||||||
|
template
|
||||||
|
renderer<y:LabelModel>
|
||||||
|
<y:ErdAttributesNodeLabelModel/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:ErdAttributesNodeLabelModelParameter/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
<y:StyleProperties>
|
||||||
|
<y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/>
|
||||||
|
</y:StyleProperties>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n8">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="com.yworks.entityRelationship.big_entity">
|
||||||
|
<y:Geometry height="75.0" width="80.0" x="464.36587981973474" y="414.2175368139224"/>
|
||||||
|
<y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" backgroundColor="#B7C9E3" configuration="com.yworks.entityRelationship.label.name" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="33.865234375" x="23.0673828125" y="4.0">Book</y:NodeLabel>
|
||||||
|
<y:NodeLabel alignment="left" autoSizePolicy="content" configuration="com.yworks.entityRelationship.label.attributes" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="top" visible="true" width="62.16015625" x="2.0" y="29.96875">metadata
|
||||||
|
chapters<y:LabelModel>
|
||||||
|
<y:ErdAttributesNodeLabelModel/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:ErdAttributesNodeLabelModelParameter/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
<y:StyleProperties>
|
||||||
|
<y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/>
|
||||||
|
</y:StyleProperties>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n9">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="com.yworks.entityRelationship.big_entity">
|
||||||
|
<y:Geometry height="64.0" width="134.39999999999998" x="275.0" y="572.2202141900937"/>
|
||||||
|
<y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" backgroundColor="#B7C9E3" configuration="com.yworks.entityRelationship.label.name" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="59.576171875" x="37.41191406249999" y="4.0">Renderer</y:NodeLabel>
|
||||||
|
<y:NodeLabel alignment="left" autoSizePolicy="content" configuration="com.yworks.entityRelationship.label.attributes" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="top" visible="true" width="126.818359375" x="2.0" y="29.96875">render(book, config)<y:LabelModel>
|
||||||
|
<y:ErdAttributesNodeLabelModel/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:ErdAttributesNodeLabelModelParameter/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
<y:StyleProperties>
|
||||||
|
<y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/>
|
||||||
|
</y:StyleProperties>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n10">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="com.yworks.entityRelationship.big_entity">
|
||||||
|
<y:Geometry height="90.0" width="80.0" x="336.4073791503906" y="414.2175368139224"/>
|
||||||
|
<y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" backgroundColor="#B7C9E3" configuration="com.yworks.entityRelationship.label.name" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="53.458984375" x="13.2705078125" y="4.0">MDBook</y:NodeLabel>
|
||||||
|
<y:NodeLabel alignment="left" autoSizePolicy="content" configuration="com.yworks.entityRelationship.label.attributes" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="top" visible="true" width="40.720703125" x="2.0" y="29.96875">books
|
||||||
|
config<y:LabelModel>
|
||||||
|
<y:ErdAttributesNodeLabelModel/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:ErdAttributesNodeLabelModelParameter/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
<y:StyleProperties>
|
||||||
|
<y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/>
|
||||||
|
</y:StyleProperties>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n11">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="90.0" x="540.0" y="-20.5"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="47.62890625" x="21.185546875" y="17.515625">images<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n12">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="com.yworks.entityRelationship.big_entity">
|
||||||
|
<y:Geometry height="90.0" width="105.0" x="376.0" y="257.5"/>
|
||||||
|
<y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" backgroundColor="#B7C9E3" configuration="com.yworks.entityRelationship.label.name" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="90.689453125" x="7.1552734375" y="4.0">BookMetadata</y:NodeLabel>
|
||||||
|
<y:NodeLabel alignment="left" autoSizePolicy="content" configuration="com.yworks.entityRelationship.label.attributes" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.90625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="top" visible="true" width="59.681640625" x="2.0" y="29.96875">title
|
||||||
|
author
|
||||||
|
publisher<y:LabelModel>
|
||||||
|
<y:ErdAttributesNodeLabelModel/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:ErdAttributesNodeLabelModelParameter/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
<y:StyleProperties>
|
||||||
|
<y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/>
|
||||||
|
</y:StyleProperties>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n13">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="com.yworks.entityRelationship.big_entity">
|
||||||
|
<y:Geometry height="90.0" width="115.0" x="511.0" y="257.5"/>
|
||||||
|
<y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/>
|
||||||
|
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" backgroundColor="#B7C9E3" configuration="com.yworks.entityRelationship.label.name" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="94.275390625" x="10.3623046875" y="4.0">Vec<Chapter></y:NodeLabel>
|
||||||
|
<y:NodeLabel alignment="left" autoSizePolicy="content" configuration="com.yworks.entityRelationship.label.attributes" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.90625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="top" visible="true" width="83.921875" x="2.0" y="29.96875">title
|
||||||
|
file
|
||||||
|
sub_chapters<y:LabelModel>
|
||||||
|
<y:ErdAttributesNodeLabelModel/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:ErdAttributesNodeLabelModelParameter/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
<y:StyleProperties>
|
||||||
|
<y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/>
|
||||||
|
</y:StyleProperties>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<node id="n14">
|
||||||
|
<data key="d6">
|
||||||
|
<y:GenericNode configuration="ShinyPlateNode">
|
||||||
|
<y:Geometry height="53.0" width="115.0" x="395.0" y="-20.5"/>
|
||||||
|
<y:Fill color="#FF9900" transparent="false"/>
|
||||||
|
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
|
||||||
|
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="88.919921875" x="13.0400390625" y="10.53125">YAML headers
|
||||||
|
(optional)<y:LabelModel>
|
||||||
|
<y:SmartNodeLabelModel distance="4.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
</y:NodeLabel>
|
||||||
|
</y:GenericNode>
|
||||||
|
</data>
|
||||||
|
</node>
|
||||||
|
<edge id="e0" source="n4" target="n4">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="423.5" y="89.0"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e1" source="n2" target="n7">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="-0.5713348388671875" ty="-40.17777777777778">
|
||||||
|
<y:Point x="131.00865173339844" y="180.87705993652344"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="right" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="free" modelPosition="anywhere" preferredPlacement="left" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="125.921875" x="-113.5390319824219" y="92.04427337646476">behaviour control,
|
||||||
|
paths, target format<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" placement="anywhere" side="left" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:Arc height="0.17272590100765228" ratio="0.003664793446660042" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e2" source="n3" target="n7">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="13.85631193730191" ty="-56.48749113237591">
|
||||||
|
<y:Point x="191.57940673828125" y="167.03758239746094"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="left" configuration="AutoFlippingLabel" distance="1.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="free" modelPosition="anywhere" preferredPlacement="right" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="37.533203125" x="-43.598876953125" y="101.51483154296875">paths<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" placement="anywhere" side="right" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:Arc height="-13.828213691711426" ratio="-0.29697197675704956" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e3" source="n3" target="n12">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="353.7525329589844" y="180.75323486328125"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="62.16015625" x="18.158484098010604" y="77.33507585168667">metadata<y:LabelModel>
|
||||||
|
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
|
||||||
|
</y:LabelModel>
|
||||||
|
<y:ModelParameter>
|
||||||
|
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.9422441392716253" segment="0"/>
|
||||||
|
</y:ModelParameter>
|
||||||
|
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:Arc height="22.95389747619629" ratio="0.32557427883148193" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e4" source="n4" target="n13">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="509.19012451171875" y="186.79183959960938"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="71.634765625" x="-12.16741943359375" y="74.53813934326172">chapter list<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:Arc height="15.944525718688965" ratio="0.2471216768026352" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e5" source="n5" target="n13">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="599.7504272460938" y="197.5275421142578"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="left" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="112.603515625" x="11.47149658203125" y="58.50482940673828">chapter attributes
|
||||||
|
chapter content<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:Arc height="23.068986892700195" ratio="0.43092089891433716" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e6" source="n7" target="n10">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="274.05633544921875" y="369.4965515136719"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="20.052793502807617" ratio="0.29790934920310974" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e7" source="n12" target="n8">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="473.98077392578125" y="373.271240234375"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="8.46737289428711" ratio="0.20233124494552612" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e8" source="n12" target="n12">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="428.5" y="302.5"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e9" source="n13" target="n8">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="541.8388061523438" y="379.4322204589844"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="5.884036540985107" ratio="0.144912451505661" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e10" source="n9" target="n9">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="342.20001220703125" y="604.22021484375"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e11" source="n9" target="n9">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="342.20001220703125" y="604.22021484375"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e12" source="n9" target="n9">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="342.20001220703125" y="604.22021484375"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e13" source="n10" target="n9">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="369.2901916503906" y="534.0747680664062"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="10.260604858398438" ratio="0.27548399567604065" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e14" source="n8" target="n10">
|
||||||
|
<data key="d10">
|
||||||
|
<y:ArcEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
|
||||||
|
<y:Point x="440.6768798828125" y="460.4197082519531"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:Arc height="4.960666179656982" ratio="0.15480542182922363" type="fixedRatio"/>
|
||||||
|
</y:ArcEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e15" source="n3" target="n9">
|
||||||
|
<data key="d10">
|
||||||
|
<y:PolyLineEdge>
|
||||||
|
<y:Path sx="10.75" sy="1.0" tx="-41.46361445783125" ty="3.7797858099063433">
|
||||||
|
<y:Point x="255.0" y="608.0"/>
|
||||||
|
</y:Path>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="right" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="105.326171875" x="-119.66308593750006" y="446.5169677734375">renderer specific
|
||||||
|
data<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:BendStyle smoothed="false"/>
|
||||||
|
</y:PolyLineEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e16" source="n6" target="n9">
|
||||||
|
<data key="d10">
|
||||||
|
<y:PolyLineEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="standard"/>
|
||||||
|
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="89.265625" x="-95.627685546875" y="-24.204589843749886">template path<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||||
|
</y:EdgeLabel>
|
||||||
|
<y:BendStyle smoothed="false"/>
|
||||||
|
</y:PolyLineEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e17" source="n14" target="n5">
|
||||||
|
<data key="d10">
|
||||||
|
<y:PolyLineEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="none"/>
|
||||||
|
<y:BendStyle smoothed="false"/>
|
||||||
|
</y:PolyLineEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
<edge id="e18" source="n11" target="n5">
|
||||||
|
<data key="d10">
|
||||||
|
<y:PolyLineEdge>
|
||||||
|
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||||
|
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||||
|
<y:Arrows source="none" target="none"/>
|
||||||
|
<y:BendStyle smoothed="false"/>
|
||||||
|
</y:PolyLineEdge>
|
||||||
|
</data>
|
||||||
|
</edge>
|
||||||
|
</graph>
|
||||||
|
<data key="d7">
|
||||||
|
<y:Resources/>
|
||||||
|
</data>
|
||||||
|
</graphml>
|
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
|
@ -0,0 +1,142 @@
|
||||||
|
@startuml
|
||||||
|
|
||||||
|
class book::MDBook {
|
||||||
|
root
|
||||||
|
dest
|
||||||
|
src
|
||||||
|
theme_path
|
||||||
|
title
|
||||||
|
author
|
||||||
|
description
|
||||||
|
content : Vec<BookItem>
|
||||||
|
books : HashMap<&'a str, Book>
|
||||||
|
renderer
|
||||||
|
livereload
|
||||||
|
}
|
||||||
|
|
||||||
|
class book::book.Book {
|
||||||
|
metadata
|
||||||
|
frontmatter
|
||||||
|
mainmatter
|
||||||
|
backmatter
|
||||||
|
|
||||||
|
new(title)
|
||||||
|
}
|
||||||
|
|
||||||
|
class book::bookconfig.BookConfig {
|
||||||
|
root
|
||||||
|
dest
|
||||||
|
src
|
||||||
|
theme_path
|
||||||
|
title
|
||||||
|
author
|
||||||
|
description
|
||||||
|
indent_spaces
|
||||||
|
multilingual
|
||||||
|
|
||||||
|
new(root)
|
||||||
|
}
|
||||||
|
|
||||||
|
class book::chapter.Chapter {
|
||||||
|
title
|
||||||
|
file
|
||||||
|
author
|
||||||
|
description
|
||||||
|
index
|
||||||
|
class
|
||||||
|
sub_chapters
|
||||||
|
|
||||||
|
new(title, file)
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace book::bookitem {
|
||||||
|
|
||||||
|
enum BookItem {
|
||||||
|
Chapter "String, Chapter"
|
||||||
|
Affix "Chapter"
|
||||||
|
Spacer
|
||||||
|
}
|
||||||
|
|
||||||
|
class BookItems {
|
||||||
|
items : &'a [BookItem]
|
||||||
|
current_index
|
||||||
|
stack : Vec<"&'a [BookItem], usize">
|
||||||
|
}
|
||||||
|
|
||||||
|
class Chapter {
|
||||||
|
name
|
||||||
|
path
|
||||||
|
sub_items
|
||||||
|
|
||||||
|
new(name, path)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace book::metadata {
|
||||||
|
|
||||||
|
class BookMetadata {
|
||||||
|
title
|
||||||
|
subtitle
|
||||||
|
description
|
||||||
|
publisher
|
||||||
|
language
|
||||||
|
authors
|
||||||
|
translators
|
||||||
|
number_format
|
||||||
|
section_names
|
||||||
|
new(title)
|
||||||
|
}
|
||||||
|
|
||||||
|
class Author {
|
||||||
|
name
|
||||||
|
email
|
||||||
|
new(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
class Language {
|
||||||
|
name
|
||||||
|
code
|
||||||
|
}
|
||||||
|
|
||||||
|
class Publisher {
|
||||||
|
name
|
||||||
|
url
|
||||||
|
logo_src
|
||||||
|
}
|
||||||
|
|
||||||
|
enum NumberFormat {
|
||||||
|
Arabic
|
||||||
|
Roman
|
||||||
|
Word
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class renderer::html_handlebars::HtmlHandlebars {
|
||||||
|
new()
|
||||||
|
render(book: MDBook)
|
||||||
|
}
|
||||||
|
|
||||||
|
class theme::Theme {
|
||||||
|
index
|
||||||
|
css
|
||||||
|
favicon
|
||||||
|
js
|
||||||
|
highlight_css
|
||||||
|
tomorrow_night_css
|
||||||
|
highlight_js
|
||||||
|
jquery
|
||||||
|
new(src)
|
||||||
|
}
|
||||||
|
|
||||||
|
book::book-[hidden]->book::bookconfig
|
||||||
|
book::book-[hidden]->book::chapter
|
||||||
|
book::book-[hidden]->book::bookitem
|
||||||
|
book::book-[hidden]->book::metadata
|
||||||
|
|
||||||
|
book::bookitem.BookItems-[hidden]->book::bookitem.BookItem
|
||||||
|
|
||||||
|
renderer::html_handlebars::HtmlHandlebars-[hidden]->theme::Theme
|
||||||
|
|
||||||
|
@enduml
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Doc
|
||||||
|
|
||||||
|
Diagrams are with [yEd](http://www.yworks.com/products/yed) and [plantuml](http://plantuml.com).
|
||||||
|
|
||||||
|
## Data
|
||||||
|
|
||||||
|
![book data](assets/bookdata.png)
|
||||||
|
|
||||||
|
### Renderer
|
||||||
|
|
||||||
|
Takes data from:
|
||||||
|
|
||||||
|
- a book's metadata and chapters (`Book`)
|
||||||
|
- paths and behaviour config (`BookConfig`)
|
||||||
|
- template assets (`template_path`)
|
||||||
|
|
||||||
|
For generating pages:
|
||||||
|
|
||||||
|
Book metadata, `BookMetadata` (title, author, publisher, etc.). Just recognize
|
||||||
|
those properties which can be easily anticipated.
|
||||||
|
|
||||||
|
If Renderer needs more specific data, it can be supplied in `book.toml`. It's
|
||||||
|
the Renderer's job to open that and parse it out.
|
||||||
|
|
||||||
|
Chapters, `Vec<Chapter>`.
|
||||||
|
|
||||||
|
If the user wants to store attributes that are not anticipated with structs,
|
||||||
|
they can go in a hashmap with string keys, let them be accessible from the
|
||||||
|
templates with helpers.
|
||||||
|
|
||||||
|
For generating output:
|
||||||
|
|
||||||
|
- template assets, `template-path`, renderer does whatever it wants with it
|
||||||
|
- config (root, dest, etc. folders)
|
||||||
|
|
||||||
|
Renderer is seleceted by CLI or default (html). Each book is passed to this
|
||||||
|
renderer.
|
||||||
|
|
||||||
|
### Config
|
||||||
|
|
||||||
|
Takes data from:
|
||||||
|
|
||||||
|
- CLI args
|
||||||
|
- book.json
|
||||||
|
|
||||||
|
## Structs
|
||||||
|
|
||||||
|
### Currently
|
||||||
|
|
||||||
|
Already almost good for implementing the above.
|
||||||
|
|
||||||
|
Storing data attributes can be reorganized.
|
||||||
|
|
||||||
|
Modules could be refactored to express intention more clearly.
|
||||||
|
|
||||||
|
![structs](assets/structs.png)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
There could be less modules. Merge modules which express one intention.
|
||||||
|
|
||||||
|
The two Chapter structs could be refactored out.
|
||||||
|
|
||||||
|
Take config paths for as many things as possible. Let the user organize their
|
||||||
|
project folder differently, or allow `mdbook` to function in existing projects
|
||||||
|
with already established folders.
|
||||||
|
|
||||||
|
Add config path for `SUMMARY.md`. Default is good to be in `src/`, it allows
|
||||||
|
chapter links to work when reading the file on Github.
|
||||||
|
|
||||||
|
The init command should copy the assets folder by default, it is better to make
|
||||||
|
this choice for new users.
|
||||||
|
|
||||||
|
The specific assets (CSS, templates, etc.) are closely coupled with the book
|
||||||
|
content when the user is writing it. If the templates change when mdbook
|
||||||
|
develops, this changes the output in a way the user doesn't expect, maybe even
|
||||||
|
breaking their book.
|
||||||
|
|
Loading…
Reference in New Issue