User:Monster Domosed/common.js: Difference between revisions

Jump to navigation Jump to search
No edit summary
No edit summary
Line 6: Line 6:
var R = '}' + '}';
var R = '}' + '}';


// ---- CONFIG ---------------------------------------------------------
var GAME_MODE_SECTIONS = [ 'Street Brawl' ];
var GAME_MODE_SECTIONS = [ 'Street Brawl' ];


Line 59: Line 58:


} else if ( current !== null ) {
} else if ( current !== null ) {
current += ' ' + stripped;
current += ' ' + stripped;
}
}
Line 104: Line 102:
}
}


function formatBody( text, heroes, abilities, items ) {
function formatBody( text, heroes, abilities, items, usedHeroes, usedAbilities, usedItems ) {


var protectedTokens = [];
var protectedTokens = [];
Line 128: Line 126:


text = text.replace( pattern, function () {
text = text.replace( pattern, function () {
if ( template.indexOf( 'HeroIcon' ) !== -1 ) usedHeroes.add( term );
if ( template.indexOf( 'ItemIcon' ) !== -1 ) usedItems.add( term );
if ( template.indexOf( 'AbilityIcon' ) !== -1 ) usedAbilities.add( term );
return protect(
return protect(
template.replace( '%s', term )
template.replace( '%s', term )
Line 159: Line 162:
var itemSections = {}, itemOrder = [];
var itemSections = {}, itemOrder = [];
var heroSections = {}, heroOrder = [];
var heroSections = {}, heroOrder = [];
var usedHeroes = new Set();
var usedItems = new Set();
var usedAbilities = new Set();


entries.forEach( function ( entry ) {
entries.forEach( function ( entry ) {
Line 165: Line 172:
var kind = c[ 0 ];
var kind = c[ 0 ];
var name = c[ 1 ];
var name = c[ 1 ];
var body = formatBody( c[ 2 ], heroes, abilities, items );
 
var body = formatBody(
c[ 2 ],
heroes,
abilities,
items,
usedHeroes,
usedAbilities,
usedItems
);


if ( kind === 'general' ) {
if ( kind === 'general' ) {
general.push( body );
general.push( body );
} else if ( kind === 'mode' ) {
} else if ( kind === 'mode' ) {
if ( !modes[ name ] ) {
if ( !modes[ name ] ) {
modes[ name ] = [];
modes[ name ] = [];
modeOrder.push( name );
modeOrder.push( name );
}
}
modes[ name ].push( body );
modes[ name ].push( body );
} else if ( kind === 'item' ) {
} else if ( kind === 'item' ) {
if ( !itemSections[ name ] ) {
if ( !itemSections[ name ] ) {
itemSections[ name ] = [];
itemSections[ name ] = [];
itemOrder.push( name );
itemOrder.push( name );
}
}
itemSections[ name ].push( body );
itemSections[ name ].push( body );
} else if ( kind === 'hero' ) {
} else if ( kind === 'hero' ) {
if ( !heroSections[ name ] ) {
if ( !heroSections[ name ] ) {
heroSections[ name ] = [];
heroSections[ name ] = [];
heroOrder.push( name );
heroOrder.push( name );
}
}
heroSections[ name ].push( body );
heroSections[ name ].push( body );
}
}
Line 238: Line 263:
}
}


return out.join( '\n' ).trim() + '\n';
return {
text: out.join( '\n' ).trim() + '\n',
stats: {
heroes: usedHeroes.size,
abilities: usedAbilities.size,
items: usedItems.size
}
};
}
}


Line 302: Line 334:
);
);


outputWidget.setValue( result );
outputWidget.setValue( result.text );


status.setLabel(
status.setLabel(
'Done: ' + entries.length +
'Done: ' + entries.length +
' entries; ' +
' entries | ' +
heroes.length + ' heroes; ' +
result.stats.heroes + ' heroes | ' +
abilities.length + ' abilities; ' +
result.stats.abilities + ' abilities | ' +
items.length + ' items.'
result.stats.items + ' items'
);
);


Line 334: Line 366:


}() );
}() );