Commit 7a98af7d authored by twanvl's avatar twanvl

A first export template, work in progress

parent a335b3f6
# Simple exporter for HTML files
mse version: 0.3.4
game: magic
short name: Spoiler
full name: List of cards
create directory: true
option field:
type: choice
name: grouping
description: How should cards be grouped?
choice: no grouping
choice: group by color
initial: group by color
option field:
type: choice
name: images
choice: no
choice: just the image box, linked
choice: just the image box, inline
choice: full images, linked
choice: full images, preview
choice: full images, inline
choice: full images only
initial: full images, preview
option field:
type: boolean
name: mana symbols
description: Should mana symbols be used, or should they be written as text?
option field:
type: boolean
name: rarity symbols
description: Should rarity be shown using a symbol or as text?
option field:
type: boolean
name: list keywords
description: Should the keywords be listed?
#option field:
# type: boolean
# name: fancy scripts
# description: Should fancy scripts be used
option field:
type: choice
name: font style
choice: default
choice: serif
choice: sans-serif
option field:
type: color
name: background color
initial: rgb(255,255,255)
choice:
name: white
color: rgb(255,255,255)
choice:
name: black
color: rgb(0,0,0)
option field:
type: color
name: text color
initial: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
choice:
name: black
color: rgb(0,0,0)
option style:
grouping:
render style: both
choice images:
no grouping: { built_in_image("bool_no") }
group by color: /magic.mse-game/stats/card_color.png
images:
render style: both
choice images:
no: { built_in_image("bool_no") }
font style:
render style: both
choice images:
serif: /magic-spoiler.mse-export-template/serif.png
sans-serif: /magic-spoiler.mse-export-template/sans-serif.png
script:
write_card := {
if contains(options.images, match:= "full images") then
card_image_file := write_image_file(card, file:"card{position(of:card,in:set)}.jpg")
else if contains(options.images, match:= "image box") then
card_image_file := write_image_file(card.image, file:"card{position(of:card,in:set)}.jpg")
else
card_image_file := ""
#if options.images == "full images only"
"<li class='card'>
<a href='{card_image_file}'><img src='{card_image_file}' alt='' class='image'></a>
<span class='name' >{ to_html(card.name ) }</span>
<span class='casting-cost' >{ to_html(card.casting_cost, symbol_font: "mana-large", symbol_size: 12 ) }</span>
<span class='type' >{ to_html(card.type ) }</span>
<span class='rarity' >{
if options.rarity_symbols then
"<img src='{ write_image_file(
name: "set-symbol-{card.rarity[0] or else "C"}.png",
width: 20,
image: symbol_variation(set.symbol, variation:card.rarity)
)}' alt='{card.rarity}'>"
else
to_upper(card.rarity[0] or else "C") # B,C,U,R,S
}</span>
<span class='rule-text' >{ to_html(card.rule_text ) }</span>
<span class='flavor-text' >{ to_html( remove_tag(tag: "<i-flavor>", card.flavor_text) ) }</span>
<span class='pt' >{ to_html(card.pt ) }</span>
<span class='card-number' >{ to_html(card.card_number ) }</span>
</li>"
}
write_cards := {
"<ul class='cards'>{
for each card in sort(cards, order_by: {input.card_number}) do
write_card()
}</ul>"
}
write_group := {
cards := filter_list(set.cards, filter: { sort_index(card:input) == code } )
count := number_of_items(in:cards)
if count > 0 then
"<h2>{title} ({count} {if count == 1 then "card" else "cards"})</h2>" +
write_cards()
}
html := "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN\' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html lang='en'>
<head>
<title>{ to_html(set.title) }</title>
<link rel='stylesheet' type='text/css' href='{copy_file("style.css")}' />
<style type='text/css'>
body \{
background: {options.background_color};
color: {options.text_color};
{if options.font_style != "default" then
"font-family: {options.font_style};"
}
\}
</style>
</head>
<body>
<h1>{ to_html(set.title) }</h1>
<div class='copyright'>{ to_html(set.copyright) }</div>
<div class='description'>{ to_html(set.description) }</div>
{ if options.grouping == "group by color" then
# Codes as by sort_index
write_group(title: "White", code:"A") +
write_group(title: "Blue", code:"B") +
write_group(title: "Black", code:"C") +
write_group(title: "Red", code:"D") +
write_group(title: "Green", code:"E") +
write_group(title: "Multicolor", code:"F") +
write_group(title: "Hybrids", code:"G") +
write_group(title: "Colorless", code:"I") +
write_group(title: "Non-basic lands", code:"J") +
write_group(title: "Basic lands", code:"K")
else
write_cards(cards: set.cards)
}
</body>
</html>"
write_text_file(html, file:"index.html")
# make sure the urls are relative to the right directory
replace(html, match:"<[^<>]*(href|src)=\'", replace:"&{directory}/")
ul {
list-style: none;
margin: 0;
padding: 0;
}
.card {
margin-top: 1em;
}
.card span {
display: block;
}
.card .name {
font-weight: bold;
display: inline;
font-family: "Matrix";
font-size: larger;
}
.card .casting-cost {
display: inline;
font-family: "Magic Symbols", "Magic Symbols 2004";
font-size: larger;
}
.card .flavor-text {
font-style: italic;
}
.card .card-number {
color: rgb(128,128,128);
font-size: smaller;
}
.card {
margin-top: 1.1em;
min-height: 100px;
margin-left: 90px;
position: relative;
}
.card .image {
height: 100px;
position: absolute;
left: -85px;
top: 3px;
border: none;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment