osv 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/osv/src/csv/ruby_reader.rs +2 -20
- data/lib/osv/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a290e1510341480b43211fe1c857488dc096020b503ac27dad6b2ed708b5fa8d
|
4
|
+
data.tar.gz: a2d89af302a30a3b4781750865a43851f96da73938d9daba4fc63e59887f27bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4492d0fb2307d4e26374ded84c10e8d4f7f06bdadb1b08d7aa0ea0c7a8819b46dea32fb6f0d0031d0dc1f960740c03054e8e5242ef6d8d098ac531fdea82e894
|
7
|
+
data.tar.gz: 03e04cbd2d13ce9ede160c75be4cd79ceed89cf19ee787b9dc8ad81755ec214a8b1255d9ba4331c9728d010e43d5831f0ebf424423897719e15f3638f1240ea2
|
@@ -1,18 +1,15 @@
|
|
1
1
|
use flate2::bufread::GzDecoder;
|
2
2
|
use magnus::{
|
3
3
|
value::{Opaque, ReprValue},
|
4
|
-
|
4
|
+
RString, Ruby, Value,
|
5
5
|
};
|
6
6
|
use std::{
|
7
7
|
fs::File,
|
8
8
|
io::{self, BufReader, Read, Write},
|
9
|
-
sync::OnceLock,
|
10
9
|
};
|
11
10
|
|
12
11
|
use super::{builder::ReaderError, record_reader::READ_BUFFER_SIZE};
|
13
12
|
|
14
|
-
static STRING_IO_CLASS: OnceLock<Opaque<RClass>> = OnceLock::new();
|
15
|
-
|
16
13
|
/// A reader that can handle various Ruby input types (String, StringIO, IO-like objects)
|
17
14
|
/// and provide a standard Read implementation for them.
|
18
15
|
pub enum RubyReader {
|
@@ -29,15 +26,6 @@ pub enum RubyReader {
|
|
29
26
|
}
|
30
27
|
|
31
28
|
impl RubyReader {
|
32
|
-
fn is_string_io(ruby: &Ruby, value: &Value) -> bool {
|
33
|
-
let string_io_class = STRING_IO_CLASS.get_or_init(|| {
|
34
|
-
let class = RClass::from_value(ruby.eval("StringIO").expect("Failed to find StringIO"))
|
35
|
-
.expect("Failed to get StringIO class");
|
36
|
-
Opaque::from(class)
|
37
|
-
});
|
38
|
-
value.is_kind_of(ruby.get_inner(*string_io_class))
|
39
|
-
}
|
40
|
-
|
41
29
|
fn is_io_like(value: &Value) -> bool {
|
42
30
|
value.respond_to("read", false).unwrap_or(false)
|
43
31
|
}
|
@@ -48,13 +36,7 @@ impl TryFrom<Value> for RubyReader {
|
|
48
36
|
|
49
37
|
fn try_from(value: Value) -> Result<Self, Self::Error> {
|
50
38
|
let ruby = unsafe { Ruby::get_unchecked() };
|
51
|
-
if RubyReader::
|
52
|
-
let string_content = value.funcall::<_, _, RString>("string", ())?;
|
53
|
-
Ok(RubyReader::String {
|
54
|
-
inner: Opaque::from(string_content),
|
55
|
-
offset: 0,
|
56
|
-
})
|
57
|
-
} else if RubyReader::is_io_like(&value) {
|
39
|
+
if RubyReader::is_io_like(&value) {
|
58
40
|
Ok(RubyReader::RubyIoLike {
|
59
41
|
inner: Opaque::from(value),
|
60
42
|
})
|
data/lib/osv/version.rb
CHANGED