str2duck 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 61febf9032234a1a81c9d3c7de46c45bfea915c6
4
- data.tar.gz: cff6f444ddc2e48300e51c575ea3f15e950d5b9f
3
+ metadata.gz: 4ed1679d8461e9701052f12181183d27973a6fd7
4
+ data.tar.gz: 17f617ef6025bf2693bf50b5d09a2fff1bce5c2c
5
5
  SHA512:
6
- metadata.gz: 8ab40406f77758dc561b23cb85c222e030c908f3a3b804a3bfc7b66a7533acf4c6acda46e5d6fabadff583353427a408f0664480999880f3d45c234c5c571aa5
7
- data.tar.gz: 2627bb0404caab12f1ebea2bce38f91a795a9d92c008a884d76d51d91620a0dc99e56fb161f46e89f88ebca3ef849b7d99b850598489395eb4e1eb8a9915676c
6
+ metadata.gz: e286704a3e04cd513e1d845ac4a627aeaa9e939bfd4afe39aeda42487fb3c2add2f24d9ff657c4160da54fece42ddeb08d30bcc01f85a99afd1931bcd45b2f8e
7
+ data.tar.gz: 7736bdcc6a50e469e64d488dd8fb1673d7ebf33854c8ca0501e1513b1d23fa6ba39738b7c450d74520f108e4154ae0ea7228c62352efbcb9e8a512114cdc2ae9
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ Gemfile.lock
1
2
  *.gem
2
3
  *.rbc
3
4
  .bundle
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.0
1
+ 1.7.0
@@ -1,19 +1,16 @@
1
1
  #encoding: UTF-8
2
+ require 'yaml'
3
+ require 'json'
4
+
2
5
  module Str2Duck
3
6
  module Format
4
7
  class << self
5
8
 
6
9
  def datetime obj
7
10
  if Str2Duck::Regexp.datetime?(obj)
8
- if defined? DateTime
11
+ if defined?(DateTime) && DateTime.respond_to?(:parse)
9
12
  return DateTime.parse obj
10
13
  else
11
-
12
- time_parts= obj.scan(/\d+/).map(&:to_i)
13
-
14
- puts time_parts.inspect
15
- Process.exit
16
-
17
14
  if time_parts.count == 8
18
15
  2.times{time_parts.pop}
19
16
  elsif time_parts.count == 6
@@ -21,8 +18,7 @@ module Str2Duck
21
18
  end
22
19
  return Time.new(*time_parts)
23
20
  end
24
- end
25
- nil
21
+ end;nil
26
22
  end
27
23
 
28
24
  def date obj
@@ -33,8 +29,7 @@ module Str2Duck
33
29
  time_parts= obj.scan(/\d+/).map(&:to_i)
34
30
  return Time.new(*time_parts)
35
31
  end
36
- end
37
- nil
32
+ end;nil
38
33
  end
39
34
 
40
35
  def time obj
@@ -46,51 +41,48 @@ module Str2Duck
46
41
  1.times{time_parts.pop}
47
42
  return Time.new(*time_parts)
48
43
  end
49
- end
50
- nil
44
+ end;nil
51
45
  end
52
46
 
53
47
  def true obj
54
48
  if Str2Duck::Regexp.true?(obj)
55
49
  return true
56
- end
57
- nil
50
+ end;nil
58
51
  end
59
52
 
60
53
  def false obj
61
54
  if Str2Duck::Regexp.false?(obj)
62
55
  return false
63
- end
64
- nil
56
+ end;nil
65
57
  end
66
58
 
67
59
  def float obj
68
60
  if Str2Duck::Regexp.float?(obj)
69
- return obj.to_f
70
- end
71
- nil
61
+ return obj.sub(',','.').to_f
62
+ end;nil
72
63
  end
73
64
 
74
65
  def integer obj
75
66
  if Str2Duck::Regexp.integer?(obj)
76
67
  return obj.to_i
77
- end
78
- nil
68
+ end;nil
79
69
  end
80
70
 
81
71
  def json obj
82
72
  if Str2Duck::Regexp.json?(obj)
