graphql-c_parser 1.0.8 → 1.1.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/graphql_c_parser_ext/graphql_c_parser_ext.c +3 -3
- data/ext/graphql_c_parser_ext/graphql_c_parser_ext.h +1 -0
- data/ext/graphql_c_parser_ext/lexer.c +311 -303
- data/ext/graphql_c_parser_ext/lexer.h +1 -1
- data/lib/graphql/c_parser/version.rb +1 -1
- data/lib/graphql/c_parser.rb +25 -5
- metadata +4 -4
data/lib/graphql/c_parser.rb
CHANGED
@@ -7,8 +7,7 @@ require "graphql/graphql_c_parser_ext"
|
|
7
7
|
module GraphQL
|
8
8
|
module CParser
|
9
9
|
def self.parse(query_str, filename: nil, trace: GraphQL::Tracing::NullTrace)
|
10
|
-
|
11
|
-
parser.result
|
10
|
+
Parser.parse(query_str, filename: filename, trace: trace)
|
12
11
|
end
|
13
12
|
|
14
13
|
def self.parse_file(filename)
|
@@ -16,6 +15,10 @@ module GraphQL
|
|
16
15
|
parse(contents, filename: filename)
|
17
16
|
end
|
18
17
|
|
18
|
+
def self.tokenize_with_c(str)
|
19
|
+
tokenize_with_c_internal(str, false)
|
20
|
+
end
|
21
|
+
|
19
22
|
def self.prepare_parse_error(message, parser)
|
20
23
|
if message.start_with?("memory exhausted")
|
21
24
|
return GraphQL::ParseError.new("This query is too large to execute.", nil, nil, parser.query_string, filename: parser.filename)
|
@@ -54,7 +57,7 @@ module GraphQL
|
|
54
57
|
end
|
55
58
|
|
56
59
|
module Lexer
|
57
|
-
def self.tokenize(graphql_string)
|
60
|
+
def self.tokenize(graphql_string, intern_identifiers: false)
|
58
61
|
if !(graphql_string.encoding == Encoding::UTF_8 || graphql_string.ascii_only?)
|
59
62
|
graphql_string = graphql_string.dup.force_encoding(Encoding::UTF_8)
|
60
63
|
end
|
@@ -70,11 +73,20 @@ module GraphQL
|
|
70
73
|
]
|
71
74
|
]
|
72
75
|
end
|
73
|
-
|
76
|
+
tokenize_with_c_internal(graphql_string, intern_identifiers)
|
74
77
|
end
|
75
78
|
end
|
76
79
|
|
77
80
|
class Parser
|
81
|
+
def self.parse(query_str, filename: nil, trace: GraphQL::Tracing::NullTrace)
|
82
|
+
self.new(query_str, filename, trace).result
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.parse_file(filename)
|
86
|
+
contents = File.read(filename)
|
87
|
+
parse(contents, filename: filename)
|
88
|
+
end
|
89
|
+
|
78
90
|
def initialize(query_string, filename, trace)
|
79
91
|
if query_string.nil?
|
80
92
|
raise GraphQL::ParseError.new("No query string was present", nil, nil, query_string)
|
@@ -85,12 +97,13 @@ module GraphQL
|
|
85
97
|
@next_token_index = 0
|
86
98
|
@result = nil
|
87
99
|
@trace = trace
|
100
|
+
@intern_identifiers = false
|
88
101
|
end
|
89
102
|
|
90
103
|
def result
|
91
104
|
if @result.nil?
|
92
105
|
@tokens = @trace.lex(query_string: @query_string) do
|
93
|
-
GraphQL::CParser::Lexer.tokenize(@query_string)
|
106
|
+
GraphQL::CParser::Lexer.tokenize(@query_string, intern_identifiers: @intern_identifiers)
|
94
107
|
end
|
95
108
|
@trace.parse(query_string: @query_string) do
|
96
109
|
c_parse
|
@@ -102,6 +115,13 @@ module GraphQL
|
|
102
115
|
|
103
116
|
attr_reader :tokens, :next_token_index, :query_string, :filename
|
104
117
|
end
|
118
|
+
|
119
|
+
class SchemaParser < Parser
|
120
|
+
def initialize(*args)
|
121
|
+
super
|
122
|
+
@intern_identifiers = true
|
123
|
+
end
|
124
|
+
end
|
105
125
|
end
|
106
126
|
|
107
127
|
def self.scan_with_c(graphql_string)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-c_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|
@@ -59,14 +59,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 3.0.0
|
63
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
requirements: []
|
69
|
-
rubygems_version: 3.5.
|
69
|
+
rubygems_version: 3.5.3
|
70
70
|
signing_key:
|
71
71
|
specification_version: 4
|
72
72
|
summary: A parser for GraphQL, implemented as a C extension
|