mongo-ejson 0.2.1 → 0.2.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fe75002ec17489608405072b1cf5e19643bce4732f97fc74c42a7d4c77f331a
4
- data.tar.gz: 9ffd4f54c57599d7c97081f6fdf7ee27bd3075bb7ae95cf659910d9e20f1a8af
3
+ metadata.gz: b709e3ac5baabde6b8be18306f60950025d62f69cd51081566598b72edb8206c
4
+ data.tar.gz: b2adf3445e21d7135302ea6826e8658cb5ad942e4432b411a5e982a92eb4d1de
5
5
  SHA512:
6
- metadata.gz: 4def483883272fd0938a362fd6edd41131f4b9e633aefca1ab3b2f793f9078730eb0026e0010cc602c4152b68faa52a02edb790bef5a6951a714880d32135c9a
7
- data.tar.gz: 17cf8d185b2dcfa62e654b6752cba2f0ebd4eba6c0e2665b98117b19698c72786f035ed23f950d4b9abe059c2f4d38527587c12276487ddb9e57ca2e8180c38d
6
+ metadata.gz: 9405d00a765d0e4914373e7a8e9537c3cabdce29d72d2147b456b47f5f7f2045f149be2d3625ba633cae86abe138064385adf00052c33019e6fedbdf9cd10eb0
7
+ data.tar.gz: dac9dae1f68f10f71f69c17587e3cfe4e0104aa65838a375ccde514c16941b7ed213a28f5885227396bb7314f110901e79adca45b104455e7d37e3f5976d2bdb
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ *.gem
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
@@ -0,0 +1,34 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - 'src/**/*'
6
+ - 'vendor/bundle/**/*'
7
+
8
+ Metrics/LineLength:
9
+ Max: 120
10
+
11
+ Layout/EndOfLine:
12
+ EnforcedStyle: lf
13
+
14
+ Style/SymbolArray:
15
+ EnforcedStyle: brackets
16
+
17
+ Style/TrailingCommaInHashLiteral:
18
+ EnforcedStyleForMultiline: consistent_comma
19
+
20
+ Style/EmptyMethod:
21
+ EnforcedStyle: expanded
22
+
23
+ Metrics/BlockLength:
24
+ Exclude:
25
+ - '*.gemspec'
26
+ ExcludedMethods:
27
+ - describe
28
+
29
+ Style/FrozenStringLiteralComment:
30
+ EnforcedStyle: when_needed
31
+
32
+ Layout/AlignHash:
33
+ EnforcedHashRocketStyle: table
34
+ EnforcedColonStyle: table
@@ -0,0 +1,13 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2019-02-07 17:38:30 +0300 using RuboCop version 0.63.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ Style/FrozenStringLiteralComment:
10
+ Enabled: false
11
+
12
+ Style/Documentation:
13
+ Enabled: false
@@ -0,0 +1 @@
1
+ 2.6.1
@@ -1,9 +1,13 @@
1
- ---
2
1
  sudo: false
3
2
  language: ruby
4
3
  cache: bundler
5
4
  rvm:
5
+ - 2.7
6
6
  - 2.6
7
7
  - 2.5
8
8
  - jruby-9.2
9
- before_install: gem install bundler -v 2.0.1
9
+ before_install:
10
+ - gem install bundler -v 2.0.1
11
+ script:
12
+ - bundle exec rspec
13
+ - bundle exec rubocop
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mongo-ejson.gemspec
4
4
  gemspec
