{ "id": "101248", "key": "ALOY-272", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [ { "id": "14771", "description": "Alloy 0.3.5", "name": "Alloy 0.3.5", "archived": false, "released": true, "releaseDate": "2013-01-18" }, { "id": "14871", "description": "2013 Sprint 02", "name": "2013 Sprint 02", "archived": true, "released": true, "releaseDate": "2013-01-28" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2013-01-08T16:29:22.000+0000", "created": "2012-09-15T09:10:25.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "GA-candidate", "notable" ], "versions": [ { "id": "14177", "description": "2012 Sprint 20", "name": "2012 Sprint 20", "archived": true, "released": true, "releaseDate": "2012-10-08" } ], "issuelinks": [ { "id": "22844", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "outwardIssue": { "id": "105059", "key": "TISTUD-2789", "fields": { "summary": "Create a TSS lexer", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "22845", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "outwardIssue": { "id": "105060", "key": "TISTUD-2790", "fields": { "summary": "Create a TSS parser", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "23215", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "103870", "key": "ALOY-343", "fields": { "summary": "Facilitate Alloy code completion in Studio", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } }, { "id": "24331", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "107619", "key": "ALOY-452", "fields": { "summary": "Remove expr() syntax from TSS files, replace with Alloy namespace access", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "21017", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "100914", "key": "ALOY-252", "fields": { "summary": "Make tss file commas between items optional", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "23717", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "104952", "key": "ALOY-389", "fields": { "summary": "TiStudio code completion for Alloy style files (TSS)", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "24713", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "108124", "key": "ALOY-474", "fields": { "summary": "TSS: allow extra commas in parser", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": null, "updated": "2018-03-07T22:25:33.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "12326", "name": "XML", "description": "View XML and parsing" } ], "description": "h2. description\r\n\r\nOur current parsers rely on the style being able to be parsed by the uglifyjs AST parser. Removing the commas breaks this first initial step before we pass it to the JSON parser. It shows us a larger problem in that we should probably have a complete parsing expression grammar for TSS files. This will allow us to account for more than just commas, but also comments and things like that.\r\n\r\nWe should attempt to use [pegjs|http://pegjs.majda.cz/] to create the grammar as it can then be run through Alloy's node scripts. After that it can be incorporated into Alloy, replacing the current method of using the uglifyjs AST parsing, followed by JSON.parse. \r\n\r\nh2. notes\r\n\r\n* We may need to drop {{expr()}} syntax to keep the grammar from needing to understand all of Javascript as well, which is not a small grammar as you might imagine. I think dropping expr() is fine as it was a catch-all before we had device queries and will be made further obsolete with the introduction of dynamic styles in ALOY-210.\r\n* Grammar will allow us to add comments, which we can't do with the current method.\r\n* This will make our styles more flexibile in the future if we need further changes", "attachment": [], "flagged": false, "summary": "Grammar for TSS files", "creator": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "219144", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Initial grammar here: https://github.com/appcelerator/alloy/blob/master/Alloy/grammar/tss.pegjs", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-09-15T09:12:40.000+0000", "updated": "2012-09-15T09:12:40.000+0000" }, { "id": "233629", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Grammar-based parser now being used for TSS parsing. All unit tests are passing. Additionally the Codestrong app also parses all of its styles correctly.", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-01-08T16:29:22.000+0000", "updated": "2013-01-08T16:29:22.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }