Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit71e2439

Browse files
committed
Add css and ts to 2
1 parent97d0134 commit71e2439

File tree

4 files changed

+135
-2
lines changed

4 files changed

+135
-2
lines changed

‎2/compiler2.re‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ let compile = (file, target) => {
1818
lettypedModules=
1919
switch (file.type_) {
2020
|FlowDefinition=>ParseFlow.parse(~name=file.name, ~source=file.source)
21+
|TypeScriptDefintion=>
22+
ParseTypescript.parse(~name=file.name, ~source=file.source)
23+
|CSS=>ParseCss.parse(~name=file.name, ~source=file.source)
2124
|_=>raise(Errors2.Unimplemented)
2225
};
2326

‎2/parseCss.re‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
openBelt;
2+
3+
exceptionMustBeRoot;
4+
5+
letselectorChildrenToBsTypeAst=
6+
fun
7+
|Csstree.ClassSelector(classSelector)=>[|
8+
DotTyped.LetDeclaration({
9+
name:DotTyped.Identifier(classSelector.name),
10+
type_:DotTyped.String,
11+
}),
12+
|]
13+
|_=>[||];
14+
15+
letselectorToBsTypeAst=
16+
fun
17+
|Csstree.Selector(selector)=>
18+
selector.children
19+
|.Array.map(selectorChildrenToBsTypeAst)
20+
|.Array.concatMany
21+
|_=>[||];
22+
23+
letselectorListToBsTypeAst=
24+
fun
25+
|Csstree.SelectorList(selectorList)=>
26+
selectorList.children
27+
|.Array.map(selectorToBsTypeAst)
28+
|.Array.concatMany
29+
|_=>[||];
30+
31+
letruleToBsTypeAst=
32+
fun
33+
|Csstree.Rule(rule)=> selectorListToBsTypeAst(rule.prelude)
34+
|_=>[||];
35+
36+
letparse= (~name, ~source)=> {
37+
letast=Csstree.parse(name, source);
38+
lettypedAst=
39+
switch (ast) {
40+
|Csstree.StyleSheet(sheet)=>
41+
DotTyped.ModuleDeclaration({
42+
name:DotTyped.Identifier(name),
43+
declarations:
44+
sheet.children|.Array.map(ruleToBsTypeAst)|.Array.concatMany,
45+
})
46+
|_=>raise(MustBeRoot)
47+
};
48+
49+
[|typedAst|];
50+
};

‎2/parseTypescript.re‎

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
exceptionCannotExtractName;
2+
3+
letgetName=
4+
fun
5+
|Typescript.FunctionDeclaration({name:Identifier({text})})=> text
6+
|Typescript.InterfaceDeclaration({name:Identifier({text})})=> text
7+
|Typescript.Parameter({name:Identifier({text})})=> text
8+
|Typescript.Identifier({text})=> text
9+
|Typescript.TypeParameter({name:Identifier({text})})=> text
10+
|_=>raise(CannotExtractName);
11+
12+
letgetNamesOfArray= names=> names|>Array.to_list|>List.map(getName);
13+
14+
letrecmemberToObjectProperty=
15+
fun
16+
|Typescript.PropertySignature(prop)=> (
17+
getName(prop.name),
18+
typescriptAstToBsType(prop.type_),
19+
switch (prop.questionToken) {
20+
|Some(_)=>true
21+
|None=>false
22+
},
23+
)
24+
|_=>raise(Not_found)
25+
andtypescriptAstToBsType=
26+
fun
27+
|Typescript.Parameter(parameter)=> typescriptAstToBsType(parameter.type_)
28+
|Typescript.NumberKeyword(_)=>BsTypeAst.Number
29+
|Typescript.StringKeyword(_)=>BsTypeAst.String
30+
|Typescript.TypeLiteral(literal)=>
31+
BsTypeAst.Object(
32+
literal.members|>Array.to_list|>List.map(memberToObjectProperty),
33+
)
34+
|Typescript.TypeReference(typeRef)=>
35+
BsTypeAst.Named([], getName(typeRef.typeName),None)
36+
|_=>BsTypeAst.Any;
37+
38+
letrectypescriptAstToBsTypeAst=
39+
fun
40+
|Typescript.SourceFile(sourceFile)=>
41+
if (Array.length(sourceFile.parseDiagnostics)>0) {
42+
raise(Diagnostic.Error(Diagnostic.diagnosticOfTs(sourceFile)));
43+
}else {
44+
BsTypeAst.ModuleDecl(
45+
"\""++Genutils.normalize_name(sourceFile.fileName)++"\"",
46+
sourceFile.statements
47+
|>Array.to_list
48+
|>List.map(typescriptAstToBsTypeAst),
49+
);
50+
}
51+
|Typescript.FunctionDeclaration(func)=>
52+
BsTypeAst.FuncDecl(
53+
getName(func.name),
54+
BsTypeAst.Function({
55+
typeParams: getNamesOfArray(func.typeParameters),
56+
formalParams:
57+
func.parameters
58+
|>Array.to_list
59+
|>List.map(param=>
60+
(getName(param), typescriptAstToBsType(param))
61+
),
62+
restParam:None,
63+
returnType: typescriptAstToBsType(func.type_),
64+
}),
65+
)
66+
|Typescript.InterfaceDeclaration(interface)=>
67+
BsTypeAst.InterfaceDecl(
68+
getName(interface.name),
69+
getNamesOfArray(interface.typeParameters),
70+
BsTypeAst.Object(
71+
interface.members|>Array.to_list|>List.map(memberToObjectProperty),
72+
),
73+
)
74+
|Typescript.TypeAliasDeclaration(decl)=>
75+
BsTypeAst.TypeDecl(
76+
getName(decl.name),
77+
getNamesOfArray(decl.typeParameters),
78+
typescriptAstToBsType(decl.type_),
79+
)
80+
| _=>BsTypeAst.Noop;

‎src/cssBsType.re‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
letselectorChildrenToBsTypeAst=
22
fun
33
|Csstree.ClassSelector(classSelector)=>[
4-
BsTypeAst.VarDecl(classSelector.name,BsTypeAst.String)
4+
BsTypeAst.VarDecl(classSelector.name,BsTypeAst.String),
55
]
66
|_=>[];
77

@@ -36,6 +36,6 @@ let cssAstToBsTypeAst = fileName =>
3636
sheet.children
3737
|>Array.to_list
3838
|>List.map(ruleToBsTypeAst)
39-
|>List.flatten
39+
|>List.flatten,
4040
)
4141
|_=>BsTypeAst.Noop;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp