<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?action=history&amp;feed=atom&amp;title=Module%3AHeroDataParser%2Fdoc</id>
	<title>Module:HeroDataParser/doc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?action=history&amp;feed=atom&amp;title=Module%3AHeroDataParser%2Fdoc"/>
	<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:HeroDataParser/doc&amp;action=history"/>
	<updated>2026-09-19T21:25:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:HeroDataParser/doc&amp;diff=3923&amp;oldid=prev</id>
		<title>76561198112554831 at 16:13, 30 October 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:HeroDataParser/doc&amp;diff=3923&amp;oldid=prev"/>
		<updated>2025-10-30T16:13:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:13, 30 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= HeroDataParser Module Documentation =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= HeroDataParser Module Documentation =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This module provides accessors for &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;hero data&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;stored in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`&lt;/del&gt;Data:HeroData.json&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`&lt;/del&gt;.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This module provides accessors for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;hero data&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; &lt;/ins&gt;stored in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;Data:HeroData.json&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It allows retrieving hero class, specialty, starting skills, spells, and generating wikitext lists or army icons.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It allows retrieving hero class, specialty, starting skills, spells, and generating wikitext lists or army icons.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Data is &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;cached on first access&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;for improved performance.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Data is &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;cached on first access&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; &lt;/ins&gt;for improved performance.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Functions ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Functions ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key HOMM_:diff:1.41:old-3920:rev-3923:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>76561198112554831</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:HeroDataParser/doc&amp;diff=3920&amp;oldid=prev</id>
		<title>76561198112554831: Created page with &quot;= HeroDataParser Module Documentation =  This module provides accessors for **hero data** stored in `Data:HeroData.json`.   It allows retrieving hero class, specialty, starting skills, spells, and generating wikitext lists or army icons.  Data is **cached on first access** for improved performance.  == Functions ==  === getClass(frame) === Retrieves the class of a hero.  ;Usage &lt;pre&gt;{{#invoke:HeroDataParser|getClass|HeroName}}&lt;/pre&gt;  ;Parameters * frame.args[1] – strin...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:HeroDataParser/doc&amp;diff=3920&amp;oldid=prev"/>
		<updated>2025-10-30T16:12:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= HeroDataParser Module Documentation =  This module provides accessors for **hero data** stored in `Data:HeroData.json`.   It allows retrieving hero class, specialty, starting skills, spells, and generating wikitext lists or army icons.  Data is **cached on first access** for improved performance.  == Functions ==  === getClass(frame) === Retrieves the class of a hero.  ;Usage &amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getClass|HeroName}}&amp;lt;/pre&amp;gt;  ;Parameters * frame.args[1] – strin...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= HeroDataParser Module Documentation =&lt;br /&gt;
&lt;br /&gt;
This module provides accessors for **hero data** stored in `Data:HeroData.json`.  &lt;br /&gt;
It allows retrieving hero class, specialty, starting skills, spells, and generating wikitext lists or army icons.&lt;br /&gt;
&lt;br /&gt;
Data is **cached on first access** for improved performance.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
=== getClass(frame) ===&lt;br /&gt;
Retrieves the class of a hero.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getClass|HeroName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: hero name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* string: hero&amp;#039;s class, or empty string if not found&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getSpecialty(frame) ===&lt;br /&gt;
Retrieves the specialty of a hero.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getSpecialty|HeroName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: hero name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* string: hero&amp;#039;s specialty, or empty string if not found&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getSkill1(frame) ===&lt;br /&gt;
Retrieves the first starting skill of a hero.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getSkill1|HeroName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: hero name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* string: name of the first starting skill, or nil if none&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getSkill2(frame) ===&lt;br /&gt;
Retrieves the second starting skill of a hero.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getSkill2|HeroName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: hero name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* string: name of the second starting skill, or nil if none&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getSpell(frame) ===&lt;br /&gt;
Retrieves the spell of a hero.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getSpell|HeroName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: hero name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* string: hero&amp;#039;s spell, or nil if none&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getFactionHeroes(frame) ===&lt;br /&gt;
Generates a list of heroes belonging to a faction using `{{HeroTableLine}}`.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getFactionHeroes|FactionName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: faction name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* wikitext: list of heroes in the faction&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getClassHeroes(frame) ===&lt;br /&gt;
Generates a list of heroes of a specific class using `{{HeroTableLine}}`.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getClassHeroes|ClassName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: class name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* wikitext: list of heroes in the class&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== getStartingArmyIcons(frame) ===&lt;br /&gt;
Generates HTML displaying a hero&amp;#039;s starting army icons with unit count.&lt;br /&gt;
&lt;br /&gt;
;Usage&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:HeroDataParser|getStartingArmyIcons|HeroName}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
* frame.args[1] – string: hero name  &lt;br /&gt;
&lt;br /&gt;
;Returns&lt;br /&gt;
* HTML: icons of the hero&amp;#039;s starting army with unit names and counts&lt;br /&gt;
* Empty string if hero or army data is not available&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Internal Functions ==&lt;br /&gt;
* getHeroData() – Loads and caches the hero JSON data from `Data:HeroData.json`.  &lt;br /&gt;
* findHero(heroName) – Finds and returns the hero table by name.&lt;/div&gt;</summary>
		<author><name>76561198112554831</name></author>
	</entry>
</feed>