Skip to content

Commit

Permalink
minor code reorganization
Browse files Browse the repository at this point in the history
  • Loading branch information
jonschlinkert committed Jan 10, 2018
1 parent 734114e commit 13337b0
Showing 1 changed file with 13 additions and 20 deletions.
33 changes: 13 additions & 20 deletions lib/braces.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
'use strict';

var typeOf = require('kind-of');
var define = require('define-property');
var extend = require('extend-shallow');
var Snapdragon = require('snapdragon');
var compilers = require('./compilers');
var parsers = require('./parsers');
Expand All @@ -10,14 +13,16 @@ var utils = require('./utils');
*/

function Braces(options) {
this.options = utils.extend({}, options);
this.options = extend({}, options);
}

/**
* Initialize braces
*/

Braces.prototype.init = function(options) {
if (this.isInitialized) return;
this.isInitialized = true;
var opts = utils.createOptions({}, this.options, options);
this.snapdragon = this.options.snapdragon || new Snapdragon(opts);
this.compiler = this.snapdragon.compiler;
Expand All @@ -33,7 +38,7 @@ Braces.prototype.init = function(options) {
* order and unbalance braces are properly escaped.
*/

utils.define(this.snapdragon, 'parse', function(pattern, options) {
define(this.snapdragon, 'parse', function(pattern, options) {
var parsed = Snapdragon.prototype.parse.apply(this, arguments);
this.parser.ast.input = pattern;

Expand All @@ -43,34 +48,23 @@ Braces.prototype.init = function(options) {
}

function addParent(node, parent) {
utils.define(node, 'parent', parent);
define(node, 'parent', parent);
parent.nodes.push(node);
}

// add non-enumerable parser reference
utils.define(parsed, 'parser', this.parser);
define(parsed, 'parser', this.parser);
return parsed;
});
};

/**
* Lazily initialize braces
*/

Braces.prototype.lazyInit = function(options) {
if (!this.isInitialized) {
this.isInitialized = true;
this.init(options);
}
};

/**
* Decorate `.parse` method
*/

Braces.prototype.parse = function(ast, options) {
if (utils.isObject(ast) && ast.nodes) return ast;
this.lazyInit(options);
if (typeOf(ast) === 'object' && ast.nodes) return ast;
this.init(options);
return this.snapdragon.parse(ast, options);
};

Expand All @@ -82,10 +76,9 @@ Braces.prototype.compile = function(ast, options) {
if (typeof ast === 'string') {
ast = this.parse(ast, options);
} else {
this.lazyInit(options);
this.init(options);
}
var res = this.snapdragon.compile(ast, options);
return res;
return this.snapdragon.compile(ast, options);
};

/**
Expand Down

0 comments on commit 13337b0

Please sign in to comment.