fast_jsonparser 0.1.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,9 +30,8 @@ Gem::Specification.new do |spec|
30
30
  # Specify which files should be added to the gem when it is released.
31
31
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
32
32
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
33
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|benchmark|simdjson)/}) }
33
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|benchmark)/}) }
34
34
  end
35
- spec.files.reject! { |fn| fn.include? "simdjson" }
36
35
  spec.bindir = "exe"
37
36
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
38
37
  spec.require_paths = ["lib"]
@@ -40,8 +39,9 @@ Gem::Specification.new do |spec|
40
39
  spec.extensions << "ext/fast_jsonparser/extconf.rb"
41
40
 
42
41
  spec.add_development_dependency "bundler", "~> 2.0"
43
- spec.add_development_dependency "rake", "~> 10.0"
42
+ spec.add_development_dependency "rake", "~> 13.0"
44
43
  spec.add_development_dependency "minitest", "~> 5.0"
45
44
  spec.add_development_dependency "rake-compiler"
46
45
  spec.add_development_dependency 'oj'
46
+ spec.add_development_dependency 'yajl-ruby'
47
47
  end
@@ -1,8 +1,46 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "fast_jsonparser/version"
2
4
 
3
5
  module FastJsonparser
4
- class Error < StandardError; end
5
- # Your code goes here...
6
- end
6
+ Error = Class.new(StandardError)
7
+ ParseError = Class.new(Error)
8
+ UnknownError = Class.new(Error)
9
+ BatchSizeTooSmall = Class.new(Error)
10
+
11
+ DEFAULT_BATCH_SIZE = 1_000_000 # from include/simdjson/dom/parser.h
12
+
13
+ class << self
14
+ def parse(source, symbolize_keys: true)
15
+ parser._parse(source, symbolize_keys)
16
+ end
17
+
18
+ def load(source, symbolize_keys: true)
19
+ parser._load(source, symbolize_keys)
20
+ end
21
+
22
+ def load_many(source, symbolize_keys: true, batch_size: DEFAULT_BATCH_SIZE, &block)
23
+ Native.new._load_many(source, symbolize_keys, batch_size, &block)
24
+ rescue UnknownError => error
25
+ case error.message
26
+ when "This parser can't support a document that big"
27
+ raise BatchSizeTooSmall, "One of the documents was bigger than the batch size (#{batch_size}B), try increasing it."
28
+ else
29
+ raise
30
+ end
31
+ end
7
32
 
8
- require "fast_jsonparser/fast_jsonparser" # loads cpp extension
33
+ private
34
+
35
+ def parser
36
+ @parser ||= Native.new
37
+ end
38
+ end
39
+
40
+ class Native
41
+ end
42
+
43
+ require "fast_jsonparser/fast_jsonparser" # loads cpp extension
44
+
45
+ private_constant :Native
46
+ end
@@ -1,3 +1,3 @@
1
1
  module FastJsonparser
2
- VERSION = "0.1.1"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_jsonparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anil Maurya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-14 00:00:00.000000000 Z
11
+ date: 2020-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yajl-ruby
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  description: Fast Json Parser
84
98
  email:
85
99
  - anilmaurya8dec@gmail.com
@@ -88,8 +102,10 @@ extensions:
88
102
  - ext/fast_jsonparser/extconf.rb
89
103
  extra_rdoc_files: []
90
104
  files:
105
+ - ".github/workflows/ruby.yml"
91
106
  - ".gitignore"
92
107
  - ".travis.yml"
108
+ - CHANGELOG.md
93
109
  - CODE_OF_CONDUCT.md
94
110
  - Gemfile
95
111
  - Gemfile.lock
@@ -101,9 +117,10 @@ files:
101
117
  - bin/setup
102
118
  - ext/fast_jsonparser/extconf.rb
103
119
  - ext/fast_jsonparser/fast_jsonparser.cpp
120
+ - ext/fast_jsonparser/simdjson.cpp
121
+ - ext/fast_jsonparser/simdjson.h
104
122
  - fast_jsonparser.gemspec
105
123
  - lib/fast_jsonparser.rb
106
- - lib/fast_jsonparser/fast_jsonparser.bundle
107
124
  - lib/fast_jsonparser/version.rb
108
125
  homepage: https://github.com/anilmaurya/fast_jsonparser
109
126
  licenses: