to_parsed_obj 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.lre ADDED
@@ -0,0 +1,18 @@
1
+ def run_specs!
2
+ require 'rspec'
3
+ RSpec.instance_eval { @configuration = RSpec::Core::Configuration.new }
4
+ RSpec::world.instance_eval { @example_groups = [] }
5
+ load "spec/to_parsed_obj_spec.rb"
6
+
7
+ #puts RSpec::world.shared_example_groups.size
8
+ RSpec::Core::Runner.run([], $stderr, $stdout)
9
+ end
10
+
11
+ LRE.watch(".*spec/.*.rb") do |f|
12
+ run_specs!
13
+ end
14
+
15
+ LRE.watch(".*lib/.*.rb") do |f|
16
+ load(f)
17
+ run_specs!
18
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
data/lib/to_parsed_obj.rb CHANGED
@@ -13,6 +13,8 @@ module ToParsedObj
13
13
  m.call(obj)
14
14
  elsif m.kind_of?(Array)
15
15
  m.all? { |x| match?(obj,x) }
16
+ elsif m.kind_of?(Class)
17
+ obj.kind_of?(m)
16
18
  else
17
19
  m == obj
18
20
  end
@@ -26,6 +28,8 @@ module ToParsedObj
26
28
  elsif convertor.respond_to?(:call)
27
29
  if convertor.arity == 1
28
30
  convertor.call(obj)
31
+ elsif convertor.arity == 0
32
+ convertor.call
29
33
  else
30
34
  convertor.call(obj,self)
31
35
  end
@@ -37,8 +41,15 @@ module ToParsedObj
37
41
  class Parsers
38
42
  include FromHash
39
43
  fattr(:parsers) { [] }
40
- def parse(obj)
41
- parsers.each do |parser|
44
+ def each_parser(one_time,&b)
45
+ one_time.each do |m,c|
46
+ parser = ToParsedObj::SingleParser.new(:matcher => m, :convertor => c)
47
+ yield(parser)
48
+ end
49
+ parsers.each(&b)
50
+ end
51
+ def parse(obj,one_time={})
52
+ each_parser(one_time) do |parser|
42
53
  return parser.parse(obj) if parser.match?(obj)
43
54
  end
44
55
  obj
@@ -49,8 +60,8 @@ module ToParsedObj
49
60
  end
50
61
  def add_basic!
51
62
  require 'date'
52
- add(:matcher => /^[0-9]+$/, :convertor => :to_i)
53
- add(:matcher => [/^[0-9\.]+$/,/^[^\.]*\.[^\.]*$/], :convertor => :to_f)
63
+ add(:matcher => /^-?[0-9]+$/, :convertor => :to_i)
64
+ add(:matcher => [/^-?[0-9\.]+$/,/^[^\.]*\.[^\.]*$/], :convertor => :to_f)
54
65
  add(:matcher => /^\d+[\/\\]\d+[\/\\]\d+$/) { |str| Date.parse(str) }
55
66
 
56
67
  add(:matcher => /^(\d+[\/\\]\d+[\/\\]\d+\s+\d+(?::\d+){1,99})/) do |str,single|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + "/../to_parsed_obj"
2
2
  ToParsedObj.add_basic!
3
3
 
4
4
  class Object
5
- def to_parsed_obj
6
- ToParsedObj.parse(self)
5
+ def to_parsed_obj(*args)
6
+ ToParsedObj.parse(self,*args)
7
7
  end
8
8
  end
@@ -3,6 +3,11 @@ require 'to_parsed_obj/ext'
3
3
 
4
4
  TP = ToParsedObj
5
5
 
6
+ class Foo
7
+ include FromHash
8
+ attr_accessor :bar
9
+ end
10
+
6
11
  describe "ToParsedObj" do
7
12
  before do
8
13
  TP::Parsers.instance!
@@ -22,6 +27,12 @@ describe "ToParsedObj" do
22
27
  mit "should convert float" do
