Skip to content

Commit 0776a14

Browse files
committed
Merge pull request #3 from cryogenian/autocomplete
autocomplete
2 parents 026377e + 66ff3d3 commit 0776a14

File tree

10 files changed

+272
-126
lines changed

10 files changed

+272
-126
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@ bower install purescript-ace-halogen
1515
## Module documentation
1616

1717
- [Ace.Halogen.Component](docs/Ace/Halogen/Component.md)
18-
- [Ace.Halogen.Component.Query](docs/Ace/Halogen/Component/Query.md)
19-
- [Ace.Halogen.Component.State](docs/Ace/Halogen/Component/State.md)
18+
19+
20+
## Notes
21+
22+
Please add `Halogen.Component.Properties.key` or `Halogen.Component.Properties.Indexed.key` to wrappers of `Ace.Halogen.Component` if you need to use multiple editors on one page.

bower.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"name": "purescript-ace-halogen",
33
"homepage": "https://github.com/slamdata/purescript-ace-halogen",
44
"authors": [
5-
"Gary Burgess <[email protected]>"
5+
"Gary Burgess <[email protected]>",
6+
"Maxim Zimaliev <[email protected]>"
67
],
78
"description": "A Halogen component for the Ace editor",
89
"keywords": [
@@ -22,7 +23,10 @@
2223
"test"
2324
],
2425
"dependencies": {
25-
"purescript-ace": "^0.8.0",
26-
"purescript-halogen": "^0.5.6"
26+
"purescript-halogen": "^0.5.6",
27+
"purescript-refs": "^0.2.0",
28+
"purescript-datetime": "^0.9.1",
29+
"purescript-random": "^0.2.3",
30+
"purescript-ace": "~0.10.0"
2731
}
2832
}

docs/Ace/Halogen/Component.md

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,75 @@
11
## Module Ace.Halogen.Component
22

3+
#### `Autocomplete`
4+
5+
``` purescript
6+
data Autocomplete
7+
= Live
8+
| Basic
9+
```
10+
11+
#### `AceEffects`
12+
13+
``` purescript
14+
type AceEffects e = (random :: RANDOM, now :: Now, ref :: REF, ace :: ACE, avar :: AVAR, dom :: DOM | e)
15+
```
16+
17+
#### `AceQuery`
18+
19+
``` purescript
20+
data AceQuery a
21+
= Init HTMLElement a
22+
| GetText (String -> a)
23+
| SetText String a
24+
| SetAutocomplete (Maybe Autocomplete) a
25+
| SetCompleteFn (forall e. CompleteFn e) a
26+
| GetEditor (Maybe Editor -> a)
27+
| Quit a
28+
```
29+
30+
Ace query algebra
31+
`Init` used internally to handle initialization of component
32+
`GetText` gets the current text value
33+
`SetText` alters the current text value
34+
`SetAutocomplete` sets autocomplete resume:
35+
`Nothing` turns it off
36+
`Just Basic` enables basic autocompletions (triggered by `Alt+Space` or `Ctrl + Space`)
37+
`Just Live` enables live autocomplete
38+
`SetCompleteFn` sets function providing autocomplete variants.
39+
`GetEditor` returns ace editor instance handled by this component.
40+
`Quit` used internally to handle finalizing of component
41+
42+
#### `CompleteFn`
43+
44+
``` purescript
45+
type CompleteFn e = Editor -> EditSession -> Position -> String -> Aff (AceEffects e) (Array Completion)
46+
```
47+
48+
Autocomplete function. Takes editor, session, text position and prefix
49+
returns array of possible completions in `Aff` monad.
50+
51+
#### `AceState`
52+
53+
``` purescript
54+
type AceState = { key :: Maybe String, editor :: Maybe Editor }
55+
```
56+
57+
Ace component state
58+
`key` -- unique key of this instance
59+
`editor` -- ace editor instance wrapped by this component
60+
361
#### `aceComponent`
462

563
``` purescript
6-
aceComponent :: forall g eff. (MonadEff (ace :: ACE | eff) g) => Maybe String -> Component AceState AceQuery g
64+
aceComponent :: forall g eff. (MonadEff (AceEffects eff) g) => (Editor -> g Unit) -> Maybe Autocomplete -> Component AceState AceQuery g
765
```
866

967
The Ace component.
1068

1169
#### `aceConstructor`
1270

1371
``` purescript
14-
aceConstructor :: forall g p eff. (MonadEff (ace :: ACE | eff) g) => p -> Maybe String -> SlotConstructor AceState AceQuery g p
72+
aceConstructor :: forall g p eff. (MonadEff (AceEffects eff) g) => p -> (Editor -> g Unit) -> Maybe Autocomplete -> SlotConstructor AceState AceQuery g p
1573
```
1674

1775
A convenience function for creating a `SlotConstructor` for an Ace

docs/Ace/Halogen/Component/Query.md

Lines changed: 0 additions & 19 deletions
This file was deleted.

docs/Ace/Halogen/Component/State.md

Lines changed: 0 additions & 29 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
"rimraf": "^2.4.3"
1010
},
1111
"dependencies": {
12-
"purescript": "^0.7.5"
12+
"purescript": "^0.7.6"
1313
}
1414
}

src/Ace/Halogen/Component.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// module Ace.Halogen.Component
2+
3+
exports.completeFns = {value: {}};
4+
5+
exports.initialized = {value: false};
6+
7+
exports.focused = {value: ""};
8+
9+
exports.dataset = function(node) {
10+
return function() {
11+
return node.dataset;
12+
};
13+
};

0 commit comments

Comments
 (0)