ruby_rnv 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/ext/rnv/extconf.rb +15 -0
- data/ext/rnv/ruby_rnv.c +742 -0
- data/ext/rnv/src/ary.c +78 -0
- data/ext/rnv/src/ary.h +10 -0
- data/ext/rnv/src/drv.c +472 -0
- data/ext/rnv/src/drv.h +35 -0
- data/ext/rnv/src/er.c +15 -0
- data/ext/rnv/src/er.h +16 -0
- data/ext/rnv/src/erbit.h +14 -0
- data/ext/rnv/src/ht.c +90 -0
- data/ext/rnv/src/ht.h +22 -0
- data/ext/rnv/src/ll.h +43 -0
- data/ext/rnv/src/m.c +60 -0
- data/ext/rnv/src/m.h +10 -0
- data/ext/rnv/src/rn.c +569 -0
- data/ext/rnv/src/rn.h +150 -0
- data/ext/rnv/src/rnc.c +1191 -0
- data/ext/rnv/src/rnc.h +68 -0
- data/ext/rnv/src/rnd.c +436 -0
- data/ext/rnv/src/rnd.h +25 -0
- data/ext/rnv/src/rnl.c +62 -0
- data/ext/rnv/src/rnl.h +18 -0
- data/ext/rnv/src/rnv.c +158 -0
- data/ext/rnv/src/rnv.h +30 -0
- data/ext/rnv/src/rnx.c +153 -0
- data/ext/rnv/src/rnx.h +16 -0
- data/ext/rnv/src/rx.c +749 -0
- data/ext/rnv/src/rx.h +43 -0
- data/ext/rnv/src/rx_cls_ranges.c +126 -0
- data/ext/rnv/src/rx_cls_u.c +262 -0
- data/ext/rnv/src/s.c +103 -0
- data/ext/rnv/src/s.h +32 -0
- data/ext/rnv/src/sc.c +62 -0
- data/ext/rnv/src/sc.h +26 -0
- data/ext/rnv/src/type.h +121 -0
- data/ext/rnv/src/u.c +88 -0
- data/ext/rnv/src/u.h +26 -0
- data/ext/rnv/src/xcl.c +472 -0
- data/ext/rnv/src/xmlc.c +20 -0
- data/ext/rnv/src/xmlc.h +16 -0
- data/ext/rnv/src/xsd.c +789 -0
- data/ext/rnv/src/xsd.h +27 -0
- data/ext/rnv/src/xsd_tm.c +100 -0
- data/ext/rnv/src/xsd_tm.h +15 -0
- data/lib/rnv.rb +2 -0
- data/lib/rnv/ox_sax_document.rb +84 -0
- data/lib/rnv/validator.rb +104 -0
- metadata +175 -0
data/ext/rnv/src/xsd.h
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
/* $Id: xsd.h,v 1.14 2005/01/05 09:46:25 dvd Exp $ */
|
2
|
+
|
3
|
+
#include <stdarg.h>
|
4
|
+
#include "type.h"
|
5
|
+
|
6
|
+
#ifndef XSD_H
|
7
|
+
#define XSD_H 1
|
8
|
+
|
9
|
+
#define XSD_ER_TYP 0
|
10
|
+
#define XSD_ER_PAR 1
|
11
|
+
#define XSD_ER_PARVAL 2
|
12
|
+
#define XSD_ER_VAL 3
|
13
|
+
#define XSD_ER_NPAT 4
|
14
|
+
#define XSD_ER_WS 5
|
15
|
+
#define XSD_ER_ENUM 6
|
16
|
+
|
17
|
+
extern void xsd_default_verror_handler(rnv_t *rnv, int erno,va_list ap);
|
18
|
+
|
19
|
+
extern void xsd_init(rx_st_t *rx_st);
|
20
|
+
extern void xsd_clear(void);
|
21
|
+
|
22
|
+
extern int xsd_allows(rx_st_t *rx_st, char *typ,char *ps,char *s,int n);
|
23
|
+
extern int xsd_equal(rx_st_t *rx_st, char *typ,char *val,char *s,int n);
|
24
|
+
|
25
|
+
extern void xsd_test(void);
|
26
|
+
|
27
|
+
#endif
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/* $Id: xsd_tm.c,v 1.9 2004/02/25 00:00:32 dvd Exp $ */
|
2
|
+
|
3
|
+
#include <stdlib.h> /*strtol*/
|
4
|
+
#include <limits.h>
|
5
|
+
#include <string.h> /*strlen*/
|
6
|
+
#include <assert.h>
|
7
|
+
#include "xsd_tm.h"
|
8
|
+
|
9
|
+
static int leap(int yr) {return !(yr%4)&&((yr%100)||!(yr%400));}
|
10
|
+
static int y2d(int yr) {return yr*365+yr/4-yr/100+yr/400;}
|
11
|
+
static int ymd2dn(int yr,int mo,int dy) {
|
12
|
+
switch(mo) {
|
13
|
+
case 12: dy+=30;
|
14
|
+
case 11: dy+=31;
|
15
|
+
case 10: dy+=30;
|
16
|
+
case 9: dy+=31;
|
17
|
+
case 8: dy+=31;
|
18
|
+
case 7: dy+=30;
|
19
|
+
case 6: dy+=31;
|
20
|
+
case 5: dy+=30;
|
21
|
+
case 4: dy+=31;
|
22
|
+
case 3: dy+=28;
|
23
|
+
case 2: dy+=31;
|
24
|
+
case 1: break;
|
25
|
+
}
|
26
|
+
if(mo>2&&leap(yr)) ++dy;
|
27
|
+
return dy;
|
28
|
+
}
|
29
|
+
|
30
|
+
static int ymd2ds(int yr,int mo,int dy) {
|
31
|
+
return (yr>=0?y2d(yr-1):y2d(yr)-366)+ymd2dn(yr,mo,dy);
|
32
|
+
}
|
33
|
+
|
34
|
+
#define DAYSECS 86400
|
35
|
+
#define TZSECS 50400
|
36
|
+
|
37
|
+
static void addsecs(struct xsd_tm *tmp,int secs) {
|
38
|
+
tmp->secs+=secs;
|
39
|
+
if(tmp->secs<0) {
|
40
|
+
--tmp->days;
|
41
|
+
tmp->secs+=DAYSECS;
|
42
|
+
} else if(tmp->secs>=DAYSECS) {
|
43
|
+
++tmp->days;
|
44
|
+
tmp->secs-=DAYSECS;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
void xsd_mktmn(struct xsd_tm *tmp,char *fmt,char *s,int n) {
|
49
|
+
char *end=s+n;
|
50
|
+
int yr=2000,mo=1,dy=1,hr=0,mi=0,zh=15,zm=0;
|
51
|
+
double se=0.0;
|
52
|
+
for(;;) {
|
53
|
+
if(s==end||!*fmt) break;
|
54
|
+
switch(*s) {
|
55
|
+
case '-':
|
56
|
+
switch(*fmt) {
|
57
|
+
case 'y': ++fmt; yr=strtol(s,&s,10); continue;
|
58
|
+
case 'z': ++fmt; ++s; zh=strtol(s,&s,10); ++s; zm=strtol(s,&s,10); continue;
|
59
|
+
}
|
60
|
+
break;
|
61
|
+
case '+': assert(*fmt=='z'); ++fmt;
|
62
|
+
zh=-strtol(s,&s,10); ++s; zm=-strtol(s,&s,10); continue;
|
63
|
+
case 'Z': assert(*fmt=='z'); ++fmt; zh=0; zm=0; ++s; continue;
|
64
|
+
case '0': case '1': case '2': case '3': case '4':
|
65
|
+
case '5': case '6': case '7': case '8': case '9':
|
66
|
+
switch(*(fmt++)) {
|
67
|
+
case 'y': yr=strtol(s,&s,10); continue;
|
68
|
+
case 'm': mo=strtol(s,&s,10); continue;
|
69
|
+
case 'd': dy=strtol(s,&s,10); continue;
|
70
|
+
case 't': hr=strtol(s,&s,10); ++s; mi=strtol(s,&s,10); ++s; se=strtod(s,&s); continue;
|
71
|
+
}
|
72
|
+
break;
|
73
|
+
}
|
74
|
+
++s;
|
75
|
+
}
|
76
|
+
tmp->mics=(int)((se-(int)se)*1000000+0.5);
|
77
|
+
tmp->secs=(int)se+60*(mi+60*hr);
|
78
|
+
tmp->days=ymd2ds(yr,mo,dy);
|
79
|
+
if((tmp->tz=(zh!=15))) addsecs(tmp,60*(zm+60*zh));
|
80
|
+
}
|
81
|
+
void xsd_mktm(struct xsd_tm *tmp,char *fmt,char *val) {xsd_mktmn(tmp,fmt,val,strlen(val));}
|
82
|
+
|
83
|
+
static int tmcmp(struct xsd_tm *tmp1, struct xsd_tm *tmp2) {
|
84
|
+
int dd=tmp1->days-tmp2->days, ds=tmp1->secs-tmp2->secs, dm=tmp1->mics-tmp2->mics;
|
85
|
+
return dd<0?-1:dd>0?1:ds<0?-1:ds>0?1:dm<0?-1:dm>0?1:0;
|
86
|
+
}
|
87
|
+
|
88
|
+
extern int xsd_tmcmp(struct xsd_tm *tmp1, struct xsd_tm *tmp2) {
|
89
|
+
if(tmp1->tz==tmp2->tz) {
|
90
|
+
return tmcmp(tmp1,tmp2);
|
91
|
+
} else if(tmp1->tz) {
|
92
|
+
struct xsd_tm tm; tm.mics=tmp2->mics;
|
93
|
+
tm.days=tmp2->days; tm.secs=tmp2->secs; addsecs(&tm,TZSECS);
|
94
|
+
if(tmcmp(tmp1,&tm)==1) return 1;
|
95
|
+
tm.days=tmp2->days; tm.secs=tmp2->secs; addsecs(&tm,-TZSECS);
|
96
|
+
if(tmcmp(tmp1,&tm)==-1) return -1;
|
97
|
+
return 2;
|
98
|
+
} else return -xsd_tmcmp(tmp2,tmp1);
|
99
|
+
}
|
100
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/* $Id: xsd_tm.h,v 1.2 2003/12/25 03:05:34 dvd Exp $ */
|
2
|
+
|
3
|
+
#ifndef XSD_TM_H
|
4
|
+
#define XSD_TM_H 1
|
5
|
+
|
6
|
+
struct xsd_tm {int days,secs,mics,tz;};
|
7
|
+
|
8
|
+
/* fmt is a combination of ymdtz */
|
9
|
+
extern void xsd_mktm(struct xsd_tm *tmp,char *fmt,char *val);
|
10
|
+
extern void xsd_mktmn(struct xsd_tm *tmp,char *fmt,char *s,int n);
|
11
|
+
|
12
|
+
/* -1 - less, 0 - equal, 1 - greater, other - unknown */
|
13
|
+
extern int xsd_tmcmp(struct xsd_tm *tmp1, struct xsd_tm *tmp2);
|
14
|
+
|
15
|
+
#endif
|
data/lib/rnv.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
class OxSaxDocument < ::Ox::Sax
|
2
|
+
attr_accessor :current_element, :current_attributes, :current_ns
|
3
|
+
|
4
|
+
def initialize(document)
|
5
|
+
@document = document
|
6
|
+
@current_ns = {}
|
7
|
+
@pos = nil
|
8
|
+
@line = nil
|
9
|
+
@column = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def start_element(name)
|
13
|
+
save_line_col
|
14
|
+
@current_element = name.to_s
|
15
|
+
@current_attributes = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def end_element(name)
|
19
|
+
save_line_col
|
20
|
+
@document.end_tag(name_with_ns_uri(name.to_s))
|
21
|
+
@current_element = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def attr(name, value)
|
25
|
+
if @current_element
|
26
|
+
if name.to_s.start_with?("xmlns")
|
27
|
+
ns = name.to_s.split(":")
|
28
|
+
@current_ns[ns.length > 1 ? ns.last : ""] = value.to_s
|
29
|
+
else
|
30
|
+
@current_attributes << name_with_ns_uri(name.to_s, false)
|
31
|
+
@current_attributes << value.to_s
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def attrs_done
|
37
|
+
save_line_col
|
38
|
+
if @current_element
|
39
|
+
@document.start_tag(name_with_ns_uri(@current_element), @current_attributes)
|
40
|
+
@current_element = nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def text(value)
|
45
|
+
save_line_col
|
46
|
+
@document.characters(value)
|
47
|
+
end
|
48
|
+
|
49
|
+
if false
|
50
|
+
def value(value)
|
51
|
+
save_line_col
|
52
|
+
@document.characters(value.as_s)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def instruct(inst)
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def get_ns_uri(ns)
|
61
|
+
@current_ns[ns] ? "#{@current_ns[ns]}:" : ""
|
62
|
+
end
|
63
|
+
|
64
|
+
def name_with_ns_uri(name, explicit_xmlns = true)
|
65
|
+
name_with_ns = name.split(":")
|
66
|
+
if name_with_ns.length > 1
|
67
|
+
"#{get_ns_uri(name_with_ns.first)}#{name_with_ns.last}"
|
68
|
+
else
|
69
|
+
if explicit_xmlns
|
70
|
+
"#{get_ns_uri("")}#{name_with_ns.first}"
|
71
|
+
else
|
72
|
+
name
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def save_line_col
|
78
|
+
@document.last_line = @line
|
79
|
+
@document.last_col = @column
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# handler = OxSaxDocument.new(@document)
|
84
|
+
# Ox.sax_parse(handler, file)
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'rnv/rnv'
|
3
|
+
|
4
|
+
module RNV
|
5
|
+
# @!visibility private
|
6
|
+
class NokogiriSaxDocument < Nokogiri::XML::SAX::Document
|
7
|
+
# @return [Nokogiri::XML::SAX::ParserContext]
|
8
|
+
attr_accessor :ctx
|
9
|
+
# @param [RNV::Document] document
|
10
|
+
def initialize(document)
|
11
|
+
@document = document
|
12
|
+
end
|
13
|
+
|
14
|
+
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = nil)
|
15
|
+
update_line_col
|
16
|
+
tag_attrs = attrs.map { |attr| [attr.uri ? "#{attr.uri}:#{attr.localname}" : attr.localname, attr.value] }
|
17
|
+
tag_name = uri ? "#{uri}:#{name}" : name
|
18
|
+
@document.start_tag(tag_name, tag_attrs.flatten)
|
19
|
+
end
|
20
|
+
|
21
|
+
def end_element_namespace(name, prefix = nil, uri = nil)
|
22
|
+
update_line_col
|
23
|
+
tag_name = uri ? "#{uri}:#{name}" : name
|
24
|
+
@document.end_tag(tag_name)
|
25
|
+
end
|
26
|
+
|
27
|
+
def characters str
|
28
|
+
update_line_col
|
29
|
+
@document.characters(str)
|
30
|
+
end
|
31
|
+
|
32
|
+
def cdata_block str
|
33
|
+
update_line_col
|
34
|
+
@document.characters(str)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def update_line_col
|
40
|
+
@document.last_line = @ctx.line
|
41
|
+
@document.last_col = @ctx.column
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class Validator
|
46
|
+
# @return [RNV::Document]
|
47
|
+
attr_accessor :document
|
48
|
+
|
49
|
+
def initialize
|
50
|
+
@document = RNV::Document.new
|
51
|
+
end
|
52
|
+
|
53
|
+
# errors from document
|
54
|
+
# @return [Array<RNV::Error>]
|
55
|
+
def errors
|
56
|
+
@document.errors
|
57
|
+
end
|
58
|
+
|
59
|
+
# @param [String] str RNC schema buffer
|
60
|
+
def load_schema_from_string(str)
|
61
|
+
@document.load_string(str)
|
62
|
+
end
|
63
|
+
|
64
|
+
# @param [String] file RNC schema filename
|
65
|
+
def load_schema_from_file(file)
|
66
|
+
@document.load_file(file)
|
67
|
+
end
|
68
|
+
|
69
|
+
# parse and validate buffer
|
70
|
+
# @param [String] str XML buffer to parse
|
71
|
+
# @return [Boolean] true if valid
|
72
|
+
def parse_string(str)
|
73
|
+
@document.errors = [] # reset errors
|
74
|
+
@document.start_document
|
75
|
+
rnv_doc = NokogiriSaxDocument.new(@document)
|
76
|
+
|
77
|
+
parser = Nokogiri::XML::SAX::Parser.new(rnv_doc)
|
78
|
+
parser.parse_memory(str) do |ctx|
|
79
|
+
rnv_doc.ctx = ctx
|
80
|
+
end
|
81
|
+
|
82
|
+
@document.valid?
|
83
|
+
end
|
84
|
+
|
85
|
+
# parse and validate file
|
86
|
+
# @param [String, File] xml XML file to parse
|
87
|
+
# @return [Boolean] true if valid
|
88
|
+
def parse_file(xml)
|
89
|
+
@document.errors = [] # reset errors
|
90
|
+
@document.start_document
|
91
|
+
rnv_doc = NokogiriSaxDocument.new(@document)
|
92
|
+
|
93
|
+
file = xml.is_a?(File) ? xml : File.open(xml)
|
94
|
+
|
95
|
+
parser = Nokogiri::XML::SAX::Parser.new(rnv_doc)
|
96
|
+
parser.parse(file) do |ctx|
|
97
|
+
rnv_doc.ctx = ctx
|
98
|
+
end
|
99
|
+
|
100
|
+
@document.valid?
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
metadata
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_rnv
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julien Boulnois
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-04-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.14'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake-compiler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby-prof
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: nokogiri
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description:
|
98
|
+
email:
|
99
|
+
executables: []
|
100
|
+
extensions:
|
101
|
+
- ext/rnv/extconf.rb
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- Gemfile
|
105
|
+
- ext/rnv/extconf.rb
|
106
|
+
- ext/rnv/ruby_rnv.c
|
107
|
+
- ext/rnv/src/ary.c
|
108
|
+
- ext/rnv/src/ary.h
|
109
|
+
- ext/rnv/src/drv.c
|
110
|
+
- ext/rnv/src/drv.h
|
111
|
+
- ext/rnv/src/er.c
|
112
|
+
- ext/rnv/src/er.h
|
113
|
+
- ext/rnv/src/erbit.h
|
114
|
+
- ext/rnv/src/ht.c
|
115
|
+
- ext/rnv/src/ht.h
|
116
|
+
- ext/rnv/src/ll.h
|
117
|
+
- ext/rnv/src/m.c
|
118
|
+
- ext/rnv/src/m.h
|
119
|
+
- ext/rnv/src/rn.c
|
120
|
+
- ext/rnv/src/rn.h
|
121
|
+
- ext/rnv/src/rnc.c
|
122
|
+
- ext/rnv/src/rnc.h
|
123
|
+
- ext/rnv/src/rnd.c
|
124
|
+
- ext/rnv/src/rnd.h
|
125
|
+
- ext/rnv/src/rnl.c
|
126
|
+
- ext/rnv/src/rnl.h
|
127
|
+
- ext/rnv/src/rnv.c
|
128
|
+
- ext/rnv/src/rnv.h
|
129
|
+
- ext/rnv/src/rnx.c
|
130
|
+
- ext/rnv/src/rnx.h
|
131
|
+
- ext/rnv/src/rx.c
|
132
|
+
- ext/rnv/src/rx.h
|
133
|
+
- ext/rnv/src/rx_cls_ranges.c
|
134
|
+
- ext/rnv/src/rx_cls_u.c
|
135
|
+
- ext/rnv/src/s.c
|
136
|
+
- ext/rnv/src/s.h
|
137
|
+
- ext/rnv/src/sc.c
|
138
|
+
- ext/rnv/src/sc.h
|
139
|
+
- ext/rnv/src/type.h
|
140
|
+
- ext/rnv/src/u.c
|
141
|
+
- ext/rnv/src/u.h
|
142
|
+
- ext/rnv/src/xcl.c
|
143
|
+
- ext/rnv/src/xmlc.c
|
144
|
+
- ext/rnv/src/xmlc.h
|
145
|
+
- ext/rnv/src/xsd.c
|
146
|
+
- ext/rnv/src/xsd.h
|
147
|
+
- ext/rnv/src/xsd_tm.c
|
148
|
+
- ext/rnv/src/xsd_tm.h
|
149
|
+
- lib/rnv.rb
|
150
|
+
- lib/rnv/ox_sax_document.rb
|
151
|
+
- lib/rnv/validator.rb
|
152
|
+
homepage:
|
153
|
+
licenses:
|
154
|
+
- MIT
|
155
|
+
metadata: {}
|
156
|
+
post_install_message:
|
157
|
+
rdoc_options: []
|
158
|
+
require_paths:
|
159
|
+
- lib
|
160
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '2.4'
|
165
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
requirements: []
|
171
|
+
rubygems_version: 3.0.8
|
172
|
+
signing_key:
|
173
|
+
specification_version: 4
|
174
|
+
summary: RelaxNG compact syntax validator
|
175
|
+
test_files: []
|