23
28
  "2.3".should parse_to(2.3)
24
29
  end
30
+ mit "should convert negative int" do
31
+ "-2".should parse_to(-2)
32
+ end
33
+ mit "should convert negative float" do
34
+ "-2.3".should parse_to(-2.3)
35
+ end
25
36
  mit "should not parse multiple dots to float" do
26
37
  "1.2.3".should parse_to("1.2.3")
27
38
  end
@@ -31,6 +42,9 @@ describe "ToParsedObj" do
31
42
  mit "should parse time with hours and minutes" do
32
43
  "4/1/2010 12:30".should parse_to(Time.local(2010,4,1,12,30) )
33
44
  end
45
+ mit "should parse time with single digit hour and minutes" do
46
+ "4/1/2010 2:30".should parse_to(Time.local(2010,4,1,2,30) )
47
+ end
34
48
  mit "should parse time with seconds" do
35
49
  "4/1/2010 12:30:01".should parse_to(Time.local(2010,4,1,12,30,1) )
36
50
  end
@@ -42,4 +56,20 @@ describe "ToParsedObj" do
42
56
  t = Time.local(2010,4,1)
43
57
  t.inspect.should parse_to(t)
44
58
  end
59
+ mit "should pass unknown object through" do
60
+ f = Foo.new
61
+ f.should parse_to(f)
62
+ end
63
+ mit "should use class parser" do
64
+ TP.add :matcher => Foo do |obj|
65
+ obj.bar * 2
66
+ end
67
+ f = Foo.new(:bar => 12)
68
+ f.should parse_to(24)
69
+ end
70
+ mit 'one time' do
71
+ require 'date'
72
+ "TODAY".to_parsed_obj.should == 'TODAY'
73
+ "TODAY".to_parsed_obj('TODAY' => lambda { Date.today }).should == Date.today
74
+ end
45
75
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{to_parsed_obj}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["mharris717"]
12
- s.date = %q{2011-01-12}
12
+ s.date = %q{2012-03-04}
13
13
  s.description = %q{parse strings into the appropriate object}
