浏览代码

Remove stuff from master branch that no longer applies to the 'library' branch

Joeri Exelmans 2 年之前
父节点
当前提交
4e791191ae
共有 99 个文件被更改,包括 10 次插入18857 次删除
  1. 0 8
      .idea/.gitignore
  2. 0 1
      .idea/.name
  3. 0 8
      .idea/DrawioConvert.iml
  4. 0 5
      .idea/codeStyles/codeStyleConfig.xml
  5. 0 41
      .idea/inspectionProfiles/Project_Default.xml
  6. 0 6
      .idea/inspectionProfiles/profiles_settings.xml
  7. 0 7
      .idea/misc.xml
  8. 0 8
      .idea/modules.xml
  9. 0 6
      .idea/other.xml
  10. 0 6
      .idea/vcs.xml
  11. 0 19
      docs/Makefile
  12. 二进制
      docs/_build/doctrees/environment.pickle
  13. 二进制
      docs/_build/doctrees/execute.doctree
  14. 二进制
      docs/_build/doctrees/formalism.doctree
  15. 二进制
      docs/_build/doctrees/formalisms/CBD.doctree
  16. 二进制
      docs/_build/doctrees/formalisms/create.doctree
  17. 二进制
      docs/_build/doctrees/generator.doctree
  18. 二进制
      docs/_build/doctrees/index.doctree
  19. 二进制
      docs/_build/doctrees/logger.doctree
  20. 二进制
      docs/_build/doctrees/modules.doctree
  21. 二进制
      docs/_build/doctrees/parser.doctree
  22. 0 4
      docs/_build/html/.buildinfo
  23. 0 1
      docs/_build/html/_downloads/9ae1485408cab692c778396ba5bd1b19/CBDLibrary.xml
  24. 二进制
      docs/_build/html/_images/custom-block.png
  25. 二进制
      docs/_build/html/_images/library.png
  26. 二进制
      docs/_build/html/_images/properties.png
  27. 0 109
      docs/_build/html/_modules/formalism.html
  28. 0 127
      docs/_build/html/_modules/generator.html
  29. 0 56
      docs/_build/html/_modules/index.html
  30. 0 69
      docs/_build/html/_modules/logger.html
  31. 0 285
      docs/_build/html/_modules/parser.html
  32. 0 91
      docs/_build/html/_sources/execute.rst.txt
  33. 0 7
      docs/_build/html/_sources/formalism.rst.txt
  34. 0 165
      docs/_build/html/_sources/formalisms/CBD.rst.txt
  35. 0 101
      docs/_build/html/_sources/formalisms/create.rst.txt
  36. 0 7
      docs/_build/html/_sources/generator.rst.txt
  37. 0 73
      docs/_build/html/_sources/index.rst.txt
  38. 0 7
      docs/_build/html/_sources/logger.rst.txt
  39. 0 10
      docs/_build/html/_sources/modules.rst.txt
  40. 0 7
      docs/_build/html/_sources/parser.rst.txt
  41. 二进制
      docs/_build/html/_static/alert_info_32.png
  42. 二进制
      docs/_build/html/_static/alert_warning_32.png
  43. 0 676
      docs/_build/html/_static/basic.css
  44. 二进制
      docs/_build/html/_static/bg-page.png
  45. 二进制
      docs/_build/html/_static/bullet_orange.png
  46. 0 315
      docs/_build/html/_static/doctools.js
  47. 0 10
      docs/_build/html/_static/documentation_options.js
  48. 二进制
      docs/_build/html/_static/file.png
  49. 0 376
      docs/_build/html/_static/haiku.css
  50. 0 10365
      docs/_build/html/_static/jquery.js
  51. 0 297
      docs/_build/html/_static/language_data.js
  52. 二进制
      docs/_build/html/_static/minus.png
  53. 二进制
      docs/_build/html/_static/plus.png
  54. 0 71
      docs/_build/html/_static/pygments.css
  55. 0 481
      docs/_build/html/_static/searchtools.js
  56. 0 13
      docs/_build/html/_static/styles.css
  57. 0 1692
      docs/_build/html/_static/underscore.js
  58. 0 169
      docs/_build/html/execute.html
  59. 0 93
      docs/_build/html/formalism.html
  60. 0 231
      docs/_build/html/formalisms/CBD.html
  61. 0 184
      docs/_build/html/formalisms/create.html
  62. 0 71
      docs/_build/html/generator.html
  63. 0 232
      docs/_build/html/genindex.html
  64. 0 147
      docs/_build/html/index.html
  65. 0 76
      docs/_build/html/logger.html
  66. 0 62
      docs/_build/html/modules.html
  67. 二进制
      docs/_build/html/objects.inv
  68. 0 209
      docs/_build/html/parser.html
  69. 0 102
      docs/_build/html/py-modindex.html
  70. 0 82
      docs/_build/html/search.html
  71. 0 1
      docs/_build/html/searchindex.js
  72. 二进制
      docs/_figures/custom-block.png
  73. 二进制
      docs/_figures/library.png
  74. 二进制
      docs/_figures/properties.png
  75. 0 13
      docs/_static/styles.css
  76. 0 183
      docs/conf.py
  77. 0 91
      docs/execute.rst
  78. 0 7
      docs/formalism.rst
  79. 0 165
      docs/formalisms/CBD.rst
  80. 0 95
      docs/formalisms/create.rst
  81. 0 7
      docs/generator.rst
  82. 0 73
      docs/index.rst
  83. 0 7
      docs/logger.rst
  84. 0 35
      docs/make.bat
  85. 0 10
      docs/modules.rst
  86. 0 7
      docs/parser.rst
  87. 10 10
      drawio2py/parser.py
  88. 0 1
      experiments/Integrators/integrators.drawio
  89. 0 49
      experiments/Integrators/integrators_G.py
  90. 0 143
      experiments/Integrators/integrators_Integrators.py
  91. 0 28
      experiments/Integrators/integrators_Stiff.py
  92. 0 93
      experiments/Integrators/integrators_experiment.py
  93. 0 1
      formalisms/CBD/CBDLibrary.xml
  94. 0 498
      formalisms/CBD/Fibonacci.xml
  95. 0 1
      formalisms/CBD/Formalism.drawio
  96. 0 36
      formalisms/CBD/__init__.py
  97. 二进制
      formalisms/CBD/__pycache__/__init__.cpython-38.pyc
  98. 0 25
      formalisms/CBD/experiment.py.jinja
  99. 0 90
      formalisms/CBD/model.py.jinja

+ 0 - 8
.idea/.gitignore

@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
-# Editor-based HTTP Client requests
-/httpRequests/

+ 0 - 1
.idea/.name

@@ -1 +0,0 @@
-DrawioConvert

+ 0 - 8
.idea/DrawioConvert.iml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="PYTHON_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 0 - 5
.idea/codeStyles/codeStyleConfig.xml

@@ -1,5 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
-  <state>
-    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
-  </state>
-</component>

+ 0 - 41
.idea/inspectionProfiles/Project_Default.xml

@@ -1,41 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <profile version="1.0">
-    <option name="myName" value="Project Default" />
-    <inspection_tool class="JSUnfilteredForInLoop" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyPackageRequirementsInspection" enabled="false" level="WARNING" enabled_by_default="false">
-      <option name="ignoredPackages">
-        <value>
-          <list size="0" />
-        </value>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="PyPep8Inspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyPep8NamingInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyStubPackagesAdvertiser" enabled="true" level="WARNING" enabled_by_default="true">
-      <option name="ignoredPackages">
-        <list>
-          <option value="PyQt5" />
-          <option value="PyQt5-stubs==5.14.2.2" />
-        </list>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="PyTypeCheckerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <option name="ignoredIdentifiers">
-        <list>
-          <option value="project.authService.vendor.mockery.mockery.docs.conf.sphinx" />
-          <option value="project.authService.vendor.mockery.mockery.docs.conf.*" />
-          <option value="scipy.special" />
-          <option value="bool.*" />
-        </list>
-      </option>
-    </inspection_tool>
-    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
-      <option name="processCode" value="true" />
-      <option name="processLiterals" value="true" />
-      <option name="processComments" value="true" />
-    </inspection_tool>
-    <inspection_tool class="SqlDialectInspection" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="SqlNoDataSourceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
-  </profile>
-</component>

+ 0 - 6
.idea/inspectionProfiles/profiles_settings.xml

@@ -1,6 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <settings>
-    <option name="USE_PROJECT_PROFILE" value="false" />
-    <version value="1.0" />
-  </settings>
-</component>

+ 0 - 7
.idea/misc.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectPlainTextFileTypeManager">
-    <file url="file://$PROJECT_DIR$/whishlist.txt" />
-  </component>
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
-</project>

+ 0 - 8
.idea/modules.xml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/../DrawioConvert/.idea/DrawioConvert.iml" filepath="$PROJECT_DIR$/../DrawioConvert/.idea/DrawioConvert.iml" />
-    </modules>
-  </component>
-</project>

+ 0 - 6
.idea/other.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="PySciProjectComponent">
-    <option name="PY_SCI_VIEW_SUGGESTED" value="true" />
-  </component>
-</project>

+ 0 - 6
.idea/vcs.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-  </component>
-</project>

+ 0 - 19
docs/Makefile

@@ -1,19 +0,0 @@
-# Minimal makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-SOURCEDIR     = .
-BUILDDIR      = _build
-
-# Put it first so that "make" without argument is like "make help".
-help:
-	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-.PHONY: help Makefile
-
-# Catch-all target: route all unknown targets to Sphinx using the new
-# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
-	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

二进制
docs/_build/doctrees/environment.pickle


二进制
docs/_build/doctrees/execute.doctree


二进制
docs/_build/doctrees/formalism.doctree


二进制
docs/_build/doctrees/formalisms/CBD.doctree


二进制
docs/_build/doctrees/formalisms/create.doctree


二进制
docs/_build/doctrees/generator.doctree


二进制
docs/_build/doctrees/index.doctree


二进制
docs/_build/doctrees/logger.doctree


二进制
docs/_build/doctrees/modules.doctree


二进制
docs/_build/doctrees/parser.doctree


+ 0 - 4
docs/_build/html/.buildinfo

@@ -1,4 +0,0 @@
-# Sphinx build info version 1
-# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: e09b84a6ade6c2b2681806acd183d816
-tags: 645f666f9bcd5a90fca523b33c5a78b7

文件差异内容过多而无法显示
+ 0 - 1
docs/_build/html/_downloads/9ae1485408cab692c778396ba5bd1b19/CBDLibrary.xml


二进制
docs/_build/html/_images/custom-block.png


二进制
docs/_build/html/_images/library.png


二进制
docs/_build/html/_images/properties.png


文件差异内容过多而无法显示
+ 0 - 109
docs/_build/html/_modules/formalism.html


文件差异内容过多而无法显示
+ 0 - 127
docs/_build/html/_modules/generator.html


+ 0 - 56
docs/_build/html/_modules/index.html

@@ -1,56 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Overview: module code &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="../_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="../_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="../_static/language_data.js"></script>
-    <link rel="index" title="Index" href="../genindex.html" />
-    <link rel="search" title="Search" href="../search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="../index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>Overview: module code</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="../index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <h1>All modules for which code is available</h1>
-<ul><li><a href="formalism.html">formalism</a></li>
-<li><a href="generator.html">generator</a></li>
-<li><a href="logger.html">logger</a></li>
-<li><a href="parser.html">parser</a></li>
-</ul>
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="../index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 69
docs/_build/html/_modules/logger.html

@@ -1,69 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>logger &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="../_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="../_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="../_static/language_data.js"></script>
-    <link rel="index" title="Index" href="../genindex.html" />
-    <link rel="search" title="Search" href="../search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="../index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>logger</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="../index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <h1>Source code for logger</h1><div class="highlight"><pre>
-<span></span><span class="sd">&quot;&quot;&quot;Helper class to allow for simplistic logging of info.&quot;&quot;&quot;</span>
-
-<div class="viewcode-block" id="Logger"><a class="viewcode-back" href="../logger.html#logger.Logger">[docs]</a><span class="k">class</span> <span class="nc">Logger</span><span class="p">:</span>
-	<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">verbose</span><span class="p">):</span>
-		<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span> <span class="o">=</span> <span class="n">verbose</span>
-
-<div class="viewcode-block" id="Logger.debug"><a class="viewcode-back" href="../logger.html#logger.Logger.debug">[docs]</a>	<span class="k">def</span> <span class="nf">debug</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span>
-		<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">:</span>
-			<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;[  DEBUG  ]&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="Logger.warning"><a class="viewcode-back" href="../logger.html#logger.Logger.warning">[docs]</a>	<span class="k">def</span> <span class="nf">warning</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span>
-		<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;[ WARNING ]&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span></div>
-
-<div class="viewcode-block" id="Logger.error"><a class="viewcode-back" href="../logger.html#logger.Logger.error">[docs]</a>	<span class="k">def</span> <span class="nf">error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">error</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
-		<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;[  ERROR  ]&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
-		<span class="k">if</span> <span class="n">error</span><span class="p">:</span>
-			<span class="nb">print</span><span class="p">(</span><span class="n">error</span><span class="p">)</span></div></div>
-</pre></div>
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="../index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

文件差异内容过多而无法显示
+ 0 - 285
docs/_build/html/_modules/parser.html


+ 0 - 91
docs/_build/html/_sources/execute.rst.txt

@@ -1,91 +0,0 @@
-How to Execute :code:`DrawioConvert`?
-=====================================
-
-The execution for :code:`DrawioConvert` is simple:
-
-.. code::
-
-    python3 __main__.py <INPUT> [ARGS]
-
-Where :code:`<INPUT>` represents the drawio file to parse and :code:`[ARGS]`
-any combination of the commandline arguments that can be used with this tool.
-
-Depending on the formalism that is used, a set of files will be generated that
-comply to the input file as well as the selected formalism. Filenames are based
-on the input file and the name of the drawio pages. When a page's name matches
-:code:`Page-\d+` (default), only the numeric part is used.
-
-Commandline Arguments
----------------------
-
-.. list-table::
-    :widths: 10 15 30
-    :header-rows: 1
-
-    * - Short Flag
-      - Long Flag
-      - Description
-    * - :code:`-F`
-      - :code:`--formalism`
-      - The formalism for which files must be generated. This argument is
-        required.
-    * - :code:`-e`
-      - :code:`--entry`
-      - The topmost class to use in the simulation. May be required for some
-        formalisms, where simulation is top-level dependent.
-    * - :code:`t`
-      - :code:`--time`
-      - Total simulation time to use. Should only be set for experiment
-        files. Defaults to :code:`10` (time-units). While this flag is meant
-        to indicate the total time, some formalisms may use this as the
-        allowed amount of simulation steps.
-    * - :code:`-L`
-      - :code:`--list`
-      - Lists the available formalisms that can be used.
-    * - :code:`-s`
-      - :code:`--skip`
-      - Sometimes a visual model has some "placeholders" for future classes.
-        By default, these are generated as well, even if no contents are given.
-        The :code:`--skip` flag changes this behaviour by skipping empty blocks
-        in the generation.
-    * - :code:`-d`
-      - :code:`--directory`
-      - The location where the files should be generated. Defaults to :code:`./`
-        (the current directory).
-    * - :code:`-f`
-      - :code:`--force`
-      - Some formalisms may mark certain files as "protected". This is usually
-        done to prevent accidental removal of user code when programming
-        experiments. Hence, these files cannot be overwritten by the tool, unless
-        this flag is set.
-    * - :code:`-a`
-      - :code:`--all`
-      - Each formalism has their default set of files to be generated. However,
-        there may be some experimental or additional files that not all users
-        need. This flag allows the generation of **all** files of the formalism.
-    * - :code:`-S`
-      - :code:`--singlefile`
-      - Ignore the page separations in drawio and generate a single model file.
-        Note that not all formalisms require this flag to be set. Additionally,
-        this flag does **not** mean only a single output will be generated, but
-        rather a single file for each template associated to the formalism.
-    * - :code:`-r`
-      - :code:`--reversed`
-      - Drawio opens the first page of a diagram by default. This is why it is
-        a good practice to provide the most high-level model on the first page.
-        However, this means the first page depends on pages that are generated
-        later on. By using this flag, the pages will undergo the generation
-        process in reverse order.
-    * - :code:`-g`
-      - :code:`--globalimports`
-      - When set, the import directives in the drawio diagram(s) will be made
-        global to all pages of that diagram. Not useful when :code:`-S` is also
-        set, or only a single page is used. Note how these imports are not
-    * - :code:`-v`
-      - :code:`--verbose`
-      - Prints additional debugging information.
-    * - :code:`-E`
-      - :code:`--enviroment`
-      - Occasionally, formalisms need other properties that can be set by the
-        user. This flag takes a comma-separated list of :code:`key=value` pairs
-        and applies them to the formalism specifics.

+ 0 - 7
docs/_build/html/_sources/formalism.rst.txt

@@ -1,7 +0,0 @@
-formalism module
-================
-
-.. automodule:: formalism
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 0 - 165
docs/_build/html/_sources/formalisms/CBD.rst.txt

@@ -1,165 +0,0 @@
-CBD Formalism
-=============
-
-Causal Block Diagrams allow for finding solutions to mathematical problems.
-
-Setting up Drawio
-------------------
-In drawio, select :menuselection:`File --> Open Library` and load :file:`CBDLibrary.xml`
-(which can be found :download:`here <../../formalisms/CBD/CBDLibrary.xml>`).
-This provides a set of primitive CBD blocks that can be used in your models.
-Once included, it can be found at the top of the shapes library.
-
-.. rst-class:: table-center
-
-+------------------------------------------+
-| .. figure:: ../_figures/library.png      |
-|                                          |
-|   CBD Library in the Sidebar             |
-+------------------------------------------+
-
-.. _block-props:
-
-Block Properties
-----------------
-All blocks in the library have some block-specific properties that can be set by the user.
-Hovering over a component shows all non-empty properties that were set on this shape.
-
-There are several ways of accessing/modifying these properties:
-
-* Double Click with the left mouse button on a shape.
-* Click with right mouse button to open a shape's context menu.
-  Near the bottom of the list, select :menuselection:`Edit Data`.
-* Select the shape (left mouse button) and in the top of the right panel,
-  go to :menuselection:`Arrange --> Edit Data`.
-* Select the shape and press :kbd:`CTRL + M` or :kbd:`CMND + M`.
-
-.. warning:: Do not change the :code:`class_name` as the converter relies on this property.
-
-.. rst-class:: table-center
-
-+------------------------------------------+
-| .. figure:: ../_figures/properties.png   |
-|                                          |
-|   Example of the Property Window (for a  |
-|   ConstantBlock)                         |
-+------------------------------------------+
-
-
-.. _library:
-
-Working with Library Blocks
----------------------------
-To guarantee a consistent visual appearance of CBD models,
-no blocks in the library, except for the Custom Block, can be resized.
-Every block has zero or more input and output ports. Input ports are represented by
-the :code:`InputPortBlock` (black triangle) and output ports by the :code:`OutputPortBlock`
-(white triangle). When selecting (left mouse button) a port, a small, movable,
-yellow/orange diamond-shaped anchor will appear in front of the port's name.
-The position of this label can be changed by dragging the anchor.
-The port name can be altered in the :menuselection:`Edit Data` window.
-
-.. For each of a CBD model's top-level :code:`OutputPortBlock` shapes, a :code:`signal` property
-    may be added (see :ref:`block-props`).
-    The :code:`drawio2cbd` will then generate code to produce a plot, using https://bokeh.org/.
-    Note that bokeh produces an HTML document which is rendered in a browser
-    and allows some user interaction with the plot.
-    The value of the :code:`signal` property on a top-level :code:`OutputPortBlock` should be the title
-    to be put on the plot. Multiple signals may be rendered onto the same plot.
-    For more complex CBD simulation result analysis and visualization, code should be added
-    at the bottom of the generated file.
-
-Each CBD block that is *not* a port may have the following properties:
-
-* :code:`ID` or :code:`id`: The drawio unique ID for this block. Note that drawio automatically
-  overwrites a property with the key :code:`id` by the value shown by :code:`ID` (upon saving the diagram).
-* :code:`block_name`: The name of the block. It is required that
-  all blocks have a unique name within a class. When omitted, the :code:`ID` is used.
-* :code:`class_name`: The type of block.
-
-  .. warning:: Do not change the :code:`class_name` as the converter relies on this property.
-               Changing it makes it so the block type changes as well in the simulation.
-
-* :code:`symbol`: The block symbol that must be rendered by MathJax/LaTeX. This is a purely
-  graphical attribute and is ignored by the script.
-
-Optionally, additional class parameters can be provided by adding more properties.
-Their values will be passed on as default values for the corresponding property as an argument, e.g., to
-use strings, enclose the value in "..." or '...', for :code:`None`, leave it empty or litterally type
-":code:`None`"...
-
-.. warning:: Make sure these values are expressions/rvalues! If not, the generated Python file will crash,
-              or cause some unexpected behavior. Furthermore, newlines may not be used in these values.
-
-Class parameters that cannot be used are: :code:`label` (prevented by drawio), :code:`id` (overwritten by
-drawio), :code:`placeholders` (prevented by drawio), :code:`symbol` (ignored by the converter)
-and :code:`__docstring__` (used for other purposes, see later).
-
-.. note:: Blocks with a variable number of inputs (i.e., the :code:`OrBlock` and the
-          :code:`AndBlock`) may still need additional ports to be placed/removed.
-
-
-.. _custom-block:
-
-Creating Custom CBD Blocks
--------------------------------
-A custom hierarchical CBD block is constructed as a network of already provided blocks
-(which in their own right may be custom hierarchical blocks)
-using the :code:`Custom Block` element from :file:`CBDLibrary.xml`.
-This is a collapsible component in which a block diagram may be drawn.
-It has two important properties:
-
-* :code:`class_name`: The new class name for the custom block. Note that all class names must be unique!
-* :code:`block_name`: The name of an instance of the CBD model if it's the top-level CBD.
-
-Additional properties can be added to create custom class parameters.
-The same set of parameters that was discussed above cannot be set,
-with the exception of :code:`__docstring__`, which now allows adding documentation to custom blocks.
-
-The empty rectangle is a container for the custom hierachical block.
-Blocks can be dragged into the rectangular area and connected.
-:code:`InputPortBlock` and :code:`OutputPortBlock` are used to add inputs and outputs with
-their :code:`name` property set to the port's name.
-
-.. hint:: The :code:`Custom Block` component can, in constrast with all other blocks in the
-          library, be resized. This allows for larger hierarchical models to be created, as the
-          basic blocks cannot be resized.
-
-.. rst-class:: table-center
-
-+------------------------------------------+
-| .. figure:: ../_figures/custom-block.png |
-|                                          |
-|   Custom Sine Generator Block with no    |
-|   Input Ports, a single Output Port and  |
-|   a Custom Graphical Representation      |
-+------------------------------------------+
-
-Next, create a graphical representation of the block (i.e., what an instance
-block should look like when used in a block diagram), add the corresponding
-ports and set the property :code:`class_name` to the same class as that set in the
-:code:`Custom Block`. Make sure not to forget to add any class parameters that were
-added to the :code:`Custom Block`.
-
-.. hint:: This can be done easily by adding a predefined block and changing its
-          ports and properties to match the new custom block.
-
-.. note:: Only the :code:`Custom Block` components will be read by the converter.
-          Anything else is implicitly ignored. Furthermore, the script is page-independent,
-          meaning multiple pages may be used inside a single drawio document to maintain a
-          clean overview of the created models.
-
-Conversion
-----------
-To generate code from the created drawio files, execute the script with the :code:`-F CBD` flag.
-This tells :code:`DrawioConvert` to use the CBD formalism. Two files will be created:
-
-* :code:`model.py`: The model file, containing the code for the modelled blocks.
-* :code:`experiment.py`: The "protected" experiment file. You can feely add/remove parts of this file
-  without fear of it being overwritten next execution. Use the :code:`-f`/:code:`--force` flag to
-  force overwrite the file.
-
-It is possible to use continuous models, where they are discretized to a certain delta. This is
-customizeable using the :code:`-E`/:code:`--environment` flag. I.e. by setting :code:`-E delta=0.1`,
-it is possible to execute in steps of 0.1 time-units. Note how :code:`-t`/:code:`--time` identifies
-the total simulation time, **not** the amount of steps taken.

