Merge branch 'main' of http://git.prelude.duckdns.org/monoid/SRS
This commit is contained in:
commit
c596a80518
@ -533,61 +533,69 @@ 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 {
|
||||
type mode = Read | Write
|
||||
|
||||
|
||||
struct Chunk {
|
||||
id: string
|
||||
content: string
|
||||
type: string
|
||||
}
|
||||
|
||||
|
||||
newChunk() {
|
||||
{ id = uuid()
|
||||
; content = ""
|
||||
; type = ""
|
||||
}
|
||||
}
|
||||
|
||||
chunkViewer(chunk : Chunk, deleteThis : () => void) : Component {
|
||||
|
||||
chunkViewer(chunk : Chunk, focusedChunk : State<string>, deleteThis : () => void) : Component {
|
||||
var mode = Read
|
||||
|
||||
|
||||
var c = new Component(
|
||||
content { value = chunk.content }
|
||||
settypebutton
|
||||
editbutton
|
||||
deletebutton
|
||||
)
|
||||
|
||||
|
||||
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 deletebutton is clicked { deleteThis() }
|
||||
when settypebutton is clicked { chunk.type = prompt() }
|
||||
|
||||
|
||||
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 {
|
||||
struct Document {
|
||||
title: string
|
||||
@ -595,25 +603,88 @@ module document {
|
||||
tags: string set
|
||||
chunks: chunk.Chunk array
|
||||
}
|
||||
|
||||
|
||||
documentViewer(doc: document) : Component {
|
||||
var focusedChunk = null
|
||||
|
||||
|
||||
var c = new Component(
|
||||
taglist { value: tags }
|
||||
chunklist
|
||||
)
|
||||
|
||||
|
||||
delete(id) {
|
||||
i = doc.chunks.find((c) => c.id = id)
|
||||
doc.chunks.remove(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 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
|
||||
}
|
||||
}
|
||||
```
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Loading…
Reference in New Issue
Block a user