y-rb 0.4.2 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 93340a5c97501c667f0b3f690727d3794310d665678398175cac1e2a09cd768f
4
- data.tar.gz: e5dead42fdd8eff21b4a149acd9495a17b5e9a1925bb1aa5d2d90af5673735f2
3
+ metadata.gz: dc0dfc4d5578e2f6abca4c9224b9d84723371adb5be4b9c44ecf0dc99f70bf6a
4
+ data.tar.gz: b8e6e6c7c1e9552d4866e52813c43f67763d4a9ed7d114df33a769818e895ccd
5
5
  SHA512:
6
- metadata.gz: ddfb247b3a58bd677b22f2ede93df1bb2ff8f12d14dc0b9a0030adafdb582ba74149b3aa85ac33a7fe725417d4a5cdbfd3f10a59dec65028c570a3853e0de173
7
- data.tar.gz: fa37a398266e02dd3b0473d319ae87d9915a77885597f845f79c78e6a78d1aa33a7c5620389546ba033c1181331ce6b94cde53520fb73201b98679b601083d71
6
+ metadata.gz: d8270d7099b047a39c1ad2fd9c579d87ebd6a1fcecbc1a421a4119a7019270567a14fc1b320ae6ab7d7134e19e796a1702feb7690986f39a521b418f5489b426
7
+ data.tar.gz: 906a236b4b56954dfcd23837fd4b2beaf1a14b8390776433376e4fe9ba0e8e8e414c5bcdf5cc52d9b275bee1f80af3025d6b91dccf87e2346e87adbbf2339479
data/ext/yrb/Cargo.toml CHANGED
@@ -1,19 +1,19 @@
1
1
  [package]
2
2
  name = "yrb"
3
- version = "0.4.2"
3
+ version = "0.4.4"
4
4
  authors = ["Hannes Moser <box@hannesmoser.at>", "Hannes Moser <hmoser@gitlab.com>"]
5
5
  edition = "2021"
6
6
  homepage = "https://github.com/y-crdt/yrb"
7
7
  repository = "https://github.com/y-crdt/yrb"
8
8
 
9
9
  [dependencies]
10
- lib0 = "0.14.1" # must match yrs version
11
- magnus = { git = "https://github.com/matsadler/magnus", rev = "a51ccaf01d82e9e1a981e4f3fbaca35100513b08" }
10
+ lib0 = "0.16.0" # must match yrs version
11
+ magnus = { git = "https://github.com/matsadler/magnus", rev = "ab982c3643421b38f3293f1fe014aa373abfd6dc" }
12
12
  thiserror = "1.0.38"
13
- yrs = "0.14.1"
13
+ yrs = "0.16.0"
14
14
 
15
15
  [dev-dependencies]
16
- magnus = { git = "https://github.com/matsadler/magnus", rev = "a51ccaf01d82e9e1a981e4f3fbaca35100513b08", features = ["embed"] }
16
+ magnus = { git = "https://github.com/matsadler/magnus", rev = "ab982c3643421b38f3293f1fe014aa373abfd6dc", features = ["embed"] }
17
17
 
18
18
  [lib]
19
19
  name = "yrb"
data/ext/yrb/src/yany.rs CHANGED
@@ -1,4 +1,5 @@
1
1
  use lib0::any::Any;
2
+ use magnus::r_string::IntoRString;
2
3
  use magnus::{RArray, RHash, RString, Value, QNIL};
3
4
  use std::borrow::Borrow;
4
5
  use std::ops::{Deref, DerefMut};
@@ -37,7 +38,7 @@ impl TryInto<Value> for YAny {
37
38
  Any::Bool(v) => Ok(Value::from(v)),
38
39
  Any::Number(v) => Ok(Value::from(v)),
39
40
  Any::BigInt(v) => Ok(Value::from(v)),
40
- Any::String(v) => Ok(Value::from(RString::from(v.borrow()))),
41
+ Any::String(v) => Ok(Value::from(RString::from(v.into_r_string()))),
41
42
  Any::Buffer(v) => Ok(Value::from(RString::from_slice(v.borrow()))),
42
43
  };
43
44
  }
@@ -4,6 +4,7 @@ use lib0::any::Any;
4
4
  use magnus::block::Proc;
5
5
  use magnus::value::Qnil;
6
6
  use magnus::{Error, RArray, RHash, Symbol, Value};
7
+ use std::borrow::Borrow;
7
8
  use std::cell::RefCell;
8
9
  use yrs::types::Change;
9
10
  use yrs::{Array, ArrayRef, Observable};
