{"action":"opened","issue":{"url":"https://api.github.com/repos/refractproject/minim/issues/26","labels_url":"https://api.github.com/repos/refractproject/minim/issues/26/labels{/name}","comments_url":"https://api.github.com/repos/refractproject/minim/issues/26/comments","events_url":"https://api.github.com/repos/refractproject/minim/issues/26/events","html_url":"https://github.com/refractproject/minim/issues/26","id":78616320,"number":26,"title":"Support MSON inheritance","user":{"login":"danielgtaylor","id":106826,"avatar_url":"https://avatars.githubusercontent.com/u/106826?v=3","gravatar_id":"","url":"https://api.github.com/users/danielgtaylor","html_url":"https://github.com/danielgtaylor","followers_url":"https://api.github.com/users/danielgtaylor/followers","following_url":"https://api.github.com/users/danielgtaylor/following{/other_user}","gists_url":"https://api.github.com/users/danielgtaylor/gists{/gist_id}","starred_url":"https://api.github.com/users/danielgtaylor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielgtaylor/subscriptions","organizations_url":"https://api.github.com/users/danielgtaylor/orgs","repos_url":"https://api.github.com/users/danielgtaylor/repos","events_url":"https://api.github.com/users/danielgtaylor/events{/privacy}","received_events_url":"https://api.github.com/users/danielgtaylor/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-05-20T17:25:27Z","updated_at":"2015-05-20T17:25:27Z","closed_at":null,"body":"Right now this won't behave as expected. Think of the MSON which defines one type with is an object, then another which inherits from it:\r\n\r\n+ A (object)\r\n+ B (A)\r\n  + C: `test`\r\n\r\nWithout expansion/preprocessing it's likely it will get expanded to something like this:\r\n\r\n```js\r\n['object', {name: 'Data types'}, {}, [\r\n  ['object', {name: 'A'}, {}, []],\r\n  ['A', {name: 'B'}, {}, [\r\n    ['string', {name: 'C'}, {}, 'test']\r\n  ]]\r\n]\r\n```\r\n\r\nIn the above example we'll get an `ElementType` for `B` instead of `ObjectType` because there is no registered type for `A`. That means that `B.content` will be the raw content above instead of proper element instances. The solution may be to create some kind of lookup tree for the base type or some kind of preprocessing loop. Ideas?"}}