graphql-c_parser 1.0.8 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  #ifndef Graphql_lexer_h
2
2
  #define Graphql_lexer_h
3
3
  #include <ruby.h>
4
- VALUE tokenize(VALUE query_rbstr);
4
+ VALUE tokenize(VALUE query_rbstr, int fstring_identifiers);
5
5
  void setup_static_token_variables();
6
6
  #endif
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GraphQL
4
4
  module CParser
5
- VERSION = "1.0.8"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
@@ -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
- parser = Parser.new(query_str, filename, trace)
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
- tokenize_with_c(graphql_string)
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.8
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-02-20 00:00:00.000000000 Z
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: 2.4.0
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.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