83
73
  return JSON.parse(obj)
84
- end
85
- nil
74
+ end;nil
86
75
  end
87
76
 
88
77
  # damn, this thing eats almost everything...
89
78
  def yaml obj
90
79
  if Str2Duck::Regexp.yaml?(obj)
91
- return YAML.safe_load(obj)
92
- end
93
- return nil
80
+ if YAML.respond_to?(:safe_load)
81
+ return YAML.safe_load(obj)
82
+ else
83
+ return YAML.load(obj)
84
+ end
85
+ end;nil
94
86
  end
95
87
 
96
88
  end
@@ -1,30 +1,20 @@
1
1
  module Str2Duck
2
-
3
2
  module MPatch
3
+ module ObjectEXT
4
4
 
5
- module Object
6
-
7
- def to_duck(self_obj= self)
8
-
9
- if self_obj.class <= String
10
- Str2Duck::MPatch::String.duck(self_obj)
5
+ def to_duck
6
+ if self.class <= String
7
+ Str2Duck.parse(self)
11
8
  else
12
- return self_obj
9
+ return self
13
10
  end
14
11
 
15
12
  end
16
13
 
17
14
  alias :duck :to_duck
18
15
 
19
- self.instance_methods.each do |symbol|
20
- module_function symbol
21
- public symbol
22
- end
23
-
24
16
  end
25
-
26
17
  end
27
-
28
18
  end
29
19
 
30
- Object.__send__( :include, Str2Duck::MPatch::Object )
20
+ Object.__send__ :include, Str2Duck::MPatch::ObjectEXT
@@ -2,20 +2,17 @@
2
2
  module Str2Duck
3
3
 
4
4
  def self.activesupport
5
- require File.join 'active_support','time'
5
+ require(File.join 'active_support','time')
6
6
  rescue LoadError
7
- return false
7
+ return true
8
8
  end
9
9
 
10
10
  def self.parse str
11
11
  raise(ArgumentError,"invalid input, must be string like") unless str.class <= String
12
-
13
- @@activesupport ||= activesupport
14
-
15
- var= nil
12
+ @activesupport ||= activesupport
16
13
  [ :datetime, :date, :time, :true, :false, :float, :integer, :json, :yaml ].each do |method_name|
17
- if ::Str2Duck::Config.__send__(method_name)
18
- var= Str2Duck::Format.__send__ method_name, str
14
+ if ::Str2Duck::Config.public_send(method_name)
15
+ var = Str2Duck::Format.public_send method_name, str
19
16
  return var unless var.nil?
20
17
  end
21
18
  end
@@ -16,7 +16,7 @@ module Str2Duck
16
16
  answer_value ||= obj =~ regexp
17
17
  end
18
18
 
19
- return Str2Duck.return_value_parse answer_value
19
+ return !!answer_value
20
20
 
21
21
  end
22
22
 
@@ -30,7 +30,7 @@ module Str2Duck
30
30
  answer_value ||= obj =~ regexp
31
31
  end
32
32
 
33
- return Str2Duck.return_value_parse answer_value
33
+ return !!answer_value
34
34
 
35
35
  end
36
36
 
@@ -43,24 +43,29 @@ module Str2Duck
43
43
  answer_value ||= obj =~ regexp
44
44
  end
45
45
 
46
- return Str2Duck.return_value_parse answer_value
46
+ return !!answer_value
47
47
 
48
48
  end
49
49
 
50
50
  def true? obj
51
- return Str2Duck.return_value_parse obj =~ /^true$/
51
+ return !!obj =~ /^true$/
52
52
  end
53
53
 
54
54
  def false? obj
55
- return Str2Duck.return_value_parse obj =~ /^false$/
55
+ return !!obj =~ /^false$/
56
56
  end
57
57
 
58
58
  def float? obj
59
- return Str2Duck.return_value_parse obj =~ /^\d+\.\d+$/
59
+ case obj.to_s
60
+ when /^\d+\.\d+$/,/^\d+,\d+$/
61
+ return true
62
+ else
63
+ return false
64
+ end
60
65
  end
61
66
 
62
67
  def integer? obj
