Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

キーにJSON5における識別子を使えるようにする #889

Open
Tracked by #888
takejohn opened this issue Dec 30, 2024 · 3 comments
Open
Tracked by #888

キーにJSON5における識別子を使えるようにする #889

takejohn opened this issue Dec 30, 2024 · 3 comments
Assignees

Comments

@takejohn
Copy link
Contributor

takejohn commented Dec 30, 2024

目的

オブジェクトリテラルのプロパティ名に予約語も書けるようにしたい

現状

Misskeyの拡張APIにおいて、Ui:C:textInput関数などの引数のプロパティにdefaultがあるが、
AiScriptがバージョン1.0.0になるとdefaultが予約語となるため、既存のコードが動かなくなってしまう懸念がある。
例えば、Misskey Playだとこういうコードが動くが、
1.0.0になるとSyntax: unexpected token: DefaultKeywordのエラーになる。

/// @ 0.19.0
Ui:render([
  Ui:C:textInput({
    default: 'text',
  })
])

解決策

オブジェクトリテラルのキー名に予約語を使えるようになる。
JSON5の識別子(=ECMAScriptにおけるIdentifierName)では、一部の非ASCII文字・$・Unicodeエスケープシーケンス・予約語も使えるため、それに準拠してみる。
JSON5Identifier: https://spec.json5.org/#prod-JSON5Identifier

@takejohn takejohn changed the title キーにを使えるようにする キーにJSON5における識別子を使えるようにする Dec 30, 2024
@FineArchs
Copy link
Member

JSON5Identifier: https://spec.json5.org/#prod-JSON5Identifier Misskeyの拡張APIにおいて、Ui:C:stringInput関数などの引数のプロパティにdefaultがあるが、 AiScriptがバージョン1.0.0になるとdefaultが予約語となるため、既存のコードが動かなくなってしまう懸念がある。

これとタイトルの

キーにJSON5における識別子を使えるようにする

の関連性がよくわからないので説明を頂いてもよろしいですか?

@takejohn
Copy link
Contributor Author

説明を追加・修正しました 🙏
(issueテンプレートが欲しくなってきたな……)

@FineArchs
Copy link
Member

だいたい理解しました。

  • オブジェクトのキーにおける予約語解禁
  • オブジェクトのキーを文字列リテラルで書く記法
  • 空白や改行などの特殊文字のエスケープ記法
  • Identifierの使用可能文字への$の追加

をしたい感じですね。賛成です。

@takejohn takejohn self-assigned this Jan 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants