str2duck 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjBlZjU1NjdmZDdiMjAyZDBkMGJlNzQyMWZjZGMxOTZiNmZlYjUzOQ==
4
+ NDU2ZTU1M2Y1YjIwYzRjY2I5OTM2MWY4ZDcyY2I2NDAyMDU2M2EzZg==
5
5
  data.tar.gz: !binary |-
6
- NzI5OWJhODk0MTUwNWY5YmEzODhkMzJkYmRiYWQ3ZTExZGJiMzA3MQ==
6
+ NjU5ODJlMTA2MDM0MTA2NjYwOTQ2NDA2NjMxZjIwN2YxZWNlYTQzMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjNiMDdlN2JiZTExMGUxZGJiN2RjMWIxMzZlNjc1NjkxOWE3ZjVhNTUyYTIz
10
- NGU4Mjg0OWY3OWE5MjViZmIwYWY5MzY3MTY0MGYwZTAwOTgyYTk0Y2M0ZDhk
11
- ZTYxZmFlYTA5MTY3MTgwYjhjMDNiNzVjOTljNDU4MDFkZTIzYmM=
9
+ ZjUxNDM2Y2M2M2QyMjBjNjMzOTUzYjA5NDFkMGUwNjRkZTRlNzRiMzZmOGU3
10
+ YWQzODNiZDEzMjhlYTEwZDcxNzYwZGUxYTNiMDhiNGY2YWFjNzU3MjY0YjFh
11
+ YjllMDc5N2YwMWE1ZDJhNjk3ZDgyNmM2OWJkYmRiNGZhZDE1OWI=
12
12
  data.tar.gz: !binary |-
13
- NTE3YThjOTFhNWM2YTlhMTY2MWViZWVmZTRkNjU4NTc4NWMxMzkzYmYwNjBl
14
- NjE5ZjE4MmM2MTdlOGQ3MjdjODBmNmI0MGFhMTg5YTIzMTBjM2U1M2JlNTcx
15
- MjA5MmEwNzgzMjFhNDUxN2Y0YzMzOWVjZjVmZmEyM2I0NTU1NTk=
13
+ ZmMyYjAzOWE2N2Y2ZTg2Mjc3NjM3ZDA0NmMyYjc4YjU1NDE4MmY3NmNhOGU3
14
+ ZTk5MzY0YWQ0YzYyZjRiMGI3ZThlOGZhNTI4NGQ5MjU2ODFiZGVhZjhiMjQ0
15
+ OTYwZTViNWU3MGJhZGI4YjJjNDhiNGJlOWI5MWU5YThjZGQyODc=
data/README.md CHANGED
@@ -2,7 +2,17 @@ str2duck
2
2
  ========
3
3
 
4
4
  String to Duck type parser
5
- It can parse int, float, time, date . datetime, booleans etc from string
5
+ It can parse int, float, time, date . datetime, booleans ,json, yaml etc from string
6
+
7
+ The main Goal for this project to give flexibility when you work on REST protocol where,
8
+ most of the obj will be sent as string.
9
+
10
+ With this you can do simeple validations like
11
+ ```ruby
12
+
13
+ params['hash_obj_key'].duck.class <= Hash
14
+
15
+ ```
6
16
 
7
17
  Possible bug source, not yet been tested is the american time format.
8
18
 
@@ -11,11 +21,14 @@ Possible bug source, not yet been tested is the american time format.
11
21
  require 'str2duck'
12
22
 
13
23
  "2011-03-12".duck #> Date obj
14
- "false".duck #> False obj
24
+ "false".to_duck #> False obj
15
25
  "123".duck #> Integer obj
16
26
  "123.123".duck #> Float obj
17
27
  "2012-09-12T14:49:50+02:00".duck #> Time obj
18
28
 
29
+ # without sugar syntax, you can use this
30
+ Str2Duck.parse("123.123") #> Float obj
31
+
19
32
  ```
20
33
 
21
34
  it is possible ot extend the Duck flexibility be require the Active Supports time extension,
@@ -36,9 +49,18 @@ like:
36
49
 
37
50
  ```
38
51
 
39
- Happy parsing!
52
+ If you dont want one or more parser to be active on parse, you can simply config th str2duck parser like this
53
+
54
+ ```ruby
40
55
 
56
+ # This will turn of yaml string parsing for example.
57
+ # From this point parsing will not check for yaml but return a string instead if none match
58
+ Str2Duck::Config.yaml = false
41
59
 
42
- ### TODO
43
- use safe yaml parsing
60
+ # This will return the implemented parsers, so you dont have to bingo
61
+ puts Str2Duck::Config.list
44
62
 
63
+ ```
64
+
65
+
66
+ Happy parsing!
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.2.0
data/examples/sample.rb CHANGED
@@ -11,8 +11,9 @@ require_relative "../lib/str2duck"
11
11
  "true",
12
12
  "false",
13
13
  "some string data",
14
- "{\"hello\":\"world\"}",
15
- "--- hello\n..."
14
+ "{\"hello\":\"json\"}",
15
+ "--- hello\n..." ,
16
+ "hello: yaml"
16
17
  ].each do |object|
