nene-lang 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Nene(ネネ)は、Haskell の書き心地と JSX の見やすさを両立させる、UI 向けの関数型言語。少ない規則で書き、タグを見れば画面の形が分かる。
6
6
 
7
- > **ステータス: v0.1。** 言語仕様、コンパイラ、ランタイム、`nene` コマンド、Vite プラグイン、公式の部品集 [nene-ui](ui/README.md)、nvim 用のハイライトと言語サーバーがある。
7
+ > **ステータス: v0.1。** 言語仕様、コンパイラ、ランタイム、`nene` コマンド、Vite プラグイン、公式の部品集 [nene-lang-ui](ui/README.md)、nvim 用のハイライトと言語サーバーがある。
8
8
 
9
9
  ```haskell
10
10
  view :: Model -> Html Msg
@@ -46,7 +46,7 @@ style
46
46
  | 層 | 中身 | パッケージ |
47
47
  | --- | --- | --- |
48
48
  | 言語 | コンパイラ、ランタイム、`nene` コマンド、標準ライブラリ(ルーティング・HTTP・JSON など) | `nene-lang` |
49
- | 部品集 | ボタン・入力欄・ダイアログなど 16 の部品 | [`nene-ui`](ui/README.md) |
49
+ | 部品集 | ボタン・入力欄・ダイアログなど 16 の部品 | [`nene-lang-ui`](ui/README.md) |
50
50
 
51
51
  標準ライブラリは差し替えられない(ルーティングも HTTP も一通りだけ)。部品集は別のパッケージで、使わなくてもよい。出力には、アプリが使っている標準モジュールとランタイムの部分だけが入る。
52
52
 
@@ -90,7 +90,7 @@ my-app/
90
90
  index.html <script type="module" src="/src/Main.nn"> が入口
91
91
  src/Main.nn
92
92
  public/ 画像など。そのままの名前で配信される
93
- CLAUDE.md Claude Code 向けの Nene の書き方(nene-ui の部品も)
93
+ CLAUDE.md Claude Code 向けの Nene の書き方(nene-lang-ui の部品も)
94
94
  .claude/ .nn を編集したら型検査して、エラーを Claude に伝えるフック
95
95
  ```
96
96
 
@@ -127,7 +127,7 @@ npm run dev
127
127
 
128
128
  ### パッケージを作る
129
129
 
130
- `package.json` に `"nene": { "source": "src" }` と書いた npm パッケージは、`src/` の `.nn` を `import` で使える(`nene-ui` もこの形)。モジュール名は、ほかとぶつからないように頭を揃える(`Ui.Button` など)。同じ名前のモジュールが 2 か所にあるとエラーになる。
130
+ `package.json` に `"nene": { "source": "src" }` と書いた npm パッケージは、`src/` の `.nn` を `import` で使える(`nene-lang-ui` もこの形)。モジュール名は、ほかとぶつからないように頭を揃える(`Ui.Button` など)。同じ名前のモジュールが 2 か所にあるとエラーになる。
131
131
 
132
132
  ### 既存の Vite プロジェクトに入れる
133
133
 
@@ -187,7 +187,7 @@ npm pack # 配布するパッケージを手元で作る
187
187
  | [examples/Todo.nn](examples/Todo.nn) | elm-sample のタスク管理画面に相当するもの |
188
188
  | [examples/Gallery.nn](examples/Gallery.nn) | アルバムごとに写真が横に続くギャラリー。開いた写真は URL に入り、戻るボタンや Esc で閉じる |
189
189
  | [examples/Stopwatch.nn](examples/Stopwatch.nn) | タイマー・キーボード・ブラウザへの保存・ダークテーマを使う例 |
190
- | [examples/Showcase.nn](examples/Showcase.nn) | nene-ui の部品を一通り並べた見本 |
190
+ | [examples/Showcase.nn](examples/Showcase.nn) | nene-lang-ui の部品を一通り並べた見本 |
191
191
 
192
192
  ## 構成
193
193
 
@@ -204,7 +204,7 @@ npm pack # 配布するパッケージを手元で作る
204
204
  | `src/lib/*.nn` | 標準ライブラリ(Nene で書かれている) |
205
205
  | `runtime/runtime.js` | 仮想 DOM、レイアウトタグ、`style` ブロックの CSS の読み込み、URL、The Elm Architecture の実行 |
206
206
  | `runtime/http.js` | JSON との変換と HTTP(使うアプリにだけ入る) |
