Improve manual
This commit is contained in:
parent
aee918d025
commit
14440f0cad
@ -80,7 +80,7 @@ return {
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"Die Antriebsachsen dienen zur Kraftübertragung von der Dampfmaschine zu anderen Maschinen. Die maximale Länge einer Antriebsachse beträgt 10 Blöcke. Über Getriebeboxen können auch größere Strecken überbrückt\\, sowie Abzweigungen und Richtungswechsel realisiert werden.\n"..
|
||||
"Die Antriebsachsen dienen zur Kraftübertragung von der Dampfmaschine zu anderen Maschinen. Die maximale Länge einer Antriebsachse beträgt 10 Blöcke. Über Getriebeblöcke können auch größere Strecken überbrückt\\, sowie Abzweigungen und Richtungswechsel realisiert werden.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
@ -96,11 +96,11 @@ return {
|
||||
"\n"..
|
||||
"Der Energiespeicher besteht aus mehreren Blöcken und muss wie im Plan rechts abgebildet\\, zusammen gebaut werden.\n"..
|
||||
"\n"..
|
||||
"Um die maximale Speicherkapazität zu erreichen\\, muss die Kiste mit Gewichten komplett gefüllt\\, und der Mast inklusive der zwei Getriebeboxen 12 Blöcke hoch sein. Kleinere Aufbauten sind aber auch möglich.\n"..
|
||||
"Um die maximale Speicherkapazität zu erreichen\\, muss die Kiste mit Gewichten komplett gefüllt\\, und der Mast inklusive der zwei Getriebeblöcke 12 Blöcke hoch sein. Kleinere Aufbauten sind aber auch möglich.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"Die Seilwinde muss mit einer Getriebebox verbunden werden und kann so überschüssige Energie aufnehmen und damit eine Gewichtekiste nach oben ziehen. Die maximale Seillänge beträgt 10 Blöcke.\n"..
|
||||
"Die Seilwinde muss mit einem Getriebeblock verbunden werden und kann so überschüssige Energie aufnehmen und damit eine Gewichtekiste nach oben ziehen. Achte beim Aufbau der Seilwinde darauf\\, dass der Pfeil auf der Blockoberseite zum Getriebeblock zeigt. Die maximale Seillänge beträgt 10 Blöcke.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
@ -108,7 +108,7 @@ return {
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"Mit der Kupplung können Achsen und Maschinen vom Energiespeicher getrennt werden. Damit kommen die Achsen nach der Kupplung zum Stillstand und Maschinenanlagen können umgebaut werden.\n"..
|
||||
"Mit der Kupplung können Achsen und Maschinen vom Energiespeicher getrennt werden. Damit kommen die Achsen nach der Kupplung zum Stillstand und Maschinenanlagen können umgebaut werden. Achte beim Aufbau der Kupplung darauf\\, dass der Pfeil auf der Blockoberseite zum Energiespeicher zeigt. \n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
|
@ -98,7 +98,9 @@ return {
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"The cable winch must be connected to a gear box and can absorb excess energy and thus pull a weight chest upwards. The maximum rope length is 10 blocks. \n"..
|
||||
"The cable winch must be connected to a gear box and can absorb excess energy and thus pull a weight chest upwards. \n"..
|
||||
"When assembling the cable winch\\, make sure that the arrow on the top of the block points to the gearbox.\n"..
|
||||
"The maximum rope length is 10 blocks. \n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
@ -106,7 +108,7 @@ return {
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"With the clutch\\, axles and machines can be separated from the energy storage. This means that the axles after the clutch come to a standstill and machine systems can be rebuilt.\n"..
|
||||
"With the clutch\\, axles and machines can be separated from the energy storage. This means that the axles after the clutch come to a standstill and machine systems can be rebuilt. When assembling the clutch\\, make sure that the arrow on the top of the block points to the energy storage system.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
|
@ -66,7 +66,7 @@ Teil der Dampfmaschine. Der Boiler muss mit dem Zylinder über die Dampfleitunge
|
||||
|
||||
### TA2 Antriebsachsen / TA2 Drive Axle
|
||||
|
||||
Die Antriebsachsen dienen zur Kraftübertragung von der Dampfmaschine zu anderen Maschinen. Die maximale Länge einer Antriebsachse beträgt 10 Blöcke. Über Getriebeboxen können auch größere Strecken überbrückt, sowie Abzweigungen und Richtungswechsel realisiert werden.
|
||||
Die Antriebsachsen dienen zur Kraftübertragung von der Dampfmaschine zu anderen Maschinen. Die maximale Länge einer Antriebsachse beträgt 10 Blöcke. Über Getriebeblöcke können auch größere Strecken überbrückt, sowie Abzweigungen und Richtungswechsel realisiert werden.
|
||||
|
||||
[ta2_driveaxle|image]
|
||||
|
||||
@ -87,7 +87,7 @@ Bei größeren Anlagen mit mehreren Dampfmaschinen oder vielen angetriebenen Mas
|
||||
|
||||
Der Energiespeicher besteht aus mehreren Blöcken und muss wie im Plan rechts abgebildet, zusammen gebaut werden.
|
||||
|
||||
Um die maximale Speicherkapazität zu erreichen, muss die Kiste mit Gewichten komplett gefüllt, und der Mast inklusive der zwei Getriebeboxen 12 Blöcke hoch sein. Kleinere Aufbauten sind aber auch möglich.
|
||||
Um die maximale Speicherkapazität zu erreichen, muss die Kiste mit Gewichten komplett gefüllt, und der Mast inklusive der zwei Getriebeblöcke 12 Blöcke hoch sein. Kleinere Aufbauten sind aber auch möglich.
|
||||
|
||||
[ta2_storage|plan]
|
||||
|
||||
@ -95,7 +95,7 @@ Um die maximale Speicherkapazität zu erreichen, muss die Kiste mit Gewichten ko
|
||||
|
||||
### TA2 Seilwinde / TA2 Winch
|
||||
|
||||
Die Seilwinde muss mit einer Getriebebox verbunden werden und kann so überschüssige Energie aufnehmen und damit eine Gewichtekiste nach oben ziehen. Die maximale Seillänge beträgt 10 Blöcke.
|
||||
Die Seilwinde muss mit einem Getriebeblock verbunden werden und kann so überschüssige Energie aufnehmen und damit eine Gewichtekiste nach oben ziehen. Achte beim Aufbau der Seilwinde darauf, dass der Pfeil auf der Blockoberseite zum Getriebeblock zeigt. Die maximale Seillänge beträgt 10 Blöcke.
|
||||
|
||||
[ta2_winch|image]
|
||||
|
||||
@ -111,7 +111,7 @@ Diese Kiste muss mit bis zu 10 Blöcken Abstand unter die Seilwinde gesetzt und
|
||||
|
||||
### TA2 Kupplung / TA2 Clutch
|
||||
|
||||
Mit der Kupplung können Achsen und Maschinen vom Energiespeicher getrennt werden. Damit kommen die Achsen nach der Kupplung zum Stillstand und Maschinenanlagen können umgebaut werden.
|
||||
Mit der Kupplung können Achsen und Maschinen vom Energiespeicher getrennt werden. Damit kommen die Achsen nach der Kupplung zum Stillstand und Maschinenanlagen können umgebaut werden. Achte beim Aufbau der Kupplung darauf, dass der Pfeil auf der Blockoberseite zum Energiespeicher zeigt.
|
||||
|
||||
[techage:ta2_clutch_off|image]
|
||||
|
||||
|
@ -94,7 +94,9 @@ In order to achieve the maximum storage capacity, the chest must be completely f
|
||||
|
||||
### TA2 Winch
|
||||
|
||||
The cable winch must be connected to a gear box and can absorb excess energy and thus pull a weight chest upwards. The maximum rope length is 10 blocks.
|
||||
The cable winch must be connected to a gear box and can absorb excess energy and thus pull a weight chest upwards.
|
||||
When assembling the cable winch, make sure that the arrow on the top of the block points to the gearbox.
|
||||
The maximum rope length is 10 blocks.
|
||||
|
||||
[ta2_winch|image]
|
||||
|
||||
@ -110,7 +112,7 @@ This chest must be placed under the winch with a distance of up to 10 blocks and
|
||||
|
||||
### TA2 Clutch
|
||||
|
||||
With the clutch, axles and machines can be separated from the energy storage. This means that the axles after the clutch come to a standstill and machine systems can be rebuilt.
|
||||
With the clutch, axles and machines can be separated from the energy storage. This means that the axles after the clutch come to a standstill and machine systems can be rebuilt. When assembling the clutch, make sure that the arrow on the top of the block points to the energy storage system.
|
||||
|
||||
[techage:ta2_clutch_off|image]
|
||||
|
||||
|
@ -1,272 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
|
||||
import re
|
||||
import sys
|
||||
import pprint
|
||||
import mistune # must be v0.8.4, install with 'sudo pip install mistune==0.8.4'
|
||||
|
||||
def formspec_escape(text):
|
||||
text = text.replace("\\", "")
|
||||
text = text.replace("[", "\\\\[")
|
||||
text = text.replace("]", "\\\\]")
|
||||
text = text.replace(";", "\\\\;")
|
||||
text = text.replace(",", "\\\\,")
|
||||
text = text.replace('"', '\\"')
|
||||
text = text.replace('\n', '\\n')
|
||||
#print ">>>>"+text+"<<<<"
|
||||
return text
|
||||
|
||||
def header_escsape(header):
|
||||
header = header.lower()
|
||||
header = header.replace(" ", "-")
|
||||
header = header.replace("/", "")
|
||||
return header
|
||||
|
||||
lTitel = []
|
||||
lText = []
|
||||
lItemName = []
|
||||
lPlanTable = []
|
||||
lTocLinks = []
|
||||
|
||||
def reset():
|
||||
global lTitel, lText, lItemName, lPlanTable, lTocLinks
|
||||
|
||||
lTitel = []
|
||||
lText = []
|
||||
lItemName = []
|
||||
lPlanTable = []
|
||||
lTocLinks = []
|
||||
|
||||
|
||||
def lua_table(name, lData):
|
||||
lOut = []
|
||||
lOut.append("%s = {" % name)
|
||||
for line in lData:
|
||||
lOut.append(' "%s",' % line)
|
||||
lOut.append("}\n\n")
|
||||
return "\n".join(lOut)
|
||||
|
||||
def lua_text_table(name, lData):
|
||||
lOut = []
|
||||
lOut.append("%s = {" % name)
|
||||
for lines in lData:
|
||||
for line in lines[:-1]:
|
||||
line = line.replace('<br>', '\\n')
|
||||
lOut.append(' "%s\\n"..' % line)
|
||||
if len(lines) > 0:
|
||||
lOut.append(' "%s\\n",' % lines[-1])
|
||||
else:
|
||||
lOut.append(' "",')
|
||||
lOut.append("}\n\n")
|
||||
return "\n".join(lOut)
|
||||
|
||||
class WikiLinkInlineLexer(mistune.InlineLexer):
|
||||
def enable_wiki_link(self):
|
||||
# add wiki_link rules
|
||||
self.rules.wiki_link = re.compile(
|
||||
r'\[' # [
|
||||
r'([\s\S]+?\|[\s\S]+?)' # name| img-type
|
||||
r'\](?!\])' # ]
|
||||
)
|
||||
|
||||
# Add wiki_link parser to default rules
|
||||
# you can insert it some place you like
|
||||
# but place matters, maybe 3 is not good
|
||||
self.default_rules.insert(3, 'wiki_link')
|
||||
|
||||
def output_wiki_link(self, m):
|
||||
text = m.group(1)
|
||||
name, itype = text.split('|')
|
||||
# you can create an custom render
|
||||
# you can also return the html if you like
|
||||
return self.renderer.wiki_link(name, itype)
|
||||
|
||||
class MyRenderer(mistune.Renderer):
|
||||
def __init__(self, *args, **kwargs):
|
||||
mistune.Renderer.__init__(self, *args, **kwargs)
|
||||
self.TextChunck = []
|
||||
self.ItemName = ""
|
||||
self.PlanTable = ""
|
||||
self.is_first_header = True
|
||||
|
||||
def add_last_paragraph(self):
|
||||
"""
|
||||
Used to add a text block before the next header or at the end of the document
|
||||
"""
|
||||
lText.append(self.TextChunck)
|
||||
self.TextChunck = []
|
||||
lItemName.append(self.ItemName)
|
||||
self.ItemName = ""
|
||||
lPlanTable.append(self.PlanTable)
|
||||
self.PlanTable = ""
|
||||
##
|
||||
## Block Level
|
||||
##
|
||||
def block_code(self, code, lang):
|
||||
text = formspec_escape(code.strip())
|
||||
lines = text.split("\\n")
|
||||
lines = [" " + item for item in lines]
|
||||
self.TextChunck.extend(lines)
|
||||
self.TextChunck.append("")
|
||||
return ""
|
||||
|
||||
# ~ def block_quote(self, text):
|
||||
# ~ print "block_quote", text
|
||||
# ~ self.TextChunck.append("\n%s\n" % text)
|
||||
# ~ return ""
|
||||
|
||||
def header(self, text, level, raw=None):
|
||||
if not self.is_first_header:
|
||||
self.add_last_paragraph()
|
||||
self.is_first_header = False
|
||||
lTitel.append("%u,%s" % (level, formspec_escape(text)))
|
||||
lTocLinks.append({"level": level, "header": formspec_escape(text), "link": self.src_name})
|
||||
return ""
|
||||
|
||||
def hrule(self):
|
||||
self.TextChunck.append("\n----------------------------------------------------\n")
|
||||
return ""
|
||||
|
||||
def paragraph(self, text):
|
||||
lines = text.split("\\n") + [""]
|
||||
self.TextChunck.extend(lines)
|
||||
return ""
|
||||
|
||||
def list(self, body, ordered=True):
|
||||
lines = body.split("\n")
|
||||
self.TextChunck.extend(lines)
|
||||
return ""
|
||||
|
||||
def list_item(self, text):
|
||||
return " - %s\n" % text.strip()
|
||||
##
|
||||
## Span Level
|
||||
##
|
||||
def emphasis(self, text):
|
||||
return "*%s*" % formspec_escape(text)
|
||||
|
||||
def double_emphasis(self, text):
|
||||
return "*%s*" % formspec_escape(text)
|
||||
|
||||
def codespan(self, text):
|
||||
return "'%s'" % formspec_escape(text)
|
||||
|
||||
def text(self, text):
|
||||
return formspec_escape(text)
|
||||
|
||||
def link(self, link, title, content):
|
||||
"""
|
||||
Used for plans and images:
|
||||
[myimage](/image/)
|
||||
[myplan](/plan/)
|
||||
"""
|
||||
if link == "/image/":
|
||||
self.ItemName = content
|
||||
elif link == "/plan/":
|
||||
self.PlanTable = content
|
||||
return ""
|
||||
|
||||
def wiki_link(self, name, itype):
|
||||
"""
|
||||
Used for plans and images:
|
||||
[myimage|image]
|
||||
[myplan|plan]
|
||||
"""
|
||||
if itype == "image":
|
||||
self.ItemName = name
|
||||
elif itype == "plan":
|
||||
self.PlanTable = name
|
||||
return ""
|
||||
|
||||
def autolink(self, link, is_email=False):
|
||||
return link
|
||||
|
||||
def linebreak(self):
|
||||
return "\\n"
|
||||
|
||||
def newline(self):
|
||||
return "\\n"
|
||||
|
||||
def inline_html(self, text):
|
||||
print(text)
|
||||
# ~
|
||||
# ~ double_emphasis(text)
|
||||
# ~ image(src, title, alt_text)
|
||||
# ~ link(link, title, content)
|
||||
# ~ strikethrough(text)
|
||||
# ~ inline_html(text)
|
||||
|
||||
|
||||
def parse_md_file(src_name, mod, manual):
|
||||
print("Read Lua file '%s'" % src_name)
|
||||
renderer = MyRenderer()
|
||||
inline = WikiLinkInlineLexer(renderer)
|
||||
# enable the feature
|
||||
inline.enable_wiki_link()
|
||||
md = mistune.Markdown(renderer=renderer, inline=inline)
|
||||
md.renderer.src_name = src_name
|
||||
md.render(open(src_name, 'r').read())
|
||||
md.renderer.add_last_paragraph()
|
||||
|
||||
def gen_lua_file(dest_name):
|
||||
print("Write Lua file '%s'" % dest_name)
|
||||
lOut = ["%s.%s = {}\n\n" % (mod, manual)]
|
||||
lOut.append(lua_table("%s.%s.aTitel" % (mod, manual), lTitel))
|
||||
lOut.append(lua_text_table("%s.%s.aText" % (mod, manual), lText))
|
||||
lOut.append(lua_table("%s.%s.aItemName" % (mod, manual), lItemName))
|
||||
lOut.append(lua_table("%s.%s.aPlanTable" % (mod, manual), lPlanTable))
|
||||
open(dest_name, "w").write("".join(lOut))
|
||||
|
||||
def gen_toc_md_file(dest_name, titel, level_range=[1,6]):
|
||||
print("Write MD file '%s'" % dest_name)
|
||||
lOut = ["# "+ titel]
|
||||
lOut.append("")
|
||||
for item in lTocLinks:
|
||||
if item["level"] in range(*level_range):
|
||||
list_item = " " * (item["level"] - level_range[0]) + "-"
|
||||
link = "%s#%s" % (item["link"], header_escsape(item["header"]))
|
||||
lOut.append("%s [%s](%s)" % (list_item, item["header"], link))
|
||||
open(dest_name, "w").write("\n".join(lOut))
|
||||
|
||||
def gen_file_local_toc(dest_name, level_range=[1,6]):
|
||||
lOut = []
|
||||
for item in lTocLinks:
|
||||
if item["level"] in range(*level_range):
|
||||
list_item = " " * (item["level"] - level_range[0]) + "-"
|
||||
link = "#%s" % (item["header"].replace(" ", "-").replace("\\", ""))
|
||||
lOut.append("%s [%s](%s)" % (list_item, item["header"].replace("\\", ""), link))
|
||||
open(dest_name, "w").write("\n".join(lOut))
|
||||
|
||||
########################### German #########################
|
||||
mod = "techage"
|
||||
manual = "manual_DE"
|
||||
parse_md_file("./manual_DE.md", mod, manual)
|
||||
parse_md_file("./manual_ta1_DE.md", mod, manual)
|
||||
parse_md_file("./manual_ta2_DE.md", mod, manual)
|
||||
parse_md_file("./manual_ta3_DE.md", mod, manual)
|
||||
parse_md_file("./manual_ta4_DE.md", mod, manual)
|
||||
parse_md_file("./manual_ta5_DE.md", mod, manual)
|
||||
gen_lua_file("../doc/manual_DE.lua")
|
||||
gen_toc_md_file("./toc_DE.md", "Inhaltsverzeichnis")
|
||||
|
||||
########################### English #########################
|
||||
reset()
|
||||
mod = "techage"
|
||||
manual = "manual_EN"
|
||||
parse_md_file("./manual_EN.md", mod, manual)
|
||||
parse_md_file("./manual_ta1_EN.md", mod, manual)
|
||||
parse_md_file("./manual_ta2_EN.md", mod, manual)
|
||||
parse_md_file("./manual_ta3_EN.md", mod, manual)
|
||||
parse_md_file("./manual_ta4_EN.md", mod, manual)
|
||||
parse_md_file("./manual_ta5_EN.md", mod, manual)
|
||||
gen_lua_file("../doc/manual_EN.lua")
|
||||
gen_toc_md_file("./toc_EN.md", "Table of Contents")
|
||||
|
||||
########################### Lua Manual #########################
|
||||
reset()
|
||||
parse_md_file("./ta4_lua_controller_EN.md", mod, manual)
|
||||
gen_file_local_toc("toc.txt", level_range=[2,4])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user