17
18
  puts object.duck,object.duck.class,""
18
19
  end
@@ -21,7 +22,8 @@ begin
21
22
 
22
23
  require File.join 'active_support','time'
23
24
 
24
- puts "but if you load the Active support gem like when you do anyway in Rails, the duck will be more with time formats flexible"
25
+ puts "But if you load the Active support gem like when you do anyway in Rails,",
26
+ "-> the parser will be more flexible in the time formats"
25
27
 
26
28
  [
27
29
  "2011-03-12",
@@ -33,13 +35,13 @@ begin
33
35
  "123.432",
34
36
  "true",
35
37
  "false",
36
- "some string data"
38
+ "some string data",
39
+ "Sun, 28 Aug 2005",
40
+ "Fri, 25 Jan 2013 20:02:15 +0100"
41
+
37
42
  ].each do |object|
38
43
  puts object.duck,object.duck.class,""
39
44
  end
40
45
 
41
- puts "Sun, 28 Aug 2005".duck.class
42
- puts "Fri, 25 Jan 2013 20:02:15 +0100".duck.class
43
-
44
46
  rescue LoadError
45
47
  end
data/examples/test.rb CHANGED
@@ -1,36 +1,4 @@
1
1
  require_relative "../lib/str2duck"
2
2
 
3
- require 'debugger'
4
- debugger
5
- [
6
- "false"
7
- ].each do |object|
8
- puts object.duck,object.duck.class,""
9
- end
10
-
11
- #begin
12
- #
13
- # require File.join 'active_support','time'
14
- #
15
- # puts "but if you load the Active support gem like when you do anyway in Rails, the duck will be more with time formats flexible"
16
- #
17
- # [
18
- # "2011-03-12",
19
- # "2007-07-20 18:59:27 +0200",
20
- # "2010-10-30 18:02:56 +0200",
21
- # "2012-09-12T14:49:50+02:00",
22
- # "123",
23
- # "asd",
24
- # "123.432",
25
- # "true",
26
- # "false",
27
- # "some string data"
28
- # ].each do |object|
29
- # puts object.duck,object.duck.class,""
30
- # end
31
- #
32
- # puts "Sun, 28 Aug 2005".duck.class
33
- # puts "Fri, 25 Jan 2013 20:02:15 +0100".duck.class
34
- #
35
- #rescue LoadError
36
- #end
3
+ Str2Duck::Config.yaml = false
4
+ puts Str2Duck::Config.list
@@ -0,0 +1,27 @@
1
+ #encoding: UTF-8
2
+ module Str2Duck
3
+ module Config
4
+
5
+ ::Str2Duck::Format.singleton_methods.each do |method|
6
+
7
+ self.define_singleton_method "#{method}=" do |boolean|
8
+ unless !!boolean == boolean
9
+ raise( ArgumentError,"invalid value given #{boolean.inspect},input must be a boolean!" )
10
+ end
11
+ self.class_variable_set("@@#{method.to_s}",boolean)
12
+ end
13
+
14
+ self.define_singleton_method(method) do
15
+ self.class_variable_get("@@#{method.to_s}")
16
+ end
17
+
18
+ self.class_variable_set("@@#{method.to_s}",true)
19
+
20
+ end
21
+
22
+ def self.list
23
+ ::Str2Duck::Format.singleton_methods
24
+ end
25
+
26
+ end
27
+ end
@@ -6,7 +6,9 @@ module Str2Duck
6
6
  return_value= nil
7
7
 
8
8
  [ :datetime, :date, :time, :true, :false, :float, :integer, :json, :yaml ].each do |method_name|
9
- return_value ||= Str2Duck::Format.__send__ method_name, string_data_obj
9
+ if ::Str2Duck::Config.__send__(method_name)
10
+ return_value ||= Str2Duck::Format.__send__ method_name, string_data_obj
11
+ end
10
12
  end
11
13
 
12
14
  return_value ||= string_data_obj
data/lib/str2duck.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  #encoding: UTF-8
2
2
 
3
3
  require File.join File.dirname(__FILE__),'str2duck','support'
4
- require File.join File.dirname(__FILE__),'str2duck','format'
4
+
5
5
  require File.join File.dirname(__FILE__),'str2duck','regexp'
6
+ require File.join File.dirname(__FILE__),'str2duck','format'
7
+ require File.join File.dirname(__FILE__),'str2duck','config'
8
+
6
9
  require File.join File.dirname(__FILE__),'str2duck','parser'
7
10
  require File.join File.dirname(__FILE__),'str2duck','string'
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.1.1
4
+ version: 1.2.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-03-01 00:00:00.000000000 Z
11
+ date: 2014-03-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ! ' Parse string into obj '
14
14
  email:
@@ -28,6 +28,7 @@ files:
28
28
  - examples/test.rb
29
29
  - files.rb
30
30
  - lib/str2duck.rb
31
+ - lib/str2duck/config.rb
31
32
  - lib/str2duck/format.rb
32
33
  - lib/str2duck/parser.rb
33
34
  - lib/str2duck/regexp.rb