pg_array_parser 0.0.8-java
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.
- data/CHANGELOG.md +22 -0
- data/Gemfile +4 -0
- data/README.md +70 -0
- data/Rakefile +21 -0
- data/ext/pg_array_parser/PgArrayParserEngine.java +118 -0
- data/ext/pg_array_parser/PgArrayParserEngineService.java +26 -0
- data/lib/pg_array_parser.jar +0 -0
- data/lib/pg_array_parser.rb +25 -0
- data/lib/pg_array_parser/version.rb +3 -0
- data/pg_array_parser.gemspec +40 -0
- data/spec/parser_spec.rb +99 -0
- data/spec/spec_helper.rb +1 -0
- metadata +109 -0
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# 0.0.7
|
|
2
|
+
* Trying to not break the C extension now
|
|
3
|
+
|
|
4
|
+
# 0.0.6
|
|
5
|
+
* Excludes C extension files in JRuby
|
|
6
|
+
|
|
7
|
+
# 0.0.5
|
|
8
|
+
* Prevents attempt to build C extension in JRuby
|
|
9
|
+
|
|
10
|
+
# 0.0.4
|
|
11
|
+
* Fixes bad release
|
|
12
|
+
|
|
13
|
+
# 0.0.3
|
|
14
|
+
* Refactored Java to ensure thread safety - [mauricio](https://github.com/mauricio) -
|
|
15
|
+
Merged at [a30aba](https://github.com/dockyard/pg_array_parser/commit/a30aba4885812290f83c693e6b68c697b0dac675)
|
|
16
|
+
|
|
17
|
+
# 0.0.2
|
|
18
|
+
* Refactored C extension - [jeremyevans](https://github.com/jeremyevens) - Merged at [ad4987](https://github.com/dockyard/pg_array_parser/commit/ad4987dba411decca4aebd0750c990212dc81039)
|
|
19
|
+
* Adds JRuby support - thanks to [tychobrailleur](https://github.com/tychobrailleur) for help with the java class
|
|
20
|
+
|
|
21
|
+
# 0.0.1
|
|
22
|
+
* Initial release
|
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# PgArrayParser
|
|
2
|
+
[](http://travis-ci.org/dockyard/pg_array_parser)
|
|
3
|
+
[](https://codeclimate.com/github/dockyard/pg_array_parser)
|
|
4
|
+
|
|
5
|
+
Fast PostreSQL array parsing.
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
Add this line to your application's Gemfile:
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
gem 'pg_array_parser'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
And then execute:
|
|
15
|
+
|
|
16
|
+
$ bundle
|
|
17
|
+
|
|
18
|
+
Or install it yourself as:
|
|
19
|
+
|
|
20
|
+
$ gem install pg_array_parser
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
Include the `PgArrayParser` module, which provides the `parse_pg_array`
|
|
25
|
+
method.
|
|
26
|
+
|
|
27
|
+
```ruby
|
|
28
|
+
class MyPostgresParser
|
|
29
|
+
include PgArrayParser
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
parser = MyPostgresParser.new
|
|
33
|
+
parser.parse_pg_array '{}'
|
|
34
|
+
# => []
|
|
35
|
+
parser.parse_pg_array '{1,2,3,4}'
|
|
36
|
+
# => ["1", "2", "3", "4"]
|
|
37
|
+
parser.parse_pg_array '{1,{2,3},4}'
|
|
38
|
+
# => ["1", ["2", "3"], "4"]
|
|
39
|
+
parser.parse_pg_array '{some,strings that,"May have some ,\'s"}'
|
|
40
|
+
# => ["some", "strings that", "May have some ,'s"]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Authors
|
|
44
|
+
|
|
45
|
+
[Dan McClain](http://github.com/danmcclain) [twitter](http://twitter.com/_danmcclain)
|
|
46
|
+
|
|
47
|
+
## Versioning ##
|
|
48
|
+
|
|
49
|
+
This gem follows [Semantic Versioning](http://semver.org)
|
|
50
|
+
|
|
51
|
+
## Want to help? ##
|
|
52
|
+
|
|
53
|
+
Stable branches are created based upon each minor version. Please make
|
|
54
|
+
pull requests to specific branches rather than master.
|
|
55
|
+
|
|
56
|
+
Please make sure you include tests!
|
|
57
|
+
|
|
58
|
+
Unles Rails drops support for Ruby 1.8.7 we will continue to use the
|
|
59
|
+
hash-rocket syntax. Please respect this.
|
|
60
|
+
|
|
61
|
+
Don't use tabs to indent, two spaces are the standard.
|
|
62
|
+
|
|
63
|
+
## Legal ##
|
|
64
|
+
|
|
65
|
+
[DockYard](http://dockyard.com), LLC © 2012
|
|
66
|
+
|
|
67
|
+
[@dockyard](http://twitter.com/dockyard)
|
|
68
|
+
|
|
69
|
+
[Licensed under the MIT
|
|
70
|
+
license](http://www.opensource.org/licenses/mit-license.php)
|
data/Rakefile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
require 'bundler/gem_tasks'
|
|
3
|
+
|
|
4
|
+
require 'rspec/core/rake_task'
|
|
5
|
+
|
|
6
|
+
spec = Gem::Specification.load('pg_array_parser.gemspec')
|
|
7
|
+
|
|
8
|
+
if RUBY_PLATFORM =~ /java/
|
|
9
|
+
require 'rake/javaextensiontask'
|
|
10
|
+
Rake::JavaExtensionTask.new('pg_array_parser', spec)
|
|
11
|
+
else
|
|
12
|
+
require 'rake/extensiontask'
|
|
13
|
+
Rake::ExtensionTask.new('pg_array_parser', spec)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
task :install => :compile
|
|
17
|
+
task :spec => :install
|
|
18
|
+
|
|
19
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
20
|
+
|
|
21
|
+
task :default => :spec
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
package pgarrayparser;
|
|
2
|
+
|
|
3
|
+
import org.jruby.*;
|
|
4
|
+
import org.jruby.anno.JRubyClass;
|
|
5
|
+
import org.jruby.anno.JRubyMethod;
|
|
6
|
+
import org.jruby.runtime.ThreadContext;
|
|
7
|
+
import org.jruby.runtime.builtin.IRubyObject;
|
|
8
|
+
|
|
9
|
+
@JRubyClass(name = "PgArrayParser::PgArrayParserEngine")
|
|
10
|
+
public class PgArrayParserEngine extends RubyObject {
|
|
11
|
+
|
|
12
|
+
public PgArrayParserEngine(final Ruby runtime, RubyClass rubyClass) {
|
|
13
|
+
super(runtime, rubyClass);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@JRubyMethod(name = "parse_pg_array")
|
|
17
|
+
public RubyArray parse_pg_array( ThreadContext context, IRubyObject value) {
|
|
18
|
+
String content = value.asJavaString();
|
|
19
|
+
return parseData(context, content, 0);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private static RubyArray parseData( ThreadContext context, String content, int index)
|
|
23
|
+
{
|
|
24
|
+
RubyArray items = RubyArray.newArray(context.getRuntime());
|
|
25
|
+
|
|
26
|
+
for( int x = index; x < content.length(); x++ ) {
|
|
27
|
+
|
|
28
|
+
char token = content.charAt(x);
|
|
29
|
+
|
|
30
|
+
switch (token) {
|
|
31
|
+
case '{':
|
|
32
|
+
x = parseArrayContents( context, items, content, x + 1 );
|
|
33
|
+
break;
|
|
34
|
+
case '}':
|
|
35
|
+
return items;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return items;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private static int parseArrayContents( ThreadContext context, RubyArray items, String content, int index ) {
|
|
44
|
+
|
|
45
|
+
StringBuilder currentItem = new StringBuilder();
|
|
46
|
+
boolean isEscaping = false;
|
|
47
|
+
boolean isQuoted = false;
|
|
48
|
+
boolean wasQuoted = false;
|
|
49
|
+
|
|
50
|
+
int x = index;
|
|
51
|
+
|
|
52
|
+
for(; x < content.length(); x++ ) {
|
|
53
|
+
|
|
54
|
+
char token = content.charAt(x);
|
|
55
|
+
|
|
56
|
+
if ( isEscaping ) {
|
|
57
|
+
currentItem.append( token );
|
|
58
|
+
isEscaping = false;
|
|
59
|
+
} else {
|
|
60
|
+
if ( isQuoted ) {
|
|
61
|
+
switch (token) {
|
|
62
|
+
case '"':
|
|
63
|
+
isQuoted = false;
|
|
64
|
+
wasQuoted = true;
|
|
65
|
+
break;
|
|
66
|
+
case '\\':
|
|
67
|
+
isEscaping = true;
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
currentItem.append(token);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
switch (token) {
|
|
74
|
+
case '\\':
|
|
75
|
+
isEscaping = true;
|
|
76
|
+
break;
|
|
77
|
+
case ',':
|
|
78
|
+
addItem(context, items, currentItem, wasQuoted);
|
|
79
|
+
currentItem = new StringBuilder();
|
|
80
|
+
wasQuoted = false;
|
|
81
|
+
break;
|
|
82
|
+
case '"':
|
|
83
|
+
isQuoted = true;
|
|
84
|
+
break;
|
|
85
|
+
case '{':
|
|
86
|
+
RubyArray internalItems = RubyArray.newArray(context.getRuntime());
|
|
87
|
+
x = parseArrayContents( context, internalItems, content, x + 1 );
|
|
88
|
+
items.add(internalItems);
|
|
89
|
+
break;
|
|
90
|
+
case '}':
|
|
91
|
+
addItem(context, items, currentItem, wasQuoted);
|
|
92
|
+
return x;
|
|
93
|
+
default:
|
|
94
|
+
currentItem.append(token);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return x;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private static void addItem( ThreadContext context, RubyArray items, StringBuilder builder, boolean quoted ) {
|
|
105
|
+
String value = builder.toString();
|
|
106
|
+
|
|
107
|
+
if ( !quoted && value.length() == 0 ) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if ( !quoted && "NULL".equalsIgnoreCase( value ) ) {
|
|
112
|
+
items.add(context.getRuntime().getNil());
|
|
113
|
+
} else {
|
|
114
|
+
items.add(RubyString.newString( context.getRuntime(), value ));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
package pgarrayparser;
|
|
2
|
+
|
|
3
|
+
import org.jruby.Ruby;
|
|
4
|
+
import org.jruby.RubyClass;
|
|
5
|
+
import org.jruby.RubyModule;
|
|
6
|
+
import org.jruby.runtime.ObjectAllocator;
|
|
7
|
+
import org.jruby.runtime.builtin.IRubyObject;
|
|
8
|
+
import org.jruby.runtime.load.BasicLibraryService;
|
|
9
|
+
|
|
10
|
+
import java.io.IOException;
|
|
11
|
+
|
|
12
|
+
public class PgArrayParserEngineService implements BasicLibraryService {
|
|
13
|
+
|
|
14
|
+
public boolean basicLoad(Ruby runtime) throws IOException {
|
|
15
|
+
|
|
16
|
+
RubyModule pgArrayParser = runtime.defineModule("PgArrayParser");
|
|
17
|
+
RubyClass pgArrayParserEngine = pgArrayParser.defineClassUnder("PgArrayParserEngine", runtime.getObject(), new ObjectAllocator() {
|
|
18
|
+
public IRubyObject allocate(Ruby runtime, RubyClass rubyClass) {
|
|
19
|
+
return new PgArrayParserEngine(runtime, rubyClass);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
pgArrayParserEngine.defineAnnotatedMethods(PgArrayParserEngine.class);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.expand_path('../pg_array_parser/version', __FILE__)
|
|
2
|
+
|
|
3
|
+
if RUBY_PLATFORM =~ /java/
|
|
4
|
+
module PgArrayParser
|
|
5
|
+
require 'jruby'
|
|
6
|
+
require File.expand_path('../pg_array_parser.jar', __FILE__)
|
|
7
|
+
require 'pgArrayParser/pg_array_parser_engine'
|
|
8
|
+
|
|
9
|
+
def parse_pg_array(value)
|
|
10
|
+
@parser ||= PgArrayParserEngine.new
|
|
11
|
+
@parser.parse_pg_array(value)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
else
|
|
15
|
+
begin
|
|
16
|
+
require 'pg_array_parser/pg_array_parser'
|
|
17
|
+
rescue LoadError
|
|
18
|
+
begin
|
|
19
|
+
require "pg_array_parser/pg_array_parser.#{RbConfig::CONFIG['DLEXT']}"
|
|
20
|
+
rescue LoadError
|
|
21
|
+
require "pg_array_parser.#{RbConfig::CONFIG['DLEXT']}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
require File.expand_path('../lib/pg_array_parser/version', __FILE__)
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |gem|
|
|
5
|
+
gem.authors = ["Dan McClain"]
|
|
6
|
+
gem.email = ["git@danmcclain.net"]
|
|
7
|
+
gem.description = %q{Simple library to parse PostgreSQL arrays into a array of strings}
|
|
8
|
+
gem.summary = %q{Converts PostgreSQL array strings into arrays of strings}
|
|
9
|
+
gem.homepage = "https://github.com/dockyard/pg_array_parser"
|
|
10
|
+
|
|
11
|
+
gem.files = [ 'CHANGELOG.md',
|
|
12
|
+
'Gemfile',
|
|
13
|
+
'README.md',
|
|
14
|
+
'Rakefile',
|
|
15
|
+
'lib/pg_array_parser.rb',
|
|
16
|
+
'lib/pg_array_parser/version.rb',
|
|
17
|
+
'pg_array_parser.gemspec',
|
|
18
|
+
'spec/parser_spec.rb',
|
|
19
|
+
'spec/spec_helper.rb'
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
23
|
+
if RUBY_PLATFORM =~ /java/
|
|
24
|
+
gem.platform = 'java'
|
|
25
|
+
gem.files << 'ext/pg_array_parser/PgArrayParserEngine.java'
|
|
26
|
+
gem.files << 'ext/pg_array_parser/PgArrayParserEngineService.java'
|
|
27
|
+
gem.files << 'lib/pg_array_parser.jar'
|
|
28
|
+
else
|
|
29
|
+
gem.files << 'ext/pg_array_parser/pg_array_parser.c'
|
|
30
|
+
gem.extensions = ['ext/pg_array_parser/extconf.rb']
|
|
31
|
+
end
|
|
32
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
33
|
+
gem.name = "pg_array_parser"
|
|
34
|
+
gem.require_paths = ["lib"]
|
|
35
|
+
gem.version = PgArrayParser::VERSION
|
|
36
|
+
|
|
37
|
+
gem.add_development_dependency 'rspec', '~> 2.11.0'
|
|
38
|
+
gem.add_development_dependency 'rake', '~> 0.9.2.2'
|
|
39
|
+
gem.add_development_dependency 'rake-compiler'
|
|
40
|
+
end
|
data/spec/parser_spec.rb
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class Parser
|
|
4
|
+
include PgArrayParser
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe 'PgArrayParser' do
|
|
8
|
+
let!(:parser) { Parser.new }
|
|
9
|
+
|
|
10
|
+
describe '#parse_pg_array' do
|
|
11
|
+
context 'one dimensional arrays' do
|
|
12
|
+
context 'empty' do
|
|
13
|
+
it 'returns an empty array' do
|
|
14
|
+
parser.parse_pg_array(%[{}]).should eq []
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context 'no strings' do
|
|
19
|
+
it 'returns an array of strings' do
|
|
20
|
+
parser.parse_pg_array(%[{1,2,3}]).should eq ['1','2','3']
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context 'NULL values' do
|
|
25
|
+
it 'returns an array of strings, with nils replacing NULL characters' do
|
|
26
|
+
parser.parse_pg_array(%[{1,NULL,NULL}]).should eq ['1',nil,nil]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context 'quoted NULL' do
|
|
31
|
+
it 'returns an array with the word NULL' do
|
|
32
|
+
parser.parse_pg_array(%[{1,"NULL",3}]).should eq ['1','NULL','3']
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context 'strings' do
|
|
37
|
+
it 'returns an array of strings when containing commas in a quoted string' do
|
|
38
|
+
parser.parse_pg_array(%[{1,"2,3",4}]).should eq ['1','2,3','4']
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'returns an array of strings when containing an escaped quote' do
|
|
42
|
+
parser.parse_pg_array(%[{1,"2\\",3",4}]).should eq ['1','2",3','4']
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'returns an array of strings when containing an escaped backslash' do
|
|
46
|
+
parser.parse_pg_array(%[{1,"2\\\\",3,4}]).should eq ['1','2\\','3','4']
|
|
47
|
+
parser.parse_pg_array(%[{1,"2\\\\\\",3",4}]).should eq ['1','2\\",3','4']
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'returns an array containing empty strings' do
|
|
51
|
+
parser.parse_pg_array(%[{1,"",3,""}]).should eq ['1', '', '3', '']
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context 'two dimensional arrays' do
|
|
58
|
+
context 'empty' do
|
|
59
|
+
it 'returns an empty array' do
|
|
60
|
+
parser.parse_pg_array(%[{{}}]).should eq [[]]
|
|
61
|
+
parser.parse_pg_array(%[{{},{}}]).should eq [[],[]]
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
context 'no strings' do
|
|
65
|
+
it 'returns an array of strings with a sub array' do
|
|
66
|
+
parser.parse_pg_array(%[{1,{2,3},4}]).should eq ['1',['2','3'],'4']
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
context 'strings' do
|
|
70
|
+
it 'returns an array of strings with a sub array' do
|
|
71
|
+
parser.parse_pg_array(%[{1,{"2,3"},4}]).should eq ['1',['2,3'],'4']
|
|
72
|
+
end
|
|
73
|
+
it 'returns an array of strings with a sub array and a quoted }' do
|
|
74
|
+
parser.parse_pg_array(%[{1,{"2,}3",NULL},4}]).should eq ['1',['2,}3',nil],'4']
|
|
75
|
+
end
|
|
76
|
+
it 'returns an array of strings with a sub array and a quoted {' do
|
|
77
|
+
parser.parse_pg_array(%[{1,{"2,{3"},4}]).should eq ['1',['2,{3'],'4']
|
|
78
|
+
end
|
|
79
|
+
it 'returns an array of strings with a sub array and a quoted { and escaped quote' do
|
|
80
|
+
parser.parse_pg_array(%[{1,{"2\\",{3"},4}]).should eq ['1',['2",{3'],'4']
|
|
81
|
+
end
|
|
82
|
+
it 'returns an array of strings with a sub array with empty strings' do
|
|
83
|
+
parser.parse_pg_array(%[{1,{""},4,{""}}]).should eq ['1',[''],'4',['']]
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
context 'three dimensional arrays' do
|
|
88
|
+
context 'empty' do
|
|
89
|
+
it 'returns an empty array' do
|
|
90
|
+
parser.parse_pg_array(%[{{{}}}]).should eq [[[]]]
|
|
91
|
+
parser.parse_pg_array(%[{{{},{}},{{},{}}}]).should eq [[[],[]],[[],[]]]
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
it 'returns an array of strings with sub arrays' do
|
|
95
|
+
parser.parse_pg_array(%[{1,{2,{3,4}},{NULL,6},7}]).should eq ['1',['2',['3','4']],[nil,'6'],'7']
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'pg_array_parser'
|
metadata
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: pg_array_parser
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.0.8
|
|
6
|
+
platform: java
|
|
7
|
+
authors:
|
|
8
|
+
- Dan McClain
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2012-09-24 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rspec
|
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ~>
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: 2.11.0
|
|
21
|
+
none: false
|
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ~>
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 2.11.0
|
|
27
|
+
none: false
|
|
28
|
+
prerelease: false
|
|
29
|
+
type: :development
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: rake
|
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - ~>
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: 0.9.2.2
|
|
37
|
+
none: false
|
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
|
39
|
+
requirements:
|
|
40
|
+
- - ~>
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 0.9.2.2
|
|
43
|
+
none: false
|
|
44
|
+
prerelease: false
|
|
45
|
+
type: :development
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: rake-compiler
|
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ! '>='
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '0'
|
|
53
|
+
none: false
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - ! '>='
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '0'
|
|
59
|
+
none: false
|
|
60
|
+
prerelease: false
|
|
61
|
+
type: :development
|
|
62
|
+
description: Simple library to parse PostgreSQL arrays into a array of strings
|
|
63
|
+
email:
|
|
64
|
+
- git@danmcclain.net
|
|
65
|
+
executables: []
|
|
66
|
+
extensions: []
|
|
67
|
+
extra_rdoc_files: []
|
|
68
|
+
files:
|
|
69
|
+
- CHANGELOG.md
|
|
70
|
+
- Gemfile
|
|
71
|
+
- README.md
|
|
72
|
+
- Rakefile
|
|
73
|
+
- lib/pg_array_parser.rb
|
|
74
|
+
- lib/pg_array_parser/version.rb
|
|
75
|
+
- pg_array_parser.gemspec
|
|
76
|
+
- spec/parser_spec.rb
|
|
77
|
+
- spec/spec_helper.rb
|
|
78
|
+
- ext/pg_array_parser/PgArrayParserEngine.java
|
|
79
|
+
- ext/pg_array_parser/PgArrayParserEngineService.java
|
|
80
|
+
- lib/pg_array_parser.jar
|
|
81
|
+
homepage: https://github.com/dockyard/pg_array_parser
|
|
82
|
+
licenses: []
|
|
83
|
+
post_install_message:
|
|
84
|
+
rdoc_options: []
|
|
85
|
+
require_paths:
|
|
86
|
+
- lib
|
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
88
|
+
requirements:
|
|
89
|
+
- - ! '>='
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '0'
|
|
92
|
+
none: false
|
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ! '>='
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '0'
|
|
98
|
+
none: false
|
|
99
|
+
requirements: []
|
|
100
|
+
rubyforge_project:
|
|
101
|
+
rubygems_version: 1.8.24
|
|
102
|
+
signing_key:
|
|
103
|
+
specification_version: 3
|
|
104
|
+
summary: Converts PostgreSQL array strings into arrays of strings
|
|
105
|
+
test_files:
|
|
106
|
+
- spec/parser_spec.rb
|
|
107
|
+
- spec/spec_helper.rb
|
|
108
|
+
has_rdoc:
|
|
109
|
+
...
|