@@ -1,28 +1,48 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mongo-ejson (0.2.1)
4
+ mongo-ejson (0.2.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- bson (4.4.2)
10
- bson (4.4.2-java)
11
- diff-lcs (1.3)
12
- rake (10.5.0)
13
- rspec (3.8.0)
14
- rspec-core (~> 3.8.0)
15
- rspec-expectations (~> 3.8.0)
16
- rspec-mocks (~> 3.8.0)
17
- rspec-core (3.8.0)
18
- rspec-support (~> 3.8.0)
19
- rspec-expectations (3.8.2)
9
+ ast (2.4.1)
10
+ bson (4.9.2)
11
+ bson (4.9.2-java)
12
+ diff-lcs (1.4.2)
13
+ parallel (1.19.2)
14
+ parser (2.7.1.4)
15
+ ast (~> 2.4.1)
16
+ rainbow (3.0.0)
17
+ rake (13.0.1)
18
+ regexp_parser (1.7.1)
19
+ rexml (3.2.4)
20
+ rspec (3.9.0)
21
+ rspec-core (~> 3.9.0)
22
+ rspec-expectations (~> 3.9.0)
23
+ rspec-mocks (~> 3.9.0)
24
+ rspec-core (3.9.2)
25
+ rspec-support (~> 3.9.3)
26
+ rspec-expectations (3.9.2)
20
27
  diff-lcs (>= 1.2.0, < 2.0)
21
- rspec-support (~> 3.8.0)
22
- rspec-mocks (3.8.0)
28
+ rspec-support (~> 3.9.0)
29
+ rspec-mocks (3.9.1)
23
30
  diff-lcs (>= 1.2.0, < 2.0)
24
- rspec-support (~> 3.8.0)
25
- rspec-support (3.8.0)
31
+ rspec-support (~> 3.9.0)
32
+ rspec-support (3.9.3)
33
+ rubocop (0.86.0)
34
+ parallel (~> 1.10)
35
+ parser (>= 2.7.0.1)
36
+ rainbow (>= 2.2.2, < 4.0)
37
+ regexp_parser (>= 1.7)
38
+ rexml
39
+ rubocop-ast (>= 0.0.3, < 1.0)
40
+ ruby-progressbar (~> 1.7)
41
+ unicode-display_width (>= 1.4.0, < 2.0)
42
+ rubocop-ast (0.0.3)
43
+ parser (>= 2.7.0.1)
44
+ ruby-progressbar (1.10.1)
45
+ unicode-display_width (1.7.0)
26
46
 
27
47
  PLATFORMS
28
48
  java
@@ -32,8 +52,9 @@ DEPENDENCIES
32
52
  bson
33
53
  bundler (~> 2.0)
34
54
  mongo-ejson!
35
- rake (~> 10.0)
55
+ rake (~> 13.0)
36
56
  rspec (~> 3.0)
57
+ rubocop (~> 0.63)
37
58
 
38
59
  BUNDLED WITH
39
- 2.0.1
60
+ 2.1.4
data/README.md CHANGED
@@ -42,50 +42,40 @@ Just add it to your `application.js`
42
42
  ## Requirements
43
43
 
44
44
  Runtime:
45
- * Ruby 2.5+
46
- * JRuby 9.2+
45
+
46
+ - Ruby 2.5+
47
+ - JRuby 9.2+
47
48
 
48
49
  Development:
49
- * [canopy](https://github.com/jcoglan/canopy) from master branch
50
+
51
+ - [canopy](https://github.com/jcoglan/canopy) from master branch
50
52
 
51
53
  ## Supported literals
52
54
 
53
- * `undefined`
54
- * `MinKey`
55
- * `MaxKey`
56
- * `ObjectId(<object_id_hex_string>)`
57
- * `BinData(<type_string>, <bindata_base64_string>)`
58
- * `BinData(<type_integer>, <base64_bindata>)`
59
- * `Timestamp(<time_interger>, <increment_integer>)`
60
- * `NumberLong(<value_string>)`
61
- * `NumberLong(<value_integer>)`
62
- * `NumberDecimal(<value_string>)`
63
- * `NumberDecimal(<value_number>)`
64
- * `ISODate(<time_iso8601_string>)`
65
- * `ISODate(<time_interger>)`
66
- * `new Date(<time_iso8601_string>)`
67
- * `new Date(<time_interger>)`
68
- * `/<regexp>/<options>`
69
- * `DBRef(<name_string>, <object_id_hex_string>)`
55
+ - `undefined`
56
+ - `MinKey`
57
+ - `MaxKey`
58
+ - `ObjectId(<object_id_hex_string>)`
59
+ - `BinData(<type_string>, <bindata_base64_string>)`
60
+ - `BinData(<type_integer>, <base64_bindata>)`
61
+ - `Timestamp(<time_interger>, <increment_integer>)`
62
+ - `NumberLong(<value_string>)`
63
+ - `NumberLong(<value_integer>)`
64
+ - `NumberDecimal(<value_string>)`
65
+ - `NumberDecimal(<value_number>)`
66
+ - `ISODate(<time_iso8601_string>)`
67
+ - `ISODate(<time_interger>)`
68
+ - `new Date(<time_iso8601_string>)`
69
+ - `new Date(<time_interger>)`
70
+ - `/<regexp>/<options>`
71
+ - `DBRef(<name_string>, <object_id_hex_string>)`
70
72
 
71
73
  ## Supported JSON extensions:
72
74
 
73
- * Single quoted strings
74
- * Single line comments `//`
75
+ - Single quoted strings
76
+ - Single line comments `//`
77
+ - Non-quoted key names: `{_id: 123}`
75
78
 
76
79
  ## Planned JSON extensions:
77
80
 
78
- * Non-quoted key names: `{_id: 123}`
79
- * Multi-line comments: `/* */`
80
-
81
- ## Issues
82
-
83
- * String: following not escaped chars should fail, but pass
84
-
85
- * Backspace (must be replaced with `\b`). no fixture
86
- * Form feed (must be replaced with `\f`), no fixture
87
- * Newline (must be replaced with `\n`)
88
- * Carriage return (must be replaced with `\r`), no fixture
89
- * Tab (must be replaced with `\t`)
90
-
91
-
81
+ - Multi-line comments: `/* */`
data/Rakefile CHANGED
@@ -1,26 +1,26 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
  require 'fileutils'
4
4
 
5
5
  CANOPY_BIN = ENV.fetch('CANOPY_BIN') { 'canopy' }
6
6
 
7
7
  RSpec::Core::RakeTask.new(:spec)
8
8
 
9
- task :default => :spec
9
+ task default: :spec
10
10
 
11
11
  task :compile_js do
12
- sh %{ #{CANOPY_BIN} src/ejson.peg --lang javascript }
12
+ sh %( #{CANOPY_BIN} src/ejson.peg --lang javascript )
13
13
  end
14
14
 
15
15
  task :compile_ruby do
16
- sh %{ #{CANOPY_BIN} src/ejson.peg --lang ruby }
16
+ sh %( #{CANOPY_BIN} src/ejson.peg --lang ruby )
17
17
  end
18
18
 
19
- desc "Build and run test suite"
20
- task :test => [:compile_ruby, :spec] do
19
+ desc 'Build and run test suite'
20
+ task test: [:compile_ruby, :spec] do
21
21
  end
22
22
 
23
- desc "Prepare assets"
24
- task :assets => [:test, :compile_js] do
23
+ desc 'Prepare assets'
24
+ task assets: [:test, :compile_js, :compile_ruby] do
25
25
  mv 'src/ejson.js', 'vendor/assets/javascripts/ejson.js'
26
26
  end
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "ejson"
3
+ require 'bundler/setup'
4
+ require 'ejson'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "ejson"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -1,46 +1,47 @@
1
-
2
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "ejson/version"
3
+ require 'ejson/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "mongo-ejson"
6
+ spec.name = 'mongo-ejson'
8
7
  spec.version = EJSON::VERSION
9
- spec.authors = ["Alex Bondar"]
10
- spec.email = ["mongo-ejson-gem@db-ai.co"]
8
+ spec.authors = ['Alex Bondar']
9
+ spec.email = ['mongo-ejson-gem@db-ai.co']
11
10
 
12
- spec.summary = %q{MongoDB Extended JS(ON) parser}
13
- spec.description = %q{Parses MongoDB favoured JS(ON) string into objects}
14
- spec.homepage = "https://gibhub.com/db-ai/mongo-ejson"
11
+ spec.summary = 'MongoDB Extended JS(ON) parser'
12
+ spec.description = 'Parses MongoDB favoured JS(ON) string into objects'
13
+ spec.homepage = 'https://gibhub.com/db-ai/mongo-ejson'
15
14
 
16
15
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the
17
16
  # 'allowed_push_host' to allow pushing to a single host or delete this
18
17
  # section to allow pushing to any host.
19
18
  if spec.respond_to?(:metadata)
20
- spec.metadata["allowed_push_host"] = "https://rubygems.org/"
19
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
21
20
 
22
- spec.metadata["homepage_uri"] = spec.homepage
23
- spec.metadata["source_code_uri"] = "https://gibhub.com/db-ai/mongo-ejson"
24
- spec.metadata["changelog_uri"] = "https://gibhub.com/db-ai/mongo-ejson"
21
+ spec.metadata['homepage_uri'] = spec.homepage
22
+ spec.metadata['source_code_uri'] = 'https://gibhub.com/db-ai/mongo-ejson'
23
+ spec.metadata['changelog_uri'] = 'https://gibhub.com/db-ai/mongo-ejson'
25
24
  else
26
- raise "RubyGems 2.0 or newer is required to protect against " \
27
- "public gem pushes."
25
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
26
+ 'public gem pushes.'
28
27
  end
29
28
 
30
29
  # Specify which files should be added to the gem when it is released.
31
30
  # The `git ls-files -z` loads the files in the RubyGem that have been
32
31
  # added into git.
33
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
32
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
34
33
  `git ls-files -z`
35
34
  .split("\x0")
36
35
  .reject { |f| f.match(%r{^(test|spec|features)/}) }
37
36
  end
38
- spec.bindir = "exe"
37
+ spec.bindir = 'exe'
39
38
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
40
- spec.require_paths = ["lib"]
39
+ spec.require_paths = ['lib']
40
+
41
+ spec.add_development_dependency 'bundler', '~> 2.0'
42
+ spec.add_development_dependency 'rake', '~> 13.0'
43
+ spec.add_development_dependency 'rspec', '~> 3.0'
44
+ spec.add_development_dependency 'rubocop', '~> 0.63'
41
45
 
42
- spec.add_development_dependency "bundler", "~> 2.0"
43
- spec.add_development_dependency "rake", "~> 10.0"
44
- spec.add_development_dependency "rspec", "~> 3.0"
45
- spec.add_development_dependency "bson"
46
+ spec.add_development_dependency 'bson'
46
47
  end
@@ -23,14 +23,20 @@ class EJSON
23
23
  end
24
24
 
25
25
  private
26
+
26
27
  def boot_bson
27
28
  return if defined? ::BSON
28
- require 'bson' rescue nil
29
29
 
30
- unless defined? ::BSON
31
- raise "Can't find constant ::BSON. Seems like gem 'bson' is not " \
32
- "loaded. Make sure it's available in your bundle."
30
+ begin
31
+ require 'bson'
32
+ rescue StandardError
33
+ nil
33
34
  end
35
+
36
+ return if defined? ::BSON
37
+
38
+ raise "Can't find constant ::BSON. Seems like gem 'bson' is not " \
39
+ "loaded. Make sure it's available in your bundle."
34
40
  end
35
41
  end
36
42
  end
@@ -1,37 +1,40 @@
1
1
  module ParserAction
2
2
  module AbstractJSON
3
3
  # JSON Entities
4
- def make_root(input, start, _end, elements)
4
+ def make_root(input, starts_at, _ends_at, elements)
5
5
  end
6
6
 
7
- def make_object(input, start, _end, elements)
7
+ def make_object(input, starts_at, _ends_at, elements)
8
8
  end
9
9
 
10
- def make_pair(input, start, _end, elements)
10
+ def make_pair(input, starts_at, _ends_at, elements)
11
11
  end
12
12
 
13
- def make_empty_object(input, start, _end, elements)
13
+ def make_empty_object(input, starts_at, _ends_at, elements)
14
14
  end
15
15
 
16
- def make_string(input, start, _end, elements)
16
+ def make_string(input, starts_at, _ends_at, elements)
17
17
  end
18
18
 
19
- def make_array(input, start, _end, elements)
19
+ def make_identifier(input, starts_at, _ends_at, elements)
20
20
  end
21
21
 
22
- def make_empty_array(input, start, _end, elements)
22
+ def make_array(input, starts_at, _ends_at, elements)
23
23
  end
24
24
 
25
- def make_number(input, start, _end, elements)
25
+ def make_empty_array(input, starts_at, _ends_at, elements)
26
26
  end
27
27
 
28
- def make_null(input, start, _end)
28
+ def make_number(input, starts_at, _ends_at, elements)
29
29
  end
30
30
 
31
- def make_true(input, start, _end)
31
+ def make_null(input, starts_at, _ends_at)
32
32
  end
33
33
 
34
- def make_false(input, start, _end)
34
+ def make_true(input, starts_at, _ends_at)
35
+ end
36
+
37
+ def make_false(input, starts_at, _ends_at)
35
38
  end
36
39
  end
37
40
  end