{"action":"created","issue":{"url":"https://api.github.com/repos/projectfluent/fluent/issues/127","repository_url":"https://api.github.com/repos/projectfluent/fluent","labels_url":"https://api.github.com/repos/projectfluent/fluent/issues/127/labels{/name}","comments_url":"https://api.github.com/repos/projectfluent/fluent/issues/127/comments","events_url":"https://api.github.com/repos/projectfluent/fluent/issues/127/events","html_url":"https://github.com/projectfluent/fluent/issues/127","id":325845286,"node_id":"MDU6SXNzdWUzMjU4NDUyODY=","number":127,"title":"Restrict variant keys to Numbers and Identifier","user":{"login":"stasm","id":265818,"node_id":"MDQ6VXNlcjI2NTgxOA==","avatar_url":"https://avatars3.githubusercontent.com/u/265818?v=4","gravatar_id":"","url":"https://api.github.com/users/stasm","html_url":"https://github.com/stasm","followers_url":"https://api.github.com/users/stasm/followers","following_url":"https://api.github.com/users/stasm/following{/other_user}","gists_url":"https://api.github.com/users/stasm/gists{/gist_id}","starred_url":"https://api.github.com/users/stasm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stasm/subscriptions","organizations_url":"https://api.github.com/users/stasm/orgs","repos_url":"https://api.github.com/users/stasm/repos","events_url":"https://api.github.com/users/stasm/events{/privacy}","received_events_url":"https://api.github.com/users/stasm/received_events","type":"User","site_admin":false},"labels":[{"id":935130948,"node_id":"MDU6TGFiZWw5MzUxMzA5NDg=","url":"https://api.github.com/repos/projectfluent/fluent/labels/backwards%20incompatible","name":"backwards incompatible","color":"d93f0b","default":false},{"id":940788863,"node_id":"MDU6TGFiZWw5NDA3ODg4NjM=","url":"https://api.github.com/repos/projectfluent/fluent/labels/forwards%20incompatible","name":"forwards incompatible","color":"d93f0b","default":false},{"id":935123423,"node_id":"MDU6TGFiZWw5MzUxMjM0MjM=","url":"https://api.github.com/repos/projectfluent/fluent/labels/spec:%20ast","name":"spec: ast","color":"b8e530","default":false},{"id":935117063,"node_id":"MDU6TGFiZWw5MzUxMTcwNjM=","url":"https://api.github.com/repos/projectfluent/fluent/labels/spec:%20grammar","name":"spec: grammar","color":"b8e530","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2018-05-23T19:37:10Z","updated_at":"2018-08-15T13:08:11Z","closed_at":null,"author_association":"MEMBER","body":"This is related to #90, in which I'd like to relax the grammar of variant keys. I'd like to start by _restricting it_ to just Numbers and Identifiers. We can relax this later and the benefit of restricting it now is to clarify the exact rules of parsing the surrounding whitespace, as in `[____key____]`."},"comment":{"url":"https://api.github.com/repos/projectfluent/fluent/issues/comments/413192067","html_url":"https://github.com/projectfluent/fluent/issues/127#issuecomment-413192067","issue_url":"https://api.github.com/repos/projectfluent/fluent/issues/127","id":413192067,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMzE5MjA2Nw==","user":{"login":"Pike","id":43494,"node_id":"MDQ6VXNlcjQzNDk0","avatar_url":"https://avatars2.githubusercontent.com/u/43494?v=4","gravatar_id":"","url":"https://api.github.com/users/Pike","html_url":"https://github.com/Pike","followers_url":"https://api.github.com/users/Pike/followers","following_url":"https://api.github.com/users/Pike/following{/other_user}","gists_url":"https://api.github.com/users/Pike/gists{/gist_id}","starred_url":"https://api.github.com/users/Pike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Pike/subscriptions","organizations_url":"https://api.github.com/users/Pike/orgs","repos_url":"https://api.github.com/users/Pike/repos","events_url":"https://api.github.com/users/Pike/events{/privacy}","received_events_url":"https://api.github.com/users/Pike/received_events","type":"User","site_admin":false},"created_at":"2018-08-15T13:08:11Z","updated_at":"2018-08-15T13:08:11Z","author_association":"COLLABORATOR","body":"I think that this change will make fixing #90 harder. If nothing else, it'll require changes to fixtures that will make it very hard to review for correctness. It'll also require untangling the identifier, and it'll require more invasive changes in parser implementations.\r\n\r\nIt will also put baggage on #117 that that ticket shouldn't lift. Identifiers are to exchange information between the program and the localization. We're already conflating that with XML attribute names, which works both because of luck and because we borrowed some XML_Namechar productions. Adding another (VariantName) is just going to make that problem harder to solve. VariantNames do have their own problem space, as they can be external variable values, return values from globals, as well as Term attribute values.\r\n\r\nI propose to keep a dedicated AST entry for VariantName, even if it's lexically similar to what Identifier might be at some point. I'm happy to remove the multi-word part of, as I agree that's pretty ill-defined right now.\r\n\r\nAnother benefit is that checks in compare-locales and friends could be written in a forwards-compatible manner."}}
{"actor":{"display_login":"Pike"}}