Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ember Starter Kit</title>
  <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.0/normalize.css">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script src="//s3.amazonaws.com/builds.emberjs.com/canary/ember.debug.js"></script>
  <script src="//s3.amazonaws.com/builds.emberjs.com/canary/ember-template-compiler.js"></script>
</head>
<body>
  <div id='app'></div>
  <pre id="logs"></pre>
  
  <script type="text/x-handlebars" id="application">
    <div onclick={{action 'foo'}}></div>
    <my-special-input></my-special-input>
    <div data-foo={{baz (derp) lol=(derp)}} data-baz="asdf">Hi</div>
    {{foo things=(hash derp=(bar) heep=(foo))}}
    {{#foo-bar}}{{/foo-bar}}
    {{component 'foo-bar'}}
  </script>
  <script type="text/x-handlebars" id="components/foo-bar">
  
  </script>
</body>
</html>
 
/* Put your CSS here */
html, body {
    margin: 20px;
}
 
// noprotect
var App = Ember.Application.create({
  rootElement: '#app',
  LOG_RESOLVER: true
});
App.Router.map(function() {
});
App.ApplicationRoute = Ember.Route.extend({
  actions: {
    error: function(error) {
      log(error.message);
    }
  }  
});
App.FooHelper = Ember.Helper.helper(function() {});
App.BarHelper = Ember.Helper.helper(function() {});
App.BazHelper = Ember.Helper.helper(function() {});
App.DerpHelper = Ember.Helper.helper(function() {});
function DetectInvocations(options) {
  this.options = options;
  this.syntax = null; // set by HTMLBars
}
DetectInvocations.prototype.transform = function(ast) {
  var pluginContext = this;
  this.syntax.traverse(ast, {
    All: function(node) {
      log(node.type)
    },
    AttrNode: function(node) {
      debugger
    },
    MustacheStatement: processNode,
    BlockStatement: processNode,
    SubExpression: processNode
  });
  return ast;
};
function processNode(node) {
  var renderable = node.path.original;
  log(node.type, renderable);
  processNodeForStaticComponentHelper(node);
}
function processNodeForStaticComponentHelper(node) {
  if (node.path.original !== 'component') {
    return;
  }
  
  var componentName = node.params[0];
  if (componentName.type === 'StringLiteral') {
    log(node.type, componentName.value);
  }
}
Ember.HTMLBars.registerPlugin('ast', DetectInvocations);
// vendor stuff
// copied from emberjs/ember.js packages/ember-template-compiler/lib/system/calculate-location-display.js
function calculateLocationDisplay(moduleName, _loc) {
  let loc = _loc || {};
  let { column, line } = loc.start || {};
  let moduleInfo = '';
  if (moduleName) {
    moduleInfo +=  `'${moduleName}'`;
  }
  if (line !== undefined && column !== undefined) {
    if (moduleName) {
      // only prepend @ if the moduleName was present
      moduleInfo += '@ ';
    }
    moduleInfo += `L${line}:C${column}`;
  }
  if (moduleInfo) {
    moduleInfo = `(${moduleInfo}) `;
  }
  return moduleInfo;
}
//Ember.onerror = function(error) {
//  log(error.stack);
//};
function log() {
  var msg = [].slice.call(arguments).join(' ');
  logs.insertBefore(document.createTextNode("\n" + msg), logs.firstChild);
}
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
rwjbluepro
0viewers