63
- return Str2Duck.return_value_parse obj =~ /^\d+$/
68
+ return !!obj =~ /^\d+$/
64
69
  end
65
70
 
66
71
  def json? obj
data/lib/str2duck.rb CHANGED
@@ -1,15 +1,8 @@
1
1
  #encoding: UTF-8
2
2
 
3
- require 'json'
4
- require 'yaml'
5
-
6
- require 'str2duck/support'
7
-
8
3
  require 'str2duck/regexp'
9
4
  require 'str2duck/format'
10
5
  require 'str2duck/config'
11
-
12
6
  require 'str2duck/parser'
13
7
 
14
- require 'str2duck/mpatch/string'
15
8
  require 'str2duck/mpatch/object'
@@ -0,0 +1,29 @@
1
+ require "str2duck"
2
+ require 'minitest/autorun'
3
+ describe 'StringParse' do
4
+
5
+ specify 'parse objects into the right format' do
6
+
7
+ {
8
+ "2011-03-12"=>Date,
9
+ "2007-07-20 18:59:27 +0200"=>Time,
10
+ "2010-10-30 18:02:56 +0200"=>Time,
11
+ "2012-09-12T14:49:50+02:00"=>DateTime,
12
+ "123"=>Fixnum,
13
+ "asd"=>String,
14
+ "123.432"=>Float,
15
+ "123,432"=>Float,
16
+ "true"=>TrueClass,
17
+ "false"=>FalseClass,
18
+ "some string data"=>String,
19
+ "{\"hello\":\"json\"}"=>Hash,
20
+ "--- hello\n..."=>String,
21
+ "hello: yaml"=>Hash
22
+ }.each_pair do |str,klass|
23
+ str.to_duck.must_be_instance_of klass
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: str2duck
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-11 00:00:00.000000000 Z
11
+ date: 2014-10-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " Parse string into obj "
14
14
  email:
@@ -19,7 +19,6 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - ".gitignore"
21
21
  - Gemfile
22
- - Gemfile.lock
23
22
  - LICENSE
24
23
  - README.md
25
24
  - Rakefile
@@ -30,11 +29,10 @@ files:
30
29
  - lib/str2duck/config.rb
31
30
  - lib/str2duck/format.rb
32
31
  - lib/str2duck/mpatch/object.rb
33
- - lib/str2duck/mpatch/string.rb
34
32
  - lib/str2duck/parser.rb
35
33
  - lib/str2duck/regexp.rb
36
- - lib/str2duck/support.rb
37
34
  - str2duck.gemspec
35
+ - test/test_parse.rb
38
36
  homepage: https://github.com/adamluzsi/str2duck
39
37
  licenses: []
40
38
  metadata: {}
@@ -58,4 +56,6 @@ rubygems_version: 2.2.2
58
56
  signing_key:
59
57
  specification_version: 4
60
58
  summary: String to Obj, Duck type parser
61
- test_files: []
59
+ test_files:
60
+ - test/test_parse.rb
61
+ has_rdoc:
data/Gemfile.lock DELETED
@@ -1,14 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- str2duck (1.4.0)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
-
10
- PLATFORMS
11
- ruby
12
-
13
- DEPENDENCIES
14
- str2duck!
@@ -1,23 +0,0 @@
1
- module Str2Duck
2
-
3
- module MPatch
4
-
5
- module String
6
-
7
- def to_duck(self_obj= self)
8
- Str2Duck.parse(self_obj)
9
- end
10
- alias :duck :to_duck
11
-
12
- self.instance_methods.each do |symbol|
13
- module_function symbol
14
- public symbol
15
- end
16
-
17
- end
18
-
19
- end
20
-
21
- end
22
-
23
- String.__send__( :include, Str2Duck::MPatch::String )
@@ -1,17 +0,0 @@
1
- #encoding: UTF-8
2
- module Str2Duck
3
- class << self
4
- def return_value_parse object
5
- case object
6
-
7
- when nil
8
- return false
9
- when 0
10
- return true
11
- else
12
- nil
13
-
14
- end
15
- end
16
- end
17
- end