@uiwwsw/hangulscript 0.0.0-stage → 0.5.0
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/LANGUAGE.md +107 -0
- package/LICENSE +21 -0
- package/README.md +315 -2
- package/dist/cli.js +80 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +181 -0
- package/dist/sentences.js +103 -0
- package/dist/transformer.d.ts +2 -0
- package/dist/transformer.js +338 -0
- package/dist/ui.js +49 -0
- package/dist/vite.d.ts +6 -0
- package/dist/vite.js +22 -0
- package/examples/calculator-ui.hgs +19 -0
- package/examples/calculator.hgs +18 -0
- package/examples/discount-ui.hgs +11 -0
- package/examples/discount.hgs +9 -0
- package/examples/hello.hgs +21 -0
- package/examples/math-library.hgs +4 -0
- package/examples/scores.hgs +9 -0
- package/examples/statistics-ui.hgs +12 -0
- package/examples/statistics.hgs +10 -0
- package/examples/text-ui.hgs +11 -0
- package/examples/text.hgs +9 -0
- package/package.json +65 -4
package/dist/vite.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { compileSource } from './transformer.js';
|
|
3
|
+
|
|
4
|
+
/** Build-time .hgs imports for Vite projects, including React and Vue. */
|
|
5
|
+
export default function hangulscript() {
|
|
6
|
+
return {
|
|
7
|
+
name: 'hangulscript',
|
|
8
|
+
enforce: 'pre',
|
|
9
|
+
transform(source, id) {
|
|
10
|
+
if (!/\.hgs$/.test(id.split('?')[0]) || /[?&](?:raw|url)(?:[=&]|$)/.test(id)) return null;
|
|
11
|
+
const compiled = compileSource(source);
|
|
12
|
+
const result = ts.transpileModule(compiled, {
|
|
13
|
+
fileName: id.replace(/\.hgs(?:\?.*)?$/, '.ts'),
|
|
14
|
+
compilerOptions: { target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.ESNext, sourceMap: false },
|
|
15
|
+
reportDiagnostics: true
|
|
16
|
+
});
|
|
17
|
+
const errors = (result.diagnostics ?? []).filter(d => d.category === ts.DiagnosticCategory.Error);
|
|
18
|
+
if (errors.length) throw new Error(errors.map(d => ts.flattenDiagnosticMessageText(d.messageText, '\n')).join('\n'));
|
|
19
|
+
return { code: result.outputText, map: null };
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
문장으로 시작
|
|
2
|
+
첫째는 숫자입력("첫 번째 수", 24)이다
|
|
3
|
+
둘째는 숫자입력("두 번째 수", 6)이다
|
|
4
|
+
연산은 선택입력("연산", ["더하기","빼기","곱하기","나누기"], "나누기")이다
|
|
5
|
+
|
|
6
|
+
"계산하기" 버튼을 누르면:
|
|
7
|
+
계산(가, 나, 방식)를 정의한다:
|
|
8
|
+
만약 방식 == "더하기" 이라면:
|
|
9
|
+
돌려주기 가 + 나
|
|
10
|
+
아니고 방식 == "빼기" 이라면:
|
|
11
|
+
돌려주기 가 - 나
|
|
12
|
+
아니고 방식 == "곱하기" 이라면:
|
|
13
|
+
돌려주기 가 * 나
|
|
14
|
+
아니면:
|
|
15
|
+
만약 나 == 0 이라면:
|
|
16
|
+
돌려주기 "0으로 나눌 수 없습니다"
|
|
17
|
+
돌려주기 가 / 나
|
|
18
|
+
|
|
19
|
+
보여주기("계산 결과:", 계산(첫째, 둘째, 연산))
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
문장으로 시작
|
|
2
|
+
첫째는 24이다
|
|
3
|
+
둘째는 6이다
|
|
4
|
+
연산은 "나누기"이다
|
|
5
|
+
|
|
6
|
+
계산(가, 나, 방식)를 정의한다:
|
|
7
|
+
만약 방식 == "더하기" 이라면:
|
|
8
|
+
돌려주기 가 + 나
|
|
9
|
+
아니고 방식 == "빼기" 이라면:
|
|
10
|
+
돌려주기 가 - 나
|
|
11
|
+
아니고 방식 == "곱하기" 이라면:
|
|
12
|
+
돌려주기 가 * 나
|
|
13
|
+
아니면:
|
|
14
|
+
만약 나 == 0 이라면:
|
|
15
|
+
돌려주기 "0으로 나눌 수 없습니다"
|
|
16
|
+
돌려주기 가 / 나
|
|
17
|
+
|
|
18
|
+
출력("계산 결과:", 계산(첫째, 둘째, 연산))
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
문장으로 시작
|
|
2
|
+
가격은 숫자입력("가격 (원)", 32000)이다
|
|
3
|
+
할인율은 숫자입력("할인율 (%)", 15)이다
|
|
4
|
+
|
|
5
|
+
"계산하기" 버튼을 누르면:
|
|
6
|
+
만약 가격 < 0 || 할인율 < 0 || 할인율 > 100 이라면:
|
|
7
|
+
보여주기("안내", "가격은 0 이상, 할인율은 0~100 사이로 입력하세요")
|
|
8
|
+
아니면:
|
|
9
|
+
할인액은 반올림(가격 * 할인율 / 100)이다
|
|
10
|
+
보여주기("할인액:", 할인액 + " 원")
|
|
11
|
+
보여주기("결제 금액:", 가격 - 할인액 + " 원")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
상수 이름 = "철수";
|
|
2
|
+
변수 나이: 숫자 = 12;
|
|
3
|
+
|
|
4
|
+
함수 인사(사람이름: 문자열): 문자열 {
|
|
5
|
+
반환 `안녕 ${사람이름}!`;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
클래스 사람 {
|
|
9
|
+
이름: 문자열;
|
|
10
|
+
나이: 숫자;
|
|
11
|
+
생성자(이름: 문자열, 나이: 숫자) {
|
|
12
|
+
이것.이름 = 이름;
|
|
13
|
+
이것.나이 = 나이;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
함수 소개(): 문자열 {
|
|
17
|
+
반환 `${이것.이름}(${이것.나이}) 입니다`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
콘솔.출력(인사(이름));
|
package/package.json
CHANGED
|
@@ -1,6 +1,67 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uiwwsw/hangulscript",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "한글 문장으로 작성하고 JavaScript와 타입 선언으로 배포하는 실험적 프로그래밍 언어",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./browser": {
|
|
14
|
+
"types": "./dist/transformer.d.ts",
|
|
15
|
+
"import": "./dist/transformer.js"
|
|
16
|
+
},
|
|
17
|
+
"./vite": {
|
|
18
|
+
"types": "./dist/vite.d.ts",
|
|
19
|
+
"import": "./dist/vite.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"bin": {
|
|
23
|
+
"ksc": "dist/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"LANGUAGE.md",
|
|
29
|
+
"LICENSE",
|
|
30
|
+
"examples/*.hgs"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "node ./scripts/build.js",
|
|
34
|
+
"prepublishOnly": "npm test && npm run build",
|
|
35
|
+
"test": "node --test",
|
|
36
|
+
"build:site": "node scripts/build-site.js",
|
|
37
|
+
"benchmark": "node scripts/benchmark.js"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"typescript": "^5.4.0"
|
|
41
|
+
},
|
|
42
|
+
"keywords": [
|
|
43
|
+
"hangul",
|
|
44
|
+
"korean",
|
|
45
|
+
"hgs",
|
|
46
|
+
"typescript",
|
|
47
|
+
"transpiler"
|
|
48
|
+
],
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "git+https://github.com/uiwwsw/hangulscript.git"
|
|
52
|
+
},
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/uiwwsw/hangulscript/issues"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://github.com/uiwwsw/hangulscript#readme",
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=20"
|
|
59
|
+
},
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"esbuild": "^0.25.0"
|
|
65
|
+
},
|
|
66
|
+
"types": "dist/index.d.ts"
|
|
67
|
+
}
|