Skip to content

Commit bc8bfdc

Browse files
committed
Added basic docstrings
1 parent 37c916e commit bc8bfdc

File tree

26 files changed

+398
-57
lines changed

26 files changed

+398
-57
lines changed

CHANGES.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# Changes
22

3-
## Unreleased
3+
## 0.1.0-beta.1 - 2021-12-10
44

55
### Added
66
* Re-exports for AutoMap, Computed, Value, DropResource
7+
* Tutorial
8+
* Some docstrings with examples
9+
10+
### Changed
11+
* LazyCache::force_update - Added parameter with_loading
12+
* Simplified computed refresh function
713

814
## 0.1.0-alpha.3 - 2021-11-29
915

crates/vertigo-browserdriver/src/driver_browser.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ use vertigo::FetchResult;
2222
use vertigo::InstantType;
2323
use vertigo::RealDomId;
2424
use vertigo::RefsContext;
25-
use vertigo::WebcocketMessageDriver;
26-
use vertigo::computed::Dependencies;
25+
use vertigo::WebsocketMessageDriver;
26+
use vertigo::Dependencies;
2727
use vertigo::utils::DropResource;
2828

2929
struct DriverBrowserInner {
@@ -153,7 +153,7 @@ impl DriverTrait for DriverBrowser {
153153
js_instant::now().round() as InstantType
154154
}
155155

156-
fn websocket(&self, host: String, callback: Box<dyn Fn(WebcocketMessageDriver)>) -> DropResource {
156+
fn websocket(&self, host: String, callback: Box<dyn Fn(WebsocketMessageDriver)>) -> DropResource {
157157
self.driver.driver_websocket.websocket_start(host, callback)
158158
}
159159

crates/vertigo-browserdriver/src/modules/dom/driver_browser_dom.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use vertigo::utils::BoxRefCell;
33
use wasm_bindgen::prelude::Closure;
44
use std::rc::Rc;
55

6-
use vertigo::{EventCallback, KeyDownEvent, RealDomId, computed::Dependencies};
6+
use vertigo::{EventCallback, KeyDownEvent, RealDomId, Dependencies};
77

88
use super::driver_dom_command::DriverDomCommand;
99
use super::js_dom::DriverBrowserDomJs;

crates/vertigo-browserdriver/src/modules/dom/visited_node_manager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::rc::Rc;
22
use std::collections::HashMap;
33

4-
use vertigo::{RealDomId, computed::Dependencies, utils::BoxRefCell};
4+
use vertigo::{RealDomId, Dependencies, utils::BoxRefCell};
55

66
use super::driver_data::DriverData;
77

crates/vertigo-browserdriver/src/modules/websocket/websocket.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use std::rc::Rc;
22
use wasm_bindgen::closure::Closure;
33

4-
use vertigo::{WebcocketMessageDriver, utils::DropResource};
4+
use vertigo::{WebsocketMessageDriver, utils::DropResource};
55
use crate::modules::websocket::js_websocket::DriverWebsocketJs;
66
use crate::utils::callback_manager::CallbackManagerOwner;
77
use vertigo::utils::BoxRefCell;
88

99
#[derive(Clone)]
1010
struct Callback {
11-
stack: Rc<BoxRefCell<CallbackManagerOwner<WebcocketMessageDriver>>>,
11+
stack: Rc<BoxRefCell<CallbackManagerOwner<WebsocketMessageDriver>>>,
1212
}
1313

1414
impl Callback {
@@ -18,7 +18,7 @@ impl Callback {
1818
}
1919
}
2020

21-
pub fn register(&self, callback: Box<dyn Fn(WebcocketMessageDriver)>) -> u64 {
21+
pub fn register(&self, callback: Box<dyn Fn(WebsocketMessageDriver)>) -> u64 {
2222
self.stack.change(callback, |state, callback| {
2323
state.set(callback)
2424
})
@@ -30,7 +30,7 @@ impl Callback {
3030
});
3131
}
3232

33-
pub fn trigger_callback(&self, callback_id: u64, message: WebcocketMessageDriver) {
33+
pub fn trigger_callback(&self, callback_id: u64, message: WebsocketMessageDriver) {
3434
self.stack.get_with_context((callback_id, message), |state, (callback_id, message)| {
3535
state.trigger(callback_id, message);
3636
});
@@ -52,21 +52,21 @@ impl DriverWebsocket {
5252
let callback_socket = {
5353
let callback = callback.clone();
5454
Closure::new(move |callback_id: u64| {
55-
callback.trigger_callback(callback_id, WebcocketMessageDriver::Connection { callback_id });
55+
callback.trigger_callback(callback_id, WebsocketMessageDriver::Connection { callback_id });
5656
})
5757
};
5858

5959
let callback_message = {
6060
let callback = callback.clone();
6161
Closure::new(move |callback_id: u64, message: String| {
62-
callback.trigger_callback(callback_id, WebcocketMessageDriver::Message(message));
62+
callback.trigger_callback(callback_id, WebsocketMessageDriver::Message(message));
6363
})
6464
};
6565

6666
let callback_close = {
6767
let callback = callback.clone();
6868
Closure::new(move |callback_id: u64| {
69-
callback.trigger_callback(callback_id, WebcocketMessageDriver::Close);
69+
callback.trigger_callback(callback_id, WebsocketMessageDriver::Close);
7070
})
7171
};
7272

@@ -85,7 +85,7 @@ impl DriverWebsocket {
8585
}
8686
}
8787

88-
pub fn websocket_start(&self, host: String, callback: Box<dyn Fn(WebcocketMessageDriver)>) -> DropResource {
88+
pub fn websocket_start(&self, host: String, callback: Box<dyn Fn(WebsocketMessageDriver)>) -> DropResource {
8989
let callback_id = self.callback.register(callback);
9090
self.driver_js.register_callback(host, callback_id);
9191

crates/vertigo/src/app.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ use crate::{
1111
driver::Driver,
1212
};
1313

14+
/// Starting point of the app. Given the driver and root component of the app,
15+
/// it creates necessary vertigo facilities and runs a never-ending future of reactivity.
1416
pub async fn start_app(driver: Driver, computed: VDomComponent) {
1517
let css_manager = CssManager::new(&driver);
1618
let root = RealDomElement::create_with_id(driver.clone(), RealDomId::root());
1719

18-
let subscription = render_to_node(driver.clone(), css_manager.clone(), root, computed);
20+
let _subscription = render_to_node(driver.clone(), css_manager.clone(), root, computed);
1921
driver.flush_update();
2022

21-
std::future::pending::<()>().await;
22-
23-
subscription.off();
23+
std::future::pending::<()>().await
2424
}

crates/vertigo/src/computed/auto_map.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ use crate::utils::{
1111

1212
type CreateType<K, V> = EqBox<Box<dyn Fn(&K) -> V>>;
1313

14+
/// A structure similar to HashMap
15+
/// but allows to provide a function `create` for creating a new value if particular key doesn't exists.
16+
///
17+
/// Such a function can for example [fetch](struct.Driver.html#method.fetch) data from internet.
18+
///
19+
/// ```rust
20+
/// use vertigo::AutoMap;
21+
///
22+
/// let my_map = AutoMap::<i32, i32>::new(|x| x*2);
23+
/// assert_eq!(my_map.get_value(&5), 10);
24+
/// ```
1425
#[derive(PartialEq, Clone)]
1526
pub struct AutoMap<K: Eq + Hash + Clone, V: PartialEq + Clone + 'static> {
1627
create: Rc<CreateType<K, V>>,

crates/vertigo/src/computed/client.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ impl Client {
4545
}
4646
}
4747

48-
pub fn off(self: Client) {
49-
}
50-
5148
pub fn id(&self) -> GraphId {
5249
self.graph_value.id()
5350
}

crates/vertigo/src/computed/computed_box.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,45 @@ use crate::{
1010
}
1111
};
1212

13+
/// A reactive value that is read-only and computed by dependency graph.
14+
///
15+
/// ## Computed directly from Value
16+
///
17+
/// ```rust
18+
/// use vertigo::{Computed, Dependencies};
19+
///
20+
/// let deps = Dependencies::default();
21+
///
22+
/// let value = deps.new_value(5);
23+
///
24+
/// let comp = value.to_computed();
25+
///
26+
/// assert_eq!(*comp.get_value(), 5);
27+
///
28+
/// // Can't do that
29+
/// // comp.set_value(10);
30+
/// ```
31+
///
32+
/// ## Computed from Value by provided function
33+
///
34+
/// ```rust
35+
/// use vertigo::{Computed, Dependencies};
36+
///
37+
/// let deps = Dependencies::default();
38+
///
39+
/// let value = deps.new_value(2);
40+
///
41+
/// let comp_2 = {
42+
/// let v = value.clone();
43+
/// deps.from(move || *v.get_value() * 2)
44+
/// };
45+
///
46+
/// assert_eq!(*comp_2.get_value(), 4);
47+
///
48+
/// value.set_value(6);
49+
///
50+
/// assert_eq!(*comp_2.get_value(), 12);
51+
/// ```
1352
pub struct Computed<T: PartialEq + 'static> {
1453
inner: GraphValue<T>,
1554
}

crates/vertigo/src/computed/graph_value.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -256,18 +256,6 @@ impl<T: PartialEq + 'static> GraphValue<T> {
256256
GraphValue::new(deps, GraphValueType::Client, get_value)
257257
}
258258

259-
pub fn is_computed(&self) -> bool {
260-
self.inner.inner.get(|state| {
261-
state.value_type == GraphValueType::Computed
262-
})
263-
}
264-
265-
pub fn is_client(&self) -> bool {
266-
self.inner.inner.get(|state| {
267-
state.value_type == GraphValueType::Client
268-
})
269-
}
270-
271259
pub fn get_value(&self, is_computed: bool) -> Rc<T> {
272260
self.inner.inner.change(is_computed, |state, is_computed| {
273261
state.get_value(is_computed)

crates/vertigo/src/computed/value.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,24 @@ impl<T: PartialEq + 'static> Drop for ValueInner<T> {
5353
}
5454
}
5555

56-
56+
/// A reactive value. Basic building block of app state.
57+
///
58+
/// Can be read or written.
59+
///
60+
/// ```rust
61+
/// use vertigo::{Computed, Dependencies};
62+
///
63+
/// let deps = Dependencies::default();
64+
///
65+
/// let value = deps.new_value(5);
66+
///
67+
/// assert_eq!(*value.get_value(), 5);
68+
///
69+
/// value.set_value(10);
70+
///
71+
/// assert_eq!(*value.get_value(), 10);
72+
/// ```
73+
///
5774
pub struct Value<T: PartialEq + 'static> {
5875
inner: Rc<BoxRefCell<ValueInner<T>>>,
5976
pub deps: Dependencies,

0 commit comments

Comments
 (0)