@@ -112,9 +113,15 @@ impl YArray {
112
113
  .partition(Result::is_ok);
113
114
 
114
115
  if errors.is_empty() {
115
- let args = (RArray::from_vec(
116
- changes.into_iter().map(Result::unwrap).collect(),
117
- ),);
116
+ let args_changes = RArray::new();
117
+ for change in changes.iter() {
118
+ let c = *change.borrow().as_ref().unwrap();
119
+ args_changes
120
+ .push(c)
121
+ .expect("cannot push change event to args");
122
+ }
123
+
124
+ let args = (args_changes,);
118
125
  let _ = block.call::<(RArray,), Qnil>(args);
119
126
  // todo: make sure we respect the result and bubble up the
120
127
  // error so that we can return as part of the Result
@@ -143,7 +150,7 @@ impl YArray {
143
150
  let tx = tx.as_mut().unwrap();
144
151
 
145
152
  let arr = self.0.borrow_mut();
146
- arr.push_front(tx, avalue)
153
+ arr.push_front(tx, avalue);
147
154
  }
148
155
  pub(crate) fn yarray_remove(&self, transaction: &YTransaction, index: u32) {
149
156
  let mut tx = transaction.transaction();
@@ -164,12 +171,13 @@ impl YArray {
164
171
  let tx = transaction.transaction();
165
172
  let tx = tx.as_ref().unwrap();
166
173
 
167
- let arr = arr
168
- .iter(tx)
169
- .map(|v| YValue::from(v).into())
170
- .collect::<Vec<Value>>();
171
-
172
- RArray::from_vec(arr)
174
+ let r_arr = RArray::new();
175
+ for item in arr.iter(tx) {
176
+ let r_val = YValue::from(item);
177
+ let r_val = r_val.0.borrow().clone();
178
+ r_arr.push(r_val).expect("cannot push item event to array");
179
+ }
180
+ r_arr
173
181
  }
174
182
  pub(crate) fn yarray_unobserve(&self, subscription_id: u32) {
175
183
  self.0.borrow_mut().unobserve(subscription_id);
data/ext/yrb/src/ymap.rs CHANGED
@@ -27,7 +27,7 @@ impl YMap {
27
27
 
28
28
  match indifferent_hash_key(key) {
29
29
  None => false,
30
- Some(k) => self.0.borrow().contains(tx, k.as_str()),
30
+ Some(k) => self.0.borrow().contains_key(tx, k.as_str()),
31
31
  }
32
32
  }
33
33
  pub(crate) fn ymap_each(&self, transaction: &YTransaction, proc: Proc) {
data/ext/yrb/src/ytext.rs CHANGED
@@ -48,7 +48,7 @@ impl YText {
48
48
  let yvalue = YValue::from(content);
49
49
  let avalue = Any::from(yvalue);
50
50
 
51
- self.0.borrow_mut().insert_embed(tx, index, avalue)
51
+ self.0.borrow_mut().insert_embed(tx, index, avalue);
52
52
  }
53
53
  pub(crate) fn ytext_insert_embed_with_attributes(
54
54
  &self,
@@ -67,7 +67,7 @@ impl YText {
67
67
 
68
68
  self.0
69
69
  .borrow_mut()
70
- .insert_embed_with_attributes(tx, index, avalue, a.0)
70
+ .insert_embed_with_attributes(tx, index, avalue, a.0);
71
71
  }
72
72
  pub(crate) fn ytext_insert_with_attributes(
73
73
  &self,
@@ -116,12 +116,13 @@ impl From<Any> for YValue {
116
116
  Any::String(v) => YValue::from(v.into_string()),
117
117
  Any::Buffer(v) => YValue::from(Value::from(v.into_vec())),
118
118
  Any::Array(v) => {
119
- let arr = v
120
- .iter()
121
- .map(|i| YValue::from(i.clone()))
122
- .map(|value| *value.0.borrow())
123
- .collect::<Vec<Value>>();
124
- YValue::from(RArray::from_vec(arr))
119
+ let arr = RArray::new();
120
+ for item in v.iter() {
121
+ let val = YValue::from(item.clone());
122
+ let val = val.0.borrow().clone();
123
+ arr.push(val).expect("cannot push item event to array");
124
+ }
125
+ YValue::from(arr)
125
126
  }
126
127
  Any::Map(v) => {
127
128
  let map = v
@@ -146,14 +147,12 @@ impl From<YrsValue> for YValue {
146
147
  YrsValue::YXmlText(text) => YValue::from(text),
147
148
  YrsValue::YArray(val) => {
148
149
  let tx = val.transact();
149
- let arr = RArray::from_vec(
150
- val.iter(&tx)
151
- .map(|item| {
152
- let yvalue = YValue::from(item);
153
- yvalue.0.into_inner()
154
- })
155
- .collect(),
156
- );
150
+ let arr = RArray::new();
151
+ for item in val.iter(&tx) {
152
+ let val = YValue::from(item.clone());
153
+ let val = val.0.borrow().clone();
154
+ arr.push(val).expect("cannot push item event to array");
155
+ }
157
156
  YValue::from(arr)
158
157
  }
159
158
  YrsValue::YMap(val) => {
@@ -76,7 +76,7 @@ impl YXmlElement {
76
76
  index: u32,
77
77
  content: String,
78
78
  ) -> YXmlText {
79
- let text = XmlTextPrelim(content.as_str());
79
+ let text = XmlTextPrelim::new(content.as_str());
80
80
  let mut tx = transaction.transaction();
81
81
  let tx = tx.as_mut().unwrap();
82
82
 
@@ -107,15 +107,16 @@ impl YXmlElement {
107
107
  for change in delta {
108
108
  match change {
109
109
  Change::Added(v) => {
110
- let values = v
111
- .iter()
112
- .map(|o| YValue::from(o.clone()))
113
- .map(|o| *o.0.borrow())
114
- .collect::<Vec<_>>();
110
+ let values = RArray::new();
111
+ for value in v.iter() {
112
+ let value = YValue::from(value.clone());
113
+ let value = value.0.borrow().clone();
114
+ values.push(value).expect("cannot push value to array");
115
+ }
115
116
 
116
117
  let payload = RHash::new();
117
118
  payload
118
- .aset(change_added, RArray::from_vec(values))
119
+ .aset(change_added, values)
119
120
  .expect("cannot create change::added payload");
120
121
 
121
122
  changes
@@ -203,7 +204,7 @@ impl YXmlElement {
203
204
  let mut tx = transaction.transaction();
204
205
  let tx = tx.as_mut().unwrap();
205
206
 
206
- let text = XmlTextPrelim(content.as_str());
207
+ let text = XmlTextPrelim::new(content.as_str());
207
208
  YXmlText::from(self.0.borrow_mut().push_back(tx, text))
208
209
  }
209
210
  pub(crate) fn yxml_element_push_text_front(
@@ -214,7 +215,7 @@ impl YXmlElement {
214
215
  let mut tx = transaction.transaction();
215
216
  let tx = tx.as_mut().unwrap();
216
217
 
217
- let text = XmlTextPrelim(content.as_str());
218
+ let text = XmlTextPrelim::new(content.as_str());
218
219
  YXmlText::from(self.0.borrow_mut().push_front(tx, text))
219
220
  }
220
221
  pub(crate) fn yxml_element_remove_attribute(&self, transaction: &YTransaction, name: String) {
@@ -72,11 +72,13 @@ impl YXmlText {
72
72
  let yvalue = YValue::from(content);
73
73
  let avalue = Any::from(yvalue);
74
74
 
75
- map_rhash_to_attrs(attrs).map(|a| {
76
- self.0
77
- .borrow_mut()
78
- .insert_embed_with_attributes(tx, index, avalue, a)
79
- })
75
+ map_rhash_to_attrs(attrs)
76
+ .map(|a| {
77
+ self.0
78
+ .borrow_mut()
79
+ .insert_embed_with_attributes(tx, index, avalue, a)
80
+ })
81
+ .map(|_| ())
80
82
  }
81
83
  pub(crate) fn yxml_text_insert_embed(
82
84
  &self,
@@ -89,7 +91,7 @@ impl YXmlText {
89
91
 
90
92
  self.0
91
93
  .borrow_mut()
92
- .insert_embed(tx, index, Any::from(YValue::from(embed)))
94
+ .insert_embed(tx, index, Any::from(YValue::from(embed)));
93
95
  }
94
96
  pub(crate) fn yxml_text_insert_with_attributes(
95
97
  &self,
data/lib/y/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Y
4
- VERSION = "0.4.2"
4
+ VERSION = "0.4.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: y-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannes Moser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-18 00:00:00.000000000 Z
11
+ date: 2023-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.53
33
+ version: 0.9.56
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.9.53
40
+ version: 0.9.56
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake-compiler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.2.0
47
+ version: 1.2.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.2.0
54
+ version: 1.2.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake-compiler-dock
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  - !ruby/object:Gem::Version
127
127
  version: 3.3.21
128
128
  requirements: []
129
- rubygems_version: 3.4.1
129
+ rubygems_version: 3.4.5
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: Ruby bindings for yrs