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

feat: AiScript Object Notation #897

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

kakkokari-gtyih
Copy link

What

AiScriptのオブジェクト表記法を利用したデータ交換用フォーマット「AiScript Object Notation」専用のパース関数を追加

  • トップレベルのオブジェクトはひとつしか許可されません。
  • 動的な式(関数・オブジェクトのvalueにたいする動的なバインディングなど)は許可されません。
  • 名前空間・メタデータはサポートされていません。
import { AiSON } from '@syuilo/aiscript';

const data = AiSON.parse('{key: "value"}');

Why

#888 (comment)

Additional info (optional)

雰囲気で書いているので修正は必須(要らなさそうならcloseしたり、変更が必要そうなら勝手にpushしたりして構いません。とりあえずtestを書いて一通り通ることは確認しました)

@codecov-commenter
Copy link

codecov-commenter commented Jan 5, 2025

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

Attention: Patch coverage is 96.55172% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/parser/syntaxes/aison.ts 93.93% 2 Missing ⚠️

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Files with missing lines Coverage Δ
src/index.ts 100.00% <ø> (ø)
src/interpreter/index.ts 94.44% <ø> (+8.64%) ⬆️
src/parser/aison.ts 100.00% <100.00%> (ø)
src/utils/node-to-js.ts 100.00% <100.00%> (ø)
src/parser/syntaxes/aison.ts 93.93% <93.93%> (ø)

... and 28 files with indirect coverage changes

@kakkokari-gtyih kakkokari-gtyih changed the title Feat aison feat: AiScript Object Notation Jan 5, 2025
@takejohn
Copy link
Contributor

takejohn commented Jan 5, 2025

JSON5の拡張になったらJSON5って名前でエクスポートしてもよさそう

@kakkokari-gtyih
Copy link
Author

kakkokari-gtyih commented Jan 5, 2025

stringifyが必要だけどそこまではできなかった

@kakkokari-gtyih
Copy link
Author

kakkokari-gtyih commented Jan 5, 2025

JSON5の拡張になったらJSON5って名前でエクスポートしてもよさそう

する必要があるかどうかは謎(今JSONではなくJSON5にしている理由(例: keyをクォーテーションする必要がないなど?)を満足できる状態にするだけで良い可能性はある - #888 (comment)

@takejohn
Copy link
Contributor

takejohn commented Jan 5, 2025

JSON5の拡張になったらJSON5って名前でエクスポートしてもよさそう

する必要があるかどうかは謎(今JSONではなくJSON5にしている理由(例: keyをクォーテーションする必要がないなど?)を満足できる状態にするだけで良い可能性はある - #888 (comment)

もしMisskeyでAiSONをJSON5代わりにしようとすると既存のJSON5(テーマなど)が使えなくなる可能性があるかも?

@kakkokari-gtyih
Copy link
Author

kakkokari-gtyih commented Jan 5, 2025

{
    id: '17587283-dd92-4a2c-a22c-be0637c9e22a',

    name: 'Danboard',
    author: 'syuilo',

    base: 'light',

    props: {
        accent: 'rgb(218, 141, 49)',
        bg: 'rgb(218, 212, 190)',
        fg: 'rgb(115, 108, 92)',
        panel: 'rgb(236, 232, 220)',
        renote: 'rgb(100, 152, 106)',
        link: 'rgb(100, 152, 106)',
        mention: '@accent',
        hashtag: 'rgb(100, 152, 106)',
        header: 'rgba(239, 227, 213, 0.75)',
        navBg: 'rgb(216, 206, 182)',
        inputBorder: 'rgba(0, 0, 0, 0.1)',
    },
}

こんな感じなので普通に使っている分には問題は発生しない気はする(ので無理にJSON5準拠にしなくてもいいんじゃないかしらとおもっていた)

unreleased/aison.md Outdated Show resolved Hide resolved
@syuilo
Copy link
Collaborator

syuilo commented Jan 7, 2025

1 + 1とかは正当?

@kakkokari-gtyih
Copy link
Author

1 + 1とかは正当?

許容されないはず

@syuilo
Copy link
Collaborator

syuilo commented Jan 7, 2025

ほむん

src/parser/aison.ts Outdated Show resolved Hide resolved
test/aison.ts Outdated Show resolved Hide resolved
@FineArchs
Copy link
Member

@kakkokari-gtyih マージ条件を満たしているのでそちらでマージしてもらって問題ありません。
できるだけSquash Mergeでお願いします。
問題があればこちらでマージしますので声を掛けて下さい。

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

Successfully merging this pull request may close these issues.

6 participants