Make nunjucks rendering and jinja2 rendering the same
This commit is contained in:
parent
fccf2d214d
commit
a31e50eab1
61
Makefile
61
Makefile
|
@ -1,37 +1,45 @@
|
||||||
|
|
||||||
CARDS := $(wildcard cards/*.yaml)
|
CARDS_YAML := $(wildcard cards/*.yaml)
|
||||||
CARDS_DESTS := $(patsubst cards/%.yaml,cards/build/%.html,$(CARDS))
|
CARDS_XML := $(wildcard cards/*.xml)
|
||||||
|
CARDS := $(CARDS_YAML) $(CARDS_XML)
|
||||||
|
CARDS_DESTS_YAML := $(patsubst cards/%.yaml,cards/build/%.html,$(CARDS))
|
||||||
|
CARDS_DESTS_XML := $(patsubst cards/%.xml,cards/build/%.x.html,$(CARDS))
|
||||||
|
CARDS_DESTS := $(CARDS_DESTS_YAML) $(CARDS_DESTS_XML)
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: build/test_card.html build/test_card_rendered.html $(CARDS_DESTS) cards/build/all.html
|
all: build/test_card.html build/test_card_rendered.html cards/build/all.html
|
||||||
|
|
||||||
|
.PHONY: cards
|
||||||
|
cards: $(CARDS_DESTS) cards/build/all.html
|
||||||
|
|
||||||
.PHONY: style
|
.PHONY: style
|
||||||
style: build/style.xsl
|
style: build/style.xsl
|
||||||
|
|
||||||
.PHONY: dev
|
.PHONY: dev
|
||||||
dev:
|
dev:
|
||||||
git ls-files | entr bash -c "make build/test_card.html build/test_card_rendered.html"
|
git ls-files | entr bash -c "make all"
|
||||||
|
|
||||||
.PHONY: dev_all
|
.PHONY: dev_all
|
||||||
dev_all:
|
dev_cards:
|
||||||
git ls-files | entr bash -c "make all"
|
git ls-files | entr bash -c "make cards"
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -v build/* cards/build/*
|
rm -v build/* cards/build/*
|
||||||
|
|
||||||
build/test_card.html: build/card.xml build/style.xsl
|
build/test_card.html: build/test_card.xml build/style.xsl
|
||||||
xsltproc \
|
xsltproc \
|
||||||
-o build/test_card.html \
|
-o build/test_card.html \
|
||||||
build/style.xsl \
|
build/style.xsl \
|
||||||
build/card.xml
|
build/test_card.xml
|
||||||
|
|
||||||
|
|
||||||
define PYTHON_MAKE_JINJA2_RENDERED_CARD
|
define PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
from markdown import markdown
|
from markdown import markdown
|
||||||
import yaml, sys, glob
|
import yaml, sys, glob
|
||||||
|
import xmltodict
|
||||||
with open("build/style.css") as f: css_data = f.read()
|
with open("build/style.css") as f: css_data = f.read()
|
||||||
with open(sys.argv[2], "w") as f:
|
with open(sys.argv[2], "w") as f:
|
||||||
e = Environment(trim_blocks=True, lstrip_blocks=True, loader=FileSystemLoader(''))
|
e = Environment(trim_blocks=True, lstrip_blocks=True, loader=FileSystemLoader(''))
|
||||||
|
@ -41,24 +49,47 @@ with open(sys.argv[2], "w") as f:
|
||||||
"any":any,
|
"any":any,
|
||||||
"all":all,
|
"all":all,
|
||||||
"cull_whitespace":(lambda x: " ".join(x.split())) })
|
"cull_whitespace":(lambda x: " ".join(x.split())) })
|
||||||
for filename in ([sys.argv[1]] if sys.argv[1] != "ALL" else sorted(glob.glob("cards/*.yaml"))):
|
for filename in ([sys.argv[1]] if sys.argv[1] != "ALL" else sorted(glob.glob("cards/*.yaml") + glob.glob("cards/*.xml"))):
|
||||||
if sys.argv[1] == "ALL": f.write(f"\n\n<h1>{filename}</h1>\n")
|
if sys.argv[1] == "ALL": f.write(f"\n\n<h1>{filename}</h1>\n")
|
||||||
with open(filename) as f2: data = f2.read()
|
with open(filename) as f2:
|
||||||
|
if filename.endswith("yaml"):
|
||||||
|
yaml_data = yaml.load(f2.read())
|
||||||
|
xml_data = {}
|
||||||
|
elif filename.endswith("xml"):
|
||||||
|
xml = xmltodict.parse(f2.read())
|
||||||
|
xml_data = xml.get("ability_card", {})
|
||||||
|
yaml_data = yaml.load(xml_data.get("yaml_data", ""))
|
||||||
|
if xml_data.get("image"):
|
||||||
|
yaml_data["figures"] = [{
|
||||||
|
'name': xml_data["image"] if (xml_data["image"][:4] == "http") else xml_data["image"].split(":", 1)[1],
|
||||||
|
'type': "url" if (xml_data["image"][:4] == "http") else xml_data["image"].split(":", 1)[0],
|
||||||
|
'scale': 1.0,
|
||||||
|
'flip_x': False,
|
||||||
|
'flip_y': False,
|
||||||
|
'offset': [0.0, 0.0],
|
||||||
|
'opacity': 1,
|
||||||
|
'rotation': 0,
|
||||||
|
}] + yaml_data.get("figures", [])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = e.get_template('style.html.j2').render(card=yaml.load(data), xml={})
|
data = e.get_template('style.html.j2').render(card=yaml_data, xml=xml_data)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
data = f"<pre style=\"color:red;\">{ex}</pre>"
|
data = f"<pre style=\"color:red;\">{ex}</pre>"
|
||||||
f.write("\n" + data)
|
f.write("\n" + data)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||||
build/test_card_rendered.html: test_card.yaml style.html.j2 build/style.css templates/card_header.html.j2
|
build/test_card_rendered.html: build/test_card.xml style.html.j2 build/style.css templates/card_header.html.j2
|
||||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" "test_card.yaml" "build/test_card_rendered.html"
|
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" "build/test_card.xml" "build/test_card_rendered.html"
|
||||||
|
|
||||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||||
cards/build/%.html: cards/%.yaml style.html.j2 build/style.css templates/card_header.html.j2
|
cards/build/%.html: cards/%.yaml style.html.j2 build/style.css templates/card_header.html.j2
|
||||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" $< $@
|
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" $< $@
|
||||||
|
|
||||||
|
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||||
|
cards/build/%.x.html: cards/%.xml style.html.j2 build/style.css templates/card_header.html.j2
|
||||||
|
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" $< $@
|
||||||
|
|
||||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||||
cards/build/all.html: $(CARDS) style.html.j2 build/style.css templates/card_header.html.j2
|
cards/build/all.html: $(CARDS) style.html.j2 build/style.css templates/card_header.html.j2
|
||||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" ALL $@
|
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" ALL $@
|
||||||
|
@ -68,14 +99,14 @@ define PYTHON_MAKE_CARD_XML
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
with open("test_card.yaml") as f: data = f.read()
|
with open("test_card.yaml") as f: data = f.read()
|
||||||
with open("test_card.xml") as f: xml_data = f.read()
|
with open("test_card.xml") as f: xml_data = f.read()
|
||||||
with open("build/card.xml", "w") as f:
|
with open("build/test_card.xml", "w") as f:
|
||||||
f.write(Environment(
|
f.write(Environment(
|
||||||
loader=FileSystemLoader('templates'))
|
loader=FileSystemLoader('templates'))
|
||||||
.get_template('card.xml.j2')
|
.get_template('card.xml.j2')
|
||||||
.render(data=data, xml_data=xml_data))
|
.render(data=data, xml_data=xml_data))
|
||||||
endef
|
endef
|
||||||
export PYTHON_MAKE_CARD_XML
|
export PYTHON_MAKE_CARD_XML
|
||||||
build/card.xml: test_card.yaml test_card.xml templates/card.xml.j2
|
build/test_card.xml: test_card.yaml test_card.xml templates/card.xml.j2
|
||||||
python3 -c "$$PYTHON_MAKE_CARD_XML"
|
python3 -c "$$PYTHON_MAKE_CARD_XML"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<ability_card>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<yaml_data>
|
||||||
|
style: white
|
||||||
|
</yaml_data>
|
||||||
|
<name>Thundering applause</name>
|
||||||
|
<description>spis meg huehuehue</description>
|
||||||
|
<image>img:piuy/chicken</image>
|
||||||
|
<cp></cp>
|
||||||
|
<range></range>
|
||||||
|
<duration></duration>
|
||||||
|
<power></power>
|
||||||
|
<difficulty></difficulty>
|
||||||
|
<symbol></symbol>
|
||||||
|
<playcost></playcost>
|
||||||
|
|
||||||
|
<component x="2" y="2" db_entry="🧩 Set Ability Name"/>
|
||||||
|
<component x="2" y="3" db_entry="🧩 Set Description"/>
|
||||||
|
<component x="4" y="2" db_entry="🧩 Set Image"/>
|
||||||
|
<component x="3" y="1" db_entry="🧩 CP Cost"/>
|
||||||
|
<component x="2" y="1" db_entry="🧩 Range"/>
|
||||||
|
<component x="4" y="1" db_entry="🧩 Duration"/>
|
||||||
|
<component x="5" y="1" db_entry="🧩 Power"/>
|
||||||
|
<component x="6" y="1" db_entry="🧩 Difficulty"/>
|
||||||
|
<component x="6" y="2" db_entry="🧩 Symbols"/>
|
||||||
|
<component x="7" y="1" db_entry="🧩 Play Cost"/>
|
||||||
|
<component x="5" y="3" db_entry="⚔️ Learn Ability"/>
|
||||||
|
|
||||||
|
</ability_card>
|
|
@ -85,7 +85,7 @@
|
||||||
|
|
||||||
<div class="fjomp_card{{" " + card.style if card.style}}">
|
<div class="fjomp_card{{" " + card.style if card.style}}">
|
||||||
<header>
|
<header>
|
||||||
{{ card.title }}
|
{{ card.title or xml.name }}
|
||||||
</header>
|
</header>
|
||||||
{% if card.icon %}
|
{% if card.icon %}
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
|
@ -97,6 +97,10 @@
|
||||||
{{ named_icon_to_emoji(card.icon) }}
|
{{ named_icon_to_emoji(card.icon) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% elif xml.symbol %}
|
||||||
|
<div class="icon">
|
||||||
|
{{ xml.symbol }}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<figure>
|
<figure>
|
||||||
{% for figure in card.figures %}
|
{% for figure in card.figures %}
|
||||||
|
@ -167,6 +171,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if card.description %}
|
{% if card.description %}
|
||||||
<center>{{ card.description | markdown | safe }}</center>
|
<center>{{ card.description | markdown | safe }}</center>
|
||||||
|
{% elif xml.description %}
|
||||||
|
<center>{{ xml.description | markdown | safe }}</center>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if card.steps %}
|
{% if card.steps %}
|
||||||
<ul>
|
<ul>
|
||||||
|
|
12
style.js
12
style.js
|
@ -17,10 +17,9 @@ function is_set(asd) {
|
||||||
return !(typeof asd === 'undefined' || asd.length === 0);
|
return !(typeof asd === 'undefined' || asd.length === 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_set(context.card.title) && context.xml.name ) context.card.title = context.xml.name;
|
// set the figure by the
|
||||||
if (!is_set(context.card.icon) && context.xml.symbol ) context.card.icon = context.xml.symbol;
|
if (!is_set(context.card.figures) && context.xml.image ) {
|
||||||
if (!is_set(context.card.description) && context.xml.description) context.card.description = context.xml.description;
|
context.card.figures = [{
|
||||||
if (!is_set(context.card.figures) && context.xml.image ) context.card.figures = [{
|
|
||||||
'name': (context.xml.image.substr(0, 4) == "http")
|
'name': (context.xml.image.substr(0, 4) == "http")
|
||||||
? context.xml.image
|
? context.xml.image
|
||||||
: context.xml.image.split(":").slice(1).join(":"),
|
: context.xml.image.split(":").slice(1).join(":"),
|
||||||
|
@ -33,7 +32,8 @@ if (!is_set(context.card.figures) && context.xml.image ) context.card.f
|
||||||
'offset': [0.0, 0.0],
|
'offset': [0.0, 0.0],
|
||||||
'opacity': 1,
|
'opacity': 1,
|
||||||
'rotation': 0,
|
'rotation': 0,
|
||||||
}];
|
}].concat(context.card.figures);
|
||||||
|
}
|
||||||
|
|
||||||
var env = new nunjucks.Environment([], {
|
var env = new nunjucks.Environment([], {
|
||||||
autoescape: true,
|
autoescape: true,
|
||||||
|
@ -64,5 +64,5 @@ try {
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
rendered = "<pre style=\"font-size:0.8em; width:100%; border-radius:5px; padding:2mm; box-sizing: border-box; border: 2px solid black; white-space: normal; background-color:#ff8888;\">" + err + "</pre>";
|
rendered = "<pre style=\"font-size:0.8em; width:100%; border-radius:5px; padding:2mm; box-sizing: border-box; border: 2px solid black; white-space: normal; background-color:#ff8888;\">" + err + "</pre>";
|
||||||
}
|
}
|
||||||
console.log(rendered);
|
//console.log(rendered);
|
||||||
document.write(rendered);
|
document.write(rendered);
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
|
|
||||||
{% if is_local %}
|
{% if is_local %}
|
||||||
<meta http-equiv="refresh" content="1.0">
|
|
||||||
{#
|
{#
|
||||||
|
<meta http-equiv="refresh" content="1.0">
|
||||||
<script type="text/javascript" src="http://livejs.com/live.js"></script>
|
<script type="text/javascript" src="http://livejs.com/live.js"></script>
|
||||||
#}
|
#}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Reference in New Issue