vendor/emmet.js
function(syntax, name, memo) {
			if (!syntax || !name)
				return null;
			
			memo = memo || [];
			
			var names = [name];
			// create automatic aliases to properties with colons,
			// e.g. pos-a == pos:a
			if (~name.indexOf('-'))
				names.push(name.replace(/\-/g, ':'));
			
			var data = this.getSection(syntax), matchedItem = null;
			_.find(['snippets', 'abbreviations'], function(sectionName) {
				var data = this.getSection(syntax, sectionName);
				if (data) {
					return _.find(names, function(n) {
						if (data[n])
							return matchedItem = parseItem(n, data[n], sectionName);
					});
				}
			}, this);
			
			memo.push(syntax);
			if (!matchedItem && data['extends'] && !_.include(memo, data['extends'])) {
				// try to find item in parent syntax section
				return this.findSnippet(data['extends'], name, memo);
			}
			
			return matchedItem;
		}
function(syntax, name, memo) {
			if (!syntax || !name)
				return null;
			
			memo = memo || [];
			
			var names = [name];
			// create automatic aliases to properties with colons,
			// e.g. pos-a == pos:a
			if (~name.indexOf('-'))
				names.push(name.replace(/\-/g, ':'));
			
			var data = this.getSection(syntax), matchedItem = null;
			_.find(['snippets', 'abbreviations'], function(sectionName) {
				var data = this.getSection(syntax, sectionName);
				if (data) {
					return _.find(names, function(n) {
						if (data[n])
							return matchedItem = parseItem(n, data[n], sectionName);
					});
				}
			}, this);
			
			memo.push(syntax);
			if (!matchedItem && data['extends'] && !_.include(memo, data['extends'])) {
				// try to find item in parent syntax section
				return this.findSnippet(data['extends'], name, memo);
			}
			
			return matchedItem;
		}
function ( syntax , name , memo ) { if ( ! syntax || ! name ) return null ; memo = memo || [ ] ; var names = [ name ] ; // create automatic aliases to properties with colons, // e.g. pos-a == pos:a if ( ~ name . indexOf ( '-' ) ) names . push ( name . replace ( / \- / g , ':' ) ) ; var data = this . getSection ( syntax ) , matchedItem = null ; _ . find ( [ 'snippets' , 'abbreviations' ] , function ( sectionName ) { var data = this . getSection ( syntax , sectionName ) ; if ( data ) { return _ . find ( names , function ( n ) { if ( data [ n ] ) return matchedItem = parseItem ( n , data [ n ] , sectionName ) ; } ) ; } } , this ) ; memo . push ( syntax ) ; if ( ! matchedItem && data [ 'extends' ] && ! _ . include ( memo , data [ 'extends' ] ) ) { // try to find item in parent syntax section return this . findSnippet ( data [ 'extends' ] , name , memo ) ; } return matchedItem ; }
Recursively searches for a snippet definition inside syntax section.
Definition is searched inside `snippets` and `abbreviations`
subsections
@param {String} syntax Top-level section name (syntax)
@param {String} name Snippet name
@returns {Object}
Recursively searches for a snippet definition inside syntax section . Definition is searched inside snippets and abbreviations subsections