From 9b682fcef909400761d3941b43b2788b0f912a17 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 20 Aug 2009 15:46:58 +0100 Subject: [PATCH] WIP chart parser --- yarrg/test-yppedia-chart | 579 +++++++++++++++++++++++++++++++++++++ yarrg/yppedia-chart-parser | 68 +++++ 2 files changed, 647 insertions(+) create mode 100644 yarrg/test-yppedia-chart create mode 100755 yarrg/yppedia-chart-parser diff --git a/yarrg/test-yppedia-chart b/yarrg/test-yppedia-chart new file mode 100644 index 0000000..08c3fbf --- /dev/null +++ b/yarrg/test-yppedia-chart @@ -0,0 +1,579 @@ +
+{{Chart head}} + +{{Chart label|23|6|[[Image:Ruby.png]]'''''[[Ruby Archipelago (Midnight)|Ruby Archipelago]]'''''}} + +{{Chart island icon|18|1|Olivia Isle|Midnight|out|sincosite, tellurium, sugar cane, lily of the valley}} +{{Chart island icon|25|4|Cranberry Island|Midnight|lg_col|hemp, wood}} +{{Chart island icon|23|2|Midsummer|Midnight|med_col|nettle, hemp}} +{{Chart island icon|25|4|Cranberry Island|Midnight|lg_col|hemp, wood}} +{{Chart island icon|22|7|Eta Island|Midnight|lg_col|wood}} +{{Chart island icon|17|6|Lynx Island|Midnight|med|chalcocite, papagoite, stone}} +{{Chart island icon|18|11|Islay of Luthien|Midnight|lg_col|sugar cane, iron, elderberries, serandite}} +{{Chart island icon|27|12|Jorvik Island|Midnight|lg_col|wood, stone, cowslip}} + +{{Chart league|18|1|-|indianred}} +{{Chart league|20|1|\|indianred}} +{{Chart league|21|2|-|indianred}} + +{{Chart league solid|24|3|\|indianred}} +{{Chart league solid|23|2|\|indianred}} + +{{Chart league solid|24|4|/|indianred}} +{{Chart league solid|23|5|/|indianred}} +{{Chart league solid|22|6|/|indianred}} + +{{Chart league solid|17|6|-|firebrick}} +{{Chart league solid|19|6|\|firebrick}} +{{Chart league solid|20|7|-|firebrick}} + +{{Chart league|17|1|/|firebrick}} +{{Chart league|17|2|\|firebrick}} +{{Chart league|17|3|/|firebrick}} +{{Chart league|17|4|\|firebrick}} +{{Chart league|17|5|/|firebrick}} + +{{Chart league|16|6|/|firebrick}} +{{Chart league|16|7|\|firebrick}} +{{Chart league|16|8|/|firebrick}} +{{Chart league|16|9|\|firebrick}} +{{Chart league|17|10|\|firebrick}} + +{{Chart league solid|18|10|/|indianred}} +{{Chart league solid|19|9|/|indianred}} +{{Chart league solid|20|8|/|indianred}} +{{Chart league solid|21|7|/|indianred}} + +{{Chart league solid|18|11|-|firebrick}} +{{Chart league solid|20|11|-|firebrick}} +{{Chart league solid|22|11|-|firebrick}} +{{Chart league solid|24|11|\|firebrick}} +{{Chart league solid|25|12|-|firebrick}} + +{{chart league solid|22|7|\|indianred}} +{{chart league solid|23|8|\|indianred}} +{{chart league solid|24|9|\|indianred}} +{{chart league solid|25|10|\|indianred}} +{{chart league solid|26|11|\|indianred}} + +{{Chart league|29|12|o|gray}} +{{chart league|26|13|o|gray}} +{{Chart league|28|11|o|gray}} + + +{{Chart league|27|12|\|gold}} +{{Chart league|28|13|\|gold}} +{{Chart league|29|14|\|gold}} +{{Chart league|30|15|\|gold}} +{{Chart league|31|16|\|gold}} +{{Chart league|32|17|\|gold}} + +{{Chart league|17|11|/|gold}} +{{Chart league|17|12|\|gold}} +{{Chart league|17|13|/|gold}} +{{Chart league|17|14|\|gold}} +{{Chart league|17|15|/|gold}} +{{Chart league|16|16|/|gold}} +{{Chart league|15|17|/|gold}} +{{Chart league|14|18|/|gold}} +{{Chart league|13|19|/|gold}} +{{Chart league|12|20|/|gold}} + + +{{Chart label|0|17|[[Image:Pearl.png]]'''''[[Pearl Archipelago (Midnight)|Pearl Archipelago]]'''''}} + +{{Chart island icon|6|23|Zeta Island|Midnight|lg_col|wood, old man's beard, weld, tellurium}} +{{Chart island icon|1|26|Tadpole Isle|Midnight|out|hemp, pokeweed berries}} +{{Chart island icon|2|19|Cleopatra's Pearls|Midnight|med_col|sugar cane, elderberries, cowslip, chalcocite}} +{{Chart island icon|10|25|Ostreum Island|Midnight|med_col|iron, iris root}} +{{Chart island icon|7|18|O'Reilly Island|Midnight|out|butterfly weed, stone, and masuyite}} +{{Chart island icon|6|29|Frond Island|Midnight|out_col|hemp, pokeweed berries, butterfly weed, leushite}} +{{Chart island icon|12|21|Nuptial Island|Midnight|out|lily of the valley}} + +{{Chart league solid|11|21|/|blue}} +{{Chart league solid|9|22|-|blue}} +{{Chart league solid|8|22|/|blue}} +{{Chart league solid|6|23|-|blue}} + +{{Chart league solid|1|25|/|blue}} +{{Chart league solid|2|24|/|blue}} +{{Chart league solid|3|24|-|blue}} +{{Chart league solid|5|23|/|blue}} + +{{Chart league solid|5|22|\|turquoise}} +{{Chart league solid|4|21|\|turquoise}} +{{Chart league solid|3|20|\|turquoise}} +{{Chart league solid|2|19|\|turquoise}} + +{{Chart league solid|6|23|\|turquoise}} +{{Chart league solid|7|24|\|turquoise}} +{{Chart league solid|8|25|-|turquoise}} + +{{Chart league|1|26|\|green}} +{{Chart league|2|27|\|green}} +{{Chart league|3|28|\|green}} +{{Chart league|4|29|-|green}} + +{{Chart league solid|6|28|/|green}} +{{Chart league solid|7|27|/|green}} +{{Chart league solid|8|26|/|green}} +{{Chart league solid|9|25|/|green}} + +{{Chart league|2|19|-|orange}} +{{Chart league|4|19|-|orange}} +{{Chart league|6|18|/|orange}} + +{{Chart league|7|18|\|green}} +{{Chart league|8|19|\|green}} +{{Chart league|9|20|\|green}} +{{Chart league|10|21|-|green}} + + +{{Chart league|10|25|\|gold}} +{{Chart league|11|26|\|gold}} +{{Chart league|12|27|\|gold}} +{{Chart league|13|28|\|gold}} +{{Chart league|14|29|\|gold}} +{{Chart league|15|30|-|gold}} + + +{{Chart label|14|38|[[Image:Emerald.png|Emerald gem]]'''''[[Emerald Archipelago (Midnight)|Emerald Archipelago]]'''''}} + +{{Chart island icon|17|30|Wrasse Island|Midnight|lg_col|iron, chalcocite, pokeweed berries, lobelia}} +{{Chart island icon|18|35|Gaea Island|Midnight|lg_col|hemp, iron, sugar cane}} +{{Chart island icon|23|38|Epsilon Island|Midnight|lg_col|hemp, sugar cane, sincosite}} +{{Chart island icon|18|43|Tinga Island|Midnight|lg_col|hemp, indigo, madder, sugar cane}} +{{Chart island icon|25|44|Spring Island|Midnight|lg_col|iron, wood, tellurium}} +{{Chart island icon|27|40|Emperor Island|Midnight|med_col|stone, serandite, sugar cane}} +{{Chart island icon|26|31|Guava Island|Midnight|lg_col|weld, wood, stone}} + + +{{chart league solid|16|30|/|orange}} +{{chart league solid|16|31|\|orange}} +{{chart league solid|16|32|/|orange}} +{{chart league solid|16|33|\|orange}} +{{chart league solid|17|34|\|orange}} + +{{chart league solid|17|30|-|orange}} +{{chart league solid|19|30|-|orange}} +{{chart league solid|21|30|-|orange}} +{{chart league solid|23|30|\|orange}} +{{chart league solid|24|31|-|orange}} + +{{chart league|25|30|o|gray}} +{{chart league|28|31|o|gray}} +{{chart league|27|32|o|gray}} + +{{chart league solid|18|35|\|green}} +{{chart league solid|19|36|\|green}} +{{chart league solid|20|37|\|green}} +{{chart league solid|21|38|-|green}} + +{{chart league solid|22|38|/|green}} +{{chart league solid|21|39|/|green}} +{{chart league solid|20|40|/|green}} +{{chart league solid|19|41|/|green}} +{{chart league solid|18|42|/|green}} + +{{chart league solid|18|43|-|gold}} +{{chart league solid|20|43|-|gold}} +{{chart league solid|22|43|\|gold}} +{{chart league solid|23|44|-|gold}} + +{{chart league|24|43|o|gray}} +{{chart league|27|44|o|gray}} +{{chart league|26|45|o|gray}} + +{{chart league solid|25|43|/|green}} +{{chart league solid|26|42|/|green}} +{{chart league solid|26|41|\|green}} +{{chart league solid|26|40|/|green}} + +{{chart league solid|23|38|\|green}} +{{chart league solid|24|39|\|green}} +{{chart league solid|25|40|-|green}} + +{{chart league solid|23|37|/|green}} +{{chart league solid|24|36|/|green}} +{{chart league solid|25|35|/|green}} +{{chart league solid|25|34|\|green}} +{{chart league solid|25|33|/|green}} +{{chart league solid|25|32|\|green}} +{{chart league solid|25|31|/|green}} + + +{{chart league|26|30|/|gold}} +{{chart league|27|29|/|gold}} +{{chart league|28|28|/|gold}} +{{chart league|29|27|/|gold}} +{{chart league|30|27|-|gold}} +{{chart league|32|26|/|gold}} + + +{{Chart label|41|23|[[Image:Diamond.png]]'''''[[Diamond Archipelago (Midnight)|Diamond Archipelago]]'''''}} + +{{Chart island icon|33|18|Turtle Island|Midnight|lg_col|iron, wood, stone}} +{{Chart island icon|38|19|Papaya Island|Midnight|lg_col|hemp, wood, cowslip, lily of the valley, cubanite}} +{{Chart island icon|42|21|Byrne Island|Midnight|lg_col|sugar cane, iron, sincosite}} +{{Chart island icon|38|25|Alpha Island|Midnight|lg_col|no commodities}} +{{Chart island icon|43|26|Oyster Island|Midnight|lg_col|hemp, elderberries}} +{{Chart island icon|33|26|Cnossos Island|Midnight|lg_col|stone, tellurium, serandite}} +{{Chart island icon|37|30|Winter Solstice|Midnight|lg_col|sugar cane, hemp, stone, madder}} + +{{chart league|31|26|o|gray}} +{{chart league|34|25|o|gray}} + +{{chart league solid|33|26|\|turquoise}} +{{chart league solid|34|27|\|turquoise}} +{{chart league solid|35|28|\|turquoise}} +{{chart league solid|36|29|\|turquoise}} + +{{chart league solid|33|26|-|turquoise}} +{{chart league solid|35|26|-|turquoise}} +{{chart league solid|37|25|/|turquoise}} + +{{chart league|38|27|o|gray}} +{{chart league|37|28|o|gray}} + +{{chart league solid|32|25|\|blue}} +{{chart league solid|32|24|/|blue}} +{{chart league solid|32|23|\|blue}} +{{chart league solid|32|22|/|blue}} +{{chart league solid|32|21|\|blue}} +{{chart league solid|32|20|/|blue}} +{{chart league solid|32|19|\|blue}} +{{chart league solid|32|18|/|blue}} + +{{chart league|31|18|o|gray}} +{{chart league|34|17|o|gray}} +{{chart league|34|19|o|gray}} + +{{chart league solid|33|18|-|gold}} +{{chart league solid|35|18|\|gold}} +{{chart league solid|36|19|-|gold}} + +{{chart league solid|38|19|\|gold}} +{{chart league solid|39|20|\|gold}} +{{chart league solid|40|21|-|gold}} + +{{chart league|41|20|o|gray}} +{{chart league|44|21|o|gray}} +{{chart league|43|22|o|gray}} + +{{chart league solid|37|24|\|blue}} +{{chart league solid|36|23|\|blue}} +{{chart league solid|35|22|\|blue}} +{{chart league solid|34|21|\|blue}} +{{chart league solid|33|20|\|blue}} + +{{chart league solid|38|24|/|orange}} +{{chart league solid|39|23|/|orange}} +{{chart league solid|40|22|/|orange}} +{{chart league solid|41|21|/|orange}} + +{{chart league solid|37|29|/|turquoise}} +{{chart league solid|38|28|/|turquoise}} +{{chart league solid|39|27|/|turquoise}} +{{chart league solid|40|27|-|turquoise}} +{{chart league solid|42|26|/|turquoise}} + +{{chart league|42|25|o|gray}} +{{chart league|44|25|o|gray}} +{{chart league|45|26|o|gray}} + +{{chart league solid|38|25|-|turquoise}} +{{chart league solid|40|25|\|turquoise}} +{{chart league solid|41|26|-|turquoise}} + +{{chart league|38|18|/|gold}} +{{chart league|39|17|/|gold}} +{{chart league|40|16|/|gold}} +{{chart league|41|15|/|gold}} +{{chart league|42|14|/|gold}} +{{chart league|43|13|/|gold}} +{{chart league|43|12|\|gold}} +{{chart league|43|11|/|gold}} + +{{chart league|42|20|/|gold}} +{{chart league|43|19|/|gold}} +{{chart league|43|18|\|gold}} +{{chart league|43|17|/|gold}} +{{chart league|43|16|\|gold}} +{{chart league|43|15|/|gold}} +{{chart league|43|14|\|gold}} + + +{{chart label|45|14|[[Image:Sapphire.png]]'''''[[Sapphire Archipelago (Midnight)|Sapphire Archipelago]]'''''}} + +{{Chart island icon|49|12|Beta Island|Midnight|lg_col|yarrow, sugar cane, wood}} +{{Chart island icon|47|8|The Horseshoe Crabs|Midnight|out|leushite, papagoite, butterfly weed}} +{{Chart island icon|55|14|Iris Island|Midnight|out_col|lorandite, papagoite, iron}} +{{Chart island icon|44|11|Remora Island|Midnight|out_col|pokeweed berries, iris root}} +{{Chart island icon|57|10|Uxmal Island|Midnight|lg|sugar cane, tellurium, nettle, cowslip, stone}} +{{Chart island icon|52|9|Verdant Atoll|Midnight|out|old man's beard, madder, nettle}} +{{Chart island icon|59|16|Vernal Equinox|Midnight|med_col|sincosite, thorianite, sugar cane, hemp, broom flower}} + +{{chart league|44|10|/|gold}} +{{chart league|45|9|/|gold}} +{{chart league|46|8|/|gold}} + +{{chart league solid|44|11|-|gold}} +{{chart league solid|46|11|\|gold}} +{{chart league solid|47|12|-|gold}} + +{{chart league solid|49|11|/|gold}} +{{chart league solid|50|10|/|gold}} +{{chart league solid|51|9|/|gold}} + +{{chart league|47|8|-|green}} +{{chart league|49|8|\|green}} +{{chart league|50|9|-|green}} + +{{chart league|48|9|o|gray}} +{{chart league|47|10|o|gray}} +{{chart league|49|10|o|gray}} +{{chart league|48|11|o|gray}} +{{chart league|51|8|o|gray}} +{{chart league|53|10|o|gray}} +{{chart league|54|11|o|gray}} +{{chart league|55|12|o|gray}} +{{chart league|57|14|o|gray}} +{{chart league|58|15|o|gray}} +{{chart league|51|12|o|gray}} + +{{chart league solid|49|12|\|indianred}} +{{chart league solid|50|13|-|indianred}} +{{chart league solid|52|13|\|indianred}} +{{chart league solid|53|14|-|indianred}} + +{{chart league|55|14|\|firebrick}} +{{chart league|56|15|\|firebrick}} +{{chart league|57|16|-|firebrick}} + +{{chart league|52|9|-|firebrick}} +{{chart league|54|9|\|firebrick}} +{{chart league|55|10|-|firebrick}} + +{{chart league|56|10|/|firebrick}} +{{chart league|56|11|\|firebrick}} +{{chart league|56|12|/|firebrick}} +{{chart league|55|13|/|firebrick}} + + +{{chart league|24|44|/|gold}} +{{chart league|24|45|\|gold}} +{{chart league|25|46|\|gold}} +{{chart league|26|47|\|gold}} +{{chart league|27|48|\|gold}} +{{chart league|28|49|\|gold}} +{{chart league|29|50|\|gold}} +{{chart league|30|51|\|gold}} + + +{{Chart label|34|50|[[Image:Jet.png]] ''[[Jet Archipelago (Midnight)|Jet Archipelago]]''}} + +{{Chart island icon|31|52|Hephaestus' Forge|Midnight|lg_col|iron, tellurium}} +{{Chart island icon|31|58|Namath Island|Midnight|lg_col|sugar cane, wood, madder}} +{{Chart island icon|35|60|Rhinoceros Ridge|Midnight|out|lily of the valley, hemp, stone, lorandite}} +{{Chart island icon|37|58|Lagniappe Island|Midnight|lg_col|market: sugar cane, butterfly weed, sincosite}} +{{Chart island icon|38|53|Xi Island|Midnight|lg_col|sugar cane, stone, elderberries}} +{{Chart island icon|44|51|Chaparral Island|Midnight|out_col|wood, old man's beard, broom flower}} +{{Chart island icon|42|55|Eclipse Island|Midnight|out_col|cowslip, hemp}} +{{Chart island icon|43|58|Dugong Island|Midnight|out|pokeweed berries, iron, wood}} + +{{chart league solid|30|52|/|blue}} +{{chart league solid|30|53|\|blue}} +{{chart league solid|30|54|/|blue}} +{{chart league solid|30|55|\|blue}} +{{chart league solid|30|56|/|blue}} +{{chart league solid|30|57|\|blue}} + +{{chart league solid|31|58|\|orange}} +{{chart league solid|32|59|\|orange}} +{{chart league solid|33|60|-|orange}} + +{{chart league solid|35|59|/|orange}} +{{chart league solid|36|58|/|orange}} + +{{chart league solid|31|52|-|indianred}} +{{chart league solid|33|52|-|indianred}} +{{chart league solid|35|52|\|indianred}} +{{chart league solid|36|53|-|indianred}} + +{{chart league solid|37|57|/|green}} +{{chart league solid|37|56|\|green}} +{{chart league solid|37|55|/|green}} +{{chart league solid|37|54|\|green}} +{{chart league solid|37|53|/|green}} + +{{chart league solid|37|58|-|gold}} +{{chart league solid|39|58|-|gold}} +{{chart league solid|41|58|-|gold}} + +{{chart league solid|38|53|-|orange}} +{{chart league solid|40|52|/|orange}} +{{chart league solid|41|52|-|orange}} +{{chart league solid|43|51|/|orange}} + +{{chart league|42|57|\|gray}} +{{chart league|41|56|\|gray}} +{{chart league|41|55|/|gray}} + +{{chart league|43|52|\|gray}} +{{chart league|42|54|/|gray}} +{{chart league|43|53|/|gray}} + + +{{chart league|44|50|/|gold}} +{{chart league|45|49|/|gold}} +{{chart league|46|48|/|gold}} +{{chart league|47|47|/|gold}} +{{chart league|47|46|\|gold}} +{{chart league|47|45|/|gold}} + + +{{chart label|45|37|[[Image:Coral.png]]'''''[[Coral Archipelago (Midnight)|Coral Archipelago]]'''''}} + +{{Chart island icon|51|32|Park Island|Midnight|lg_col|lobelia, stone, wood}} +{{Chart island icon|62|33|Meke Island|Midnight|out_col|cubanite, iron, leushite, masuyite, sugar cane}} +{{Chart island icon|57|36|Angelfish Island|Midnight|out_col|hemp, serandite, tellurium}} +{{Chart island icon|53|38|Delta Island|Midnight|lg_col|sugar cane, weld}} +{{Chart island icon|47|42|Macaw Island|Midnight|out|cowslip, hemp, sassafras}} +{{Chart island icon|48|45|Monsoon Island|Midnight|med|butterfly weed, hemp, iron, papagoite}} +{{Chart island icon|54|43|Turongo Island|Midnight|out|nettle, stone, sugar cane}} +{{Chart island icon|58|45|Durian Island|Midnight|out|lorandite, old man's beard, pokeweed berries, sugar cane}} + +{{chart league|47|44|\|gray}} +{{chart league|46|43|\|gray}} +{{chart league|46|42|/|gray}} + +{{chart league|48|45|-|gray}} +{{chart league|50|44|/|gray}} +{{chart league|51|44|-|gray}} +{{chart league|53|43|/|gray}} + +{{chart league|54|43|\|gray}} +{{chart league|55|44|\|gray}} +{{chart league|56|45|-|gray}} + +{{chart league|52|45|o|gray}} +{{chart league|54|45|o|gray}} +{{chart league|56|43|o|gray}} +{{chart league|57|42|o|gray}} +{{chart league|57|44|o|gray}} + +{{chart league solid|47|41|/|green}} +{{chart league solid|48|40|/|green}} +{{chart league solid|49|39|/|green}} +{{chart league solid|50|39|-|green}} +{{chart league solid|52|38|/|green}} + +{{chart league solid|53|37|/|gray}} +{{chart league solid|54|37|-|gray}} +{{chart league solid|56|36|/|gray}} + +{{chart league|57|35|/|orange}} +{{chart league|58|34|/|orange}} +{{chart league|59|34|-|orange}} +{{chart league|61|33|/|orange}} + +{{chart league|56|37|\|green}} +{{chart league|56|38|/|green}} +{{chart league|56|39|\|green}} +{{chart league|56|40|/|green}} +{{chart league|55|41|/|green}} +{{chart league|54|42|/|green}} + +{{chart league solid|52|37|\|gray}} +{{chart league solid|51|36|\|gray}} +{{chart league solid|50|35|\|gray}} +{{chart league solid|50|34|/|gray}} +{{chart league solid|50|33|\|gray}} +{{chart league solid|50|32|/|gray}} + +{{chart league solid|51|32|\|gray}} +{{chart league solid|52|33|\|gray}} +{{chart league solid|53|34|\|gray}} +{{chart league solid|54|35|\|gray}} +{{chart league solid|55|36|-|gray}} + +{{chart league|49|32|-|gold}} +{{chart league|48|31|\|gold}} +{{chart league|47|30|\|gold}} +{{chart league|46|29|\|gold}} +{{chart league|45|28|\|gold}} +{{chart league|44|27|\|gold}} +{{chart league|43|26|\|gold}} + + +{{chart league|17|43|/|gold}} +{{chart league|15|44|-|gold}} +{{chart league|14|44|/|gold}} +{{chart league|13|45|/|gold}} +{{chart league|12|46|/|gold}} +{{chart league|11|47|/|gold}} +{{chart league|10|48|/|gold}} +{{chart league|9|49|/|gold}} + + +{{chart label|8|55|[[Image:Opal.png]]'''''[[Opal Archipelago (Midnight)|Opal Archipelago]]'''''}} + + +{{Chart island icon|2|53|Norse Island|Midnight|out|papagoite, serandite, stone}} +{{Chart island icon|2|57|Waterberry|Midnight|out|elderberries, hemp, wood}} +{{Chart island icon|3|60|Boyle Island|Midnight|out|cubanite, sugar cane}} +{{Chart island icon|8|61|Flow|Midnight|out|cowslip, stone, thorianite, yarrow}} +{{Chart island icon|9|58|Oseberg Island|Midnight|out|butterfly weed, iris root, leushite}} +{{Chart island icon|7|54|Nu Island|Midnight|lg_col|hemp, nettle, sugar cane}} +{{Chart island icon|9|50|Orca Island|Midnight|out_col|iron, tellurium}} +{{Chart island icon|12|53|Endurance Island|Midnight|lg_col|none}} + + +{{chart league solid|9|50|\|green}} +{{chart league solid|10|51|\|green}} +{{chart league solid|11|52|\|green}} + +{{chart league solid|8|50|/|green}} +{{chart league solid|8|51|\|green}} +{{chart league solid|8|52|/|green}} +{{chart league solid|7|53|/|green}} + +{{chart league|6|51|-|gray}} +{{chart league|5|51|/|gray}} +{{chart league|3|52|-|gray}} +{{chart league|2|52|/|gray}} + +{{chart league solid|2|53|-|turquoise}} +{{chart league solid|4|53|\|turquoise}} +{{chart league solid|5|54|-|turquoise}} + +{{chart league|1|53|/|gold}} +{{chart league|1|54|\|gold}} +{{chart league|1|55|/|gold}} +{{chart league|1|56|\|gold}} + +{{chart league|1|57|/|gray}} +{{chart league|1|58|\|gray}} +{{chart league|2|59|\|gray}} + +{{chart league|3|60|-|orange}} +{{chart league|5|60|\|orange}} +{{chart league|6|61|-|orange}} + +{{chart league solid|7|54|-|green}} +{{chart league solid|9|54|-|green}} +{{chart league solid|11|53|/|green}} + +{{chart league solid|6|54|/|gray}} +{{chart league solid|6|55|\|gray}} +{{chart league solid|7|56|\|gray}} +{{chart league solid|8|57|\|gray}} + +{{chart league|8|58|/|orange}} +{{chart league|8|59|\|orange}} +{{chart league|8|60|/|orange}} +
+Standalone points mark extinct routes + +[[Category:Maps|Midnight Ocean]] +[[Category:Midnight Ocean maps|*]] diff --git a/yarrg/yppedia-chart-parser b/yarrg/yppedia-chart-parser new file mode 100755 index 0000000..1a90e84 --- /dev/null +++ b/yarrg/yppedia-chart-parser @@ -0,0 +1,68 @@ +#!/usr/bin/perl + +use strict (qw(vars)); +use warnings; + +use Graph::Undirected; + +my $dists= Graph::Undirected->new(); +my $archs= Graph::Undirected->new(); +my @arch_labels; +my %islandname; + +open PO, ">/dev/null" or die $!; + +sub nn_xy ($$) { return "n$_[0]x$_[1]"; } + +sub parse_yppedia_map () { + # We don't even bother with tag soup; instead we do line-oriented parsing. + + while (<>) { + s/\<--.*--\>//g; + s/^\s*//; chomp; s/\s+$//; s/\s+/ /g; + s/\<\/?(?:b|em)\>//g; + s/\{\{Chart\ style\|[^{}]*\}\}//g; + next unless m/\{\{/; # only interested in chart template stuff + + my ($x,$y, $arch,$island,$solid,$dirn); + my $nn= sub { return nn_xy($x,$y) }; + + if (($x,$y,$arch) = + m/^\{\{ chart\ label \|(\d+)\|(\d+)\| .* + \'\[\[ [^][\']* \| (\S+)\ archipelago \]\]\'*\}\}$/xi) { + printf PO "%d,%d arch %s\n", $x,$y,$arch; + push @arch_labels, [ $x,$y,$arch ]; + } elsif (($x,$y,$island) = + m/^\{\{ chart\ island\ icon \|(\d+)\|(\d+)\| + (\S.*\S) \| .*\}\}$/xi) { + $islandname{$nn->()}= $island; + $dists->add_vertex($nn->()); + $archs->add_vertex($nn->()); + printf PO "%d,%d island %s\n", $x,$y,$island; + } elsif (($solid,$x,$y,$dirn) = + m/^\{\{ chart\ league((?:\ solid)?) \|(\d+)\|(\d+)\| + ([-\/\\o]) \| .*\}\}$/xi) { + next if $dirn eq 'o'; + + my ($bx,$by) = ($x,$y); + if ($dirn eq '-') { $bx+=2; } + elsif ($dirn eq '\\') { $bx++; $by++; } + elsif ($dirn eq '/') { $bx--; $by++; } + else { die; } + + $dists->add_edge($nn->(), nn_xy($bx,$by)); + $archs->add_edge($nn->(), nn_xy($bx,$by)) if $solid; + + printf PO "%d,%d league %s %s \n", $x,$y, + $solid?'solid':'dotted', $dirn; + } elsif ( + m/^\{\{ chart\ head \}\}$/xi + ) { + next; + } else { + warn "line $.: ignoring incomprehensible: $_\n"; + } + } +} + +parse_yppedia_map(); -- 2.30.2