ruby_rnv 0.3.1 → 0.4.0
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/rnv/extconf.rb +1 -1
- data/ext/rnv/ruby_rnv.c +81 -380
- data/ext/rnv/ruby_rnv.h +62 -0
- data/ext/rnv/ruby_rnv_err.c +545 -0
- data/ext/rnv/src/ary.c +1 -2
- data/ext/rnv/src/drv.c +66 -62
- data/ext/rnv/src/drv.h +3 -2
- data/ext/rnv/src/er.c +1 -1
- data/ext/rnv/src/er.h +1 -1
- data/ext/rnv/src/erbit.h +3 -0
- data/ext/rnv/src/rn.c +24 -26
- data/ext/rnv/src/rn.h +1 -1
- data/ext/rnv/src/rnc.c +28 -16
- data/ext/rnv/src/rnc.h +3 -23
- data/ext/rnv/src/rnd.c +24 -20
- data/ext/rnv/src/rnd.h +3 -2
- data/ext/rnv/src/rnl.c +24 -20
- data/ext/rnv/src/rnl.h +2 -3
- data/ext/rnv/src/rnv.c +20 -18
- data/ext/rnv/src/rnv.h +2 -2
- data/ext/rnv/src/rnx.c +15 -17
- data/ext/rnv/src/rnx.h +2 -3
- data/ext/rnv/src/rx.c +44 -32
- data/ext/rnv/src/rx.h +7 -8
- data/ext/rnv/src/sc.c +5 -0
- data/ext/rnv/src/sc.h +1 -0
- data/ext/rnv/src/type.h +53 -29
- data/ext/rnv/src/xcl.c +24 -27
- data/ext/rnv/src/xsd.c +10 -23
- data/ext/rnv/src/xsd.h +1 -2
- data/lib/rnv/data_type_library.rb +5 -7
- data/lib/rnv/error.rb +28 -2
- data/lib/rnv/validator.rb +4 -4
- metadata +4 -2
data/ext/rnv/src/xsd.h
CHANGED
@@ -14,10 +14,9 @@
|
|
14
14
|
#define XSD_ER_WS 5
|
15
15
|
#define XSD_ER_ENUM 6
|
16
16
|
|
17
|
-
extern void xsd_default_verror_handler(
|
17
|
+
extern void xsd_default_verror_handler(void *data, int erno, int (*handler)(void *data, int erno,char *format, va_list ap), va_list ap);
|
18
18
|
|
19
19
|
extern void xsd_init(rx_st_t *rx_st);
|
20
|
-
extern void xsd_clear(void);
|
21
20
|
|
22
21
|
extern int xsd_allows(rx_st_t *rx_st, char *typ,char *ps,char *s,int n);
|
23
22
|
extern int xsd_equal(rx_st_t *rx_st, char *typ,char *val,char *s,int n);
|
@@ -2,21 +2,19 @@ module RNV
|
|
2
2
|
# Datatype library callback object
|
3
3
|
# @see https://www.oasis-open.org/committees/relax-ng/spec-20010811.html#IDA1I1R
|
4
4
|
class DataTypeLibrary
|
5
|
-
# @param [String] typ
|
5
|
+
# @param [String] typ the data type
|
6
6
|
# @param [String] val
|
7
7
|
# @param [String] s
|
8
|
-
# @param [Integer] n
|
9
8
|
# @return [Boolean]
|
10
|
-
def equal(typ, val, s
|
9
|
+
def equal(typ, val, s)
|
11
10
|
true
|
12
11
|
end
|
13
12
|
|
14
|
-
# @param [String] typ
|
13
|
+
# @param [String] typ the data type
|
15
14
|
# @param [String] ps
|
16
|
-
# @param [String] s
|
17
|
-
# @param [Integer] n
|
15
|
+
# @param [String] s the value
|
18
16
|
# @return [Boolean]
|
19
|
-
def allows(typ, ps, s
|
17
|
+
def allows(typ, ps, s)
|
20
18
|
true
|
21
19
|
end
|
22
20
|
end
|
data/lib/rnv/error.rb
CHANGED
@@ -1,13 +1,39 @@
|
|
1
1
|
module RNV
|
2
2
|
class Error
|
3
|
+
def message
|
4
|
+
@original_message
|
5
|
+
end
|
6
|
+
|
7
|
+
def expected
|
8
|
+
@original_expected
|
9
|
+
end
|
10
|
+
|
11
|
+
# @param [String] data original content
|
12
|
+
# @return [String] context
|
13
|
+
def contextualize(data, max_len = 60)
|
14
|
+
out = ""
|
15
|
+
if data and @line
|
16
|
+
err_data = data.split("\n")[@line - 1]
|
17
|
+
err_data.insert(@col - 1, "🢑")
|
18
|
+
|
19
|
+
start = 0
|
20
|
+
if @col > max_len
|
21
|
+
start = @col - max_len
|
22
|
+
end
|
23
|
+
out += (start > 0 ? "…" : "") + err_data[start..(@col + max_len)].strip + (@col + max_len < err_data.length ? "…" : "")
|
24
|
+
end
|
25
|
+
out
|
26
|
+
end
|
27
|
+
|
3
28
|
# @return [String]
|
4
29
|
def to_s
|
5
|
-
"#{@line}:#{@col}:error: #{
|
30
|
+
"#{@line}:#{@col}:error: #{self.message}\n#{self.expected}"
|
6
31
|
end
|
7
32
|
|
8
33
|
# @return [String]
|
9
34
|
def inspect
|
10
|
-
"#<RNV::Error code: :#{@code}, message: '#{@message}', expected: '#{@expected} line: #{@line}, column: #{@col}>"
|
35
|
+
#"#<RNV::Error code: :#{@code}, message: '#{@message}', expected: '#{@expected}, line: #{@line}, column: #{@col}>"
|
36
|
+
"#<RNV::Error code: :#{@code}, message: '#{self.message}', expected: '#{self.expected}, line: #{@line}, column: #{@col}>"
|
11
37
|
end
|
12
38
|
end
|
13
39
|
end
|
data/lib/rnv/validator.rb
CHANGED
@@ -13,26 +13,26 @@ module RNV
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = nil)
|
16
|
-
update_line_col
|
17
16
|
tag_attrs = attrs.map { |attr| [attr.uri ? "#{attr.uri}:#{attr.localname}" : attr.localname, attr.value] }
|
18
17
|
tag_name = uri ? "#{uri}:#{name}" : name
|
19
18
|
@document.start_tag(@pre_processor.tag(tag_name), @pre_processor.attributes(tag_attrs))
|
19
|
+
update_line_col
|
20
20
|
end
|
21
21
|
|
22
22
|
def end_element_namespace(name, prefix = nil, uri = nil)
|
23
|
-
update_line_col
|
24
23
|
tag_name = uri ? "#{uri}:#{name}" : name
|
25
24
|
@document.end_tag(@pre_processor.tag(tag_name))
|
25
|
+
update_line_col
|
26
26
|
end
|
27
27
|
|
28
28
|
def characters str
|
29
|
-
update_line_col
|
30
29
|
@document.characters(@pre_processor.text(str))
|
30
|
+
update_line_col
|
31
31
|
end
|
32
32
|
|
33
33
|
def cdata_block str
|
34
|
-
update_line_col
|
35
34
|
@document.characters(@pre_processor.text(str))
|
35
|
+
update_line_col
|
36
36
|
end
|
37
37
|
|
38
38
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_rnv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Boulnois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -104,6 +104,8 @@ files:
|
|
104
104
|
- Gemfile
|
105
105
|
- ext/rnv/extconf.rb
|
106
106
|
- ext/rnv/ruby_rnv.c
|
107
|
+
- ext/rnv/ruby_rnv.h
|
108
|
+
- ext/rnv/ruby_rnv_err.c
|
107
109
|
- ext/rnv/src/ary.c
|
108
110
|
- ext/rnv/src/ary.h
|
109
111
|
- ext/rnv/src/drv.c
|