From e612cedf8dba5d02bb572c8957d32679ea7adcd3 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Wed, 21 Jan 2015 15:05:19 -0800 Subject: [PATCH] Fix scripts and tests * Fix the reformat script to work with recent changes * Fix the convert-nei-dump script to remove leading and trailing '_' * Fix various broken tests --- scripts/convert-nei-dump | 8 +++++++- scripts/reformat | 3 ++- src/scripts/constants.coffee | 8 +++++++- .../controllers/mod_page_controller.coffee | 15 ++++++++------- .../command_parser_version_base.coffee | 6 ++++-- .../parser_versions/mod_version_parser_v1.coffee | 16 ++++++++-------- src/scripts/models/versioned_parser_base.coffee | 1 - test/crafting_plan.test.coffee | 2 +- test/mod.test.coffee | 6 +++--- test/mod_pack.test.coffee | 12 ++++++------ 10 files changed, 46 insertions(+), 31 deletions(-) diff --git a/scripts/convert-nei-dump b/scripts/convert-nei-dump index ede67a2ec..86deee178 100755 --- a/scripts/convert-nei-dump +++ b/scripts/convert-nei-dump @@ -38,7 +38,13 @@ echo "" >> $DATA_FILE mkdir -p $TARGET_DIR/images ls $SOURCE_DIR/itempanel_icons | while read FILE; do ITEM_NAME="$(echo $FILE | sed 's/.png//')" - TARGET_FILE="$(echo $ITEM_NAME | sed 's/[^a-zA-Z0-9]/_/g' | sed 's/__*/_/g' | tr '[A-Z]' '[a-z]').png" + TARGET_FILE="$(echo $ITEM_NAME \ + | sed 's/[^a-zA-Z0-9]/_/g' \ + | sed 's/__*/_/g' \ + | sed 's/^_//' \ + | sed 's/_$//' \ + | tr '[A-Z]' '[a-z]' \ + ).png" cp "$SOURCE_DIR/itempanel_icons/$FILE" "$TARGET_DIR/images/$TARGET_FILE" echo "item: $ITEM_NAME" >> $DATA_FILE echo "" >> $DATA_FILE diff --git a/scripts/reformat b/scripts/reformat index 7ea185f92..53029240f 100755 --- a/scripts/reformat +++ b/scripts/reformat @@ -5,6 +5,7 @@ global.Backbone = require 'backbone' fs = require 'fs' Logger = require '../src/scripts/logger' +ModVersion = require '../src/scripts/models/mod_version' ModVersionParser = require '../src/scripts/models/mod_version_parser' require '../src/scripts/underscore_mixins' @@ -38,7 +39,7 @@ global.logger = new Logger level:Logger.WARNING try text = fs.readFileSync sourceFileName, 'UTF-8' - parser = new ModVersionParser + parser = new ModVersionParser model:new ModVersion modSlug:'', version:'' modVersion = parser.parse text text = parser.unparse modVersion diff --git a/src/scripts/constants.coffee b/src/scripts/constants.coffee index 5f715125c..eb5ea1894 100644 --- a/src/scripts/constants.coffee +++ b/src/scripts/constants.coffee @@ -6,7 +6,13 @@ All rights reserved. ### # Minecraft must be first -exports.DefaultMods = [ 'minecraft', 'applied_energistics_2', 'buildcraft', 'ic2_classic' ] +exports.DefaultMods = [ + 'minecraft', + 'applied_energistics_2', + 'buildcraft', + 'ic2_classic', + 'thermal_expansion', +] exports.Duration = Duration = {} Duration.snap = 100 diff --git a/src/scripts/controllers/mod_page_controller.coffee b/src/scripts/controllers/mod_page_controller.coffee index 8f7a55b4c..6cd16d7c6 100644 --- a/src/scripts/controllers/mod_page_controller.coffee +++ b/src/scripts/controllers/mod_page_controller.coffee @@ -42,13 +42,14 @@ module.exports = class ModPageController extends BaseController recipe = item.getPrimaryRecipe() return if not recipe - controller = @_recipeControllers[controllerIndex] - if not controller? - _.delay (=> @_createRecipeController recipe), delay - delay += @_delayStep - else - controller.model = recipe - controllerIndex += 1 + item.eachRecipe (recipe)=> + controller = @_recipeControllers[controllerIndex] + if not controller? + _.delay (=> @_createRecipeController recipe), delay + delay += @_delayStep + else + controller.model = recipe + controllerIndex += 1 else @$recipes.hide duration:Duration.fast diff --git a/src/scripts/models/parser_versions/command_parser_version_base.coffee b/src/scripts/models/parser_versions/command_parser_version_base.coffee index d3634b845..acb0afa66 100644 --- a/src/scripts/models/parser_versions/command_parser_version_base.coffee +++ b/src/scripts/models/parser_versions/command_parser_version_base.coffee @@ -5,6 +5,8 @@ Copyright (c) 2015 by Redwood Labs All rights reserved. ### +StringBuilder = require '../../models/string_builder' + ######################################################################################################################## module.exports = class CommandParserVersionBase @@ -39,8 +41,8 @@ module.exports = class CommandParserVersionBase return @_model unparse: -> - builder = new StringBuilder context:@model - @_unparseModel builder, model + builder = new StringBuilder context:@_model + @_unparseModel builder, @_model return builder.toString() # Subclass Methods ############################################################################# diff --git a/src/scripts/models/parser_versions/mod_version_parser_v1.coffee b/src/scripts/models/parser_versions/mod_version_parser_v1.coffee index a568fa2ad..48257ed61 100644 --- a/src/scripts/models/parser_versions/mod_version_parser_v1.coffee +++ b/src/scripts/models/parser_versions/mod_version_parser_v1.coffee @@ -180,26 +180,26 @@ module.exports = class ModVersionParserV1 extends CommandParserVersionBase # Un-parsing Methods ########################################################################### _unparseModVersion: (builder, modVersion)-> - itemList = _.values modVersion.items - itemList.sort (a, b)-> a.compareTo b + itemList = [] + modVersion.eachItem (item)-> itemList.push item builder - .line 'schema: ', 2 - .line 'name: ', modVersion.name - .line 'version: ', modVersion.version - .onlyIf modVersion.description?, => builder.line 'description: ', modVersion.description + .line 'schema: ', 1 .line() .onlyIf itemList.length > 0, => builder.loop itemList, delimiter:'\n', onEach:(b, i)=> @_unparseItem(b, i) .outdent() _unparseItem: (builder, item)-> + recipes = [] + item.eachRecipe (recipe)-> recipes.push recipe + builder .line 'item: ', item.name .indent() .onlyIf item.isGatherable, => builder.line 'gatherable: yes' - .onlyIf item.recipes.length > 0, => - builder.loop item.recipes, delimiter:'', onEach:(b, r)=> @_unparseRecipe(b, r) + .onlyIf recipes.length > 0, => + builder.loop recipes, delimiter:'', onEach:(b, r)=> @_unparseRecipe(b, r) .outdent() _unparseRecipe: (builder, recipe)-> diff --git a/src/scripts/models/versioned_parser_base.coffee b/src/scripts/models/versioned_parser_base.coffee index aea488191..abb8d804a 100644 --- a/src/scripts/models/versioned_parser_base.coffee +++ b/src/scripts/models/versioned_parser_base.coffee @@ -32,7 +32,6 @@ module.exports = class VersionedParserBase unparse: (schema=null)-> schema ?= @_currentSchema - if not modVersion? then throw new Error 'modVersion is required' parser = @_parsers["#{schema}"] if not parser? then throw new Error "version #{schema} is not supported" diff --git a/test/crafting_plan.test.coffee b/test/crafting_plan.test.coffee index 94af06007..bd6b4600f 100644 --- a/test/crafting_plan.test.coffee +++ b/test/crafting_plan.test.coffee @@ -19,7 +19,7 @@ modPack = plan = null describe 'CraftingPlan', -> beforeEach -> - mod = new Mod name:'Minecraft' + mod = new Mod name:'Minecraft', slug:'minecraft' mod.addModVersion new ModVersion modSlug:mod.slug, version:'1.7.10' mod.activeModVersion.parse """ schema:1 diff --git a/test/mod.test.coffee b/test/mod.test.coffee index 9b11f3c05..baad339a5 100644 --- a/test/mod.test.coffee +++ b/test/mod.test.coffee @@ -15,16 +15,16 @@ mod = null describe 'Mod', -> - beforeEach -> mod = new Mod name:'Test' + beforeEach -> mod = new Mod name:'Test', slug:'test' describe 'compareTo', -> it 'lists required mods first', -> - minecraft = new Mod name:'Minecraft' + minecraft = new Mod name:'Minecraft', slug:'minecraft' mod.compareTo(minecraft).should.equal +1 minecraft.compareTo(mod).should.equal -1 it 'sorts by name second', -> - buildcraft = new Mod name:'Buildcraft' + buildcraft = new Mod name:'Buildcraft', slug:'buildcraft' mod.compareTo(buildcraft).should.equal +1 buildcraft.compareTo(mod).should.equal -1 diff --git a/test/mod_pack.test.coffee b/test/mod_pack.test.coffee index d1fb0f408..68bbb54c9 100644 --- a/test/mod_pack.test.coffee +++ b/test/mod_pack.test.coffee @@ -19,19 +19,19 @@ buildcraft = industrialCraft = minecraft = modPack = null describe 'ModPack', -> beforeEach -> - minecraft = new Mod name:'Minecraft' + minecraft = new Mod slug:'minecraft' minecraft.addModVersion new ModVersion modSlug:minecraft.slug, version:'1.7.10' minecraft.activeModVersion.addItem new Item name:'Wool' minecraft.activeModVersion.addItem new Item name:'Bed', recipes:[''] minecraft.activeModVersion.registerSlug 'iron_chestplate', 'Iron Chestplate' - buildcraft = new Mod name:'Buildcraft' + buildcraft = new Mod slug:'buildcraft' buildcraft.addModVersion new ModVersion modSlug:buildcraft.slug, version:'6.2.6' buildcraft.activeModVersion.addItem new Item name:'Stone Gear', recipes:[''] buildcraft.activeModVersion.addItem new Item name:'Bed', recipes:[''] buildcraft.activeVersion = Mod.Version.None - industrialCraft = new Mod name:'Industrial Craft' + industrialCraft = new Mod slug:'industrial_craft' industrialCraft.addModVersion new ModVersion modSlug:industrialCraft.slug, version:'2.0' industrialCraft.activeModVersion.addItem new Item name:'Resin' industrialCraft.activeModVersion.addItem new Item name:'Rubber' @@ -57,7 +57,7 @@ describe 'ModPack', -> it 'returns all data for a regular Minecraft item', -> display = modPack.findItemDisplay 'bed' display.iconUrl.should.equal '/data/minecraft/1.7.10/images/bed.png' - display.itemUrl.should.equal '/item/Bed' + display.itemUrl.should.equal '/item/bed' display.itemName.should.equal 'Bed' display.modSlug.should.equal 'minecraft' @@ -65,13 +65,13 @@ describe 'ModPack', -> buildcraft.activeVersion = '6.2.6' display = modPack.findItemDisplay 'stone_gear' display.iconUrl.should.equal '/data/buildcraft/6.2.6/images/stone_gear.png' - display.itemUrl.should.equal '/item/Stone%20Gear' + display.itemUrl.should.equal '/item/stone_gear' display.itemName.should.equal 'Stone Gear' display.modSlug.should.equal 'buildcraft' it 'assumes an unfound item is from Minecraft', -> display = modPack.findItemDisplay 'iron_chestplate' display.iconUrl.should.equal '/data/minecraft/1.7.10/images/iron_chestplate.png' - display.itemUrl.should.equal '/item/Iron%20Chestplate' + display.itemUrl.should.equal '/item/iron_chestplate' display.itemName.should.equal 'Iron Chestplate' display.modSlug.should.equal 'minecraft'