td-client 0.8.8 → 0.8.9

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 CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ == 2012-02-12 version 0.8.9
3
+
4
+ * Added API#normalize_table_name and API#normalize_database_name
5
+
6
+
2
7
  == 2012-02-02 version 0.8.8
3
8
 
4
9
  * Fixed SSL support
@@ -91,6 +91,26 @@ class API
91
91
  end
92
92
  end
93
93
 
94
+ def self.normalize_database_name(name)
95
+ name = name.to_s
96
+ if name.empty?
97
+ raise "Empty name is not allowed"
98
+ end
99
+ if name.length < 3
100
+ name += "_"*(3-name.length)
101
+ end
102
+ if 32 < name.length
103
+ name = name[0,30]+"__"
104
+ end
105
+ name = name.downcase
106
+ name = name.gsub(/[^a-z0-9_]/, '_')
107
+ name
108
+ end
109
+
110
+ def self.normalize_table_name(name)
111
+ normalize_database_name(name)
112
+ end
113
+
94
114
  # TODO support array types
95
115
  def self.normalize_type_name(name)
96
116
  case name
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
 
3
- VERSION = '0.8.8'
3
+ VERSION = '0.8.9'
4
4
 
5
5
  end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe API do
4
+ VALID_NAMES = [
5
+ 'abc',
6
+ 'abc_cd',
7
+ '_abc_cd',
8
+ '_abc_',
9
+ 'ab0_',
10
+ 'ab0',
11
+ ]
12
+
13
+ INVALID_NAMES = {
14
+ 'a' => 'a__',
15
+ 'a'*33 => 'a'*30+'__',
16
+ 'abcD' => 'abcd',
17
+ 'a-b*' => 'a_b_',
18
+ }
19
+
20
+ it 'normalize_database_name should return normalized data' do
21
+ INVALID_NAMES.each_pair {|ng,ok|
22
+ API.normalize_database_name(ng).should == ok
23
+ }
24
+ lambda {
25
+ API.normalize_database_name('')
26
+ }.should raise_error(RuntimeError)
27
+ end
28
+
29
+ it 'normalize_table_name should return normalized data' do
30
+ INVALID_NAMES.each_pair {|ng,ok|
31
+ API.normalize_table_name(ng).should == ok
32
+ }
33
+ lambda {
34
+ API.normalize_table_name('')
35
+ }.should raise_error(RuntimeError)
36
+ end
37
+
38
+ it 'validate_database_name should raise errors' do
39
+ INVALID_NAMES.each_pair {|ng,ok|
40
+ lambda {
41
+ API.validate_database_name(ng)
42
+ }.should raise_error(RuntimeError)
43
+ }
44
+ lambda {
45
+ API.validate_database_name('')
46
+ }.should raise_error(RuntimeError)
47
+ end
48
+
49
+ it 'validate_table_name should raise errors' do
50
+ INVALID_NAMES.each_pair {|ng,ok|
51
+ lambda {
52
+ API.validate_table_name(ng)
53
+ }.should raise_error(RuntimeError)
54
+ }
55
+ lambda {
56
+ API.validate_table_name('')
57
+ }.should raise_error(RuntimeError)
58
+ end
59
+
60
+ it 'normalize_database_name should return valid data' do
61
+ VALID_NAMES.each {|ok|
62
+ API.normalize_database_name(ok).should == ok
63
+ }
64
+ end
65
+
66
+ it 'validate_database_name should return valid data' do
67
+ VALID_NAMES.each {|ok|
68
+ API.validate_database_name(ok)
69
+ }
70
+ end
71
+ end
72
+
@@ -0,0 +1,11 @@
1
+ begin
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ rescue LoadError
5
+ end
6
+
7
+ $LOAD_PATH << File.dirname(__FILE__)+"../lib"
8
+ require 'td-client'
9
+
10
+ include TreasureData
11
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.8.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-02 00:00:00.000000000Z
12
+ date: 2012-02-14 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack
16
- requirement: &70295290315500 !ruby/object:Gem::Requirement
16
+ requirement: &70135893795480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70295290315500
24
+ version_requirements: *70135893795480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70295290315020 !ruby/object:Gem::Requirement
27
+ requirement: &70135893794220 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,18 @@ dependencies:
32
32
  version: 1.4.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70295290315020
35
+ version_requirements: *70135893794220
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70135893792760 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 2.8.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70135893792760
36
47
  description:
37
48
  email:
38
49
  executables: []
@@ -46,6 +57,8 @@ files:
46
57
  - lib/td/client/api.rb
47
58
  - lib/td/client/model.rb
48
59
  - lib/td/client/version.rb
60
+ - spec/api_spec.rb
61
+ - spec/spec_helper.rb
49
62
  - ChangeLog
50
63
  - README.rdoc
51
64
  homepage:
@@ -72,4 +85,5 @@ rubygems_version: 1.8.12
72
85
  signing_key:
73
86
  specification_version: 3
74
87
  summary: Treasure Data API library for Ruby
75
- test_files: []
88
+ test_files:
89
+ - spec/api_spec.rb