pcjs/_includes/machine-engines.html
Jeff Parsons 87e275b5f1 Blog edits
2016-03-16 15:13:18 -07:00

116 lines
5.5 KiB
HTML

{% comment %}
As documented in /modules/markout/lib/markout.js, our Node web server recognizes the following machine properties
in the Front Matter of Markdown files, for compatibility with the Jekyll web server:
'id' (eg, "ibm5150")
'name' (eg, "IBM PC (Model 5150) with Monochrome Display")
'type' (eg, "pc" or "c1p")
'debugger' (eg, true)
'config' (eg, "machine.xml")
'template' (eg, "machine.xsl")
'debug' (eg, true)
'uncompiled' (eg, true)
'parms'
And the following properties (along with any property not listed above) will be added to the 'parms' property:
'autoMount' (eg, {"A":{"name":"OS/2 FOOTBALL (v7.68.17)","path":"/disks/pc/os2/misc/football/FOOTBALL-76817.json"}})
'autoPower' (eg, true)
'autoStart' (eg, true)
'drives' (eg, '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pc/fixed/68mb/win95.json"}]')
'state' (eg, "state.json")
'messages' (eg, "disk")
And all our JavaScript components expect multi-word property names to use camelCase, so that conversion happens both
here and in markout.js. Examples include 'autopower' ('autoPower') and 'automount' ('autoMount').
{% endcomment %}
{% for machine in page.machines %}
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
{% if machine.debugger %}
{% capture machine_file %}{{ machine_type }}-dbg{% endcapture %}
{% else %}
{% capture machine_file %}{{ machine.type }}{% endcapture %}
{% endif %}
{% capture machine_embed %}embed{{ machine_type | upcase }}{% endcapture %}
{% if machine.automount != nil %}
{% if machine.automount == "" %}
{% assign machine_autoMount = "{}" %}
{% else %}
{% capture machine_autoMount %}{{ machine.automount|jsonify }}{% endcapture %}
{% endif %}
{% else %}
{% if machine.autoMount == "" %}
{% assign machine_autoMount = "{}" %}
{% else %}
{% capture machine_autoMount %}{{ machine.autoMount|jsonify }}{% endcapture %}
{% endif %}
{% endif %}
{% if machine.autopower != nil %}
{% capture machine_autoPower %},autoPower:{{ machine.autopower }}{% endcapture %}
{% elsif machine.autoPower != nil %}
{% capture machine_autoPower %},autoPower:{{ machine.autoPower }}{% endcapture %}
{% else %}
{% assign machine_autoPower = "" %}
{% endif %}
{% if machine.autostart != nil %}
{% capture machine_autoStart %},autoStart:{{ machine.autostart }}{% endcapture %}
{% elsif machine.autoStart != nil %}
{% capture machine_autoStart %},autoStart:{{ machine.autoStart }}{% endcapture %}
{% else %}
{% assign machine_autoStart = "" %}
{% endif %}
{% unless machine.config %}
{% assign machine_config = "machine.xml" %}
{% else %}
{% assign machine_config = machine.config %}
{% endunless %}
{% if machine.drives != nil %}
{% if machine.drives == "" %}
{% assign machine_drives = ",drives:[]" %}
{% else %}
{% capture machine_drives %},drives:{{ machine.drives }}{% endcapture %}
{% endif %}
{% else %}
{% assign machine_drives = "" %}
{% endif %}
{% unless machine.template %}
{% assign machine_template = "" %}
{% else %}
{% assign machine_template = machine.template %}
{% endunless %}
{% capture machine_parms %}{{ site.left_brace }}autoMount:{{ machine_autoMount }}{{ machine_autoPower }}{{ machine_autoStart }}{{ machine_drives }},state:"{{ machine.state }}",messages:"{{ machine.messages }}"{{ site.right_brace }}{% endcapture %}
{% if site.pcjs.compiled == true and machine.uncompiled != true %}
{% capture machine_script %}<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine_type }}js/{{ site.pcjs.version }}/{{ machine_file }}.js"></script>{% endcapture %}
{% unless machine_scripts contains machine_script %}
{{ machine_script }}
{% endunless %}
{% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
{% if machine_template == "" %}
{% capture machine_template %}{{ site.baseurl }}/versions/{{ machine_type }}js/{{ site.pcjs.version }}/components.xsl{% endcapture %}
{% endif %}
{% else %}
{% if machine_type == "pc" %}{% assign array_scripts = site.pcjs.pc_scripts %}{% endif %}
{% if machine_type == "c1p" %}{% assign array_scripts = site.pcjs.c1p_scripts %}{% endif %}
{% for script in array_scripts %}
{% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true %}
{% capture machine_script %}<script type="text/javascript" src="{{ site.baseurl }}{{ script }}"></script>{% endcapture %}
{% unless machine_scripts contains machine_script %}
{{ machine_script }}
{% if script contains "js/lib/defines.js" and machine.debugger != true %}
{{ machine_script | replace:"defines.js","nodebugger.js" }}
{% endif %}
{% endunless %}
{% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
{% endif %}
{% endfor %}
{% if machine_template == "" %}
{% capture machine_template %}{{ site.baseurl }}/modules/{{ machine_type }}js/templates/components.xsl{% endcapture %}
{% endif %}
{% endif %}
<script type="text/javascript">{{ machine_embed }}('{{ machine.id }}','{{ machine_config }}','{{ machine_template }}','{{ machine_parms }}');</script>
{% if page.build %}
<script type="text/javascript" src="{{ site.baseurl }}/modules/build/lib/build.js"></script>
<script type="text/javascript">buildPC("{{ page.build }}");</script>
{% endif %}
{% endfor %}