pg_array_parser 0.0.8pre → 0.0.8pre2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,2 @@
1
- if RUBY_PLATFORM =~ /java/
2
- else
3
- require 'mkmf'
4
- create_makefile('pg_array_parser/pg_array_parser')
5
- end
1
+ require 'mkmf'
2
+ create_makefile('pg_array_parser/pg_array_parser')
@@ -1,3 +1,3 @@
1
1
  module PgArrayParser
2
- VERSION = '0.0.8pre'
2
+ VERSION = '0.0.8pre2'
3
3
  end
@@ -6,15 +6,26 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["git@danmcclain.net"]
7
7
  gem.description = %q{Simple library to parse PostgreSQL arrays into a array of strings}
8
8
  gem.summary = %q{Converts PostgreSQL array strings into arrays of strings}
9
- gem.homepage = ""
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
+ ]
10
21
 
11
- gem.files = `git ls-files`.split($\)
12
22
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
23
  if RUBY_PLATFORM =~ /java/
14
- gem.files.delete('ext/pg_array_paser/extconf.rb')
15
- gem.files.delete('ext/pg_array_paser/pg_array_parser.c')
24
+ gem.files << 'ext/pg_array_parser/PgArrayParserEngine.java'
25
+ gem.files << 'ext/pg_array_parser/PgArrayParserEngineService.java'
16
26
  gem.files << 'lib/pg_array_parser.jar'
17
27
  else
28
+ gem.files << 'ext/pg_array_parser/pg_array_parser.c'
18
29
  gem.extensions = ['ext/pg_array_parser/extconf.rb']
19
30
  end
20
31
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_array_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8pre
4
+ version: 0.0.8pre2
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -67,23 +67,18 @@ extensions:
67
67
  - ext/pg_array_parser/extconf.rb
68
68
  extra_rdoc_files: []
69
69
  files:
70
- - .gitignore
71
- - .travis.yml
72
70
  - CHANGELOG.md
73
71
  - Gemfile
74
72
  - README.md
75
73
  - Rakefile
76
- - ext/pg_array_parser/PgArrayParserEngine.java
77
- - ext/pg_array_parser/PgArrayParserEngineService.java
78
- - ext/pg_array_parser/extconf.rb
79
- - ext/pg_array_parser/pg_array_parser.c
80
- - lib/pg_array_parser.jar
81
74
  - lib/pg_array_parser.rb
82
75
  - lib/pg_array_parser/version.rb
83
76
  - pg_array_parser.gemspec
84
77
  - spec/parser_spec.rb
85
78
  - spec/spec_helper.rb
86
- homepage: ''
79
+ - ext/pg_array_parser/pg_array_parser.c
80
+ - ext/pg_array_parser/extconf.rb
81
+ homepage: https://github.com/dockyard/pg_array_parser
87
82
  licenses: []
88
83
  post_install_message:
89
84
  rdoc_options: []
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- benchmark.rb
19
- bin/*
20
- .rbenv-version*
21
- lib/pg_array_parser.bundle
@@ -1,10 +0,0 @@
1
- rvm:
2
- - 1.8.7
3
- - 1.9.2
4
- - 1.9.3
5
- - jruby-18mode
6
- - jruby-19mode
7
-
8
- notifications:
9
- email:
10
- - travis@danmcclain.net
@@ -1,118 +0,0 @@
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
- }
@@ -1,26 +0,0 @@
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