Add pseudocode

This commit is contained in:
백현웅 2022-05-15 15:51:45 +09:00
parent 08a988c54d
commit c71ed22406

View File

@ -339,24 +339,6 @@ fn apply(this, mutator, updatedAt, seq){
### 다른 작업들 ### 다른 작업들
```
global doc
searchWord(word) {
words(doc)
|> filter((w, _) => w = word)
|> map((_, i) => i)
}
searchWordPrompt() {
word = prompt()
wordPositions = searchWord(word)
highlight(wordPositions, length(word))
}
when Ctrl-F is pressed { searchWordPrompt() }
```
``` ```
module chunk { module chunk {
type mode = Read | Write type mode = Read | Write
@ -374,7 +356,7 @@ module chunk {
} }
} }
chunkViewer(chunk : Chunk, deleteThis : () => void) : Component { chunkViewer(chunk : Chunk, focusedChunk : State<string>, deleteThis : () => void) : Component {
var mode = Read var mode = Read
var c = new Component( var c = new Component(
@ -385,6 +367,8 @@ module chunk {
) )
when mode becomes Read { chunk.content = content } when mode becomes Read { chunk.content = content }
when mode becomes Write { focusedChunk = chunk.id }
when focusedChunk is changed { mode = Read }
when editbutton is clicked { mode = (mode = Read) ? Write : Read } when editbutton is clicked { mode = (mode = Read) ? Write : Read }
when deletebutton is clicked { deleteThis() } when deletebutton is clicked { deleteThis() }
@ -393,7 +377,31 @@ module chunk {
return c return c
} }
} }
```
```
module search {
searchWord(chunks, word) {
return doc.chunks.concat_map((s) => s.matchAll(word))
}
searchWordPrompt(chunks: Chunk.chunk list) {
var word = prompt()
var results = searchWord(chunks, word)
var c = new Component(results)
when result in results is selected {
moveto(result.location)
close()
}
}
when Ctrl-F is pressed { searchWordPrompt() }
}
```
```
module document { module document {
struct Document { struct Document {
title: string title: string
@ -416,10 +424,73 @@ module document {
} }
chunklist = doc.chunks.concat_map((c, i) => chunklist = doc.chunks.concat_map((c, i) =>
[ divider(i), chuknViewer(c, () => delete(c.id)) ]) [ divider(i), chuknViewer(c, focusedChunk, () => delete(c.id)) ])
when divider(i) clicked { doc.chunks.insert(i, c) } when divider(i) clicked { doc.chunks.insert(i, c) }
when chunkViewer(c) is dropped on divider(i) { doc.chunks.move(c, i) } when chunkViewer(c) is dropped on divider(i) { doc.chunks.move(c, i) }
return c
}
}
```
```
module filelist {
fileList(dir : Directory, open: (File) => void) : Component {
var c = new Component(
filelist
)
filelist = dir.files().map((f) => button(f))
when button(f) is clicked {
open(f)
}
return c
}
}
```
```
module settings {
settings() : Component {
var c = new Component(
language = select("korean", "english")
theme = select("light", "dark")
)
when language(l) is selected {
global context.lang = l
}
when theme(t) is selected {
global context.theme = t
}
return c
}
}
```
module frontend {
main() : Component {
var docv
var open = (f) => {
with doc = openfile(f) {
docv = document.documentViewer(doc)
}
}
var filelist = filelist.fileList(rootdir, open)
var c = new Component(
document = docv
filelist = filelist
)
return c
} }
} }
``` ```