14
14
  s.email = %q{mharris717@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
+ ".lre",
21
22
  ".rspec",
22
23
  "Gemfile",
23
24
  "Gemfile.lock",
@@ -34,7 +35,7 @@ Gem::Specification.new do |s|
34
35
  s.homepage = %q{http://github.com/mharris717/to_parsed_obj}
35
36
  s.licenses = ["MIT"]
36
37
  s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.3.7}
38
+ s.rubygems_version = %q{1.5.2}
38
39
  s.summary = %q{parse strings into the appropriate object}
39
40
  s.test_files = [
40
41
  "spec/spec_helper.rb",
@@ -42,7 +43,6 @@ Gem::Specification.new do |s|
42
43
  ]
43
44
 
44
45
  if s.respond_to? :specification_version then
45
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
46
  s.specification_version = 3
47
47
 
48
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
metadata CHANGED
@@ -1,138 +1,104 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: to_parsed_obj
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - mharris717
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-01-12 00:00:00 -05:00
12
+ date: 2012-03-04 00:00:00.000000000 -05:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: mharris_ext
23
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &15925308 !ruby/object:Gem::Requirement
24
18
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
32
23
  type: :runtime
33
24
  prerelease: false
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *15925308
26
+ - !ruby/object:Gem::Dependency
36
27
  name: fattr
37
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &15924876 !ruby/object:Gem::Requirement
38
29
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
46
34
  type: :runtime
47
35
  prerelease: false
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *15924876
37
+ - !ruby/object:Gem::Dependency
50
38
  name: rspec
51
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &15924468 !ruby/object:Gem::Requirement
52
40
  none: false
53
- requirements:
41
+ requirements:
54
42
  - - ~>
55
- - !ruby/object:Gem::Version
56
- hash: 11
57
- segments:
58
- - 2
59
- - 1
60
- - 0
43
+ - !ruby/object:Gem::Version
61
44
  version: 2.1.0
62
45
  type: :development
63
46
  prerelease: false
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *15924468
48
+ - !ruby/object:Gem::Dependency
66
49
  name: bundler
67
- requirement: &id004 !ruby/object:Gem::Requirement
50
+ requirement: &15923928 !ruby/object:Gem::Requirement
68
51
  none: false
69
- requirements:
52
+ requirements:
70
53
  - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 23
73
- segments:
74
- - 1
75
- - 0
76
- - 0
54
+ - !ruby/object:Gem::Version
77
55
  version: 1.0.0
78
56
  type: :development
79
57
  prerelease: false
80
- version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
58
+ version_requirements: *15923928
59
+ - !ruby/object:Gem::Dependency
82
60
  name: jeweler
83
- requirement: &id005 !ruby/object:Gem::Requirement
61
+ requirement: &15923316 !ruby/object:Gem::Requirement
84
62
  none: false
85
- requirements:
63
+ requirements:
86
64
  - - ~>
87
- - !ruby/object:Gem::Version
88
- hash: 7
89
- segments:
90
- - 1
91
- - 5
92
- - 2
65
+ - !ruby/object:Gem::Version
93
66
  version: 1.5.2
94
67
  type: :development
95
68
  prerelease: false
96
- version_requirements: *id005
97
- - !ruby/object:Gem::Dependency
69
+ version_requirements: *15923316
70
+ - !ruby/object:Gem::Dependency
98
71
  name: rcov
99
- requirement: &id006 !ruby/object:Gem::Requirement
72
+ requirement: &15918756 !ruby/object:Gem::Requirement
100
73
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
108
78
  type: :development
109
79
  prerelease: false
110
- version_requirements: *id006
111
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *15918756
81
+ - !ruby/object:Gem::Dependency
112
82
  name: win32console
113
- requirement: &id007 !ruby/object:Gem::Requirement
83
+ requirement: &15918300 !ruby/object:Gem::Requirement
114
84
  none: false
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- hash: 3
119
- segments:
120
- - 0
121
- version: "0"
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
122
89
  type: :development
123
90
  prerelease: false
124
- version_requirements: *id007
91
+ version_requirements: *15918300
125
92
  description: parse strings into the appropriate object
126
93
  email: mharris717@gmail.com
127
94
  executables: []
128
-
129
95
  extensions: []
130
-
131
- extra_rdoc_files:
96
+ extra_rdoc_files:
132
97
  - LICENSE.txt
133
98
  - README.rdoc
134
- files:
99
+ files:
135
100
  - .document
101
+ - .lre
136
102
  - .rspec
137
103
  - Gemfile
138
104
  - Gemfile.lock
@@ -147,38 +113,33 @@ files:
147
113
  - to_parsed_obj.gemspec
148
114
  has_rdoc: true
149
115
  homepage: http://github.com/mharris717/to_parsed_obj
150
- licenses:
116
+ licenses:
151
117
  - MIT
152
118
  post_install_message:
153
119
  rdoc_options: []
154
-
155
- require_paths:
120
+ require_paths:
156
121
  - lib
157
- required_ruby_version: !ruby/object:Gem::Requirement
122
+ required_ruby_version: !ruby/object:Gem::Requirement
158
123
  none: false
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ segments:
164
129
  - 0
165
- version: "0"
166
- required_rubygems_version: !ruby/object:Gem::Requirement
130
+ hash: 381227005
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
132
  none: false
168
- requirements:
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- hash: 3
172
- segments:
173
- - 0
174
- version: "0"
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
175
137
  requirements: []
176
-
177
138
  rubyforge_project:
178
- rubygems_version: 1.3.7
139
+ rubygems_version: 1.5.2
179
140
  signing_key:
180
141
  specification_version: 3
181
142
  summary: parse strings into the appropriate object
182
- test_files:
143
+ test_files:
183
144
  - spec/spec_helper.rb
184
145
  - spec/to_parsed_obj_spec.rb