to_parsed_obj 0.1.1 → 0.2.0
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/.lre +18 -0
- data/VERSION +1 -1
- data/lib/to_parsed_obj.rb +15 -4
- data/lib/to_parsed_obj/ext.rb +2 -2
- data/spec/to_parsed_obj_spec.rb +30 -0
- data/to_parsed_obj.gemspec +4 -4
- metadata +69 -108
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
|
+
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
|
41
|
-
|
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 =>
|
53
|
-
add(:matcher => [
|
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|
|
data/lib/to_parsed_obj/ext.rb
CHANGED
data/spec/to_parsed_obj_spec.rb
CHANGED
@@ -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
|
data/to_parsed_obj.gemspec
CHANGED
@@ -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.
|
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{
|
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.
|
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
|
-
|
5
|
-
prerelease:
|
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: &
|
17
|
+
requirement: &15925308 !ruby/object:Gem::Requirement
|
24
18
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
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: *
|
35
|
-
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: *15925308
|
26
|
+
- !ruby/object:Gem::Dependency
|
36
27
|
name: fattr
|
37
|
-
requirement: &
|
28
|
+
requirement: &15924876 !ruby/object:Gem::Requirement
|
38
29
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
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: *
|
49
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *15924876
|
37
|
+
- !ruby/object:Gem::Dependency
|
50
38
|
name: rspec
|
51
|
-
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: *
|
65
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: *15924468
|
48
|
+
- !ruby/object:Gem::Dependency
|
66
49
|
name: bundler
|
67
|
-
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: *
|
81
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: *15923928
|
59
|
+
- !ruby/object:Gem::Dependency
|
82
60
|
name: jeweler
|
83
|
-
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: *
|
97
|
-
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: *15923316
|
70
|
+
- !ruby/object:Gem::Dependency
|
98
71
|
name: rcov
|
99
|
-
requirement: &
|
72
|
+
requirement: &15918756 !ruby/object:Gem::Requirement
|
100
73
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
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: *
|
111
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *15918756
|
81
|
+
- !ruby/object:Gem::Dependency
|
112
82
|
name: win32console
|
113
|
-
requirement: &
|
83
|
+
requirement: &15918300 !ruby/object:Gem::Requirement
|
114
84
|
none: false
|
115
|
-
requirements:
|
116
|
-
- -
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
|
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: *
|
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
|
-
|
163
|
-
segments:
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
segments:
|
164
129
|
- 0
|
165
|
-
|
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
|
-
|
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.
|
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
|