207
- | `ui/` | 公式の部品集 `nene-ui` |
207
+ | `ui/` | 公式の部品集 `nene-lang-ui` |
208
208
  | `src/css.ts` | `style` ブロックのクラス名を取り出し、ファイルごとに区別できる名前に書き換える |
209
209
  | `src/cli.ts` / `src/vite.ts` / `src/lsp.ts` | `nene` コマンド、Vite プラグイン、言語サーバー |
210
210
  | `src/report.ts` | コンパイルエラーを、該当する行と印つきで見せる |
package/build/cli.js CHANGED
@@ -160,7 +160,7 @@ function createProject(name) {
160
160
  const real = realpathSync(packageRoot);
161
161
  const local = !real.split(/[\\/]/).includes("node_modules");
162
162
  const dependency = local ? `file:${real}` : `^${version}`;
163
- const uiDependency = local ? `file:${join(real, "ui")}` : `^${version}`; // nene-ui は nene-lang と同じ版で出す
163
+ const uiDependency = local ? `file:${join(real, "ui")}` : `^${version}`; // nene-lang-ui は nene-lang と同じ版で出す
164
164
  copyTemplate(join(packageRoot, "template"), dir, { name: basename(dir), dependency, uiDependency });
165
165
  if (local)
166
166
  console.log(paint("2", `(手元の ${real} を使うプロジェクトとして作ります)\n`));
package/build/packages.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Nene のパッケージを探す。パッケージは package.json に次のように書いた npm パッケージで、
2
- // source のフォルダにモジュールを置く(nene-ui なら src/Ui/Button.nn が Ui.Button)
2
+ // source のフォルダにモジュールを置く(nene-lang-ui なら src/Ui/Button.nn が Ui.Button)
3
3
  //
4
4
  // "nene": { "source": "src" }
5
5
  //
package/docs/design.md CHANGED
@@ -100,7 +100,7 @@ Nene では、JSON との変換を型から決める。メッセージに `GotTo
100
100
 
101
101
  ルーティング、HTTP、JSON は標準ライブラリに入れ、差し替えられないようにした。React ではルーターも状態管理もスタイルの当て方も選べるが、そのぶん、プロジェクトごとに書き方が違う。Nene では、こうした土台は一通りだけにする。標準ライブラリに入れても、使っていないモジュールは出力に入らないので、アプリは重くならない。
102
102
 
103
- 見た目の好みが分かれる部品集は、別のパッケージ `nene-ui` にした。使わずに自分で部品を作ってもよい。ただし、外から足せるのは部品と関数だけで、言語の振る舞いを変える差し込み口は作らない。
103
+ 見た目の好みが分かれる部品集は、別のパッケージ `nene-lang-ui` にした。使わずに自分で部品を作ってもよい。ただし、外から足せるのは部品と関数だけで、言語の振る舞いを変える差し込み口は作らない。
104
104
 
105
105
  ## 道具
106
106
 
package/docs/guide.md CHANGED
@@ -276,7 +276,7 @@ button :: ButtonProps msg -> [Html msg] -> Html msg
276
276
 
277
277
  ### 用意された部品を使う
278
278
 
279
- ボタン・入力欄・ダイアログなどは、公式の部品集 `nene-ui` にある(`nene new` で作ったプロジェクトには入っている)。
279
+ ボタン・入力欄・ダイアログなどは、公式の部品集 `nene-lang-ui` にある(`nene new` で作ったプロジェクトには入っている)。
280
280
 
281
281
  ```haskell
282
282
  import Ui.Button (Variant(..))
@@ -289,7 +289,7 @@ import Ui.Theme (Tone(..))
289
289
  <Dialog open={model.asking} title="削除しますか?" onClose={Cancel}>…</Dialog>
290
290
  ```
291
291
 
292
- 部品の一覧と、色の変え方は `node_modules/nene-ui/README.md` にある。
292
+ 部品の一覧と、色の変え方は `node_modules/nene-lang-ui/README.md` にある。
293
293
 
294
294
  ### ファイルと部品
295
295
 
package/docs/spec.md CHANGED
@@ -38,7 +38,7 @@ import qualified Ui.Dialog as Modal
38
38
  - export の書き方は Haskell と同じ。`T(..)` で型とそのコンストラクタをすべて export する。
39
39
  - `import M` は M が export したものをすべて取り込む。`import M (a, B(..))` は指定したものだけを取り込む。
40
40
  - `import qualified M as N` は `N.x` の形でだけ使えるようにする。
41
- - `import` したモジュールは、プロジェクトのフォルダと、Nene のパッケージから探す。Nene のパッケージは、`package.json` に `"nene": { "source": "src" }` と書いた npm パッケージで、`source` のフォルダにモジュールを置く(`nene-ui` の `src/Ui/Button.nn` は `Ui.Button`)。プロジェクトの `dependencies` と `devDependencies`、そこからたどれるパッケージが対象。同じ名前のモジュールが 2 か所にあればコンパイルエラー。
41
+ - `import` したモジュールは、プロジェクトのフォルダと、Nene のパッケージから探す。Nene のパッケージは、`package.json` に `"nene": { "source": "src" }` と書いた npm パッケージで、`source` のフォルダにモジュールを置く(`nene-lang-ui` の `src/Ui/Button.nn` は `Ui.Button`)。プロジェクトの `dependencies` と `devDependencies`、そこからたどれるパッケージが対象。同じ名前のモジュールが 2 か所にあればコンパイルエラー。
42
42
  - 標準モジュール(14 章)のうち `Prelude` はつねに取り込まれている。`App` `Cmd` `Sub` `List` `Maybe` `String` `Time` `Window` `Keyboard` `Nav` `Storage` は import なしで `App.app` のように修飾名で使う。
43
43
 
44
44
  ## 2. 字句
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nene-lang",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "nene": "bin/nene.js"
@@ -37,7 +37,7 @@
37
37
  "@types/jsdom": "^21.1.7",
38
38
  "@types/node": "^22.20.5",
39
39
  "jsdom": "^25.0.1",
40
- "nene-ui": "file:./ui",
40
+ "nene-lang-ui": "file:./ui",
41
41
  "typescript": "^5.8.3"
42
42
  },
43
43
  "publishConfig": {
@@ -30,9 +30,9 @@
30
30
  - 標準モジュール(`List` `Maybe` `Result` `String` `Dict` `Json` `Http` `Storage` `Time` `Random` `Nav` `Dom` `Env` `Cmd` `Sub` `App` など)は import せず `List.head` のように修飾して使う。
31
31
  - 型クラスと演算子は自分で定義できない。`null` は無く `Maybe` を使う。パターンの漏れはエラー。
32
32
 
33
- ## 部品(nene-ui)
33
+ ## 部品(nene-lang-ui)
34
34
 
35
- ボタン・入力欄などは自分で作らず、まず `nene-ui` を使う。一覧と属性は `node_modules/nene-ui/README.md`、使い方の例は各ファイルの先頭のコメント(`node_modules/nene-ui/src/Ui/*.nn`)。
35
+ ボタン・入力欄などは自分で作らず、まず `nene-lang-ui` を使う。一覧と属性は `node_modules/nene-lang-ui/README.md`、使い方の例は各ファイルの先頭のコメント(`node_modules/nene-lang-ui/src/Ui/*.nn`)。
36
36
 
37
37
  ```haskell
38
38
  import Ui.Button (Variant(..))
@@ -9,7 +9,7 @@
9
9
  "check": "nene check"
10
10
  },
11
11
  "dependencies": {
12
- "nene-ui": "{{uiDependency}}"
12
+ "nene-lang-ui": "{{uiDependency}}"
13
13
  },
14
14
  "devDependencies": {
15
15
  "nene-lang": "{{dependency}}"
@@ -1,6 +1,6 @@
1
1
  module Main (main) where
2
2
 
3
- -- 部品は nene-ui(公式の部品集)のもの。一覧は node_modules/nene-ui/README.md
3
+ -- 部品は nene-lang-ui(公式の部品集)のもの。一覧は node_modules/nene-lang-ui/README.md
4
4
  import Ui.Button (Variant(..))
5
5
  import qualified Ui.Icon as Icon
6
6
  import Ui.IconButton
@@ -63,7 +63,7 @@ main = App.app { init = 0, update, view }
63
63
 
64
64
 
65
65
  style
66
- /* 色は nene-ui と同じ変数で決める。--primary を変えると、ボタンなどの色も変わる */
66
+ /* 色は nene-lang-ui と同じ変数で決める。--primary を変えると、ボタンなどの色も変わる */
67
67
  :root {
68
68
  --primary: light-dark(#7c5cff, #9d85ff);
69
69
  --accent: #ff6fa8;