diff --git a/src/part.js b/src/part.js index 52dd86b5c7b..608a0364e31 100644 --- a/src/part.js +++ b/src/part.js @@ -1,10 +1,9 @@ -import { macroName } from "./utils"; +import { macroName, units } from "./utils"; import Point from "./point"; import Path from "./path"; import Snippet from "./snippet"; import Attributes from "./attributes"; import * as hooklib from "hooks"; -import { units } from "./utils"; import { round } from "./round"; function Part() { @@ -36,7 +35,7 @@ function Part() { return this; } -Part.prototype.macroRunner = function(args) { +Part.prototype.macroClosure = function(args) { let self = this; let data = args; let method = function(key, data) { @@ -51,6 +50,15 @@ Part.prototype.macroRunner = function(args) { return method; }; +Part.prototype.debugClosure = function() { + let self = this; + let method = function(d, e, b, u, g) { + self.debug(d, e, b, u, g); + }; + + return method; +}; + /** Debug method, exposes debug hook */ Part.prototype.debug = function(data) {}; @@ -62,8 +70,13 @@ Part.prototype.getUid = function() { }; /** Returns a value formatted for units provided in settings */ -Part.prototype.units = function(value) { - return units(value, this.context.settings.units); +Part.prototype.unitsClosure = function(value) { + let self = this; + let method = function(value) { + return units(value, self.context.settings.units); + }; + + return method; }; /** Calculates the part's bounding box and sets it */ @@ -125,4 +138,31 @@ Part.prototype.copy = function(orig) { return this; }; +Part.prototype.units = function(input) { + return units(input, this.context.settings.units); +}; + +/** Returns an object with shorthand access for pattern design */ +Part.prototype.shorthand = function() { + let final = this.context.settings.mode === "draft" ? true : false; + let paperless = this.context.settings.paperless === true ? true : false; + return { + sa: this.context.settings.sa || 0, + measurements: this.context.settings.measurements || {}, + options: this.context.options || {}, + store: this.context.store, + points: this.points || {}, + paths: this.paths || {}, + snippets: this.snippets || {}, + macro: this.macroClosure(), + units: this.unitsClosure(), + Point: this.Point, + Path: this.Path, + Snippet: this.Snippet, + final, + paperless, + debug: this.debugClosure() + }; +}; + export default Part; diff --git a/src/utils.js b/src/utils.js index c583dc83c5f..fb4ae7316dd 100644 --- a/src/utils.js +++ b/src/utils.js @@ -66,28 +66,6 @@ export function beamCrossesY(from, to, y) { return beamsCross(from, to, left, right); } -/** Returns an object with shorthand access for pattern design */ -export function shorthand(part) { - let final = part.context.settings.mode === "draft" ? true : false; - let paperless = part.context.settings.paperless === true ? true : false; - return { - sa: part.context.settings.sa || 0, - measurements: part.context.settings.measurements || {}, - options: part.context.options || {}, - store: part.context.store, - points: part.points || {}, - paths: part.paths || {}, - snippets: part.snippets || {}, - macro: part.macroRunner(), - Point: part.Point, - Path: part.Path, - Snippet: part.Snippet, - final, - paperless, - debug: part.debug - }; -} - /** Convert value in mm to cm or imperial units */ export function units(value, to = "metric") { if (to === "imperial") return round(value / 25.4) + '"';