+ 0 - 101
docs/_build/html/_sources/formalisms/create.rst.txt

@@ -1,101 +0,0 @@
-How To Create Custom Formalisms?
-================================
-Each formalism represents a "block diagram", where components are connected
-via edges. Each edge is defined from a source "port class" to a target
-"port class". Ports usually have unique names to allow for identification and
-are located **inside** the blocks they connect.
-
-New components can be defined by a 1-level hierarchical composition of the
-model. I.e. a set of connected blocks that are "grouped" together.
-
-.. warning::
-    If the target for the code generation of a custom formalism does not
-    comply to the above description, this tool cannot be used.
-    :code:`DrawioConvert` currently only supports the described block diagram
-    structure.
-
-Structure
----------
-Each formalism corresponds to a package in the :code:`./formalisms` directory.
-There, all additional (re)sources can be added. In the required
-:code:`__init__.py` file, the :code:`setup` variable bust be defined as a
-dictionary, with the following structure (names followed by an asterisk are
-required fields):
-
-* :code:`parser`: All components required for parsing drawio files.
-    * :code:`input class`: The class name used to identify input port in the
-      generated code. Defaults to :code:`"InputPort"`.
-    * :code:`output class`: The class name used to identify output ports in
-      the generated code. Defaults to :code:`"OutputPort"`.
-    * :code:`class object xpath`: The `xpath <https://www.w3.org/TR/xpath/>`_
-      definition of a path which identifies a "class object" in the drawio
-      XML-structure. More specifically, all elements that correspond to that
-      structure will be seen as custom classes. Defaults to:
-      :code:`".//object/mxCell/mxGeometry/mxRectangle/../../..[@class_name]"`.
-    * :code:`class special xpath`: The `xpath <https://www.w3.org/TR/xpath/>`_
-      definition of a path which identifies a "special object" in the drawio
-      XML-structure. More specifically, all elements that correspond to that
-      structure will be seen as elements with additional information for
-      the code generation. For instance, custom imports can be defined this
-      way. Defaults to: :code:`".//object/mxCell/mxGeometry/../..[@role]"`.
-    * :code:`verify`: A function that takes the list of pages (see
-      :class:`parser.Page` and raises a :class:`parser.ParseException`
-      whenever the system is invalid.
-* :code:`generator`: The setup information for the file generation.
-    * :code:`ignore`: List of attribute names to ignore.
-    * :code:`environment`: List of allowed environment variables. These will
-      be defined with the :code:`-E`/:code:`--environment` flag.
-    * :code:`templates`: List of template files to be generated. These files
-      are defined by their own dictionaries with the following keys:
-
-        - :code:`template`\*: The filename of the template to use, located in
-          the formalism directory. These files should end in :code:`.jinja`.
-        - :code:`pattern`\*: The pattern for the filename of the generated
-          file(s). :code:`{prefix}` will be replaced by the basename of the
-          input drawio file and :code:`{page}` will be replaced by the name
-          of the page on which the components are found (when
-          :code:`multipage` is :code:`True` and there is more than one page).
-          Additionally, there is the :code:`{u}` that is an underscore if
-          :code:`{page}` is not empty, but empty otherwise. :code:`{u}` allows
-          for a filename-friendly separator between the prefix and the page
-          if multiple files are to be generated.
-        - :code:`multipage`: Identifies that all drawio pages can generate
-          their own file w.r.t. this template. Defaults to :code:`True`.
-        - :code:`overwrite`: When :code:`True`, this file may be overwritten
-          whenever a generation is called. Defaults to :code:`True`.
-        - :code:`auto`: When :code:`True`, this file will automatically be
-          generated by the script. Otherwise, the :code:`-a`/:code:`--all`
-          flag is required. Defaults to :code:`True`.
-        - :code:`entry`: Boolean value, indicative of whether or not the
-          :code:`-e`/:code:`--entry` flag must be set in order to generate this
-          file. Defaults to :code:`False`.
-
-.. Warning::
-    Files are generated in the order they are listed in the
-    :code:`generator.templates` directive. This should prevent circular
-    includes. Use custom import structures for more complexity.
-
-Templates
----------
-Using the `Jinja 2 <https://jinja.palletsprojects.com/en/2.11.x/>`_ templating
-language, it is possible to create any file from the given drawio structure.
-Besides all features Jinja has to offer, the following namespace variables are
-also defined:
-
-* :code:`command`: The command used to start the generation.
-* :code:`ignore`: The list of attribute names to ignore, as set in the
-  :code:`setup` variable (see above).
-* :code:`time`: The total amount of time a simulation needs to run. This is set
-  by the user, using the :code:`-t`/:code:`--time` argument.
-* :code:`imports`: A list of additional imports, as found in the drawio file.
-  This is a list of :code:`(mod, obj)` pairs, where :code:`mod` identifies the
-  module and :code:`obj` the optional objects to import. If no objects are set,
-  this will be :code:`None` (or :code:`none` in Jinja).
-* :code:`nodes`: A list of :class:`parser.Node` objects, identifying the classes
-  that have been found in drawio.
-* :code:`files`: A list of already generated files, in the order in which they
-  were generated. This can be used for cross-references.
-* All variables as defined by the user with the :code:`-E`/:code:`--environment`
-  flag. See also the :code:`generator.environment` directive in the :code:`setup`
-  variable. If the user did not set this variable, it is :code:`undefined` in
-  Jinja, therefore, the template needs to check its existence.

+ 0 - 7
docs/_build/html/_sources/generator.rst.txt

@@ -1,7 +0,0 @@
-generator module
-================
-
-.. automodule:: generator
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 0 - 73
docs/_build/html/_sources/index.rst.txt

@@ -1,73 +0,0 @@
-.. DrawioConvert documentation master file, created by
-   sphinx-quickstart on Tue Dec 29 15:01:45 2020.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-Welcome to DrawioConvert's documentation!
-=========================================
-
-:code:`DrawioConvert` is a project that allows conversion from simple, yet
-structured `draw.io <https://www.diagrams.net>`_ diagrams to any kind of file.
-This usually provides a useful entrypoint for visual modelling of models that
-comply to a textual framework.
-
-Or, more specifically, this tool allows for the creation of graphical
-interfaces for code frameworks. Note that, while this tool was written in
-Python, any language is possible thanks to
-`Jinja 2 <https://jinja.palletsprojects.com/en/2.11.x/>`_.
-
-Requirements
-------------
-* Standard Libraries:
-   * :code:`xml` (for :code:`xml.etree.ElementTree`)
-   * :code:`urllib` (for :code:`urllib.parse.unquote`)
-   * :code:`argparse`
-   * :code:`base64`
-   * :code:`os`
-   * :code:`re`
-   * :code:`sys`
-   * :code:`zlib`
-* External Libraries:
-   * `Jinja 2 <https://jinja.palletsprojects.com/en/2.11.x/>`_
-   * Anything else that is required for the converted files to work.
-
-.. warning::
-     :code:`DrawioConvert` does not execute the converted files, but only
-     generates them! The user is required to install all components for the
-     formalisms they like to use themselves.
-
-How Does It Work?
------------------
-The core idea behind :code:`DrawioConvert` is the use of so-called "formalisms".
-These are generic descriptions of how certain drawio files can (and should) be
-interpreted. They are provided with some setup information, a few template
-files, a drawio library and some documentation on their usage. From any drawio
-file (made according to the specification identified by the formalism) a new
-one will be generated that is complient with the drawn diagram and the selected
-formalism.
-
-This also allows drawio to be used for any block-based modelling language for
-which a graphical representation can be given and code generation can be
-defined.
-
-Quick Links
------------
-.. toctree::
-   :maxdepth: 4
-
-   execute
-   formalisms/create
-
-Builtin Formalisms
-------------------
-.. toctree::
-   :maxdepth: 1
-
-   formalisms/CBD
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`

+ 0 - 7
docs/_build/html/_sources/logger.rst.txt

@@ -1,7 +0,0 @@
-logger module
-=============
-
-.. automodule:: logger
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 0 - 10
docs/_build/html/_sources/modules.rst.txt

@@ -1,10 +0,0 @@
-src
-===
-
-.. toctree::
-   :maxdepth: 4
-
-   formalism
-   generator
-   logger
-   parser

+ 0 - 7
docs/_build/html/_sources/parser.rst.txt

@@ -1,7 +0,0 @@
-parser module
-=============
-
-.. automodule:: parser
-    :members:
-    :undoc-members:
-    :show-inheritance:

二进制
docs/_build/html/_static/alert_info_32.png


二进制
docs/_build/html/_static/alert_warning_32.png


+ 0 - 676
docs/_build/html/_static/basic.css

@@ -1,676 +0,0 @@
-/*
- * basic.css
- * ~~~~~~~~~
- *
- * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
-    clear: both;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
-    width: 100%;
-    font-size: 90%;
-}
-
-div.related h3 {
-    display: none;
-}
-
-div.related ul {
-    margin: 0;
-    padding: 0 0 0 10px;
-    list-style: none;
-}
-
-div.related li {
-    display: inline;
-}
-
-div.related li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
-    padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
-    float: left;
-    width: 230px;
-    margin-left: -100%;
-    font-size: 90%;
-    word-wrap: break-word;
-    overflow-wrap : break-word;
-}
-
-div.sphinxsidebar ul {
-    list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
-    margin-left: 20px;
-    list-style: square;
-}
-
-div.sphinxsidebar ul ul {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
-    margin-top: 10px;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox form.search {
-    overflow: hidden;
-}
-
-div.sphinxsidebar #searchbox input[type="text"] {
-    float: left;
-    width: 80%;
-    padding: 0.25em;
-    box-sizing: border-box;
-}
-
-div.sphinxsidebar #searchbox input[type="submit"] {
-    float: left;
-    width: 20%;
-    border-left: none;
-    padding: 0.25em;
-    box-sizing: border-box;
-}
-
-
-img {
-    border: 0;
-    max-width: 100%;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
-}
-
-ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
-}
-
-ul.search li a {
-    font-weight: bold;
-}
-
-ul.search li div.context {
-    color: #888;
-    margin: 2px 0 0 30px;
-    text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
-    font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
-    width: 90%;
-    margin-left: auto;
-    margin-right: auto;
-}
-
-table.contentstable p.biglink {
-    line-height: 150%;
-}
-
-a.biglink {
-    font-size: 1.3em;
-}
-
-span.linkdescr {
-    font-style: italic;
-    padding-top: 5px;
-    font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
-    width: 100%;
-}
-
-table.indextable td {
-    text-align: left;
-    vertical-align: top;
-}
-
-table.indextable ul {
-    margin-top: 0;
-    margin-bottom: 0;
-    list-style-type: none;
-}
-
-table.indextable > tbody > tr > td > ul {
-    padding-left: 0em;
-}
-
-table.indextable tr.pcap {
-    height: 10px;
-}
-
-table.indextable tr.cap {
-    margin-top: 10px;
-    background-color: #f2f2f2;
-}
-
-img.toggler {
-    margin-right: 3px;
-    margin-top: 3px;
-    cursor: pointer;
-}
-
-div.modindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-div.genindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-/* -- domain module index --------------------------------------------------- */
-
-table.modindextable td {
-    padding: 2px;
-    border-collapse: collapse;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-div.body {
-    min-width: 59em;
-    max-width: 70em;
-}
-
-div.body p, div.body dd, div.body li, div.body blockquote {
-    -moz-hyphens: auto;
-    -ms-hyphens: auto;
-    -webkit-hyphens: auto;
-    hyphens: auto;
-}
-
-a.headerlink {
-    visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink,
-caption:hover > a.headerlink,
-p.caption:hover > a.headerlink,
-div.code-block-caption:hover > a.headerlink {
-    visibility: visible;
-}
-
-div.body p.caption {
-    text-align: inherit;
-}
-
-div.body td {
-    text-align: left;
-}
-
-.first {
-    margin-top: 0 !important;
-}
-
-p.rubric {
-    margin-top: 30px;
-    font-weight: bold;
-}
-
-img.align-left, .figure.align-left, object.align-left {
-    clear: left;
-    float: left;
-    margin-right: 1em;
-}
-
-img.align-right, .figure.align-right, object.align-right {
-    clear: right;
-    float: right;
-    margin-left: 1em;
-}
-
-img.align-center, .figure.align-center, object.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.align-left {
-    text-align: left;
-}
-
-.align-center {
-    text-align: center;
-}
-
-.align-right {
-    text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
-    margin: 0 0 0.5em 1em;
-    border: 1px solid #ddb;
-    padding: 7px 7px 0 7px;
-    background-color: #ffe;
-    width: 40%;
-    float: right;
-}
-
-p.sidebar-title {
-    font-weight: bold;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-div.topic {
-    border: 1px solid #ccc;
-    padding: 7px 7px 0 7px;
-    margin: 10px 0 10px 0;
-}
-
-p.topic-title {
-    font-size: 1.1em;
-    font-weight: bold;
-    margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding: 7px;
-}
-
-div.admonition dt {
-    font-weight: bold;
-}
-
-div.admonition dl {
-    margin-bottom: 0;
-}
-
-p.admonition-title {
-    margin: 0px 10px 5px 0px;
-    font-weight: bold;
-}
-
-div.body p.centered {
-    text-align: center;
-    margin-top: 25px;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
-    border: 0;
-    border-collapse: collapse;
-}
-
-table.align-center {
-    margin-left: auto;
-    margin-right: auto;
-}
-
-table caption span.caption-number {
-    font-style: italic;
-}
-
-table caption span.caption-text {
-}
-
-table.docutils td, table.docutils th {
-    padding: 1px 8px 1px 5px;
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    border-bottom: 1px solid #aaa;
-}
-
-table.footnote td, table.footnote th {
-    border: 0 !important;
-}
-
-th {
-    text-align: left;
-    padding-right: 5px;
-}
-
-table.citation {
-    border-left: solid 1px gray;
-    margin-left: 1px;
-}
-
-table.citation td {
-    border-bottom: none;
-}
-
-/* -- figures --------------------------------------------------------------- */
-
-div.figure {
-    margin: 0.5em;
-    padding: 0.5em;
-}
-
-div.figure p.caption {
-    padding: 0.3em;
-}
-
-div.figure p.caption span.caption-number {
-    font-style: italic;
-}
-
-div.figure p.caption span.caption-text {
-}
-
-/* -- field list styles ----------------------------------------------------- */
-
-table.field-list td, table.field-list th {
-    border: 0 !important;
-}
-
-.field-list ul {
-    margin: 0;
-    padding-left: 1em;
-}
-
-.field-list p {
-    margin: 0;
-}
-
-.field-name {
-    -moz-hyphens: manual;
-    -ms-hyphens: manual;
-    -webkit-hyphens: manual;
-    hyphens: manual;
-}
-
-/* -- hlist styles ---------------------------------------------------------- */
-
-table.hlist td {
-    vertical-align: top;
-}
-
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
-    list-style: decimal;
-}
-
-ol.loweralpha {
-    list-style: lower-alpha;
-}
-
-ol.upperalpha {
-    list-style: upper-alpha;
-}
-
-ol.lowerroman {
-    list-style: lower-roman;
-}
-
-ol.upperroman {
-    list-style: upper-roman;
-}
-
-dl {
-    margin-bottom: 15px;
-}
-
-dd p {
-    margin-top: 0px;
-}
-
-dd ul, dd table {
-    margin-bottom: 10px;
-}
-
-dd {
-    margin-top: 3px;
-    margin-bottom: 10px;
-    margin-left: 30px;
-}
-
-dt:target, span.highlighted {
-    background-color: #fbe54e;
-}
-
-rect.highlighted {
-    fill: #fbe54e;
-}
-
-dl.glossary dt {
-    font-weight: bold;
-    font-size: 1.1em;
-}
-
-.optional {
-    font-size: 1.3em;
-}
-
-.sig-paren {
-    font-size: larger;
-}
-
-.versionmodified {
-    font-style: italic;
-}
-
-.system-message {
-    background-color: #fda;
-    padding: 5px;
-    border: 3px solid red;
-}
-
-.footnote:target  {
-    background-color: #ffa;
-}
-
-.line-block {
-    display: block;
-    margin-top: 1em;
-    margin-bottom: 1em;
-}
-
-.line-block .line-block {
-    margin-top: 0;
-    margin-bottom: 0;
-    margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
-    font-family: sans-serif;
-}
-
-.accelerator {
-    text-decoration: underline;
-}
-
-.classifier {
-    font-style: oblique;
-}
-
-abbr, acronym {
-    border-bottom: dotted 1px;
-    cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
-    overflow: auto;
-    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
-}
-
-span.pre {
-    -moz-hyphens: none;
-    -ms-hyphens: none;
-    -webkit-hyphens: none;
-    hyphens: none;
-}
-
-td.linenos pre {
-    padding: 5px 0px;
-    border: 0;
-    background-color: transparent;
-    color: #aaa;
-}
-
-table.highlighttable {
-    margin-left: 0.5em;
-}
-
-table.highlighttable td {
-    padding: 0 0.5em 0 0.5em;
-}
-
-div.code-block-caption {
-    padding: 2px 5px;
-    font-size: small;
-}
-
-div.code-block-caption code {
-    background-color: transparent;
-}
-
-div.code-block-caption + div > div.highlight > pre {
-    margin-top: 0;
-}
-
-div.code-block-caption span.caption-number {
-    padding: 0.1em 0.3em;
-    font-style: italic;
-}
-
-div.code-block-caption span.caption-text {
-}
-
-div.literal-block-wrapper {
-    padding: 1em 1em 0;
-}
-
-div.literal-block-wrapper div.highlight {
-    margin: 0;
-}
-
-code.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-code.descclassname {
-    background-color: transparent;
-}
-
-code.xref, a code {
-    background-color: transparent;
-    font-weight: bold;
-}
-
-h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
-    background-color: transparent;
-}
-
-.viewcode-link {
-    float: right;
-}
-
-.viewcode-back {
-    float: right;
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    margin: -1px -10px;
-    padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
-    vertical-align: middle;
-}
-
-div.body div.math p {
-    text-align: center;
-}
-
-span.eqno {
-    float: right;
-}
-
-span.eqno a.headerlink {
-    position: relative;
-    left: 0px;
-    z-index: 1;
-}
-
-div.math:hover a.headerlink {
-    visibility: visible;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
-    div.document,
-    div.documentwrapper,
-    div.bodywrapper {
-        margin: 0 !important;
-        width: 100%;
-    }
-
-    div.sphinxsidebar,
-    div.related,
-    div.footer,
-    #top-link {
-        display: none;
-    }
-}

二进制
docs/_build/html/_static/bg-page.png


二进制
docs/_build/html/_static/bullet_orange.png


+ 0 - 315
docs/_build/html/_static/doctools.js

@@ -1,315 +0,0 @@
-/*
- * doctools.js
- * ~~~~~~~~~~~
- *
- * Sphinx JavaScript utilities for all documentation.
- *
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * select a different prefix for underscore
- */
-$u = _.noConflict();
-
-/**
- * make the code below compatible with browsers without
- * an installed firebug like debugger
-if (!window.console || !console.firebug) {
-  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
-    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
-    "profile", "profileEnd"];
-  window.console = {};
-  for (var i = 0; i < names.length; ++i)
-    window.console[names[i]] = function() {};
-}
- */
-
-/**
- * small helper function to urldecode strings
- */
-jQuery.urldecode = function(x) {
-  return decodeURIComponent(x).replace(/\+/g, ' ');
-};
-
-/**
- * small helper function to urlencode strings
- */
-jQuery.urlencode = encodeURIComponent;
-
-/**
- * This function returns the parsed url parameters of the
- * current request. Multiple values per key are supported,
- * it will always return arrays of strings for the value parts.
- */
-jQuery.getQueryParameters = function(s) {
-  if (typeof s === 'undefined')
-    s = document.location.search;
-  var parts = s.substr(s.indexOf('?') + 1).split('&');
-  var result = {};
-  for (var i = 0; i < parts.length; i++) {
-    var tmp = parts[i].split('=', 2);
-    var key = jQuery.urldecode(tmp[0]);
-    var value = jQuery.urldecode(tmp[1]);
-    if (key in result)
-      result[key].push(value);
-    else
-      result[key] = [value];
-  }
-  return result;
-};
-
-/**
- * highlight a given string on a jquery object by wrapping it in
- * span elements with the given class name.
- */
-jQuery.fn.highlightText = function(text, className) {
-  function highlight(node, addItems) {
-    if (node.nodeType === 3) {
-      var val = node.nodeValue;
-      var pos = val.toLowerCase().indexOf(text);
-      if (pos >= 0 &&
-          !jQuery(node.parentNode).hasClass(className) &&
-          !jQuery(node.parentNode).hasClass("nohighlight")) {
-        var span;
-        var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
-        if (isInSVG) {
-          span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
-        } else {
-          span = document.createElement("span");
-          span.className = className;
-        }
-        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
-        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
-          document.createTextNode(val.substr(pos + text.length)),
-          node.nextSibling));
-        node.nodeValue = val.substr(0, pos);
-        if (isInSVG) {
-          var bbox = span.getBBox();
-          var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
-       	  rect.x.baseVal.value = bbox.x;
-          rect.y.baseVal.value = bbox.y;
-          rect.width.baseVal.value = bbox.width;
-          rect.height.baseVal.value = bbox.height;
-          rect.setAttribute('class', className);
-          var parentOfText = node.parentNode.parentNode;
-          addItems.push({
-              "parent": node.parentNode,
-              "target": rect});
-        }
-      }
-    }
-    else if (!jQuery(node).is("button, select, textarea")) {
-      jQuery.each(node.childNodes, function() {
-        highlight(this, addItems);
-      });
-    }
-  }
-  var addItems = [];
-  var result = this.each(function() {
-    highlight(this, addItems);
-  });
-  for (var i = 0; i < addItems.length; ++i) {
-    jQuery(addItems[i].parent).before(addItems[i].target);
-  }
-  return result;
-};
-
-/*
- * backward compatibility for jQuery.browser
- * This will be supported until firefox bug is fixed.
- */
-if (!jQuery.browser) {
-  jQuery.uaMatch = function(ua) {
-    ua = ua.toLowerCase();
-
-    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
-      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
-      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
-      /(msie) ([\w.]+)/.exec(ua) ||
-      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
-      [];
-
-    return {
-      browser: match[ 1 ] || "",
-      version: match[ 2 ] || "0"
-    };
-  };
-  jQuery.browser = {};
-  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
-}
-
-/**
- * Small JavaScript module for the documentation.
- */
-var Documentation = {
-
-  init : function() {
-    this.fixFirefoxAnchorBug();
-    this.highlightSearchWords();
-    this.initIndexTable();
-    if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
-      this.initOnKeyListeners();
-    }
-  },
-
-  /**
-   * i18n support
-   */
-  TRANSLATIONS : {},
-  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
-  LOCALE : 'unknown',
-
-  // gettext and ngettext don't access this so that the functions
-  // can safely bound to a different name (_ = Documentation.gettext)
-  gettext : function(string) {
-    var translated = Documentation.TRANSLATIONS[string];
-    if (typeof translated === 'undefined')
-      return string;
-    return (typeof translated === 'string') ? translated : translated[0];
-  },
-
-  ngettext : function(singular, plural, n) {
-    var translated = Documentation.TRANSLATIONS[singular];
-    if (typeof translated === 'undefined')
-      return (n == 1) ? singular : plural;
-    return translated[Documentation.PLURALEXPR(n)];
-  },
-
-  addTranslations : function(catalog) {
-    for (var key in catalog.messages)
-      this.TRANSLATIONS[key] = catalog.messages[key];
-    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
-    this.LOCALE = catalog.locale;
-  },
-
-  /**
-   * add context elements like header anchor links
-   */
-  addContextElements : function() {
-    $('div[id] > :header:first').each(function() {
-      $('<a class="headerlink">\u00B6</a>').
-      attr('href', '#' + this.id).
-      attr('title', _('Permalink to this headline')).
-      appendTo(this);
-    });
-    $('dt[id]').each(function() {
-      $('<a class="headerlink">\u00B6</a>').
-      attr('href', '#' + this.id).
-      attr('title', _('Permalink to this definition')).
-      appendTo(this);
-    });
-  },
-
-  /**
-   * workaround a firefox stupidity
-   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
-   */
-  fixFirefoxAnchorBug : function() {
-    if (document.location.hash && $.browser.mozilla)
-      window.setTimeout(function() {
-        document.location.href += '';
-      }, 10);
-  },
-
-  /**
-   * highlight the search words provided in the url in the text
-   */
-  highlightSearchWords : function() {
-    var params = $.getQueryParameters();
-    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
-    if (terms.length) {
-      var body = $('div.body');
-      if (!body.length) {
-        body = $('body');
-      }
-      window.setTimeout(function() {
-        $.each(terms, function() {
-          body.highlightText(this.toLowerCase(), 'highlighted');
-        });
-      }, 10);
-      $('<p class="highlight-link"><a href="javascript:Documentation.' +
-        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
-          .appendTo($('#searchbox'));
-    }
-  },
-
-  /**
-   * init the domain index toggle buttons
-   */
-  initIndexTable : function() {
-    var togglers = $('img.toggler').click(function() {
-      var src = $(this).attr('src');
-      var idnum = $(this).attr('id').substr(7);
-      $('tr.cg-' + idnum).toggle();
-      if (src.substr(-9) === 'minus.png')
-        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
-      else
-        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
-    }).css('display', '');
-    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
-        togglers.click();
-    }
-  },
-
-  /**
-   * helper function to hide the search marks again
-   */
-  hideSearchWords : function() {
-    $('#searchbox .highlight-link').fadeOut(300);
-    $('span.highlighted').removeClass('highlighted');
-  },
-
-  /**
-   * make the url absolute
-   */
-  makeURL : function(relativeURL) {
-    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
-  },
-
-  /**
-   * get the current relative url
-   */
-  getCurrentURL : function() {
-    var path = document.location.pathname;
-    var parts = path.split(/\//);
-    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
-      if (this === '..')
-        parts.pop();
-    });
-    var url = parts.join('/');
-    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
-  },
-
-  initOnKeyListeners: function() {
-    $(document).keyup(function(event) {
-      var activeElementType = document.activeElement.tagName;
-      // don't navigate when in search box or textarea
-      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
-        switch (event.keyCode) {
-          case 37: // left
-            var prevHref = $('link[rel="prev"]').prop('href');
-            if (prevHref) {
-              window.location.href = prevHref;
-              return false;
-            }
-          case 39: // right
-            var nextHref = $('link[rel="next"]').prop('href');
-            if (nextHref) {
-              window.location.href = nextHref;
-              return false;
-            }
-        }
-      }
-    });
-  }
-};
-
-// quick alias for translations
-_ = Documentation.gettext;
-
-$(document).ready(function() {
-  Documentation.init();
-});

+ 0 - 10
docs/_build/html/_static/documentation_options.js

@@ -1,10 +0,0 @@
-var DOCUMENTATION_OPTIONS = {
-    URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: '0.2',
-    LANGUAGE: 'None',
-    COLLAPSE_INDEX: false,
-    FILE_SUFFIX: '.html',
-    HAS_SOURCE: true,
-    SOURCELINK_SUFFIX: '.txt',
-    NAVIGATION_WITH_KEYS: false,
-};

二进制
docs/_build/html/_static/file.png


+ 0 - 376
docs/_build/html/_static/haiku.css

@@ -1,376 +0,0 @@
-/*
- * haiku.css_t
- * ~~~~~~~~~~~
- *
- * Sphinx stylesheet -- haiku theme.
- *
- * Adapted from http://haiku-os.org/docs/Haiku-doc.css.
- * Original copyright message:
- *
- *     Copyright 2008-2009, Haiku. All rights reserved.
- *     Distributed under the terms of the MIT License.
- *
- *     Authors:
- *              Francois Revol <revol@free.fr>
- *              Stephan Assmus <superstippi@gmx.de>
- *              Braden Ewing <brewin@gmail.com>
- *              Humdinger <humdingerb@gmail.com>
- *
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-@import url("basic.css");
-
-html {
-    margin: 0px;
-    padding: 0px;
-    background: #FFF url(bg-page.png) top left repeat-x;
-}
-
-body {
-    line-height: 1.5;
-    margin: auto;
-    padding: 0px;
-    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
-    min-width: 59em;
-    max-width: 70em;
-    color: #333333;
-}
-
-div.footer {
-    padding: 8px;
-    font-size: 11px;
-    text-align: center;
-    letter-spacing: 0.5px;
-}
-
-/* link colors and text decoration */
-
-a:link {
-    font-weight: bold;
-    text-decoration: none;
-    color: #dc3c01;
-}
-
-a:visited {
-    font-weight: bold;
-    text-decoration: none;
-    color: #892601;
-}
-
-a:hover, a:active {
-    text-decoration: underline;
-    color: #ff4500;
-}
-
-/* Some headers act as anchors, don't give them a hover effect */
-
-h1 a:hover, a:active {
-    text-decoration: none;
-    color: #0c3762;
-}
-
-h2 a:hover, a:active {
-    text-decoration: none;
-    color: #0c3762;
-}
-
-h3 a:hover, a:active {
-    text-decoration: none;
-    color: #0c3762;
-}
-
-h4 a:hover, a:active {
-    text-decoration: none;
-    color: #0c3762;
-}
-
-a.headerlink {
-    color: #a7ce38;
-    padding-left: 5px;
-}
-
-a.headerlink:hover {
-    color: #a7ce38;
-}
-
-/* basic text elements */
-
-div.content {
-    margin-top: 20px;
-    margin-left: 40px;
-    margin-right: 40px;
-    margin-bottom: 50px;
-    font-size: 0.9em;
-}
-
-/* heading and navigation */
-
-div.header {
-    position: relative;
-    left: 0px;
-    top: 0px;
-    height: 85px;
-    /* background: #eeeeee; */
-    padding: 0 40px;
-}
-div.header h1 {
-    font-size: 1.6em;
-    font-weight: normal;
-    letter-spacing: 1px;
-    color: #0c3762;
-    border: 0;
-    margin: 0;
-    padding-top: 15px;
-}
-div.header h1 a {
-    font-weight: normal;
-    color: #0c3762;
-}
-div.header h2 {
-    font-size: 1.3em;
-    font-weight: normal;
-    letter-spacing: 1px;
-    text-transform: uppercase;
-    color: #aaa;
-    border: 0;
-    margin-top: -3px;
-    padding: 0;
-}
-
-div.header img.rightlogo {
-    float: right;
-}
-
-
-div.title {
-    font-size: 1.3em;
-    font-weight: bold;
-    color: #0c3762;
-    border-bottom: dotted thin #e0e0e0;
-    margin-bottom: 25px;
-}
-div.topnav {
-    /* background: #e0e0e0; */
-}
-div.topnav p {
-    margin-top: 0;
-    margin-left: 40px;
-    margin-right: 40px;
-    margin-bottom: 0px;
-    text-align: right;
-    font-size: 0.8em;
-}
-div.bottomnav {
-    background: #eeeeee;
-}
-div.bottomnav p {
-    margin-right: 40px;
-    text-align: right;
-    font-size: 0.8em;
-}
-
-a.uplink {
-    font-weight: normal;
-}
-
-
-/* contents box */
-
-table.index {
-    margin: 0px 0px 30px 30px;
-    padding: 1px;
-    border-width: 1px;
-    border-style: dotted;
-    border-color: #e0e0e0;
-}
-table.index tr.heading {
-    background-color: #e0e0e0;
-    text-align: center;
-    font-weight: bold;
-    font-size: 1.1em;
-}
-table.index tr.index {
-    background-color: #eeeeee;
-}
-table.index td {
-    padding: 5px 20px;
-}
-
-table.index a:link, table.index a:visited {
-    font-weight: normal;
-    text-decoration: none;
-    color: #dc3c01;
-}
-table.index a:hover, table.index a:active {
-    text-decoration: underline;
-    color: #ff4500;
-}
-
-
-/* Haiku User Guide styles and layout */
-
-/* Rounded corner boxes */
-/* Common declarations */
-div.admonition {
-    -webkit-border-radius: 10px;
-    -khtml-border-radius: 10px;
-    -moz-border-radius: 10px;
-    border-radius: 10px;
-    border-style: dotted;
-    border-width: thin;
-    border-color: #dcdcdc;
-    padding: 10px 15px 10px 15px;
-    margin-bottom: 15px;
-    margin-top: 15px;
-}
-div.note {
-    padding: 10px 15px 10px 80px;
-    background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;
-    min-height: 42px;
-}
-div.warning {
-    padding: 10px 15px 10px 80px;
-    background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;
-    min-height: 42px;
-}
-div.seealso {
-    background: #e4ffde;
-}
-
-/* More layout and styles */
-h1 {
-    font-size: 1.3em;
-    font-weight: bold;
-    color: #0c3762;
-    border-bottom: dotted thin #e0e0e0;
-    margin-top: 30px;
-}
-
-h2 {
-    font-size: 1.2em;
-    font-weight: normal;
-    color: #0c3762;
-    border-bottom: dotted thin #e0e0e0;
-    margin-top: 30px;
-}
-
-h3 {
-    font-size: 1.1em;
-    font-weight: normal;
-    color: #0c3762;
-    margin-top: 30px;
-}
-
-h4 {
-    font-size: 1.0em;
-    font-weight: normal;
-    color: #0c3762;
-    margin-top: 30px;
-}
-
-p {
-    text-align: justify;
-}
-
-p.last {
-    margin-bottom: 0;
-}
-
-ol {
-    padding-left: 20px;
-}
-
-ul {
-    padding-left: 5px;
-    margin-top: 3px;
-}
-
-li {
-    line-height: 1.3;
-}
-
-div.content ul > li {
-    -moz-background-clip:border;
-    -moz-background-inline-policy:continuous;
-    -moz-background-origin:padding;
-    background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em;
-    list-style-image: none;
-    list-style-type: none;
-    padding: 0 0 0 1.666em;
-    margin-bottom: 3px;
-}
-
-td {
-    vertical-align: top;
-}
-
-code {
-    background-color: #e2e2e2;
-    font-size: 1.0em;
-    font-family: monospace;
-}
-
-pre {
-    border-color: #0c3762;
-    border-style: dotted;
-    border-width: thin;
-    margin: 0 0 12px 0;
-    padding: 0.8em;
-    background-color: #f0f0f0;
-}
-
-hr {
-    border-top: 1px solid #ccc;
-    border-bottom: 0;
-    border-right: 0;
-    border-left: 0;
-    margin-bottom: 10px;
-    margin-top: 20px;
-}
-
-/* printer only pretty stuff */
-@media print {
-    .noprint {
-        display: none;
-    }
-    /* for acronyms we want their definitions inlined at print time */
-    acronym[title]:after {
-        font-size: small;
-        content: " (" attr(title) ")";
-        font-style: italic;
-    }
-    /* and not have mozilla dotted underline */
-    acronym {
-        border: none;
-    }
-    div.topnav, div.bottomnav, div.header, table.index {
-        display: none;
-    }
-    div.content {
-        margin: 0px;
-        padding: 0px;
-    }
-    html {
-        background: #FFF;
-    }
-}
-
-.viewcode-back {
-    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
-}
-
-div.viewcode-block:target {
-    background-color: #f4debf;
-    border-top: 1px solid #ac9;
-    border-bottom: 1px solid #ac9;
-    margin: -1px -10px;
-    padding: 0 12px;
-}
-
-/* math display */
-div.math p {
-    text-align: center;
-}

文件差异内容过多而无法显示
+ 0 - 10365
docs/_build/html/_static/jquery.js


+ 0 - 297
docs/_build/html/_static/language_data.js

@@ -1,297 +0,0 @@
-/*
- * language_data.js
- * ~~~~~~~~~~~~~~~~
- *
- * This script contains the language-specific data used by searchtools.js,
- * namely the list of stopwords, stemmer, scorer and splitter.
- *
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
-
-
-/* Non-minified version JS is _stemmer.js if file is provided */ 
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
-  var step2list = {
-    ational: 'ate',
-    tional: 'tion',
-    enci: 'ence',
-    anci: 'ance',
-    izer: 'ize',
-    bli: 'ble',
-    alli: 'al',
-    entli: 'ent',
-    eli: 'e',
-    ousli: 'ous',
-    ization: 'ize',
-    ation: 'ate',
-    ator: 'ate',
-    alism: 'al',
-    iveness: 'ive',
-    fulness: 'ful',
-    ousness: 'ous',
-    aliti: 'al',
-    iviti: 'ive',
-    biliti: 'ble',
-    logi: 'log'
-  };
-
-  var step3list = {
-    icate: 'ic',
-    ative: '',
-    alize: 'al',
-    iciti: 'ic',
-    ical: 'ic',
-    ful: '',
-    ness: ''
-  };
-
-  var c = "[^aeiou]";          // consonant
-  var v = "[aeiouy]";          // vowel
-  var C = c + "[^aeiouy]*";    // consonant sequence
-  var V = v + "[aeiou]*";      // vowel sequence
-
-  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
-  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
-  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
-  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
-
-  this.stemWord = function (w) {
-    var stem;
-    var suffix;
-    var firstch;
-    var origword = w;
-
-    if (w.length < 3)
-      return w;
-
-    var re;
-    var re2;
-    var re3;
-    var re4;
-
-    firstch = w.substr(0,1);
-    if (firstch == "y")
-      w = firstch.toUpperCase() + w.substr(1);
-
-    // Step 1a
-    re = /^(.+?)(ss|i)es$/;
-    re2 = /^(.+?)([^s])s$/;
-
-    if (re.test(w))
-      w = w.replace(re,"$1$2");
-    else if (re2.test(w))
-      w = w.replace(re2,"$1$2");
-
-    // Step 1b
-    re = /^(.+?)eed$/;
-    re2 = /^(.+?)(ed|ing)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      re = new RegExp(mgr0);
-      if (re.test(fp[1])) {
-        re = /.$/;
-        w = w.replace(re,"");
-      }
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1];
-      re2 = new RegExp(s_v);
-      if (re2.test(stem)) {
-        w = stem;
-        re2 = /(at|bl|iz)$/;
-        re3 = new RegExp("([^aeiouylsz])\\1$");
-        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-        if (re2.test(w))
-          w = w + "e";
-        else if (re3.test(w)) {
-          re = /.$/;
-          w = w.replace(re,"");
-        }
-        else if (re4.test(w))
-          w = w + "e";
-      }
-    }
-
-    // Step 1c
-    re = /^(.+?)y$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(s_v);
-      if (re.test(stem))
-        w = stem + "i";
-    }
-
-    // Step 2
-    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step2list[suffix];
-    }
-
-    // Step 3
-    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step3list[suffix];
-    }
-
-    // Step 4
-    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
-    re2 = /^(.+?)(s|t)(ion)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      if (re.test(stem))
-        w = stem;
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1] + fp[2];
-      re2 = new RegExp(mgr1);
-      if (re2.test(stem))
-        w = stem;
-    }
-
-    // Step 5
-    re = /^(.+?)e$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      re2 = new RegExp(meq1);
-      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
-        w = stem;
-    }
-    re = /ll$/;
-    re2 = new RegExp(mgr1);
-    if (re.test(w) && re2.test(w)) {
-      re = /.$/;
-      w = w.replace(re,"");
-    }
-
-    // and turn initial Y back to y
-    if (firstch == "y")
-      w = firstch.toLowerCase() + w.substr(1);
-    return w;
-  }
-}
-
-
-
-
-
-var splitChars = (function() {
-    var result = {};
-    var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
-         1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
-         2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
-         2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
-         3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
-         3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
-         4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
-         8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
-         11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
-         43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
-    var i, j, start, end;
-    for (i = 0; i < singles.length; i++) {
-        result[singles[i]] = true;
-    }
-    var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
-         [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
-         [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
-         [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
-         [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
-         [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
-         [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
-         [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
-         [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
-         [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
-         [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
-         [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
-         [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
-         [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
-         [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
-         [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
-         [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
-         [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
-         [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
-         [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
-         [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
-         [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
-         [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
-         [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
-         [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
-         [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
-         [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
-         [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
-         [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
-         [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
-         [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
-         [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
-         [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
-         [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
-         [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
-         [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
-         [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
-         [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
-         [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
-         [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
-         [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
-         [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
-         [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
-         [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
-         [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
-         [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
-         [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
-         [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
-         [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
-    for (i = 0; i < ranges.length; i++) {
-        start = ranges[i][0];
-        end = ranges[i][1];
-        for (j = start; j <= end; j++) {
-            result[j] = true;
-        }
-    }
-    return result;
-})();
-
-function splitQuery(query) {
-    var result = [];
-    var start = -1;
-    for (var i = 0; i < query.length; i++) {
-        if (splitChars[query.charCodeAt(i)]) {
-            if (start !== -1) {
-                result.push(query.slice(start, i));
-                start = -1;
-            }
-        } else if (start === -1) {
-            start = i;
-        }
-    }
-    if (start !== -1) {
-        result.push(query.slice(start));
-    }
-    return result;
-}
-
-

二进制
docs/_build/html/_static/minus.png


二进制
docs/_build/html/_static/plus.png


+ 0 - 71
docs/_build/html/_static/pygments.css

@@ -1,71 +0,0 @@
-pre { line-height: 125%; margin: 0; }
-td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; }
-td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #ffffff; }
-.highlight .c { color: #aaaaaa; font-style: italic } /* Comment */
-.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
-.highlight .k { color: #0000aa } /* Keyword */
-.highlight .ch { color: #aaaaaa; font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #4c8317 } /* Comment.Preproc */
-.highlight .cpf { color: #aaaaaa; font-style: italic } /* Comment.PreprocFile */
-.highlight .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #0000aa; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #aa0000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #aa0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00aa00 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #555555 } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #aa0000 } /* Generic.Traceback */
-.highlight .kc { color: #0000aa } /* Keyword.Constant */
-.highlight .kd { color: #0000aa } /* Keyword.Declaration */
-.highlight .kn { color: #0000aa } /* Keyword.Namespace */
-.highlight .kp { color: #0000aa } /* Keyword.Pseudo */
-.highlight .kr { color: #0000aa } /* Keyword.Reserved */
-.highlight .kt { color: #00aaaa } /* Keyword.Type */
-.highlight .m { color: #009999 } /* Literal.Number */
-.highlight .s { color: #aa5500 } /* Literal.String */
-.highlight .na { color: #1e90ff } /* Name.Attribute */
-.highlight .nb { color: #00aaaa } /* Name.Builtin */
-.highlight .nc { color: #00aa00; text-decoration: underline } /* Name.Class */
-.highlight .no { color: #aa0000 } /* Name.Constant */
-.highlight .nd { color: #888888 } /* Name.Decorator */
-.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
-.highlight .nf { color: #00aa00 } /* Name.Function */
-.highlight .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */
-.highlight .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #aa0000 } /* Name.Variable */
-.highlight .ow { color: #0000aa } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #009999 } /* Literal.Number.Bin */
-.highlight .mf { color: #009999 } /* Literal.Number.Float */
-.highlight .mh { color: #009999 } /* Literal.Number.Hex */
-.highlight .mi { color: #009999 } /* Literal.Number.Integer */
-.highlight .mo { color: #009999 } /* Literal.Number.Oct */
-.highlight .sa { color: #aa5500 } /* Literal.String.Affix */
-.highlight .sb { color: #aa5500 } /* Literal.String.Backtick */
-.highlight .sc { color: #aa5500 } /* Literal.String.Char */
-.highlight .dl { color: #aa5500 } /* Literal.String.Delimiter */
-.highlight .sd { color: #aa5500 } /* Literal.String.Doc */
-.highlight .s2 { color: #aa5500 } /* Literal.String.Double */
-.highlight .se { color: #aa5500 } /* Literal.String.Escape */
-.highlight .sh { color: #aa5500 } /* Literal.String.Heredoc */
-.highlight .si { color: #aa5500 } /* Literal.String.Interpol */
-.highlight .sx { color: #aa5500 } /* Literal.String.Other */
-.highlight .sr { color: #009999 } /* Literal.String.Regex */
-.highlight .s1 { color: #aa5500 } /* Literal.String.Single */
-.highlight .ss { color: #0000aa } /* Literal.String.Symbol */
-.highlight .bp { color: #00aaaa } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #00aa00 } /* Name.Function.Magic */
-.highlight .vc { color: #aa0000 } /* Name.Variable.Class */
-.highlight .vg { color: #aa0000 } /* Name.Variable.Global */
-.highlight .vi { color: #aa0000 } /* Name.Variable.Instance */
-.highlight .vm { color: #aa0000 } /* Name.Variable.Magic */
-.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */

+ 0 - 481
docs/_build/html/_static/searchtools.js

@@ -1,481 +0,0 @@
-/*
- * searchtools.js
- * ~~~~~~~~~~~~~~~~
- *
- * Sphinx JavaScript utilities for the full-text search.
- *
- * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-if (!Scorer) {
-  /**
-   * Simple result scoring code.
-   */
-  var Scorer = {
-    // Implement the following function to further tweak the score for each result
-    // The function takes a result array [filename, title, anchor, descr, score]
-    // and returns the new score.
-    /*
-    score: function(result) {
-      return result[4];
-    },
-    */
-
-    // query matches the full name of an object
-    objNameMatch: 11,
-    // or matches in the last dotted part of the object name
-    objPartialMatch: 6,
-    // Additive scores depending on the priority of the object
-    objPrio: {0:  15,   // used to be importantResults
-              1:  5,   // used to be objectResults
-              2: -5},  // used to be unimportantResults
-    //  Used when the priority is not in the mapping.
-    objPrioDefault: 0,
-
-    // query found in title
-    title: 15,
-    // query found in terms
-    term: 5
-  };
-}
-
-if (!splitQuery) {
-  function splitQuery(query) {
-    return query.split(/\s+/);
-  }
-}
-
-/**
- * Search Module
- */
-var Search = {
-
-  _index : null,
-  _queued_query : null,
-  _pulse_status : -1,
-
-  init : function() {
-      var params = $.getQueryParameters();
-      if (params.q) {
-          var query = params.q[0];
-          $('input[name="q"]')[0].value = query;
-          this.performSearch(query);
-      }
-  },
-
-  loadIndex : function(url) {
-    $.ajax({type: "GET", url: url, data: null,
-            dataType: "script", cache: true,
-            complete: function(jqxhr, textstatus) {
-              if (textstatus != "success") {
-                document.getElementById("searchindexloader").src = url;
-              }
-            }});
-  },
-
-  setIndex : function(index) {
-    var q;
-    this._index = index;
-    if ((q = this._queued_query) !== null) {
-      this._queued_query = null;
-      Search.query(q);
-    }
-  },
-
-  hasIndex : function() {
-      return this._index !== null;
-  },
-
-  deferQuery : function(query) {
-      this._queued_query = query;
-  },
-
-  stopPulse : function() {
-      this._pulse_status = 0;
-  },
-
-  startPulse : function() {
-    if (this._pulse_status >= 0)
-        return;
-    function pulse() {
-      var i;
-      Search._pulse_status = (Search._pulse_status + 1) % 4;
-      var dotString = '';
-      for (i = 0; i < Search._pulse_status; i++)
-        dotString += '.';
-      Search.dots.text(dotString);
-      if (Search._pulse_status > -1)
-        window.setTimeout(pulse, 500);
-    }
-    pulse();
-  },
-
-  /**
-   * perform a search for something (or wait until index is loaded)
-   */
-  performSearch : function(query) {
-    // create the required interface elements
-    this.out = $('#search-results');
-    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
-    this.dots = $('<span></span>').appendTo(this.title);
-    this.status = $('<p style="display: none"></p>').appendTo(this.out);
-    this.output = $('<ul class="search"/>').appendTo(this.out);
-
-    $('#search-progress').text(_('Preparing search...'));
-    this.startPulse();
-
-    // index already loaded, the browser was quick!
-    if (this.hasIndex())
-      this.query(query);
-    else
-      this.deferQuery(query);
-  },
-
-  /**
-   * execute search (requires search index to be loaded)
-   */
-  query : function(query) {
-    var i;
-
-    // stem the searchterms and add them to the correct list
-    var stemmer = new Stemmer();
-    var searchterms = [];
-    var excluded = [];
-    var hlterms = [];
-    var tmp = splitQuery(query);
-    var objectterms = [];
-    for (i = 0; i < tmp.length; i++) {
-      if (tmp[i] !== "") {
-          objectterms.push(tmp[i].toLowerCase());
-      }
-
-      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
-          tmp[i] === "") {
-        // skip this "word"
-        continue;
-      }
-      // stem the word
-      var word = stemmer.stemWord(tmp[i].toLowerCase());
-      // prevent stemmer from cutting word smaller than two chars
-      if(word.length < 3 && tmp[i].length >= 3) {
-        word = tmp[i];
-      }
-      var toAppend;
-      // select the correct list
-      if (word[0] == '-') {
-        toAppend = excluded;
-        word = word.substr(1);
-      }
-      else {
-        toAppend = searchterms;
-        hlterms.push(tmp[i].toLowerCase());
-      }
-      // only add if not already in the list
-      if (!$u.contains(toAppend, word))
-        toAppend.push(word);
-    }
-    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
-
-    // console.debug('SEARCH: searching for:');
-    // console.info('required: ', searchterms);
-    // console.info('excluded: ', excluded);
-
-    // prepare search
-    var terms = this._index.terms;
-    var titleterms = this._index.titleterms;
-
-    // array of [filename, title, anchor, descr, score]
-    var results = [];
-    $('#search-progress').empty();
-
-    // lookup as object
-    for (i = 0; i < objectterms.length; i++) {
-      var others = [].concat(objectterms.slice(0, i),
-                             objectterms.slice(i+1, objectterms.length));
-      results = results.concat(this.performObjectSearch(objectterms[i], others));
-    }
-
-    // lookup as search terms in fulltext
-    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
-
-    // let the scorer override scores with a custom scoring function
-    if (Scorer.score) {
-      for (i = 0; i < results.length; i++)
-        results[i][4] = Scorer.score(results[i]);
-    }
-
-    // now sort the results by score (in opposite order of appearance, since the
-    // display function below uses pop() to retrieve items) and then
-    // alphabetically
-    results.sort(function(a, b) {
-      var left = a[4];
-      var right = b[4];
-      if (left > right) {
-        return 1;
-      } else if (left < right) {
-        return -1;
-      } else {
-        // same score: sort alphabetically
-        left = a[1].toLowerCase();
-        right = b[1].toLowerCase();
-        return (left > right) ? -1 : ((left < right) ? 1 : 0);
-      }
-    });
-
-    // for debugging
-    //Search.lastresults = results.slice();  // a copy
-    //console.info('search results:', Search.lastresults);
-
-    // print the results
-    var resultCount = results.length;
-    function displayNextItem() {
-      // results left, load the summary and display it
-      if (results.length) {
-        var item = results.pop();
-        var listItem = $('<li style="display:none"></li>');
-        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
-          // dirhtml builder
-          var dirname = item[0] + '/';
-          if (dirname.match(/\/index\/$/)) {
-            dirname = dirname.substring(0, dirname.length-6);
-          } else if (dirname == 'index/') {
-            dirname = '';
-          }
-          listItem.append($('<a/>').attr('href',
-            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
-            highlightstring + item[2]).html(item[1]));
-        } else {
-          // normal html builders
-          listItem.append($('<a/>').attr('href',
-            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
-            highlightstring + item[2]).html(item[1]));
-        }
-        if (item[3]) {
-          listItem.append($('<span> (' + item[3] + ')</span>'));
-          Search.output.append(listItem);
-          listItem.slideDown(5, function() {
-            displayNextItem();
-          });
-        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
-          var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
-          if (suffix === undefined) {
-            suffix = '.txt';
-          }
-          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
-                  dataType: "text",
-                  complete: function(jqxhr, textstatus) {
-                    var data = jqxhr.responseText;
-                    if (data !== '' && data !== undefined) {
-                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
-                    }
-                    Search.output.append(listItem);
-                    listItem.slideDown(5, function() {
-                      displayNextItem();
-                    });
-                  }});
-        } else {
-          // no source available, just display title
-          Search.output.append(listItem);
-          listItem.slideDown(5, function() {
-            displayNextItem();
-          });
-        }
-      }
-      // search finished, update title and status message
-      else {
-        Search.stopPulse();
-        Search.title.text(_('Search Results'));
-        if (!resultCount)
-          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
-        else
-            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
-        Search.status.fadeIn(500);
-      }
-    }
-    displayNextItem();
-  },
-
-  /**
-   * search for object names
-   */
-  performObjectSearch : function(object, otherterms) {
-    var filenames = this._index.filenames;
-    var docnames = this._index.docnames;
-    var objects = this._index.objects;
-    var objnames = this._index.objnames;
-    var titles = this._index.titles;
-
-    var i;
-    var results = [];
-
-    for (var prefix in objects) {
-      for (var name in objects[prefix]) {
-        var fullname = (prefix ? prefix + '.' : '') + name;
-        if (fullname.toLowerCase().indexOf(object) > -1) {
-          var score = 0;
-          var parts = fullname.split('.');
-          // check for different match types: exact matches of full name or
-          // "last name" (i.e. last dotted part)
-          if (fullname == object || parts[parts.length - 1] == object) {
-            score += Scorer.objNameMatch;
-          // matches in last name
-          } else if (parts[parts.length - 1].indexOf(object) > -1) {
-            score += Scorer.objPartialMatch;
-          }
-          var match = objects[prefix][name];
-          var objname = objnames[match[1]][2];
-          var title = titles[match[0]];
-          // If more than one term searched for, we require other words to be
-          // found in the name/title/description
-          if (otherterms.length > 0) {
-            var haystack = (prefix + ' ' + name + ' ' +
-                            objname + ' ' + title).toLowerCase();
-            var allfound = true;
-            for (i = 0; i < otherterms.length; i++) {
-              if (haystack.indexOf(otherterms[i]) == -1) {
-                allfound = false;
-                break;
-              }
-            }
-            if (!allfound) {
-              continue;
-            }
-          }
-          var descr = objname + _(', in ') + title;
-
-          var anchor = match[3];
-          if (anchor === '')
-            anchor = fullname;
-          else if (anchor == '-')
-            anchor = objnames[match[1]][1] + '-' + fullname;
-          // add custom score for some objects according to scorer
-          if (Scorer.objPrio.hasOwnProperty(match[2])) {
-            score += Scorer.objPrio[match[2]];
-          } else {
-            score += Scorer.objPrioDefault;
-          }
-          results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
-        }
-      }
-    }
-
-    return results;
-  },
-
-  /**
-   * search for full-text terms in the index
-   */
-  performTermsSearch : function(searchterms, excluded, terms, titleterms) {
-    var docnames = this._index.docnames;
-    var filenames = this._index.filenames;
-    var titles = this._index.titles;
-
-    var i, j, file;
-    var fileMap = {};
-    var scoreMap = {};
-    var results = [];
-
-    // perform the search on the required terms
-    for (i = 0; i < searchterms.length; i++) {
-      var word = searchterms[i];
-      var files = [];
-      var _o = [
-        {files: terms[word], score: Scorer.term},
-        {files: titleterms[word], score: Scorer.title}
-      ];
-
-      // no match but word was a required one
-      if ($u.every(_o, function(o){return o.files === undefined;})) {
-        break;
-      }
-      // found search word in contents
-      $u.each(_o, function(o) {
-        var _files = o.files;
-        if (_files === undefined)
-          return
-
-        if (_files.length === undefined)
-          _files = [_files];
-        files = files.concat(_files);
-
-        // set score for the word in each file to Scorer.term
-        for (j = 0; j < _files.length; j++) {
-          file = _files[j];
-          if (!(file in scoreMap))
-            scoreMap[file] = {}
-          scoreMap[file][word] = o.score;
-        }
-      });
-
-      // create the mapping
-      for (j = 0; j < files.length; j++) {
-        file = files[j];
-        if (file in fileMap)
-          fileMap[file].push(word);
-        else
-          fileMap[file] = [word];
-      }
-    }
-
-    // now check if the files don't contain excluded terms
-    for (file in fileMap) {
-      var valid = true;
-
-      // check if all requirements are matched
-      if (fileMap[file].length != searchterms.length)
-          continue;
-
-      // ensure that none of the excluded terms is in the search result
-      for (i = 0; i < excluded.length; i++) {
-        if (terms[excluded[i]] == file ||
-            titleterms[excluded[i]] == file ||
-            $u.contains(terms[excluded[i]] || [], file) ||
-            $u.contains(titleterms[excluded[i]] || [], file)) {
-          valid = false;
-          break;
-        }
-      }
-
-      // if we have still a valid result we can add it to the result list
-      if (valid) {
-        // select one (max) score for the file.
-        // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
-        var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
-        results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
-      }
-    }
-    return results;
-  },
-
-  /**
-   * helper function to return a node containing the
-   * search summary for a given text. keywords is a list
-   * of stemmed words, hlwords is the list of normal, unstemmed
-   * words. the first one is used to find the occurrence, the
-   * latter for highlighting it.
-   */
-  makeSearchSummary : function(text, keywords, hlwords) {
-    var textLower = text.toLowerCase();
-    var start = 0;
-    $.each(keywords, function() {
-      var i = textLower.indexOf(this.toLowerCase());
-      if (i > -1)
-        start = i;
-    });
-    start = Math.max(start - 120, 0);
-    var excerpt = ((start > 0) ? '...' : '') +
-      $.trim(text.substr(start, 240)) +
-      ((start + 240 - text.length) ? '...' : '');
-    var rv = $('<div class="context"></div>').text(excerpt);
-    $.each(hlwords, function() {
-      rv = rv.highlightText(this, 'highlighted');
-    });
-    return rv;
-  }
-};
-
-$(document).ready(function() {
-  Search.init();
-});

+ 0 - 13
docs/_build/html/_static/styles.css

@@ -1,13 +0,0 @@
-table.table-center {
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center;
-}
-
-table.table-center td {
-    border-bottom: none;
-}
-
-table.table-center p.caption {
-    text-align: center;
-}

文件差异内容过多而无法显示
+ 0 - 1692
docs/_build/html/_static/underscore.js


+ 0 - 169
docs/_build/html/execute.html

@@ -1,169 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>How to Execute DrawioConvert? &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="How To Create Custom Formalisms?" href="formalisms/create.html" />
-    <link rel="prev" title="Welcome to DrawioConvert’s documentation!" href="index.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>How to Execute DrawioConvert?</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        «&#160;&#160;<a href="index.html">Welcome to DrawioConvert’s documentation!</a>
-        &#160;&#160;::&#160;&#160;
-        <a class="uplink" href="index.html">Contents</a>
-        &#160;&#160;::&#160;&#160;
-        <a href="formalisms/create.html">How To Create Custom Formalisms?</a>&#160;&#160;»
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="how-to-execute-drawioconvert">
-<h1>How to Execute <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>?<a class="headerlink" href="#how-to-execute-drawioconvert" title="Permalink to this headline">¶</a></h1>
-<p>The execution for <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code> is simple:</p>
-<div class="code highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="n">__main__</span><span class="o">.</span><span class="n">py</span> <span class="o">&lt;</span><span class="n">INPUT</span><span class="o">&gt;</span> <span class="p">[</span><span class="n">ARGS</span><span class="p">]</span>
-</pre></div>
-</div>
-<p>Where <code class="code docutils literal notranslate"><span class="pre">&lt;INPUT&gt;</span></code> represents the drawio file to parse and <code class="code docutils literal notranslate"><span class="pre">[ARGS]</span></code>
-any combination of the commandline arguments that can be used with this tool.</p>
-<p>Depending on the formalism that is used, a set of files will be generated that
-comply to the input file as well as the selected formalism. Filenames are based
-on the input file and the name of the drawio pages. When a page’s name matches
-<code class="code docutils literal notranslate"><span class="pre">Page-\d+</span></code> (default), only the numeric part is used.</p>
-<div class="section" id="commandline-arguments">
-<h2>Commandline Arguments<a class="headerlink" href="#commandline-arguments" title="Permalink to this headline">¶</a></h2>
-<table border="1" class="colwidths-given docutils">
-<colgroup>
-<col width="18%" />
-<col width="27%" />
-<col width="55%" />
-</colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Short Flag</th>
-<th class="head">Long Flag</th>
-<th class="head">Description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">-F</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--formalism</span></code></td>
-<td>The formalism for which files must be generated. This argument is
-required.</td>
-</tr>
-<tr class="row-odd"><td><code class="code docutils literal notranslate"><span class="pre">-e</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--entry</span></code></td>
-<td>The topmost class to use in the simulation. May be required for some
-formalisms, where simulation is top-level dependent.</td>
-</tr>
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">t</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--time</span></code></td>
-<td>Total simulation time to use. Should only be set for experiment
-files. Defaults to <code class="code docutils literal notranslate"><span class="pre">10</span></code> (time-units). While this flag is meant
-to indicate the total time, some formalisms may use this as the
-allowed amount of simulation steps.</td>
-</tr>
-<tr class="row-odd"><td><code class="code docutils literal notranslate"><span class="pre">-L</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--list</span></code></td>
-<td>Lists the available formalisms that can be used.</td>
-</tr>
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">-s</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--skip</span></code></td>
-<td>Sometimes a visual model has some “placeholders” for future classes.
-By default, these are generated as well, even if no contents are given.
-The <code class="code docutils literal notranslate"><span class="pre">--skip</span></code> flag changes this behaviour by skipping empty blocks
-in the generation.</td>
-</tr>
-<tr class="row-odd"><td><code class="code docutils literal notranslate"><span class="pre">-d</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--directory</span></code></td>
-<td>The location where the files should be generated. Defaults to <code class="code docutils literal notranslate"><span class="pre">./</span></code>
-(the current directory).</td>
-</tr>
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">-f</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--force</span></code></td>
-<td>Some formalisms may mark certain files as “protected”. This is usually
-done to prevent accidental removal of user code when programming
-experiments. Hence, these files cannot be overwritten by the tool, unless
-this flag is set.</td>
-</tr>
-<tr class="row-odd"><td><code class="code docutils literal notranslate"><span class="pre">-a</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--all</span></code></td>
-<td>Each formalism has their default set of files to be generated. However,
-there may be some experimental or additional files that not all users
-need. This flag allows the generation of <strong>all</strong> files of the formalism.</td>
-</tr>
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">-S</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--singlefile</span></code></td>
-<td>Ignore the page separations in drawio and generate a single model file.
-Note that not all formalisms require this flag to be set. Additionally,
-this flag does <strong>not</strong> mean only a single output will be generated, but
-rather a single file for each template associated to the formalism.</td>
-</tr>
-<tr class="row-odd"><td><code class="code docutils literal notranslate"><span class="pre">-r</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--reversed</span></code></td>
-<td>Drawio opens the first page of a diagram by default. This is why it is
-a good practice to provide the most high-level model on the first page.
-However, this means the first page depends on pages that are generated
-later on. By using this flag, the pages will undergo the generation
-process in reverse order.</td>
-</tr>
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">-g</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--globalimports</span></code></td>
-<td>When set, the import directives in the drawio diagram(s) will be made
-global to all pages of that diagram. Not useful when <code class="code docutils literal notranslate"><span class="pre">-S</span></code> is also
-set, or only a single page is used. Note how these imports are not</td>
-</tr>
-<tr class="row-odd"><td><code class="code docutils literal notranslate"><span class="pre">-v</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--verbose</span></code></td>
-<td>Prints additional debugging information.</td>
-</tr>
-<tr class="row-even"><td><code class="code docutils literal notranslate"><span class="pre">-E</span></code></td>
-<td><code class="code docutils literal notranslate"><span class="pre">--enviroment</span></code></td>
-<td>Occasionally, formalisms need other properties that can be set by the
-user. This flag takes a comma-separated list of <code class="code docutils literal notranslate"><span class="pre">key=value</span></code> pairs
-and applies them to the formalism specifics.</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        «&#160;&#160;<a href="index.html">Welcome to DrawioConvert’s documentation!</a>
-        &#160;&#160;::&#160;&#160;
-        <a class="uplink" href="index.html">Contents</a>
-        &#160;&#160;::&#160;&#160;
-        <a href="formalisms/create.html">How To Create Custom Formalisms?</a>&#160;&#160;»
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 93
docs/_build/html/formalism.html

@@ -1,93 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>formalism module &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>formalism module</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="module-formalism">
-<span id="formalism-module"></span><h1>formalism module<a class="headerlink" href="#module-formalism" title="Permalink to this headline">¶</a></h1>
-<p>This module contains the Formalism class, which contains and loads the basic formalism information.</p>
-<dl class="class">
-<dt id="formalism.Formalism">
-<em class="property">class </em><code class="descclassname">formalism.</code><code class="descname">Formalism</code><span class="sig-paren">(</span><em>logger</em>, <em>here</em>, <em>args</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/formalism.html#Formalism"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#formalism.Formalism" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<p>Contains and loads the basic formalism information.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>logger</strong> (<a class="reference internal" href="logger.html#logger.Logger" title="logger.Logger"><em>Logger</em></a>) – The logger to use.</li>
-<li><strong>here</strong> (<em>str</em>) – The location of <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>.</li>
-<li><strong>args</strong> – Parsed arguments from the <code class="xref py py-class docutils literal notranslate"><span class="pre">ArgumentParser</span></code></li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-<dl class="staticmethod">
-<dt id="formalism.Formalism.defaults">
-<em class="property">static </em><code class="descname">defaults</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/formalism.html#Formalism.defaults"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#formalism.Formalism.defaults" title="Permalink to this definition">¶</a></dt>
-<dd><p>The default setup values.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="formalism.Formalism.load_formalism">
-<code class="descname">load_formalism</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/formalism.html#Formalism.load_formalism"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#formalism.Formalism.load_formalism" title="Permalink to this definition">¶</a></dt>
-<dd><p>Loads the formalism’s setup variable.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="formalism.Formalism.valid_formalism">
-<code class="descname">valid_formalism</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/formalism.html#Formalism.valid_formalism"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#formalism.Formalism.valid_formalism" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks if the formalism exists.</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 231
docs/_build/html/formalisms/CBD.html

@@ -1,231 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>CBD Formalism &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="../_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="../_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="../_static/language_data.js"></script>
-    <link rel="index" title="Index" href="../genindex.html" />
-    <link rel="search" title="Search" href="../search.html" />
-    <link rel="prev" title="How To Create Custom Formalisms?" href="create.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="../index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>CBD Formalism</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        «&#160;&#160;<a href="create.html">How To Create Custom Formalisms?</a>
-        &#160;&#160;::&#160;&#160;
-        <a class="uplink" href="../index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="cbd-formalism">
-<h1>CBD Formalism<a class="headerlink" href="#cbd-formalism" title="Permalink to this headline">¶</a></h1>
-<p>Causal Block Diagrams allow for finding solutions to mathematical problems.</p>
-<div class="section" id="setting-up-drawio">
-<h2>Setting up Drawio<a class="headerlink" href="#setting-up-drawio" title="Permalink to this headline">¶</a></h2>
-<p>In drawio, select <span class="menuselection">File ‣ Open Library</span> and load <code class="file docutils literal notranslate"><span class="pre">CBDLibrary.xml</span></code>
-(which can be found <a class="reference download internal" download="" href="../_downloads/9ae1485408cab692c778396ba5bd1b19/CBDLibrary.xml"><code class="xref download docutils literal notranslate"><span class="pre">here</span></code></a>).
-This provides a set of primitive CBD blocks that can be used in your models.
-Once included, it can be found at the top of the shapes library.</p>
-<table border="1" class="table-center docutils">
-<colgroup>
-<col width="100%" />
-</colgroup>
-<tbody valign="top">
-<tr class="row-odd"><td><div class="first last figure" id="id1">
-<img alt="../_images/library.png" src="../_images/library.png" />
-<p class="caption"><span class="caption-text">CBD Library in the Sidebar</span></p>
-</div>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="block-properties">
-<span id="block-props"></span><h2>Block Properties<a class="headerlink" href="#block-properties" title="Permalink to this headline">¶</a></h2>
-<p>All blocks in the library have some block-specific properties that can be set by the user.
-Hovering over a component shows all non-empty properties that were set on this shape.</p>
-<p>There are several ways of accessing/modifying these properties:</p>
-<ul class="simple">
-<li>Double Click with the left mouse button on a shape.</li>
-<li>Click with right mouse button to open a shape’s context menu.
-Near the bottom of the list, select <span class="menuselection">Edit Data</span>.</li>
-<li>Select the shape (left mouse button) and in the top of the right panel,
-go to <span class="menuselection">Arrange ‣ Edit Data</span>.</li>
-<li>Select the shape and press <kbd class="kbd docutils literal notranslate">CTRL + M</kbd> or <kbd class="kbd docutils literal notranslate">CMND + M</kbd>.</li>
-</ul>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Do not change the <code class="code docutils literal notranslate"><span class="pre">class_name</span></code> as the converter relies on this property.</p>
-</div>
-<table border="1" class="table-center docutils">
-<colgroup>
-<col width="100%" />
-</colgroup>
-<tbody valign="top">
-<tr class="row-odd"><td><div class="first last figure" id="id2">
-<img alt="../_images/properties.png" src="../_images/properties.png" />
-<p class="caption"><span class="caption-text">Example of the Property Window (for a
-ConstantBlock)</span></p>
-</div>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="working-with-library-blocks">
-<span id="library"></span><h2>Working with Library Blocks<a class="headerlink" href="#working-with-library-blocks" title="Permalink to this headline">¶</a></h2>
-<p>To guarantee a consistent visual appearance of CBD models,
-no blocks in the library, except for the Custom Block, can be resized.
-Every block has zero or more input and output ports. Input ports are represented by
-the <code class="code docutils literal notranslate"><span class="pre">InputPortBlock</span></code> (black triangle) and output ports by the <code class="code docutils literal notranslate"><span class="pre">OutputPortBlock</span></code>
-(white triangle). When selecting (left mouse button) a port, a small, movable,
-yellow/orange diamond-shaped anchor will appear in front of the port’s name.
-The position of this label can be changed by dragging the anchor.
-The port name can be altered in the <span class="menuselection">Edit Data</span> window.</p>
-<p>Each CBD block that is <em>not</em> a port may have the following properties:</p>
-<ul>
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">ID</span></code> or <code class="code docutils literal notranslate"><span class="pre">id</span></code>: The drawio unique ID for this block. Note that drawio automatically
-overwrites a property with the key <code class="code docutils literal notranslate"><span class="pre">id</span></code> by the value shown by <code class="code docutils literal notranslate"><span class="pre">ID</span></code> (upon saving the diagram).</p>
-</li>
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">block_name</span></code>: The name of the block. It is required that
-all blocks have a unique name within a class. When omitted, the <code class="code docutils literal notranslate"><span class="pre">ID</span></code> is used.</p>
-</li>
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">class_name</span></code>: The type of block.</p>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Do not change the <code class="code docutils literal notranslate"><span class="pre">class_name</span></code> as the converter relies on this property.
-Changing it makes it so the block type changes as well in the simulation.</p>
-</div>
-</li>
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">symbol</span></code>: The block symbol that must be rendered by MathJax/LaTeX. This is a purely
-graphical attribute and is ignored by the script.</p>
-</li>
-</ul>
-<p>Optionally, additional class parameters can be provided by adding more properties.
-Their values will be passed on as default values for the corresponding property as an argument, e.g., to
-use strings, enclose the value in “…” or ‘…’, for <code class="code docutils literal notranslate"><span class="pre">None</span></code>, leave it empty or litterally type
-“<code class="code docutils literal notranslate"><span class="pre">None</span></code>”…</p>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Make sure these values are expressions/rvalues! If not, the generated Python file will crash,
-or cause some unexpected behavior. Furthermore, newlines may not be used in these values.</p>
-</div>
-<p>Class parameters that cannot be used are: <code class="code docutils literal notranslate"><span class="pre">label</span></code> (prevented by drawio), <code class="code docutils literal notranslate"><span class="pre">id</span></code> (overwritten by
-drawio), <code class="code docutils literal notranslate"><span class="pre">placeholders</span></code> (prevented by drawio), <code class="code docutils literal notranslate"><span class="pre">symbol</span></code> (ignored by the converter)
-and <code class="code docutils literal notranslate"><span class="pre">__docstring__</span></code> (used for other purposes, see later).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Blocks with a variable number of inputs (i.e., the <code class="code docutils literal notranslate"><span class="pre">OrBlock</span></code> and the
-<code class="code docutils literal notranslate"><span class="pre">AndBlock</span></code>) may still need additional ports to be placed/removed.</p>
-</div>
-</div>
-<div class="section" id="creating-custom-cbd-blocks">
-<span id="custom-block"></span><h2>Creating Custom CBD Blocks<a class="headerlink" href="#creating-custom-cbd-blocks" title="Permalink to this headline">¶</a></h2>
-<p>A custom hierarchical CBD block is constructed as a network of already provided blocks
-(which in their own right may be custom hierarchical blocks)
-using the <code class="code docutils literal notranslate"><span class="pre">Custom</span> <span class="pre">Block</span></code> element from <code class="file docutils literal notranslate"><span class="pre">CBDLibrary.xml</span></code>.
-This is a collapsible component in which a block diagram may be drawn.
-It has two important properties:</p>
-<ul class="simple">
-<li><code class="code docutils literal notranslate"><span class="pre">class_name</span></code>: The new class name for the custom block. Note that all class names must be unique!</li>
-<li><code class="code docutils literal notranslate"><span class="pre">block_name</span></code>: The name of an instance of the CBD model if it’s the top-level CBD.</li>
-</ul>
-<p>Additional properties can be added to create custom class parameters.
-The same set of parameters that was discussed above cannot be set,
-with the exception of <code class="code docutils literal notranslate"><span class="pre">__docstring__</span></code>, which now allows adding documentation to custom blocks.</p>
-<p>The empty rectangle is a container for the custom hierachical block.
-Blocks can be dragged into the rectangular area and connected.
-<code class="code docutils literal notranslate"><span class="pre">InputPortBlock</span></code> and <code class="code docutils literal notranslate"><span class="pre">OutputPortBlock</span></code> are used to add inputs and outputs with
-their <code class="code docutils literal notranslate"><span class="pre">name</span></code> property set to the port’s name.</p>
-<div class="admonition hint">
-<p class="first admonition-title">Hint</p>
-<p class="last">The <code class="code docutils literal notranslate"><span class="pre">Custom</span> <span class="pre">Block</span></code> component can, in constrast with all other blocks in the
-library, be resized. This allows for larger hierarchical models to be created, as the
-basic blocks cannot be resized.</p>
-</div>
-<table border="1" class="table-center docutils">
-<colgroup>
-<col width="100%" />
-</colgroup>
-<tbody valign="top">
-<tr class="row-odd"><td><div class="first last figure" id="id3">
-<img alt="../_images/custom-block.png" src="../_images/custom-block.png" />
-<p class="caption"><span class="caption-text">Custom Sine Generator Block with no
-Input Ports, a single Output Port and
-a Custom Graphical Representation</span></p>
-</div>
-</td>
-</tr>
-</tbody>
-</table>
-<p>Next, create a graphical representation of the block (i.e., what an instance
-block should look like when used in a block diagram), add the corresponding
-ports and set the property <code class="code docutils literal notranslate"><span class="pre">class_name</span></code> to the same class as that set in the
-<code class="code docutils literal notranslate"><span class="pre">Custom</span> <span class="pre">Block</span></code>. Make sure not to forget to add any class parameters that were
-added to the <code class="code docutils literal notranslate"><span class="pre">Custom</span> <span class="pre">Block</span></code>.</p>
-<div class="admonition hint">
-<p class="first admonition-title">Hint</p>
-<p class="last">This can be done easily by adding a predefined block and changing its
-ports and properties to match the new custom block.</p>
-</div>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Only the <code class="code docutils literal notranslate"><span class="pre">Custom</span> <span class="pre">Block</span></code> components will be read by the converter.
-Anything else is implicitly ignored. Furthermore, the script is page-independent,
-meaning multiple pages may be used inside a single drawio document to maintain a
-clean overview of the created models.</p>
-</div>
-</div>
-<div class="section" id="conversion">
-<h2>Conversion<a class="headerlink" href="#conversion" title="Permalink to this headline">¶</a></h2>
-<p>To generate code from the created drawio files, execute the script with the <code class="code docutils literal notranslate"><span class="pre">-F</span> <span class="pre">CBD</span></code> flag.
-This tells <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code> to use the CBD formalism. Two files will be created:</p>
-<ul class="simple">
-<li><code class="code docutils literal notranslate"><span class="pre">model.py</span></code>: The model file, containing the code for the modelled blocks.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">experiment.py</span></code>: The “protected” experiment file. You can feely add/remove parts of this file
-without fear of it being overwritten next execution. Use the <code class="code docutils literal notranslate"><span class="pre">-f</span></code>/<code class="code docutils literal notranslate"><span class="pre">--force</span></code> flag to
-force overwrite the file.</li>
-</ul>
-<p>It is possible to use continuous models, where they are discretized to a certain delta. This is
-customizeable using the <code class="code docutils literal notranslate"><span class="pre">-E</span></code>/<code class="code docutils literal notranslate"><span class="pre">--environment</span></code> flag. I.e. by setting <code class="code docutils literal notranslate"><span class="pre">-E</span> <span class="pre">delta=0.1</span></code>,
-it is possible to execute in steps of 0.1 time-units. Note how <code class="code docutils literal notranslate"><span class="pre">-t</span></code>/<code class="code docutils literal notranslate"><span class="pre">--time</span></code> identifies
-the total simulation time, <strong>not</strong> the amount of steps taken.</p>
-</div>
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        «&#160;&#160;<a href="create.html">How To Create Custom Formalisms?</a>
-        &#160;&#160;::&#160;&#160;
-        <a class="uplink" href="../index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 184
docs/_build/html/formalisms/create.html

@@ -1,184 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>How To Create Custom Formalisms? &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="../_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="../_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <script type="text/javascript" src="../_static/language_data.js"></script>
-    <link rel="index" title="Index" href="../genindex.html" />
-    <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="CBD Formalism" href="CBD.html" />
-    <link rel="prev" title="How to Execute DrawioConvert?" href="../execute.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="../index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>How To Create Custom Formalisms?</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        «&#160;&#160;<a href="../execute.html">How to Execute <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>?</a>
-        &#160;&#160;::&#160;&#160;
-        <a class="uplink" href="../index.html">Contents</a>
-        &#160;&#160;::&#160;&#160;
-        <a href="CBD.html">CBD Formalism</a>&#160;&#160;»
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="how-to-create-custom-formalisms">
-<h1>How To Create Custom Formalisms?<a class="headerlink" href="#how-to-create-custom-formalisms" title="Permalink to this headline">¶</a></h1>
-<p>Each formalism represents a “block diagram”, where components are connected
-via edges. Each edge is defined from a source “port class” to a target
-“port class”. Ports usually have unique names to allow for identification and
-are located <strong>inside</strong> the blocks they connect.</p>
-<p>New components can be defined by a 1-level hierarchical composition of the
-model. I.e. a set of connected blocks that are “grouped” together.</p>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">If the target for the code generation of a custom formalism does not
-comply to the above description, this tool cannot be used.
-<code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code> currently only supports the described block diagram
-structure.</p>
-</div>
-<div class="section" id="structure">
-<h2>Structure<a class="headerlink" href="#structure" title="Permalink to this headline">¶</a></h2>
-<p>Each formalism corresponds to a package in the <code class="code docutils literal notranslate"><span class="pre">./formalisms</span></code> directory.
-There, all additional (re)sources can be added. In the required
-<code class="code docutils literal notranslate"><span class="pre">__init__.py</span></code> file, the <code class="code docutils literal notranslate"><span class="pre">setup</span></code> variable bust be defined as a
-dictionary, with the following structure (names followed by an asterisk are
-required fields):</p>
-<ul>
-<li><dl class="first docutils">
-<dt><code class="code docutils literal notranslate"><span class="pre">parser</span></code>: All components required for parsing drawio files.</dt>
-<dd><ul class="first last simple">
-<li><code class="code docutils literal notranslate"><span class="pre">input</span> <span class="pre">class</span></code>: The class name used to identify input port in the
-generated code. Defaults to <code class="code docutils literal notranslate"><span class="pre">&quot;InputPort&quot;</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">output</span> <span class="pre">class</span></code>: The class name used to identify output ports in
-the generated code. Defaults to <code class="code docutils literal notranslate"><span class="pre">&quot;OutputPort&quot;</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">class</span> <span class="pre">object</span> <span class="pre">xpath</span></code>: The <a class="reference external" href="https://www.w3.org/TR/xpath/">xpath</a>
-definition of a path which identifies a “class object” in the drawio
-XML-structure. More specifically, all elements that correspond to that
-structure will be seen as custom classes. Defaults to:
-<code class="code docutils literal notranslate"><span class="pre">&quot;.//object/mxCell/mxGeometry/mxRectangle/../../..[&#64;class_name]&quot;</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">class</span> <span class="pre">special</span> <span class="pre">xpath</span></code>: The <a class="reference external" href="https://www.w3.org/TR/xpath/">xpath</a>
-definition of a path which identifies a “special object” in the drawio
-XML-structure. More specifically, all elements that correspond to that
-structure will be seen as elements with additional information for
-the code generation. For instance, custom imports can be defined this
-way. Defaults to: <code class="code docutils literal notranslate"><span class="pre">&quot;.//object/mxCell/mxGeometry/../..[&#64;role]&quot;</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">verify</span></code>: A function that takes the list of pages (see
-<a class="reference internal" href="../parser.html#parser.Page" title="parser.Page"><code class="xref py py-class docutils literal notranslate"><span class="pre">parser.Page</span></code></a> and raises a <a class="reference internal" href="../parser.html#parser.ParseException" title="parser.ParseException"><code class="xref py py-class docutils literal notranslate"><span class="pre">parser.ParseException</span></code></a>
-whenever the system is invalid.</li>
-</ul>
-</dd>
-</dl>
-</li>
-<li><dl class="first docutils">
-<dt><code class="code docutils literal notranslate"><span class="pre">generator</span></code>: The setup information for the file generation.</dt>
-<dd><ul class="first last">
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">ignore</span></code>: List of attribute names to ignore.</p>
-</li>
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">environment</span></code>: List of allowed environment variables. These will
-be defined with the <code class="code docutils literal notranslate"><span class="pre">-E</span></code>/<code class="code docutils literal notranslate"><span class="pre">--environment</span></code> flag.</p>
-</li>
-<li><p class="first"><code class="code docutils literal notranslate"><span class="pre">templates</span></code>: List of template files to be generated. These files
-are defined by their own dictionaries with the following keys:</p>
-<blockquote>
-<div><ul class="simple">
-<li><code class="code docutils literal notranslate"><span class="pre">template</span></code>*: The filename of the template to use, located in
-the formalism directory. These files should end in <code class="code docutils literal notranslate"><span class="pre">.jinja</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">pattern</span></code>*: The pattern for the filename of the generated
-file(s). <code class="code docutils literal notranslate"><span class="pre">{prefix}</span></code> will be replaced by the basename of the
-input drawio file and <code class="code docutils literal notranslate"><span class="pre">{page}</span></code> will be replaced by the name
-of the page on which the components are found (when
-<code class="code docutils literal notranslate"><span class="pre">multipage</span></code> is <code class="code docutils literal notranslate"><span class="pre">True</span></code> and there is more than one page).
-Additionally, there is the <code class="code docutils literal notranslate"><span class="pre">{u}</span></code> that is an underscore if
-<code class="code docutils literal notranslate"><span class="pre">{page}</span></code> is not empty, but empty otherwise. <code class="code docutils literal notranslate"><span class="pre">{u}</span></code> allows
-for a filename-friendly separator between the prefix and the page
-if multiple files are to be generated.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">multipage</span></code>: Identifies that all drawio pages can generate
-their own file w.r.t. this template. Defaults to <code class="code docutils literal notranslate"><span class="pre">True</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">overwrite</span></code>: When <code class="code docutils literal notranslate"><span class="pre">True</span></code>, this file may be overwritten
-whenever a generation is called. Defaults to <code class="code docutils literal notranslate"><span class="pre">True</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">auto</span></code>: When <code class="code docutils literal notranslate"><span class="pre">True</span></code>, this file will automatically be
-generated by the script. Otherwise, the <code class="code docutils literal notranslate"><span class="pre">-a</span></code>/<code class="code docutils literal notranslate"><span class="pre">--all</span></code>
-flag is required. Defaults to <code class="code docutils literal notranslate"><span class="pre">True</span></code>.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">entry</span></code>: Boolean value, indicative of whether or not the
-<code class="code docutils literal notranslate"><span class="pre">-e</span></code>/<code class="code docutils literal notranslate"><span class="pre">--entry</span></code> flag must be set in order to generate this
-file. Defaults to <code class="code docutils literal notranslate"><span class="pre">False</span></code>.</li>
-</ul>
-</div></blockquote>
-</li>
-</ul>
-</dd>
-</dl>
-</li>
-</ul>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">Files are generated in the order they are listed in the
-<code class="code docutils literal notranslate"><span class="pre">generator.templates</span></code> directive. This should prevent circular
-includes. Use custom import structures for more complexity.</p>
-</div>
-</div>
-<div class="section" id="templates">
-<h2>Templates<a class="headerlink" href="#templates" title="Permalink to this headline">¶</a></h2>
-<p>Using the <a class="reference external" href="https://jinja.palletsprojects.com/en/2.11.x/">Jinja 2</a> templating
-language, it is possible to create any file from the given drawio structure.
-Besides all features Jinja has to offer, the following namespace variables are
-also defined:</p>
-<ul class="simple">
-<li><code class="code docutils literal notranslate"><span class="pre">command</span></code>: The command used to start the generation.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">ignore</span></code>: The list of attribute names to ignore, as set in the
-<code class="code docutils literal notranslate"><span class="pre">setup</span></code> variable (see above).</li>
-<li><code class="code docutils literal notranslate"><span class="pre">time</span></code>: The total amount of time a simulation needs to run. This is set
-by the user, using the <code class="code docutils literal notranslate"><span class="pre">-t</span></code>/<code class="code docutils literal notranslate"><span class="pre">--time</span></code> argument.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">imports</span></code>: A list of additional imports, as found in the drawio file.
-This is a list of <code class="code docutils literal notranslate"><span class="pre">(mod,</span> <span class="pre">obj)</span></code> pairs, where <code class="code docutils literal notranslate"><span class="pre">mod</span></code> identifies the
-module and <code class="code docutils literal notranslate"><span class="pre">obj</span></code> the optional objects to import. If no objects are set,
-this will be <code class="code docutils literal notranslate"><span class="pre">None</span></code> (or <code class="code docutils literal notranslate"><span class="pre">none</span></code> in Jinja).</li>
-<li><code class="code docutils literal notranslate"><span class="pre">nodes</span></code>: A list of <a class="reference internal" href="../parser.html#parser.Node" title="parser.Node"><code class="xref py py-class docutils literal notranslate"><span class="pre">parser.Node</span></code></a> objects, identifying the classes
-that have been found in drawio.</li>
-<li><code class="code docutils literal notranslate"><span class="pre">files</span></code>: A list of already generated files, in the order in which they
-were generated. This can be used for cross-references.</li>
-<li>All variables as defined by the user with the <code class="code docutils literal notranslate"><span class="pre">-E</span></code>/<code class="code docutils literal notranslate"><span class="pre">--environment</span></code>
-flag. See also the <code class="code docutils literal notranslate"><span class="pre">generator.environment</span></code> directive in the <code class="code docutils literal notranslate"><span class="pre">setup</span></code>
-variable. If the user did not set this variable, it is <code class="code docutils literal notranslate"><span class="pre">undefined</span></code> in
-Jinja, therefore, the template needs to check its existence.</li>
-</ul>
-</div>
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        «&#160;&#160;<a href="../execute.html">How to Execute <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>?</a>
-        &#160;&#160;::&#160;&#160;
-        <a class="uplink" href="../index.html">Contents</a>
-        &#160;&#160;::&#160;&#160;
-        <a href="CBD.html">CBD Formalism</a>&#160;&#160;»
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 71
docs/_build/html/generator.html

@@ -1,71 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>generator module &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>generator module</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="module-generator">
-<span id="generator-module"></span><h1>generator module<a class="headerlink" href="#module-generator" title="Permalink to this headline">¶</a></h1>
-<dl class="class">
-<dt id="generator.Generator">
-<em class="property">class </em><code class="descclassname">generator.</code><code class="descname">Generator</code><span class="sig-paren">(</span><em>logger</em>, <em>here</em>, <em>args</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/generator.html#Generator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#generator.Generator" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<p>Generates the files from the internal data structure.</p>
-<dl class="method">
-<dt id="generator.Generator.generate_file">
-<code class="descname">generate_file</code><span class="sig-paren">(</span><em>loc</em>, <em>blueprint</em>, <em>**fields</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/generator.html#Generator.generate_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#generator.Generator.generate_file" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="generator.Generator.generate_files">
-<code class="descname">generate_files</code><span class="sig-paren">(</span><em>setup_generator</em>, <em>pages</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/generator.html#Generator.generate_files"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#generator.Generator.generate_files" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 232
docs/_build/html/genindex.html

@@ -1,232 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Index &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="#" />
-    <link rel="search" title="Search" href="search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>Index</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-
-<h1 id="index">Index</h1>
-
-<div class="genindex-jumpbox">
- <a href="#A"><strong>A</strong></a>
- | <a href="#C"><strong>C</strong></a>
- | <a href="#D"><strong>D</strong></a>
- | <a href="#E"><strong>E</strong></a>
- | <a href="#F"><strong>F</strong></a>
- | <a href="#G"><strong>G</strong></a>
- | <a href="#I"><strong>I</strong></a>
- | <a href="#L"><strong>L</strong></a>
- | <a href="#N"><strong>N</strong></a>
- | <a href="#P"><strong>P</strong></a>
- | <a href="#V"><strong>V</strong></a>
- | <a href="#W"><strong>W</strong></a>
- 
-</div>
-<h2 id="A">A</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Node.add_connection">add_connection() (parser.Node method)</a>
-</li>
-      <li><a href="parser.html#parser.Page.add_import">add_import() (parser.Page method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Node.add_input">add_input() (parser.Node method)</a>
-</li>
-      <li><a href="parser.html#parser.Page.add_node">add_node() (parser.Page method)</a>
-</li>
-      <li><a href="parser.html#parser.Node.add_output">add_output() (parser.Node method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="C">C</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Parser.create_node">create_node() (parser.Parser method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="D">D</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="logger.html#logger.Logger.debug">debug() (logger.Logger method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Parser.decode_and_deflate">decode_and_deflate() (parser.Parser static method)</a>
-</li>
-      <li><a href="formalism.html#formalism.Formalism.defaults">defaults() (formalism.Formalism static method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="E">E</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="logger.html#logger.Logger.error">error() (logger.Logger method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="F">F</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="formalism.html#formalism.Formalism">Formalism (class in formalism)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="formalism.html#module-formalism">formalism (module)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="G">G</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="generator.html#generator.Generator.generate_file">generate_file() (generator.Generator method)</a>
-</li>
-      <li><a href="generator.html#generator.Generator.generate_files">generate_files() (generator.Generator method)</a>
-</li>
-      <li><a href="generator.html#generator.Generator">Generator (class in generator)</a>
-</li>
-      <li><a href="generator.html#module-generator">generator (module)</a>
-</li>
-      <li><a href="parser.html#parser.Node.get_connections">get_connections() (parser.Node method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Page.get_imports">get_imports() (parser.Page method)</a>
-</li>
-      <li><a href="parser.html#parser.Node.get_inputs">get_inputs() (parser.Node method)</a>
-</li>
-      <li><a href="parser.html#parser.Page.get_nodes">get_nodes() (parser.Page method)</a>
-</li>
-      <li><a href="parser.html#parser.Node.get_outputs">get_outputs() (parser.Node method)</a>
-</li>
-      <li><a href="parser.html#parser.Node.get_properties_string">get_properties_string() (parser.Node method)</a>
-</li>
-      <li><a href="parser.html#parser.Page.get_sanitized_name">get_sanitized_name() (parser.Page method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="I">I</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.IGNORE">IGNORE (in module parser)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Node.is_empty">is_empty() (parser.Node method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="L">L</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="formalism.html#formalism.Formalism.load_formalism">load_formalism() (formalism.Formalism method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="logger.html#logger.Logger">Logger (class in logger)</a>
-</li>
-      <li><a href="logger.html#module-logger">logger (module)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="N">N</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Node">Node (class in parser)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="P">P</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Page">Page (class in parser)</a>
-</li>
-      <li><a href="parser.html#parser.Parser.parse">parse() (parser.Parser method)</a>
-</li>
-      <li><a href="parser.html#parser.parse_environment">parse_environment() (in module parser)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="parser.html#parser.Parser.parse_page">parse_page() (parser.Parser method)</a>
-</li>
-      <li><a href="parser.html#parser.ParseException">ParseException</a>
-</li>
-      <li><a href="parser.html#parser.Parser">Parser (class in parser)</a>
-</li>
-      <li><a href="parser.html#module-parser">parser (module)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="V">V</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="formalism.html#formalism.Formalism.valid_formalism">valid_formalism() (formalism.Formalism method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="W">W</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="logger.html#logger.Logger.warning">warning() (logger.Logger method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 147
docs/_build/html/index.html

@@ -1,147 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Welcome to DrawioConvert’s documentation! &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="How to Execute DrawioConvert?" href="execute.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="#">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>Welcome to DrawioConvert’s documentation!</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="#">Contents</a>
-        &#160;&#160;::&#160;&#160;
-        <a href="execute.html">How to Execute <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>?</a>&#160;&#160;»
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="welcome-to-drawioconvert-s-documentation">
-<h1>Welcome to DrawioConvert’s documentation!<a class="headerlink" href="#welcome-to-drawioconvert-s-documentation" title="Permalink to this headline">¶</a></h1>
-<p><code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code> is a project that allows conversion from simple, yet
-structured <a class="reference external" href="https://www.diagrams.net">draw.io</a> diagrams to any kind of file.
-This usually provides a useful entrypoint for visual modelling of models that
-comply to a textual framework.</p>
-<p>Or, more specifically, this tool allows for the creation of graphical
-interfaces for code frameworks. Note that, while this tool was written in
-Python, any language is possible thanks to
-<a class="reference external" href="https://jinja.palletsprojects.com/en/2.11.x/">Jinja 2</a>.</p>
-<div class="section" id="requirements">
-<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2>
-<ul class="simple">
-<li><dl class="first docutils">
-<dt>Standard Libraries:</dt>
-<dd><ul class="first last">
-<li><code class="code docutils literal notranslate"><span class="pre">xml</span></code> (for <code class="code docutils literal notranslate"><span class="pre">xml.etree.ElementTree</span></code>)</li>
-<li><code class="code docutils literal notranslate"><span class="pre">urllib</span></code> (for <code class="code docutils literal notranslate"><span class="pre">urllib.parse.unquote</span></code>)</li>
-<li><code class="code docutils literal notranslate"><span class="pre">argparse</span></code></li>
-<li><code class="code docutils literal notranslate"><span class="pre">base64</span></code></li>
-<li><code class="code docutils literal notranslate"><span class="pre">os</span></code></li>
-<li><code class="code docutils literal notranslate"><span class="pre">re</span></code></li>
-<li><code class="code docutils literal notranslate"><span class="pre">sys</span></code></li>
-<li><code class="code docutils literal notranslate"><span class="pre">zlib</span></code></li>
-</ul>
-</dd>
-</dl>
-</li>
-<li><dl class="first docutils">
-<dt>External Libraries:</dt>
-<dd><ul class="first last">
-<li><a class="reference external" href="https://jinja.palletsprojects.com/en/2.11.x/">Jinja 2</a></li>
-<li>Anything else that is required for the converted files to work.</li>
-</ul>
-</dd>
-</dl>
-</li>
-</ul>
-<div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last"><code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code> does not execute the converted files, but only
-generates them! The user is required to install all components for the
-formalisms they like to use themselves.</p>
-</div>
-</div>
-<div class="section" id="how-does-it-work">
-<h2>How Does It Work?<a class="headerlink" href="#how-does-it-work" title="Permalink to this headline">¶</a></h2>
-<p>The core idea behind <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code> is the use of so-called “formalisms”.
-These are generic descriptions of how certain drawio files can (and should) be
-interpreted. They are provided with some setup information, a few template
-files, a drawio library and some documentation on their usage. From any drawio
-file (made according to the specification identified by the formalism) a new
-one will be generated that is complient with the drawn diagram and the selected
-formalism.</p>
-<p>This also allows drawio to be used for any block-based modelling language for
-which a graphical representation can be given and code generation can be
-defined.</p>
-</div>
-<div class="section" id="quick-links">
-<h2>Quick Links<a class="headerlink" href="#quick-links" title="Permalink to this headline">¶</a></h2>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="execute.html">How to Execute <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>?</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="execute.html#commandline-arguments">Commandline Arguments</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="formalisms/create.html">How To Create Custom Formalisms?</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="formalisms/create.html#structure">Structure</a></li>
-<li class="toctree-l2"><a class="reference internal" href="formalisms/create.html#templates">Templates</a></li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<div class="section" id="builtin-formalisms">
-<h2>Builtin Formalisms<a class="headerlink" href="#builtin-formalisms" title="Permalink to this headline">¶</a></h2>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="formalisms/CBD.html">CBD Formalism</a></li>
-</ul>
-</div>
-</div>
-</div>
-<div class="section" id="indices-and-tables">
-<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
-<ul class="simple">
-<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
-<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
-<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
-</ul>
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="#">Contents</a>
-        &#160;&#160;::&#160;&#160;
-        <a href="execute.html">How to Execute <code class="code docutils literal notranslate"><span class="pre">DrawioConvert</span></code>?</a>&#160;&#160;»
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 76
docs/_build/html/logger.html

@@ -1,76 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>logger module &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>logger module</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="module-logger">
-<span id="logger-module"></span><h1>logger module<a class="headerlink" href="#module-logger" title="Permalink to this headline">¶</a></h1>
-<p>Helper class to allow for simplistic logging of info.</p>
-<dl class="class">
-<dt id="logger.Logger">
-<em class="property">class </em><code class="descclassname">logger.</code><code class="descname">Logger</code><span class="sig-paren">(</span><em>verbose</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/logger.html#Logger"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#logger.Logger" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<dl class="method">
-<dt id="logger.Logger.debug">
-<code class="descname">debug</code><span class="sig-paren">(</span><em>message</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/logger.html#Logger.debug"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#logger.Logger.debug" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="logger.Logger.error">
-<code class="descname">error</code><span class="sig-paren">(</span><em>message</em>, <em>error=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/logger.html#Logger.error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#logger.Logger.error" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="logger.Logger.warning">
-<code class="descname">warning</code><span class="sig-paren">(</span><em>message</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/logger.html#Logger.warning"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#logger.Logger.warning" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 62
docs/_build/html/modules.html

@@ -1,62 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>src &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>src</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="src">
-<h1>src<a class="headerlink" href="#src" title="Permalink to this headline">¶</a></h1>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="formalism.html">formalism module</a></li>
-<li class="toctree-l1"><a class="reference internal" href="generator.html">generator module</a></li>
-<li class="toctree-l1"><a class="reference internal" href="logger.html">logger module</a></li>
-<li class="toctree-l1"><a class="reference internal" href="parser.html">parser module</a></li>
-</ul>
-</div>
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

二进制
docs/_build/html/objects.inv


+ 0 - 209
docs/_build/html/parser.html

@@ -1,209 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>parser module &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>parser module</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <div class="section" id="module-parser">
-<span id="parser-module"></span><h1>parser module<a class="headerlink" href="#module-parser" title="Permalink to this headline">¶</a></h1>
-<p>Test</p>
-<dl class="data">
-<dt id="parser.IGNORE">
-<code class="descclassname">parser.</code><code class="descname">IGNORE</code><em class="property"> = ['id', 'label', 'placeholders', 'class_name']</em><a class="headerlink" href="#parser.IGNORE" title="Permalink to this definition">¶</a></dt>
-<dd><p>Properties to ignore when parsing.</p>
-</dd></dl>
-
-<dl class="class">
-<dt id="parser.Node">
-<em class="property">class </em><code class="descclassname">parser.</code><code class="descname">Node</code><span class="sig-paren">(</span><em>id</em>, <em>class_name</em>, <em>properties</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<p>Identifies a node object, as found in drawio.
-On one hand used for the individual components,
-but on the other hand used as a “group” of multiple
-nodes.</p>
-<dl class="method">
-<dt id="parser.Node.add_connection">
-<code class="descname">add_connection</code><span class="sig-paren">(</span><em>source</em>, <em>target</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.add_connection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.add_connection" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.add_input">
-<code class="descname">add_input</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.add_input"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.add_input" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.add_output">
-<code class="descname">add_output</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.add_output"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.add_output" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.get_connections">
-<code class="descname">get_connections</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.get_connections"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.get_connections" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.get_inputs">
-<code class="descname">get_inputs</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.get_inputs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.get_inputs" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.get_outputs">
-<code class="descname">get_outputs</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.get_outputs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.get_outputs" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.get_properties_string">
-<code class="descname">get_properties_string</code><span class="sig-paren">(</span><em>ignore=[]</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.get_properties_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.get_properties_string" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Node.is_empty">
-<code class="descname">is_empty</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Node.is_empty"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Node.is_empty" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="parser.Page">
-<em class="property">class </em><code class="descclassname">parser.</code><code class="descname">Page</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Page"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Page" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<p>A single page in drawio. Contains multiple nodes.</p>
-<dl class="method">
-<dt id="parser.Page.add_import">
-<code class="descname">add_import</code><span class="sig-paren">(</span><em>im</em>, <em>obj=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Page.add_import"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Page.add_import" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Page.add_node">
-<code class="descname">add_node</code><span class="sig-paren">(</span><em>node</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Page.add_node"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Page.add_node" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Page.get_imports">
-<code class="descname">get_imports</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Page.get_imports"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Page.get_imports" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Page.get_nodes">
-<code class="descname">get_nodes</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Page.get_nodes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Page.get_nodes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="parser.Page.get_sanitized_name">
-<code class="descname">get_sanitized_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Page.get_sanitized_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Page.get_sanitized_name" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="exception">
-<dt id="parser.ParseException">
-<em class="property">exception </em><code class="descclassname">parser.</code><code class="descname">ParseException</code><span class="sig-paren">(</span><em>message</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#ParseException"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.ParseException" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
-<p>Semantic exceptions when parsing.</p>
-</dd></dl>
-
-<dl class="class">
-<dt id="parser.Parser">
-<em class="property">class </em><code class="descclassname">parser.</code><code class="descname">Parser</code><span class="sig-paren">(</span><em>filename</em>, <em>setup</em>, <em>ignore_empty_nodes=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Parser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Parser" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
-<p>The drawio parser.</p>
-<dl class="method">
-<dt id="parser.Parser.create_node">
-<code class="descname">create_node</code><span class="sig-paren">(</span><em>root</em>, <em>attr</em>, <em>page</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Parser.create_node"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Parser.create_node" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="staticmethod">
-<dt id="parser.Parser.decode_and_deflate">
-<em class="property">static </em><code class="descname">decode_and_deflate</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Parser.decode_and_deflate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Parser.decode_and_deflate" title="Permalink to this definition">¶</a></dt>
-<dd><p>Draw.io compresses each page as follows:
-First, all data is url-encoded
-Next, it is compressed/deflated
-Finally, it is encoded according to base64.</p>
-<p>To obtain the page data, we have to do the reverse.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Uncompressed and decoded data as a string.</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="parser.Parser.parse">
-<code class="descname">parse</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Parser.parse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Parser.parse" title="Permalink to this definition">¶</a></dt>
-<dd><p>Does the actual file parsing.</p>
-<p>If the file is compressed, we uncompress and work from there.
-If it wasn’t compressed, we can work with the whole tree.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">A list of Node objects, representing the drawio file.</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="parser.Parser.parse_page">
-<code class="descname">parse_page</code><span class="sig-paren">(</span><em>page</em>, <em>nroot</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#Parser.parse_page"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.Parser.parse_page" title="Permalink to this definition">¶</a></dt>
-<dd><p>Parses a single page of the model.</p>
-</dd></dl>
-
-</dd></dl>
-
-<dl class="function">
-<dt id="parser.parse_environment">
-<code class="descclassname">parser.</code><code class="descname">parse_environment</code><span class="sig-paren">(</span><em>vars</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/parser.html#parse_environment"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#parser.parse_environment" title="Permalink to this definition">¶</a></dt>
-<dd><p>Parses the set of environment variables, given with the
-<code class="code docutils literal notranslate"><span class="pre">-E</span></code>/<code class="code docutils literal notranslate"><span class="pre">--environment</span></code> variable.</p>
-</dd></dl>
-
-</div>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 102
docs/_build/html/py-modindex.html

@@ -1,102 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Python Module Index &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" />
- 
-
-    <script type="text/javascript">
-      DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
-    </script>
-
-
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>Python Module Index</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-
-   <h1>Python Module Index</h1>
-
-   <div class="modindex-jumpbox">
-   <a href="#cap-f"><strong>f</strong></a> | 
-   <a href="#cap-g"><strong>g</strong></a> | 
-   <a href="#cap-l"><strong>l</strong></a> | 
-   <a href="#cap-p"><strong>p</strong></a>
-   </div>
-
-   <table class="indextable modindextable">
-     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
-     <tr class="cap" id="cap-f"><td></td><td>
-       <strong>f</strong></td><td></td></tr>
-     <tr>
-       <td></td>
-       <td>
-       <a href="formalism.html#module-formalism"><code class="xref">formalism</code></a></td><td>
-       <em></em></td></tr>
-     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
-     <tr class="cap" id="cap-g"><td></td><td>
-       <strong>g</strong></td><td></td></tr>
-     <tr>
-       <td></td>
-       <td>
-       <a href="generator.html#module-generator"><code class="xref">generator</code></a></td><td>
-       <em></em></td></tr>
-     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
-     <tr class="cap" id="cap-l"><td></td><td>
-       <strong>l</strong></td><td></td></tr>
-     <tr>
-       <td></td>
-       <td>
-       <a href="logger.html#module-logger"><code class="xref">logger</code></a></td><td>
-       <em></em></td></tr>
-     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
-     <tr class="cap" id="cap-p"><td></td><td>
-       <strong>p</strong></td><td></td></tr>
-     <tr>
-       <td></td>
-       <td>
-       <a href="parser.html#module-parser"><code class="xref">parser</code></a></td><td>
-       <em></em></td></tr>
-   </table>
-
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

+ 0 - 82
docs/_build/html/search.html

@@ -1,82 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Search &#8212; DrawioConvert 0.2 documentation</title>
-    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" type="text/css" href="_static/styles.css" />
-    
-    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/language_data.js"></script>
-    <script type="text/javascript" src="_static/searchtools.js"></script>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="#" />
-  <script type="text/javascript">
-    jQuery(function() { Search.loadIndex("searchindex.js"); });
-  </script>
-  
-  <script type="text/javascript" id="searchindexloader"></script>
-   
-
-  </head><body>
-      <div class="header" role="banner"><h1 class="heading"><a href="index.html">
-          <span>DrawioConvert 0.2 documentation</span></a></h1>
-        <h2 class="heading"><span>Search</span></h2>
-      </div>
-      <div class="topnav" role="navigation" aria-label="top navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-      <div class="content">
-        
-        
-  <h1 id="search-documentation">Search</h1>
-  <div id="fallback" class="admonition warning">
-  <script type="text/javascript">$('#fallback').hide();</script>
-  <p>
-    Please activate JavaScript to enable the search
-    functionality.
-  </p>
-  </div>
-  <p>
-    From here you can search these documents. Enter your search
-    words into the box below and click "search". Note that the search
-    function will automatically search for all of the words. Pages
-    containing fewer words won't appear in the result list.
-  </p>
-  <form action="" method="get">
-    <input type="text" name="q" value="" />
-    <input type="submit" value="search" />
-    <span id="search-progress" style="padding-left: 10px"></span>
-  </form>
-  
-  <div id="search-results">
-  
-  </div>
-
-      </div>
-      <div class="bottomnav" role="navigation" aria-label="bottom navigation">
-      
-        <p>
-        <a class="uplink" href="index.html">Contents</a>
-        </p>
-
-      </div>
-
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2020, Randy Paredis.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
-    </div>
-  </body>
-</html>

文件差异内容过多而无法显示
+ 0 - 1
docs/_build/html/searchindex.js


二进制
docs/_figures/custom-block.png


二进制
docs/_figures/library.png


二进制
docs/_figures/properties.png


+ 0 - 13
docs/_static/styles.css

@@ -1,13 +0,0 @@
-table.table-center {
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center;
-}
-
-table.table-center td {
-    border-bottom: none;
-}
-
-table.table-center p.caption {
-    text-align: center;
-}

+ 0 - 183
docs/conf.py

@@ -1,183 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Configuration file for the Sphinx documentation builder.
-#
-# This file does only contain a selection of the most common options. For a
-# full list see the documentation:
-# http://www.sphinx-doc.org/en/master/config
-
-# -- Path setup --------------------------------------------------------------
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-import os
-import sys
-sys.path.insert(0, os.path.abspath('../'))
-sys.path.insert(0, os.path.abspath('../drawio2py'))
-
-
-# -- Project information -----------------------------------------------------
-
-project = 'DrawioConvert'
-copyright = '2020, Randy Paredis'
-author = 'Randy Paredis'
-
-# The short X.Y version
-version = ''
-# The full version, including alpha/beta/rc tags
-release = '0.2'
-
-
-# -- General configuration ---------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#
-# needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
-    'sphinx.ext.autodoc',
-    'sphinx.ext.mathjax',
-    'sphinx.ext.viewcode',
-    'sphinx.ext.napoleon'
-]
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix(es) of source filenames.
-# You can specify multiple suffix as a list of string:
-#
-# source_suffix = ['.rst', '.md']
-source_suffix = '.rst'
-
-# The master toctree document.
-master_doc = 'index'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = None
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = None
-
-
-# -- Options for HTML output -------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-#
-html_theme = 'haiku'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#
-# html_theme_options = {}
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-html_css_files = [
-    'styles.css',
-]
-
-# Custom sidebar templates, must be a dictionary that maps document names
-# to template names.
-#
-# The default sidebars (for documents that don't match any pattern) are
-# defined by theme itself.  Builtin themes are using these templates by
-# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
-# 'searchbox.html']``.
-#
-# html_sidebars = {}
-
-
-# -- Options for HTMLHelp output ---------------------------------------------
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'DrawioConvertdoc'
-
-
-# -- Options for LaTeX output ------------------------------------------------
-
-latex_elements = {
-    # The paper size ('letterpaper' or 'a4paper').
-    #
-    # 'papersize': 'letterpaper',
-
-    # The font size ('10pt', '11pt' or '12pt').
-    #
-    # 'pointsize': '10pt',
-
-    # Additional stuff for the LaTeX preamble.
-    #
-    # 'preamble': '',
-
-    # Latex figure (float) alignment
-    #
-    # 'figure_align': 'htbp',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-latex_documents = [
-    (master_doc, 'DrawioConvert.tex', 'DrawioConvert Documentation',
-     'Randy Paredis', 'manual'),
-]
-
-
-# -- Options for manual page output ------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    (master_doc, 'drawioconvert', 'DrawioConvert Documentation',
-     [author], 1)
-]
-
-
-# -- Options for Texinfo output ----------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-    (master_doc, 'DrawioConvert', 'DrawioConvert Documentation',
-     author, 'DrawioConvert', 'One line description of project.',
-     'Miscellaneous'),
-]
-
-
-# -- Options for Epub output -------------------------------------------------
-
-# Bibliographic Dublin Core info.
-epub_title = project
-
-# The unique identifier of the text. This can be a ISBN number
-# or the project homepage.
-#
-# epub_identifier = ''
-
-# A unique identification for the text.
-#
-# epub_uid = ''
-
-# A list of files that should not be packed into the epub file.
-epub_exclude_files = ['search.html']
-
-
-# -- Extension configuration -------------------------------------------------

+ 0 - 91
docs/execute.rst

@@ -1,91 +0,0 @@
-How to Execute :code:`DrawioConvert`?
-=====================================
-
-The execution for :code:`DrawioConvert` is simple:
-
-.. code::
-
-    python3 __main__.py <INPUT> [ARGS]
-
-Where :code:`<INPUT>` represents the drawio file to parse and :code:`[ARGS]`
-any combination of the commandline arguments that can be used with this tool.
-
-Depending on the formalism that is used, a set of files will be generated that
-comply to the input file as well as the selected formalism. Filenames are based
-on the input file and the name of the drawio pages. When a page's name matches
-:code:`Page-\d+` (default), only the numeric part is used.
-
-Commandline Arguments
----------------------
-
-.. list-table::
-    :widths: 10 15 30
-    :header-rows: 1
-
-    * - Short Flag
-      - Long Flag
-      - Description
-    * - :code:`-F`
-      - :code:`--formalism`
-      - The formalism for which files must be generated. This argument is
-        required.
-    * - :code:`-e`
-      - :code:`--entry`
-      - The topmost class to use in the simulation. May be required for some
-        formalisms, where simulation is top-level dependent.
-    * - :code:`t`
-      - :code:`--time`
-      - Total simulation time to use. Should only be set for experiment
-        files. Defaults to :code:`10` (time-units). While this flag is meant
-        to indicate the total time, some formalisms may use this as the
-        allowed amount of simulation steps.
-    * - :code:`-L`
-      - :code:`--list`
-      - Lists the available formalisms that can be used.
-    * - :code:`-s`
-      - :code:`--skip`
-      - Sometimes a visual model has some "placeholders" for future classes.
-        By default, these are generated as well, even if no contents are given.
-        The :code:`--skip` flag changes this behaviour by skipping empty blocks
-        in the generation.
-    * - :code:`-d`
-      - :code:`--directory`
-      - The location where the files should be generated. Defaults to :code:`./`
-        (the current directory).
-    * - :code:`-f`
-      - :code:`--force`
-      - Some formalisms may mark certain files as "protected". This is usually
-        done to prevent accidental removal of user code when programming
-        experiments. Hence, these files cannot be overwritten by the tool, unless
-        this flag is set.
-    * - :code:`-a`
-      - :code:`--all`
-      - Each formalism has their default set of files to be generated. However,
-        there may be some experimental or additional files that not all users
-        need. This flag allows the generation of **all** files of the formalism.
-    * - :code:`-S`
-      - :code:`--singlefile`
-      - Ignore the page separations in drawio and generate a single model file.
-        Note that not all formalisms require this flag to be set. Additionally,
-        this flag does **not** mean only a single output will be generated, but
-        rather a single file for each template associated to the formalism.
-    * - :code:`-r`
-      - :code:`--reversed`
-      - Drawio opens the first page of a diagram by default. This is why it is
-        a good practice to provide the most high-level model on the first page.
-        However, this means the first page depends on pages that are generated
-        later on. By using this flag, the pages will undergo the generation
-        process in reverse order.
-    * - :code:`-g`
-      - :code:`--globalimports`
-      - When set, the import directives in the drawio diagram(s) will be made
-        global to all pages of that diagram. Not useful when :code:`-S` is also
-        set, or only a single page is used. Note how these imports are not
-    * - :code:`-v`
-      - :code:`--verbose`
-      - Prints additional debugging information.
-    * - :code:`-E`
-      - :code:`--enviroment`
-      - Occasionally, formalisms need other properties that can be set by the
-        user. This flag takes a comma-separated list of :code:`key=value` pairs
-        and applies them to the formalism specifics.

+ 0 - 7
docs/formalism.rst

@@ -1,7 +0,0 @@
-formalism module
-================
-
-.. automodule:: formalism
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 0 - 165
docs/formalisms/CBD.rst

@@ -1,165 +0,0 @@
-CBD Formalism
-=============
-
-Causal Block Diagrams allow for finding solutions to mathematical problems.
-
-Setting up Drawio
-------------------
-In drawio, select :menuselection:`File --> Open Library` and load :file:`CBDLibrary.xml`
-(which can be found :download:`here <../../formalisms/CBD/CBDLibrary.xml>`).
-This provides a set of primitive CBD blocks that can be used in your models.
-Once included, it can be found at the top of the shapes library.
-
-.. rst-class:: table-center
-
-+------------------------------------------+
-| .. figure:: ../_figures/library.png      |
-|                                          |
-|   CBD Library in the Sidebar             |
-+------------------------------------------+
-
-.. _block-props:
-
-Block Properties
-----------------
-All blocks in the library have some block-specific properties that can be set by the user.
-Hovering over a component shows all non-empty properties that were set on this shape.
-
-There are several ways of accessing/modifying these properties:
-
-* Double Click with the left mouse button on a shape.
-* Click with right mouse button to open a shape's context menu.
-  Near the bottom of the list, select :menuselection:`Edit Data`.
-* Select the shape (left mouse button) and in the top of the right panel,
-  go to :menuselection:`Arrange --> Edit Data`.
-* Select the shape and press :kbd:`CTRL + M` or :kbd:`CMND + M`.
-
-.. warning:: Do not change the :code:`class_name` as the converter relies on this property.
-
-.. rst-class:: table-center
-
-+------------------------------------------+
-| .. figure:: ../_figures/properties.png   |
-|                                          |
-|   Example of the Property Window (for a  |
-|   ConstantBlock)                         |
-+------------------------------------------+
-
-
-.. _library:
-
-Working with Library Blocks
----------------------------
-To guarantee a consistent visual appearance of CBD models,
-no blocks in the library, except for the Custom Block, can be resized.
-Every block has zero or more input and output ports. Input ports are represented by
-the :code:`InputPortBlock` (black triangle) and output ports by the :code:`OutputPortBlock`
-(white triangle). When selecting (left mouse button) a port, a small, movable,
-yellow/orange diamond-shaped anchor will appear in front of the port's name.
-The position of this label can be changed by dragging the anchor.
-The port name can be altered in the :menuselection:`Edit Data` window.
-
-.. For each of a CBD model's top-level :code:`OutputPortBlock` shapes, a :code:`signal` property
-    may be added (see :ref:`block-props`).
-    The :code:`drawio2cbd` will then generate code to produce a plot, using https://bokeh.org/.
-    Note that bokeh produces an HTML document which is rendered in a browser
-    and allows some user interaction with the plot.
-    The value of the :code:`signal` property on a top-level :code:`OutputPortBlock` should be the title
-    to be put on the plot. Multiple signals may be rendered onto the same plot.
-    For more complex CBD simulation result analysis and visualization, code should be added
-    at the bottom of the generated file.
-
-Each CBD block that is *not* a port may have the following properties:
-
-* :code:`ID` or :code:`id`: The drawio unique ID for this block. Note that drawio automatically
-  overwrites a property with the key :code:`id` by the value shown by :code:`ID` (upon saving the diagram).
-* :code:`block_name`: The name of the block. It is required that
-  all blocks have a unique name within a class. When omitted, the :code:`ID` is used.
-* :code:`class_name`: The type of block.
-
-  .. warning:: Do not change the :code:`class_name` as the converter relies on this property.
-               Changing it makes it so the block type changes as well in the simulation.
-
-* :code:`symbol`: The block symbol that must be rendered by MathJax/LaTeX. This is a purely
-  graphical attribute and is ignored by the script.
-
-Optionally, additional class parameters can be provided by adding more properties.
-Their values will be passed on as default values for the corresponding property as an argument, e.g., to
-use strings, enclose the value in "..." or '...', for :code:`None`, leave it empty or litterally type
-":code:`None`"...
-
-.. warning:: Make sure these values are expressions/rvalues! If not, the generated Python file will crash,
-              or cause some unexpected behavior. Furthermore, newlines may not be used in these values.
-
-Class parameters that cannot be used are: :code:`label` (prevented by drawio), :code:`id` (overwritten by
-drawio), :code:`placeholders` (prevented by drawio), :code:`symbol` (ignored by the converter)
-and :code:`__docstring__` (used for other purposes, see later).
-
-.. note:: Blocks with a variable number of inputs (i.e., the :code:`OrBlock` and the
-          :code:`AndBlock`) may still need additional ports to be placed/removed.
-
-
-.. _custom-block:
-
-Creating Custom CBD Blocks
--------------------------------
-A custom hierarchical CBD block is constructed as a network of already provided blocks
-(which in their own right may be custom hierarchical blocks)
-using the :code:`Custom Block` element from :file:`CBDLibrary.xml`.
-This is a collapsible component in which a block diagram may be drawn.
-It has two important properties:
-
-* :code:`class_name`: The new class name for the custom block. Note that all class names must be unique!
-* :code:`block_name`: The name of an instance of the CBD model if it's the top-level CBD.
-
-Additional properties can be added to create custom class parameters.
-The same set of parameters that was discussed above cannot be set,
-with the exception of :code:`__docstring__`, which now allows adding documentation to custom blocks.
-
-The empty rectangle is a container for the custom hierachical block.
-Blocks can be dragged into the rectangular area and connected.
-:code:`InputPortBlock` and :code:`OutputPortBlock` are used to add inputs and outputs with
-their :code:`name` property set to the port's name.
-
-.. hint:: The :code:`Custom Block` component can, in constrast with all other blocks in the
-          library, be resized. This allows for larger hierarchical models to be created, as the
-          basic blocks cannot be resized.
-
-.. rst-class:: table-center
-
-+------------------------------------------+
-| .. figure:: ../_figures/custom-block.png |
-|                                          |
-|   Custom Sine Generator Block with no    |
-|   Input Ports, a single Output Port and  |
-|   a Custom Graphical Representation      |
-+------------------------------------------+
-
-Next, create a graphical representation of the block (i.e., what an instance
-block should look like when used in a block diagram), add the corresponding
-ports and set the property :code:`class_name` to the same class as that set in the
-:code:`Custom Block`. Make sure not to forget to add any class parameters that were
-added to the :code:`Custom Block`.
-
-.. hint:: This can be done easily by adding a predefined block and changing its
-          ports and properties to match the new custom block.
-
-.. note:: Only the :code:`Custom Block` components will be read by the converter.
-          Anything else is implicitly ignored. Furthermore, the script is page-independent,
-          meaning multiple pages may be used inside a single drawio document to maintain a
-          clean overview of the created models.
-
-Conversion
-----------
-To generate code from the created drawio files, execute the script with the :code:`-F CBD` flag.
-This tells :code:`DrawioConvert` to use the CBD formalism. Two files will be created:
-
-* :code:`model.py`: The model file, containing the code for the modelled blocks.
-* :code:`experiment.py`: The "protected" experiment file. You can feely add/remove parts of this file
-  without fear of it being overwritten next execution. Use the :code:`-f`/:code:`--force` flag to
-  force overwrite the file.
-
-It is possible to use continuous models, where they are discretized to a certain delta. This is
-customizeable using the :code:`-E`/:code:`--environment` flag. I.e. by setting :code:`-E delta=0.1`,
-it is possible to execute in steps of 0.1 time-units. Note how :code:`-t`/:code:`--time` identifies
-the total simulation time, **not** the amount of steps taken.

+ 0 - 95
docs/formalisms/create.rst

@@ -1,95 +0,0 @@
-How To Create Custom Formalisms?
-================================
-Each formalism represents a "block diagram", where components are connected
-via edges. Each edge is defined from a source "port class" to a target
-"port class". Ports usually have unique names to allow for identification and
-are located **inside** the blocks they connect.
-
-New components can be defined by a 1-level hierarchical composition of the
-model. I.e. a set of connected blocks that are "grouped" together.
-
-.. warning::
-    If the target for the code generation of a custom formalism does not
-    comply to the above description, this tool cannot be used.
-    :code:`DrawioConvert` currently only supports the described block diagram
-    structure.
-
-Structure
----------
-Each formalism corresponds to a package in the :code:`./formalisms` directory.
-There, all additional (re)sources can be added. In the required
-:code:`__init__.py` file, the :code:`setup` variable bust be defined as a
-dictionary, with the following structure (names followed by an asterisk are
-required fields):
-
-* :code:`parser`: All components required for parsing drawio files.
-    * :code:`input class`: The class name used to identify input port in the
-      generated code. Defaults to :code:`"InputPort"`.
-    * :code:`output class`: The class name used to identify output ports in
-      the generated code. Defaults to :code:`"OutputPort"`.
-    * :code:`class object xpath`: The `xpath <https://www.w3.org/TR/xpath/>`_
-      definition of a path which identifies a "class object" in the drawio
-      XML-structure. More specifically, all elements that correspond to that
-      structure will be seen as custom classes. Defaults to:
-      :code:`".//object/mxCell/mxGeometry/mxRectangle/../../..[@class_name]"`.
-    * :code:`class special xpath`: The `xpath <https://www.w3.org/TR/xpath/>`_
-      definition of a path which identifies a "special object" in the drawio
-      XML-structure. More specifically, all elements that correspond to that
-      structure will be seen as elements with additional information for
-      the code generation. For instance, custom imports can be defined this
-      way. Defaults to: :code:`".//object/mxCell/mxGeometry/../..[@role]"`.
-    * :code:`verify`: A function that takes the list of pages (see
-      :class:`parser.Page` and raises a :class:`parser.ParseException`
-      whenever the system is invalid.
-* :code:`generator`: The setup information for the file generation.
-    * :code:`environment`: List of allowed environment variables. These will
-      be defined with the :code:`-E`/:code:`--environment` flag.
-    * :code:`templates`: List of template files to be generated. These files
-      are defined by their own dictionaries with the following keys:
-
-        - :code:`template`\*: The filename of the template to use, located in
-          the formalism directory. These files should end in :code:`.jinja`.
-        - :code:`pattern`\*: The pattern for the filename of the generated
-          file(s). :code:`{prefix}` will be replaced by the basename of the
-          input drawio file (followed by an underscore and the name of the
-          formalism) and :code:`{page}` will be replaced by the name
-          of the page on which the components are found (when there is more
-		  than one page).
-          Additionally, :code:`{u}` is an underscore if there are multiple
-          pages. :code:`{u}` allows for a filename-friendly separator between
-          the prefix and the page if multiple files are to be generated.
-        - :code:`overwrite`: When :code:`True`, this file may be overwritten
-          whenever a generation is called. Defaults to :code:`True`.
-        - :code:`entry`: Boolean value, indicative of whether or not the
-          :code:`-e`/:code:`--entry` flag must be set in order to generate this
-          file. Defaults to :code:`False`.
-
-.. Warning::
-    Files are generated in the order they are listed in the
-    :code:`generator.templates` directive. This should prevent circular
-    includes. Use custom import structures for more complexity.
-
-Templates
----------
-Using the `Jinja 2 <https://jinja.palletsprojects.com/en/2.11.x/>`_ templating
-language, it is possible to create any file from the given drawio structure.
-Besides all features Jinja has to offer, the following namespace variables are
-also defined:
-
-* :code:`command`: The command used to start the generation.
-* :code:`ignore`: The list of attribute names to ignore, as set in the
-  :code:`setup` variable (see above).
-* :code:`time`: The total amount of time a simulation needs to run. This is set
-  by the user, using the :code:`-t`/:code:`--time` argument.
-* :code:`imports`: A list of additional imports, as found in the drawio file.
-  This is a list of :code:`(mod, obj)` pairs, where :code:`mod` identifies the
-  module and :code:`obj` the optional objects to import. If no objects are set,
-  this will be :code:`None` (or :code:`none` in Jinja).
-* :code:`nodes`: A list of :class:`parser.Node` objects, identifying the classes
-  that have been found in drawio.
-* :code:`files`: A list of already generated files, in the order in which they
-  were generated. This can be used for cross-references.
-* All variables as defined by the user with the :code:`-E`/:code:`--environment`
-  flag. See also the :code:`generator.environment` directive in the :code:`setup`
-  variable. If the user did not set this variable, it is :code:`undefined` in
-  Jinja, therefore, the template needs to check its existence.

+ 0 - 7
docs/generator.rst

@@ -1,7 +0,0 @@
-generator module
-================
-
-.. automodule:: generator
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 0 - 73
docs/index.rst

@@ -1,73 +0,0 @@
-.. DrawioConvert documentation master file, created by
-   sphinx-quickstart on Tue Dec 29 15:01:45 2020.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-Welcome to DrawioConvert's documentation!
-=========================================
-
-:code:`DrawioConvert` is a project that allows conversion from simple, yet
-structured `draw.io <https://www.diagrams.net>`_ diagrams to any kind of file.
-This usually provides a useful entrypoint for visual modelling of models that
-comply to a textual framework.
-
-Or, more specifically, this tool allows for the creation of graphical
-interfaces for code frameworks. Note that, while this tool was written in
-Python, any language is possible thanks to
-`Jinja 2 <https://jinja.palletsprojects.com/en/2.11.x/>`_.
-
-Requirements
-------------
-* Standard Libraries:
-   * :code:`xml` (for :code:`xml.etree.ElementTree`)
-   * :code:`urllib` (for :code:`urllib.parse.unquote`)
-   * :code:`argparse`
-   * :code:`base64`
-   * :code:`os`
-   * :code:`re`
-   * :code:`sys`
-   * :code:`zlib`
-* External Libraries:
-   * `Jinja 2 <https://jinja.palletsprojects.com/en/2.11.x/>`_
-   * Anything else that is required for the converted files to work.
-
-.. warning::
-     :code:`DrawioConvert` does not execute the converted files, but only
-     generates them! The user is required to install all components for the
-     formalisms they like to use themselves.
-
-How Does It Work?
------------------
-The core idea behind :code:`DrawioConvert` is the use of so-called "formalisms".
-These are generic descriptions of how certain drawio files can (and should) be
-interpreted. They are provided with some setup information, a few template
-files, a drawio library and some documentation on their usage. From any drawio
-file (made according to the specification identified by the formalism) a new
-one will be generated that is complient with the drawn diagram and the selected
-formalism.
-
-This also allows drawio to be used for any block-based modelling language for
-which a graphical representation can be given and code generation can be
-defined.
-
-Quick Links
------------
-.. toctree::
-   :maxdepth: 4
-
-   execute
-   formalisms/create
-
-Builtin Formalisms
-------------------
-.. toctree::
-   :maxdepth: 1
-
-   formalisms/CBD
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`

+ 0 - 7
docs/logger.rst

@@ -1,7 +0,0 @@
-logger module
-=============
-
-.. automodule:: logger
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 0 - 35
docs/make.bat

@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
-	set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=.
-set BUILDDIR=_build
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
-	echo.
-	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
-	echo.installed, then set the SPHINXBUILD environment variable to point
-	echo.to the full path of the 'sphinx-build' executable. Alternatively you
-	echo.may add the Sphinx directory to PATH.
-	echo.
-	echo.If you don't have Sphinx installed, grab it from
-	echo.http://sphinx-doc.org/
-	exit /b 1
-)
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
-
-:end
-popd

+ 0 - 10
docs/modules.rst

@@ -1,10 +0,0 @@
-src
-===
-
-.. toctree::
-   :maxdepth: 4
-
-   formalism
-   generator
-   logger
-   parser

+ 0 - 7
docs/parser.rst

@@ -1,7 +0,0 @@
-parser module
-=============
-
-.. automodule:: parser
-    :members:
-    :undoc-members:
-    :show-inheritance:

+ 10 - 10
drawio2py/parser.py

@@ -66,12 +66,9 @@ class Parser:
 	@staticmethod
 	@staticmethod
 	def parse_object(oroot):
 	def parse_object(oroot):
 		croot = oroot.find(".//mxCell")
 		croot = oroot.find(".//mxCell")
-		cell = Parser.parse_cell(croot)
-		# Draw.io moves the 'id' of the cell to the surrounding <object> (wtf), let's put it back into the cell:
-		if "id" in oroot.attrib:
-			cell.id = oroot.attrib['id']
-			cell.properties = {k:v for k,v in oroot.attrib.items() if k != "id"}
-		return cell
+		id = oroot.attrib['id']
+		properties = {k:v for k,v in oroot.attrib.items() if k != "id"}
+		return Parser.parse_cell(croot, id, properties)
 
 
 	@staticmethod
 	@staticmethod
 	def parse_style(style_string):
 	def parse_style(style_string):
@@ -93,8 +90,11 @@ class Parser:
 		return Style(data=data)
 		return Style(data=data)
 
 
 	@staticmethod
 	@staticmethod
-	def parse_cell(croot):
-		cid = croot.attrib.get("id", "")
+	def parse_cell(croot, id=None, properties={}):
+		if id == None:
+			cid = croot.attrib.get("id")
+		else:
+			cid = id
 		value = croot.attrib.get("value", "")
 		value = croot.attrib.get("value", "")
 		parent = croot.attrib.get("parent", None)
 		parent = croot.attrib.get("parent", None)
 		style = Parser.parse_style(croot.attrib.get("style", ""))
 		style = Parser.parse_style(croot.attrib.get("style", ""))
@@ -111,9 +111,9 @@ class Parser:
 
 
 		geom = Parser.parse_cell_geometry(croot.find(".//mxGeometry"))
 		geom = Parser.parse_cell_geometry(croot.find(".//mxGeometry"))
 		if geom != None:
 		if geom != None:
-			return Vertex(cid, value, parent, [], {}, style, atts, geom)
+			return Vertex(cid, value, parent, [], properties, style, atts, geom)
 		else:
 		else:
-			return Cell(cid, value, parent, [], {}, style, atts)
+			return Cell(cid, value, parent, [], properties, style, atts)
 
 
 	@staticmethod
 	@staticmethod
 	def parse_components(nroot, cell_dict):
 	def parse_components(nroot, cell_dict):

文件差异内容过多而无法显示
+ 0 - 1
experiments/Integrators/integrators.drawio


+ 0 - 49
experiments/Integrators/integrators_G.py

@@ -1,49 +0,0 @@
-#!/usr/bin/python3
-# This file was automatically generated from drawio2cbd with the command:
-#   ..\..\__main__.py -F CBD -e G integrators.drawio
-
-from CBD.Core import *
-from CBD.lib.std import *
-from integrators_Integrators import *
-
-
-class G(CBD):
-    def __init__(self, block_name):
-        super().__init__(block_name, input_ports=[], output_ports=['trp', 'smp', 'fw', 'bk'])
-
-        # Create the Blocks
-        self.addBlock(TimeBlock("HK50vG6q_YAmbMEaVPPU-0"))
-        self.addBlock(PowerBlock("HK50vG6q_YAmbMEaVPPU-2"))
-        self.addBlock(ConstantBlock("HK50vG6q_YAmbMEaVPPU-6", value=(2)))
-        self.addBlock(AdderBlock("HK50vG6q_YAmbMEaVPPU-10", numberOfInputs=(2)))
-        self.addBlock(ConstantBlock("HK50vG6q_YAmbMEaVPPU-15", value=(1)))
-        self.addBlock(InverterBlock("HK50vG6q_YAmbMEaVPPU-18"))
-        self.addBlock(ProductBlock("HK50vG6q_YAmbMEaVPPU-22", numberOfInputs=(2)))
-        self.addBlock(IntegratorFwEu("CGDVpQWaebYBulbI_I7z-0"))
-        self.addBlock(ConstantBlock("CGDVpQWaebYBulbI_I7z-6", value=(0)))
-        self.addBlock(IntegratorBkEu("CGDVpQWaebYBulbI_I7z-91"))
-        self.addBlock(IntegratorTrp("CGDVpQWaebYBulbI_I7z-100"))
-        self.addBlock(IntegratorSmp("35b7f6Rc05o8UUxDmXUA-0"))
-
-        # Create the Connections
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-0", "HK50vG6q_YAmbMEaVPPU-2", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-0", "HK50vG6q_YAmbMEaVPPU-22", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-6", "HK50vG6q_YAmbMEaVPPU-2", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-2", "HK50vG6q_YAmbMEaVPPU-10", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-15", "HK50vG6q_YAmbMEaVPPU-10", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-10", "HK50vG6q_YAmbMEaVPPU-18", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-18", "HK50vG6q_YAmbMEaVPPU-22", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-22", "CGDVpQWaebYBulbI_I7z-0", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-22", "CGDVpQWaebYBulbI_I7z-91", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-22", "CGDVpQWaebYBulbI_I7z-100", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("HK50vG6q_YAmbMEaVPPU-22", "35b7f6Rc05o8UUxDmXUA-0", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-0", "fw", output_port_name='OUT1')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-6", "CGDVpQWaebYBulbI_I7z-0", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-6", "CGDVpQWaebYBulbI_I7z-91", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-6", "CGDVpQWaebYBulbI_I7z-100", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-6", "35b7f6Rc05o8UUxDmXUA-0", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-91", "bk", output_port_name='OUT1')
-        self.addConnection("CGDVpQWaebYBulbI_I7z-100", "trp", output_port_name='OUT1')
-        self.addConnection("35b7f6Rc05o8UUxDmXUA-0", "smp", output_port_name='OUT1')
-
-

+ 0 - 143
experiments/Integrators/integrators_Integrators.py

@@ -1,143 +0,0 @@
-#!/usr/bin/python3
-# This file was automatically generated from drawio2cbd with the command:
-#   ..\..\__main__.py -F CBD -e G integrators.drawio
-
-from CBD.Core import *
-from CBD.lib.std import *
-
-
-class IntegratorFwEu(CBD):
-    def __init__(self, block_name):
-        super().__init__(block_name, input_ports=['IN1', 'IC'], output_ports=['OUT1'])
-
-        # Create the Blocks
-        self.addBlock(ProductBlock("prod"))
-        self.addBlock(DelayBlock("delay"))
-        self.addBlock(AdderBlock("sumState"))
-        self.addBlock(AdderBlock("sumIC"))
-        self.addBlock(NegatorBlock("neg"))
-        self.addBlock(DeltaTBlock("dt"))
-
-        # Create the Connections
-        self.addConnection("dt", "prod", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("IN1", "prod", input_port_name='IN2')
-        self.addConnection("prod", "sumState", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("prod", "neg", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("sumState", "OUT1", output_port_name='OUT1')
-        self.addConnection("sumState", "delay", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("delay", "sumState", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("IC", "sumIC", input_port_name='IN1')
-        self.addConnection("neg", "sumIC", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("sumIC", "delay", output_port_name='OUT1', input_port_name='IC')
-
-
-class IntegratorBkEu(CBD):
-    def __init__(self, block_name):
-        super().__init__(block_name, input_ports=['IN1', 'IC'], output_ports=['OUT1'])
-
-        # Create the Blocks
-        self.addBlock(ProductBlock("prod"))
-        self.addBlock(DelayBlock("delayPast"))
-        self.addBlock(AdderBlock("sumState"))
-        self.addBlock(DelayBlock("delayState"))
-        self.addBlock(ConstantBlock("zero", value=(0)))
-        self.addBlock(DeltaTBlock("dt"))
-
-        # Create the Connections
-        self.addConnection("IN1", "delayPast", input_port_name='IN1')
-        self.addConnection("IC", "delayState", input_port_name='IC')
-        self.addConnection("delayPast", "prod", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("prod", "sumState", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("sumState", "OUT1", output_port_name='OUT1')
-        self.addConnection("sumState", "delayState", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("delayState", "sumState", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("zero", "delayPast", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("dt", "prod", output_port_name='OUT1', input_port_name='IN1')
-
-
-class IntegratorTrp(CBD):
-    def __init__(self, block_name):
-        super().__init__(block_name, input_ports=['IN1', 'IC'], output_ports=['OUT1'])
-
-        # Create the Blocks
-        self.addBlock(ProductBlock("prod", numberOfInputs=(3)))
-        self.addBlock(DelayBlock("delayTop"))
-        self.addBlock(AdderBlock("numerator"))
-        self.addBlock(DelayBlock("delayState"))
-        self.addBlock(AdderBlock("sumState"))
-        self.addBlock(NegatorBlock("neg"))
-        self.addBlock(DeltaTBlock("FzjnU-8rWP-Rh7YBrrDy-22"))
-        self.addBlock(ConstantBlock("half", value=(0.5)))
-
-        # Create the Connections
-        self.addConnection("FzjnU-8rWP-Rh7YBrrDy-22", "prod", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("IN1", "delayTop", input_port_name='IN1')
-        self.addConnection("IN1", "numerator", input_port_name='IN2')
-        self.addConnection("IN1", "neg", input_port_name='IN1')
-        self.addConnection("IC", "delayState", input_port_name='IC')
-        self.addConnection("delayTop", "numerator", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("numerator", "prod", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("prod", "sumState", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("sumState", "OUT1", output_port_name='OUT1')
-        self.addConnection("sumState", "delayState", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("delayState", "sumState", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("neg", "delayTop", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("half", "prod", output_port_name='OUT1', input_port_name='IN3')
-
-
-class IntegratorSmp(CBD):
-    def __init__(self, block_name):
-        super().__init__(block_name, input_ports=['IN1', 'IC'], output_ports=['OUT1'])
-
-        # Create the Blocks
-        self.addBlock(AdderBlock("sum", numberOfInputs=(3)))
-        self.addBlock(DelayBlock("prevIn1"))
-        self.addBlock(DelayBlock("prevPrevIn1"))
-        self.addBlock(ProductBlock("factor"))
-        self.addBlock(ConstantBlock("four", value=(4)))
-        self.addBlock(ConstantBlock("third", value=(1/3)))
-        self.addBlock(ProductBlock("bigProd", numberOfInputs=(3)))
-        self.addBlock(ConstantBlock("zero", value=(0)))
-        self.addBlock(NegatorBlock("neg"))
-        self.addBlock(DelayBlock("delayIt1Frac"))
-        self.addBlock(DelayBlock("delayFrac"))
-        self.addBlock(ConstantBlock("half", value=(1/2)))
-        self.addBlock(DelayBlock("delayIt1Factor"))
-        self.addBlock(DelayBlock("delayFactor"))
-        self.addBlock(ConstantBlock("one", value=(1)))
-        self.addBlock(DeltaTBlock("dt"))
-        self.addBlock(DelayBlock("delayState2"))
-        self.addBlock(AdderBlock("sumState"))
-        self.addBlock(DelayBlock("delayState1"))
-
-        # Create the Connections
-        self.addConnection("IN1", "sum", input_port_name='IN1')
-        self.addConnection("IN1", "prevIn1", input_port_name='IN1')
-        self.addConnection("IN1", "neg", input_port_name='IN1')
-        self.addConnection("prevIn1", "prevPrevIn1", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("prevIn1", "factor", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("prevPrevIn1", "sum", output_port_name='OUT1', input_port_name='IN3')
-        self.addConnection("factor", "sum", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("dt", "bigProd", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("sum", "bigProd", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("bigProd", "sumState", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("sumState", "OUT1", output_port_name='OUT1')
-        self.addConnection("sumState", "delayState1", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("zero", "prevIn1", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("zero", "delayFrac", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("zero", "delayFactor", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("neg", "prevPrevIn1", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("delayIt1Frac", "delayFrac", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("third", "delayIt1Frac", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("delayFrac", "bigProd", output_port_name='OUT1', input_port_name='IN3')
-        self.addConnection("half", "delayIt1Frac", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("delayIt1Factor", "delayFactor", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("delayFactor", "factor", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("four", "delayIt1Factor", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("one", "delayIt1Factor", output_port_name='OUT1', input_port_name='IC')
-        self.addConnection("delayState2", "sumState", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("delayState1", "delayState2", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("IC", "delayState2", input_port_name='IC')
-        self.addConnection("IC", "delayState1", input_port_name='IC')
-
-

+ 0 - 28
experiments/Integrators/integrators_Stiff.py

@@ -1,28 +0,0 @@
-#!/usr/bin/python3
-# This file was automatically generated from drawio2cbd with the command:
-#   ..\..\__main__.py -F CBD -e G integrators.drawio
-
-from CBD.Core import *
-from CBD.lib.std import *
-from integrators_Integrators import *
-from integrators_G import *
-
-
-class Stiff(CBD):
-    def __init__(self, block_name):
-        super().__init__(block_name, input_ports=[], output_ports=['y'])
-
-        # Create the Blocks
-        self.addBlock(ConstantBlock("min_fifteen", value=(-15)))
-        self.addBlock(ProductBlock("mult", numberOfInputs=(2)))
-        self.addBlock(IntegratorBlock("int"))
-        self.addBlock(ConstantBlock("one", value=(1)))
-
-        # Create the Connections
-        self.addConnection("min_fifteen", "mult", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("mult", "int", output_port_name='OUT1', input_port_name='IN1')
-        self.addConnection("int", "y", output_port_name='OUT1')
-        self.addConnection("int", "mult", output_port_name='OUT1', input_port_name='IN2')
-        self.addConnection("one", "int", output_port_name='OUT1', input_port_name='IC')
-
-

+ 0 - 93
experiments/Integrators/integrators_experiment.py

@@ -1,93 +0,0 @@
-#!/usr/bin/python3
-# This file was automatically generated from drawio2cbd with the command:
-#   C:/Users/randy/Documents/git/DrawioConvert/__main__.py -F CBD -d experiments/Integrators -e G experiments/Integrators/integrators.drawio
-
-from integrators_Integrators import *
-from integrators_G import *
-from integrators_Stiff import *
-from CBD.simulator import Simulator
-
-import matplotlib.pyplot as plt
-import numpy as np
-
-def func(t):
-	return t / (t*t + 1)
-
-def I(x):
-	return np.log(x*x + 1) / 2
-
-def stiff(t):
-	return np.exp(-15 * t)
-
-T = 1
-
-times = np.arange(0, T, 0.001)
-ys = stiff(times)
-
-#plt.plot(times, ys, label="real")
-
-# ints = {
-# 	"forwards euler": [],
-# 	"backwards euler": [],
-# 	"trapezoid": [],
-# 	"simpson 1/3": [],
-# 	"analytic": 4.60522018
-# }
-
-from CBD.preprocessing.butcher import ButcherTableau as BT
-from CBD.preprocessing.rungekutta import RKPreprocessor
-cbd = Stiff("stiff")
-cbd.addFixedRateClock("clock", 0.1)
-tableau = BT.MidpointEuler()
-RKP = RKPreprocessor(tableau, atol=2e-5, hmin=0.01, safety=.84)
-transformed = RKP.preprocess(cbd)
-sim = Simulator(transformed)
-sim.run(T)
-
-hist = transformed.getSignalHistory("y")
-T = [t for t, _ in hist]
-plt.plot(T, [x for _, x in hist], c="b")
-plt.plot(T, [x for _, x in hist], 'o', fillstyle='none', lw=0.5, c="r")
-plt.plot(T, [-0.1 for _ in range(len(hist))], '|', lw=0.5, c="g")
-DT = [T[i + 1] - T[i] for i in range(len(T) - 1)]
-print(min(DT), max(DT))
-
-# for dt in [0.1, 0.01]:
-# 	print("DT =", dt)
-#
-# 	cbd = G("G")
-# 	# cbd = Stiff("stiff")
-#
-# 	# Run the Simulation
-# 	sim = Simulator(cbd)
-# 	sim.setDeltaT(dt)
-# 	sim.run(T)
-#
-# # 	hist = cbd.getSignalHistory("y")
-# # 	plt.plot([t for t, _ in hist], [x for _, x in hist], label="dt =" + str(dt))
-# #
-# 	ints["forwards euler"].append(cbd.getSignalHistory("fw")[-1].value)
-# 	ints["backwards euler"].append(cbd.getSignalHistory("bk")[-1].value)
-# 	ints["trapezoid"].append(cbd.getSignalHistory("trp")[-1].value)
-# 	ints["simpson 1/3"].append(cbd.getSignalHistory("smp")[-1].value)
-#
-# 	hist = cbd.getSignalHistory("fw")
-# 	plt.plot([t for t, _ in hist], [x for _, x in hist], '+', label="forwards, dt=" + str(dt))
-# # 	# hist = cbd.getSignalHistory("bk")
-# # 	# plt.plot([t for t, _ in hist], [x for _, x in hist], '.', label="backwards")
-# # 	# hist = cbd.getSignalHistory("trp")
-# # 	# plt.plot([t for t, _ in hist], [x for _, x in hist], 'x', label="trapezoid")
-# 	hist = cbd.getSignalHistory("smp")
-# 	plt.plot([t for t, _ in hist], [x for _, x in hist], ',', label="simpson, dt=" + str(dt))
-# # 	# plt.plot(times, ys, label="real")
-# # 	# plt.legend()
-# # 	# plt.show()
-
-
-# print("Results:")
-# for k, v in ints.items():
-# 	print(k + ":")
-# 	print("\t", v)
-#
-# plt.legend()
-plt.show()

文件差异内容过多而无法显示
+ 0 - 1
formalisms/CBD/CBDLibrary.xml


+ 0 - 498
formalisms/CBD/Fibonacci.xml

@@ -1,498 +0,0 @@
-<mxfile host="Electron" modified="2020-12-30T14:10:20.442Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="b49R_Ulm3FSbY57HHAdE" compressed="false" version="13.6.2" type="device">
-  <diagram id="0C9URkIP8JNanRz7eqB5" name="Page-1">
-    <mxGraphModel dx="1350" dy="1916" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="1" shadow="0">
-      <root>
-        <mxCell id="0" />
-        <mxCell id="1" parent="0" />
-        <object label="" placeholders="1" class_name="InitialConditions" block_name="" __docstring__="Sets the initial conditions of the Fibonacci Generator." id="yMdoWQ4mWOEjNc72R1ed-1">
-          <mxCell style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;container=1;connectable=0;allowArrows=0;treeFolding=0;moveCells=0;treeMoving=0;comic=0;rotatable=0;expand=1;dropTarget=0;" parent="1" vertex="1">
-            <mxGeometry x="40" y="40" width="760" height="540" as="geometry">
-              <mxRectangle x="40" y="160" width="50" height="40" as="alternateBounds" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%class_name%" placeholders="1" id="yMdoWQ4mWOEjNc72R1ed-2">
-          <mxCell style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffffff;fontSize=18;connectable=0;allowArrows=0;rotatable=0;cloneable=0;deletable=0;" parent="yMdoWQ4mWOEjNc72R1ed-1" vertex="1">
-            <mxGeometry x="10" y="20" width="740" height="40" as="geometry" />
-          </mxCell>
-        </object>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffffff;connectable=0;allowArrows=0;container=1;collapsible=0;portConstraintRotation=0;rotatable=0;cloneable=0;deletable=0;" parent="yMdoWQ4mWOEjNc72R1ed-1" vertex="1">
-          <mxGeometry x="10" y="70" width="740" height="460" as="geometry">
-            <mxRectangle x="10" y="70" width="50" height="40" as="alternateBounds" />
-          </mxGeometry>
-        </mxCell>
-        <object label="%value%" placeholders="1" value="1.0" block_name="one" class_name="ConstantBlock" id="yMdoWQ4mWOEjNc72R1ed-4">
-          <mxCell style="ellipse;whiteSpace=wrap;html=1;comic=0;fillColor=#ffffff;fontSize=24;align=center;allowArrows=0;connectable=0;container=1;collapsible=0;recursiveResize=1;direction=west;resizable=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="70" y="260" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-5">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-4" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="6" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%value%" placeholders="1" value="2.0" block_name="two" class_name="ConstantBlock" id="yMdoWQ4mWOEjNc72R1ed-6">
-          <mxCell style="ellipse;whiteSpace=wrap;html=1;comic=0;fillColor=#ffffff;fontSize=24;align=center;allowArrows=0;connectable=0;container=1;collapsible=0;recursiveResize=1;direction=west;resizable=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="70" y="50" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-7">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-6" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="6" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="&amp;sum;" class_name="AdderBlock" block_name="sum1" id="yMdoWQ4mWOEjNc72R1ed-8">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;spacingTop=-6;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="260" y="50" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-9">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-8" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-10">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-8" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN2" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-11">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-8" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="&amp;sum;" class_name="AdderBlock" block_name="sum2" id="yMdoWQ4mWOEjNc72R1ed-12">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;spacingTop=-6;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="420" y="80" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-13">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-12" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-14">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-12" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN2" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-15">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-12" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="-" class_name="NegatorBlock" block_name="neg1" id="yMdoWQ4mWOEjNc72R1ed-16">
-          <mxCell style="triangle;whiteSpace=wrap;html=1;comic=0;fontSize=36;align=center;allowArrows=0;recursiveResize=0;resizable=0;fillColor=#FFFFFF;points=[];spacingLeft=-18;container=1;collapsible=0;spacingTop=-6;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="270" y="160" width="60" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-17">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-16" vertex="1">
-            <mxGeometry x="50" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-18">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-16" vertex="1">
-            <mxGeometry y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="-5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="-" class_name="NegatorBlock" block_name="neg2" id="yMdoWQ4mWOEjNc72R1ed-19">
-          <mxCell style="triangle;whiteSpace=wrap;html=1;comic=0;fontSize=36;align=center;allowArrows=0;recursiveResize=0;resizable=0;fillColor=#FFFFFF;points=[];spacingLeft=-18;container=1;collapsible=0;spacingTop=-6;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="270" y="260" width="60" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-20">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-19" vertex="1">
-            <mxGeometry x="50" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-21">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-19" vertex="1">
-            <mxGeometry y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="-5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="&amp;radic;" class_name="RootBlock" block_name="root" id="yMdoWQ4mWOEjNc72R1ed-22">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;spacingTop=6;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="320" y="340" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-23">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-22" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-24">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-22" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN2" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-25">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-22" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-5" target="yMdoWQ4mWOEjNc72R1ed-21" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-5" target="yMdoWQ4mWOEjNc72R1ed-24" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="180" y="300" />
-              <mxPoint x="180" y="365" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-7" target="yMdoWQ4mWOEjNc72R1ed-10" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="210" y="90" />
-              <mxPoint x="210" y="75" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-7" target="yMdoWQ4mWOEjNc72R1ed-25" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="210" y="90" />
-              <mxPoint x="210" y="395" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-9" target="yMdoWQ4mWOEjNc72R1ed-14" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-9" target="yMdoWQ4mWOEjNc72R1ed-18" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="360" y="90" />
-              <mxPoint x="360" y="145" />
-              <mxPoint x="230" y="145" />
-              <mxPoint x="230" y="200" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-17" target="yMdoWQ4mWOEjNc72R1ed-11" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="370" y="200" />
-              <mxPoint x="370" y="153" />
-              <mxPoint x="240" y="153" />
-              <mxPoint x="240" y="105" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-20" target="yMdoWQ4mWOEjNc72R1ed-15" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-34">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="440" y="30" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT2" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-35">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="570" y="112.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT3" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-36">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-3" vertex="1">
-            <mxGeometry x="460" y="372.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-9" target="yMdoWQ4mWOEjNc72R1ed-34" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="380" y="90" />
-              <mxPoint x="380" y="38" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-13" target="yMdoWQ4mWOEjNc72R1ed-35" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="570" y="120" />
-              <mxPoint x="570" y="120" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-3" source="yMdoWQ4mWOEjNc72R1ed-23" target="yMdoWQ4mWOEjNc72R1ed-36" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="465" y="380" />
-              <mxPoint x="465" y="380" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <object label="" placeholders="1" class_name="FibonacciGen" block_name="fibonacci_gen" id="yMdoWQ4mWOEjNc72R1ed-40">
-          <mxCell style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;container=1;connectable=0;allowArrows=0;treeFolding=0;moveCells=0;treeMoving=0;comic=0;rotatable=0;expand=1;dropTarget=0;" parent="1" vertex="1">
-            <mxGeometry x="40" y="600" width="760" height="540" as="geometry">
-              <mxRectangle x="40" y="160" width="50" height="40" as="alternateBounds" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%class_name%" placeholders="1" id="yMdoWQ4mWOEjNc72R1ed-41">
-          <mxCell style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffffff;fontSize=18;connectable=0;allowArrows=0;rotatable=0;cloneable=0;deletable=0;" parent="yMdoWQ4mWOEjNc72R1ed-40" vertex="1">
-            <mxGeometry x="10" y="20" width="740" height="40" as="geometry" />
-          </mxCell>
-        </object>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-42" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffffff;connectable=0;allowArrows=0;container=1;collapsible=0;portConstraintRotation=0;rotatable=0;cloneable=0;deletable=0;" parent="yMdoWQ4mWOEjNc72R1ed-40" vertex="1">
-          <mxGeometry x="10" y="70" width="740" height="460" as="geometry">
-            <mxRectangle x="10" y="70" width="50" height="40" as="alternateBounds" />
-          </mxGeometry>
-        </mxCell>
-        <object label="%name%" placeholders="1" name="OutFib" class_name="OutputPortBlock" signal="Fibonacci Numbers" id="yMdoWQ4mWOEjNc72R1ed-43">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-42" vertex="1">
-            <mxGeometry x="545" y="312.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="IC" placeholders="1" class_name="InitialConditions" block_name="conditions" id="yMdoWQ4mWOEjNc72R1ed-49">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=28;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" vertex="1">
-            <mxGeometry x="80" y="155" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT2" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-50">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-49" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT3" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-51">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-49" vertex="1">
-            <mxGeometry x="70" y="65" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-52">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-49" vertex="1">
-            <mxGeometry x="70" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="D" class_name="DelayBlock" block_name="D1" id="yMdoWQ4mWOEjNc72R1ed-53">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" vertex="1">
-            <mxGeometry x="310" y="60" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-54">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-53" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IC" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-55">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-53" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-56">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-53" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="D" class_name="DelayBlock" block_name="D2" id="yMdoWQ4mWOEjNc72R1ed-57">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" vertex="1">
-            <mxGeometry x="310" y="170" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-58">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-57" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IC" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-59">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-57" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-60">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-57" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="D" class_name="DelayBlock" block_name="D3" id="yMdoWQ4mWOEjNc72R1ed-61">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" vertex="1">
-            <mxGeometry x="310" y="280" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-62">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-61" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IC" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-63">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-61" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-64">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-61" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%symbol%" placeholders="1" symbol="&amp;sum;" class_name="AdderBlock" block_name="sum" id="yMdoWQ4mWOEjNc72R1ed-65">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=36;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;spacingTop=-6;" parent="yMdoWQ4mWOEjNc72R1ed-42" vertex="1">
-            <mxGeometry x="510" y="170" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-66">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-65" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN1" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-67">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-65" vertex="1">
-            <mxGeometry y="17.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="IN2" class_name="InputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-68">
-          <mxCell style="triangle;fontSize=14;points=[[0,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=right;spacingLeft=0;spacingRight=8;html=1;comic=0;treeFolding=0;treeMoving=0;resizable=0;movableLabel=1;spacing=2;aspect=fixed;fillColor=#000000;" parent="yMdoWQ4mWOEjNc72R1ed-65" vertex="1">
-            <mxGeometry y="47.5" width="10" height="15" as="geometry">
-              <mxPoint x="-4" y="-8" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-52" target="yMdoWQ4mWOEjNc72R1ed-55" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-50" target="yMdoWQ4mWOEjNc72R1ed-59" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-71" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-51" target="yMdoWQ4mWOEjNc72R1ed-63" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-54" target="yMdoWQ4mWOEjNc72R1ed-60" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="410" y="100" />
-              <mxPoint x="410" y="163" />
-              <mxPoint x="280" y="163" />
-              <mxPoint x="280" y="225" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-54" target="yMdoWQ4mWOEjNc72R1ed-67" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-74" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-58" target="yMdoWQ4mWOEjNc72R1ed-68" edge="1">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-75" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-62" target="yMdoWQ4mWOEjNc72R1ed-43" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="530" y="320" />
-              <mxPoint x="530" y="320" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-76" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-66" target="yMdoWQ4mWOEjNc72R1ed-56" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="640" y="210" />
-              <mxPoint x="640" y="20" />
-              <mxPoint x="280" y="20" />
-              <mxPoint x="280" y="115" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <mxCell id="yMdoWQ4mWOEjNc72R1ed-77" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="yMdoWQ4mWOEjNc72R1ed-42" source="yMdoWQ4mWOEjNc72R1ed-66" target="yMdoWQ4mWOEjNc72R1ed-64" edge="1">
-          <mxGeometry relative="1" as="geometry">
-            <Array as="points">
-              <mxPoint x="610" y="210" />
-              <mxPoint x="610" y="390" />
-              <mxPoint x="290" y="390" />
-              <mxPoint x="290" y="335" />
-            </Array>
-          </mxGeometry>
-        </mxCell>
-        <object label="IC" placeholders="1" class_name="InitialConditions" block_name="" id="yMdoWQ4mWOEjNc72R1ed-44">
-          <mxCell style="whiteSpace=wrap;html=1;aspect=fixed;comic=0;fillColor=#FFFFFF;fontSize=28;align=center;resizable=0;container=1;collapsible=0;points=[];allowArrows=0;" parent="1" vertex="1">
-            <mxGeometry x="40" y="-40" width="80" height="80" as="geometry" />
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT2" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-47">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-44" vertex="1">
-            <mxGeometry x="70" y="32.5" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT3" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-48">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-44" vertex="1">
-            <mxGeometry x="70" y="65" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-        <object label="%name%" placeholders="1" name="OUT1" class_name="OutputPortBlock" id="yMdoWQ4mWOEjNc72R1ed-45">
-          <mxCell style="triangle;fillColor=#ffffff;fontSize=14;points=[[1,0.5]];allowArrows=0;verticalAlign=middle;horizontal=1;spacingTop=0;align=left;spacingLeft=4;spacingRight=0;html=1;comic=0;treeFolding=0;treeMoving=0;movable=1;resizable=0;rotatable=1;deletable=1;editable=1;connectable=1;movableLabel=1;spacing=2;aspect=fixed;" parent="yMdoWQ4mWOEjNc72R1ed-44" vertex="1">
-            <mxGeometry x="70" width="10" height="15" as="geometry">
-              <mxPoint x="5" y="-7" as="offset" />
-            </mxGeometry>
-          </mxCell>
-        </object>
-      </root>
-    </mxGraphModel>
-  </diagram>
-</mxfile>

文件差异内容过多而无法显示
+ 0 - 1
formalisms/CBD/Formalism.drawio


+ 0 - 36
formalisms/CBD/__init__.py

@@ -1,36 +0,0 @@
-from drawio2py.parser import ParseException
-
-def verify(pages):
-	"""Check for unique block names per node."""
-	for page in pages:
-		for block in page.get_nodes():
-			names = set()
-			for node in block.children:
-				bname = node["block_name"]
-				if bname == "":
-					bname = node["id"]
-				if bname in names:
-					raise ParseException(f"In page {page.name}: duplicate block name '{bname}' "
-					                     f"in class '{block.class_name}'.")
-				names.add(node["block_name"])
-
-setup = {
-	"generator": {
-		"ignore": ["__docstring__", "symbol", "class_name", "block_name", "label", "placeholders", "name", "formalism", "id", "__import__"],
-		"environment": ["delta"],
-		"templates": [
-			{
-				"template": "model.py.jinja",
-				"pattern": "{prefix}_model.py",
-				"overwrite": True,
-				"entry": False
-			},
-			{
-				"template": "experiment.py.jinja",
-				"pattern": "{prefix}_experiment.py",
-				"overwrite": False,
-				"entry": True
-			}
-		]
-	}
-}

二进制
formalisms/CBD/__pycache__/__init__.cpython-38.pyc


+ 0 - 25
formalisms/CBD/experiment.py.jinja

@@ -1,25 +0,0 @@
-#!/usr/bin/python3
-# This file was automatically generated with the command:
-#   {{command}}
-
-{% for file in files %}
-    {% if file.endswith(".py") %}
-from {{ file[:-3] }} import *
-    {% endif %}
-{% endfor %}
-from CBD.simulator import Simulator
-
-{% if delta is defined %}
-DELTA_T = {{ delta }}
-{% endif %}
-
-cbd = {{entry}}("{{entry}}")
-
-# Run the Simulation
-sim = Simulator(cbd)
-{% if delta is defined %}
-sim.setDeltaT(DELTA_T)
-{% endif %}
-sim.run({{time}})
-
-# TODO: Process Your Simulation Results

+ 0 - 90
formalisms/CBD/model.py.jinja

@@ -1,90 +0,0 @@
-#!/usr/bin/python3
-# This file was automatically generated with the command:
-#   {{command}}
-
-from pyCBD.Core import *
-from pyCBD.lib.std import *
-{% for node in vertices %}
-    {% if '__import__' in node.attributes().attr %}
-import {{ node.attributes().attr.__import__ }}
-    {% endif %}
-    {% set blocks = node.neighbors(mode="in") %}
-    {% for block in blocks %}
-      {% if '__import__' in block.attributes().attr %}
-import {{ block.attributes().attr.__import__ }}
-      {% endif %}
-    {% endfor %}
-{% endfor %}
-{% for file in files %}
-    {% if file.endswith(".py") %}
-from {{ file[:-3] }} import *
-    {% endif %}
-{% endfor %}
-
-{% if delta is defined and delta is not none %}
-DELTA_T = {{delta}}
-{% endif %}
-
-{% for node in vertices %}
-    {% set attr = node.attributes().attr %}
-class {{ attr.name }}(CBD):
-    {% if '__docstring__' in attr %}
-    """
-    {{ attr.__docstring__ }}
-    """
-    {% endif %}
-    def __init__(self, block_name{% for k, v in attr.items() %}{% if k not in ignore %}, {{ k }}=({{ v }}){% endif %}{% endfor %}):
-        super({{ attr.name }}, self).__init__(block_name)
-
-        # Create the Blocks
-    {% set blocks = node.neighbors(mode="in") %}
-    {% for child in blocks %}
-        {% set cattr = child.attributes().attr %}
-        {% if cattr.class_name == "InputPort" %}
-        self.addInputPort("{{ child.attributes().attr.name }}")
-        {% elif cattr.class_name == "OutputPort" %}
-        self.addOutputPort("{{ child.attributes().attr.name }}")
-        {% endif %}
-    {% endfor %}
-    {% for child in blocks %}
-        {% set cattr = child.attributes().attr %}
-        {% if cattr.class_name not in ["InputPort", "OutputPort"] %}
-        self.addBlock({{ cattr.class_name }}("{{ cattr.block_name if cattr.block_name != "" else cattr.id }}"{% for k, v in cattr.items() %}{% if k not in ignore %}, {{ k }}=({{ v }}){% endif %}{% endfor %}))
-        {% endif %}
-    {% endfor %}
-
-    {% for child in blocks %}
-        {% set ports = get_children(child) %}
-        {% for port in ports %}
-            {% set conns = port.out_edges() %}
-            {% for c in conns %}
-                {% if c.attributes().label is none %}
-                    {% set ns = namespace(target=none) %}
-                    {% for n in port.neighbors(mode="out") %}
-                        {% if n.index == c.target %}
-                          {% set ns.target = n %}
-                          {% break %}
-                        {% endif %}
-                    {% endfor %}
-                    {% set target = ns.target %}
-                    {% set tpar = get_parent(target) %}
-                    {% set source_block_name = child.attributes().attr.block_name %}
-                    {% if source_block_name == "" %}
-                        {% set source_block_name = child.attributes().attr.id %}
-                    {% endif %}
-                    {% if tpar.index == node.index %}
-        self.addConnection("{{ source_block_name }}", "{{ target.attributes().attr.name }}", output_port_name="{{ port.attributes().attr.name }}")
-                    {% else %}
-                        {% set target_block_name = tpar.attributes().attr.block_name %}
-                        {% if target_block_name == "" %}
-                            {% set target_block_name = tpar.attributes().attr.id %}
-                        {% endif %}
-        self.addConnection("{{ source_block_name }}", "{{ tpar.attributes().attr.block_name }}", output_port_name="{{ port.attributes().attr.name }}", input_port_name="{{ target.attributes().attr.name }}")
-                    {% endif %}
-                {% endif %}
-            {% endfor %}
-        {% endfor %}
-    {% endfor %}
-
-
-{% endfor %}