@@ -5,6 +5,32 @@ const DEFAULT_MAIN_RS = `fn main() {
5
5
println!("Hello, world!");
6
6
}` ;
7
7
8
+ const DEFAULT_CARGO_TOML = `[package]
9
+ name = "playground"
10
+ version = "0.0.1"
11
+ authors = ["The Rust Playground"]
12
+ resolver = "2"
13
+
14
+ [profile.dev]
15
+ codegen-units = 1
16
+ incremental = false
17
+
18
+ [profile.dev.build-override]
19
+ codegen-units = 1
20
+
21
+ [profile.release]
22
+ codegen-units = 1
23
+ incremental = false
24
+
25
+ [profile.release.build-override]
26
+ codegen-units = 1
27
+
28
+ [dependencies.itertools]
29
+ package = "itertools"
30
+ version = "=0.10.5"
31
+ features = ["use_alloc", "use_std"]
32
+ `
33
+
8
34
const makeFile = ( code : string ) : File => ( {
9
35
code,
10
36
position : makePosition ( 0 , 0 ) ,
@@ -19,6 +45,14 @@ export const makeState = (code: string): State => ({
19
45
entries : { [ SINGLE_FILE_FILENAME ] : makeFile ( code ) } ,
20
46
} ) ;
21
47
48
+ // const DEFAULT: State = {
49
+ // current: 'main.rs',
50
+ // entries: {
51
+ // 'main.rs': makeFile(DEFAULT_MAIN_RS),
52
+ // 'Cargo.toml': makeFile(DEFAULT_CARGO_TOML),
53
+ // },
54
+ // };
55
+
22
56
const DEFAULT : State = makeState ( DEFAULT_MAIN_RS ) ;
23
57
24
58
export type State = {
@@ -79,6 +113,33 @@ export default function files(state = DEFAULT, action: Action): State {
79
113
} ) ;
80
114
}
81
115
116
+ // These are actions for the multi-file mode
117
+
118
+ case ActionType . EditFile : {
119
+ const { name, code } = action ;
120
+ let entries = state . entries ;
121
+ let entry = entries [ name ] ;
122
+ entry = { ...entry , code, lastEdited : new Date ( ) } ;
123
+ entries = { ...entries , [ name ] : entry } ;
124
+ return { ...state , entries } ;
125
+ }
126
+
127
+ case ActionType . SelectFile : {
128
+ return { ...state , current : action . name } ;
129
+ }
130
+
131
+ case ActionType . SaveFiles : {
132
+ const { entries : toSave } = action ;
133
+ let entries = state . entries ;
134
+ const lastSaved = new Date ( ) ;
135
+ for ( const name of Object . keys ( toSave ) ) {
136
+ let entry = entries [ name ] ;
137
+ entry = { ...entry , lastSaved } ;
138
+ entries = { ...entries , [ name ] : entry } ;
139
+ }
140
+ return { ...state , entries } ;
141
+ }
142
+
82
143
default :
83
144
return state ;
84
145
}
0 commit comments