verser 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,12 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- verser (0.0.1)
4
+ verser (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
+ awesome_print (0.4.0)
9
10
  diff-lcs (1.1.2)
11
+ fuubar (0.0.5)
12
+ rspec (~> 2.0)
13
+ rspec-instafail (~> 0.1.4)
14
+ ruby-progressbar (~> 0.0.10)
15
+ rake (0.9.2)
10
16
  rspec (2.2.0)
11
17
  rspec-core (~> 2.2)
12
18
  rspec-expectations (~> 2.2)
@@ -14,11 +20,16 @@ GEM
14
20
  rspec-core (2.2.1)
15
21
  rspec-expectations (2.2.0)
16
22
  diff-lcs (~> 1.1.2)
23
+ rspec-instafail (0.1.8)
17
24
  rspec-mocks (2.2.0)
25
+ ruby-progressbar (0.0.10)
18
26
 
19
27
  PLATFORMS
20
28
  ruby
21
29
 
22
30
  DEPENDENCIES
23
- rspec (~> 2.2.0)
31
+ awesome_print
32
+ fuubar
33
+ rake
34
+ rspec
24
35
  verser!
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Verser
4
4
  class Reference
5
- attr_reader :book, :chapter, :from, :to
5
+ attr_reader :book, :from_chapter, :to_chapter, :from_verse, :to_verse, :input
6
6
 
7
7
  def initialize(input)
8
8
  @input = input
@@ -14,28 +14,33 @@ module Verser
14
14
  end
15
15
 
16
16
  def parse
17
- @input.downcase.gsub(/\s/,'').match /(\d)?([a-zéèïëô]+)\s*(\d+)([.,:](\d+)-?(\d+)?)?/
18
-
19
- if $1.nil?
20
- @book = $2
17
+ @input.downcase.gsub(/\s/,'').match /(\d)?([a-zéèïëô]+)\s*(\d+)([.,:](\d+)-?((\d+)[.,:])?(\d+)?)?/
18
+
19
+ @book = $1.nil? ? $2 : $1+$2
20
+ @from_chapter = $3.to_i == 0 ? nil : $3.to_i
21
+ @to_chapter = $7.to_i == 0 ? nil : $7.to_i
22
+
23
+ if $5.to_i > 0
24
+ @from_verse = $5.to_i
25
+ @to_verse = $8.to_i > 0 ? $8.to_i : nil
21
26
  else
22
- @book = "#{$1}#{$2}"
27
+ @from_verse = @to_verse = nil
23
28
  end
24
29
 
25
- @chapter = $3.to_i
26
- @from = $5.to_i
27
- @to = $6.to_i
28
-
29
30
  validate!
30
31
  end
31
32
 
32
33
  def validate!
33
34
  @valid = true
34
35
  @valid = false if @book.nil? or @book.empty?
36
+ @valid = false if @from_chapter.nil?
35
37
 
36
- unless @to.zero?
37
- @valid &&= (@from < @to)
38
+ if @to_chapter.nil?
39
+ unless @from_verse.nil? or @to_verse.nil?
40
+ @valid &&= (@from_verse < @to_verse)
41
+ end
38
42
  end
43
+
39
44
 
40
45
  @valid
41
46
  end
@@ -1,3 +1,3 @@
1
1
  module Verser
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/spec/verser_spec.rb CHANGED
@@ -3,80 +3,131 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe Verser::Reference do
6
- it "reads the format : <book>[ ]<chapter>[:.,]<verse>[-<verse>]" do
6
+ it "reads the format : <book>[ ]<chapter>[:.,]<verse>[-<chapter>[:.,]<verse>]" do
7
7
  r = Verser::Reference.new 'genèse 1.1-6'
8
8
  r.should be_valid
9
9
  r.book.should == 'genèse'
10
- r.chapter.should == 1
11
- r.from.should == 1
12
- r.to.should == 6
10
+ r.from_chapter.should == 1
11
+ r.to_chapter.should be_nil
12
+ r.from_verse.should == 1
13
+ r.to_verse.should == 6
14
+
15
+ r = Verser::Reference.new 'genèse 1.1-2.6'
16
+ r.should be_valid
17
+ r.book.should == 'genèse'
18
+ r.from_chapter.should == 1
19
+ r.from_verse.should == 1
20
+ r.to_chapter.should == 2
21
+ r.to_verse.should == 6
13
22
 
14
23
  r = Verser::Reference.new 'genèse 1:1-6'
15
24
  r.should be_valid
16
25
  r.book.should == 'genèse'
17
- r.chapter.should == 1
18
- r.from.should == 1
19
- r.to.should == 6
26
+ r.from_chapter.should == 1
27
+ r.to_chapter.should be_nil
28
+ r.from_verse.should == 1
29
+ r.to_verse.should == 6
30
+
31
+ r = Verser::Reference.new 'genèse 1:7-2:6'
32
+ r.should be_valid
33
+ r.book.should == 'genèse'
34
+ r.from_chapter.should == 1
35
+ r.from_verse.should == 7
36
+ r.to_chapter.should == 2
37
+ r.to_verse.should == 6
20
38
 
21
39
  r = Verser::Reference.new "genèse\t1,1"
22
40
  r.should be_valid
23
41
  r.book.should == 'genèse'
24
- r.chapter.should == 1
25
- r.from.should == 1
26
- r.to.should == 0
42
+ r.from_chapter.should == 1
43
+ r.to_chapter.should be_nil
44
+ r.from_verse.should == 1
45
+ r.to_verse.should be_nil
27
46
 
28
47
  r = Verser::Reference.new 'genèse1,1'
29
48
  r.should be_valid
30
49
  r.book.should == 'genèse'
31
- r.chapter.should == 1
32
- r.from.should == 1
33
- r.to.should == 0
50
+ r.from_chapter.should == 1
51
+ r.to_chapter.should be_nil
52
+ r.from_verse.should == 1
53
+ r.to_verse.should be_nil
34
54
  end
35
55
 
36
- it "reads the format : <number>[ ]<book> <chapter>[:.,]<verse>[-<verse>]" do
56
+ it "reads the format : <number>[ ]<book> <chapter>[:.,]<verse>[-<chapter>[:.,]<verse>]" do
37
57
  r = Verser::Reference.new '1 jean 1.1-6'
38
58
  r.should be_valid
39
59
  r.book.should == '1jean'
40
- r.chapter.should == 1
41
- r.from.should == 1
42
- r.to.should == 6
60
+ r.from_chapter.should == 1
61
+ r.to_chapter.should be_nil
62
+ r.from_verse.should == 1
63
+ r.to_verse.should == 6
64
+
65
+ r = Verser::Reference.new '1 jean 1.1-2.6'
66
+ r.should be_valid
67
+ r.book.should == '1jean'
68
+ r.from_chapter.should == 1
69
+ r.from_verse.should == 1
70
+ r.to_chapter.should == 2
71
+ r.to_verse.should == 6
43
72
 
44
73
  r = Verser::Reference.new '2rois 1:1-6'
45
74
  r.should be_valid
46
75
  r.book.should == '2rois'
47
- r.chapter.should == 1
48
- r.from.should == 1
49
- r.to.should == 6
76
+ r.from_chapter.should == 1
77
+ r.to_chapter.should be_nil
78
+ r.from_verse.should == 1
79
+ r.to_verse.should == 6
80
+
81
+ r = Verser::Reference.new '2rois 1:1-2:6'
82
+ r.should be_valid
83
+ r.book.should == '2rois'
84
+ r.from_chapter.should == 1
85
+ r.from_verse.should == 1
86
+ r.to_chapter.should == 2
87
+ r.to_verse.should == 6
50
88
 
51
89
  r = Verser::Reference.new '1 Samuel 1,1'
52
90
  r.should be_valid
53
91
  r.book.should == '1samuel'
54
- r.chapter.should == 1
55
- r.from.should == 1
56
- r.to.should == 0
92
+ r.from_chapter.should == 1
93
+ r.to_chapter.should be_nil
94
+ r.from_verse.should == 1
95
+ r.to_verse.should be_nil
57
96
  end
58
97
 
59
98
  it "reads the format : <book>[ ]<chapter>" do
60
99
  r = Verser::Reference.new 'genèse1'
61
100
  r.should be_valid
62
101
  r.book.should == "genèse"
63
- r.chapter.should == 1
102
+ r.from_chapter.should == 1
103
+ r.to_chapter.should be_nil
104
+ r.from_verse.should be_nil
105
+ r.to_verse.should be_nil
64
106
 
65
107
  r = Verser::Reference.new 'genèse 1'
66
108
  r.should be_valid
67
109
  r.book.should == "genèse"
68
- r.chapter.should == 1
110
+ r.from_chapter.should == 1
111
+ r.to_chapter.should be_nil
112
+ r.from_verse.should be_nil
113
+ r.to_verse.should be_nil
69
114
  end
70
115
 
71
116
  it "reads the format : <number>[ ]<book> <chapter>" do
72
117
  r = Verser::Reference.new '1samuel 1'
73
118
  r.should be_valid
74
119
  r.book.should == "1samuel"
75
- r.chapter.should == 1
120
+ r.from_chapter.should == 1
121
+ r.to_chapter.should be_nil
122
+ r.from_verse.should be_nil
123
+ r.to_verse.should be_nil
76
124
 
77
125
  r = Verser::Reference.new '1 samuel 1'
78
126
  r.should be_valid
79
127
  r.book.should == "1samuel"
80
- r.chapter.should == 1
128
+ r.from_chapter.should == 1
129
+ r.to_chapter.should be_nil
130
+ r.from_verse.should be_nil
131
+ r.to_verse.should be_nil
81
132
  end
82
133
  end
data/verser.gemspec CHANGED
@@ -13,7 +13,10 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{Verser is a bible verse/chapter reference parser}
14
14
 
15
15
  s.rubyforge_project = "verser"
16
- s.add_development_dependency "rspec", "~> 2.2.0"
16
+ s.add_development_dependency "rake"
17
+ s.add_development_dependency "rspec"
18
+ s.add_development_dependency "fuubar"
19
+ s.add_development_dependency "awesome_print"
17
20
 
18
21
  s.files = `git ls-files`.split("\n")
19
22
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,47 +1,68 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: verser
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Rawane ZOSSOU
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-12-09 00:00:00 +01:00
12
+ date: 2011-07-15 00:00:00.000000000 +02:00
18
13
  default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ requirement: &2153465380 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *2153465380
26
+ - !ruby/object:Gem::Dependency
21
27
  name: rspec
28
+ requirement: &2153464900 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
22
35
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
36
+ version_requirements: *2153464900
37
+ - !ruby/object:Gem::Dependency
38
+ name: fuubar
39
+ requirement: &2153445060 !ruby/object:Gem::Requirement
24
40
  none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 2
30
- - 2
31
- - 0
32
- version: 2.2.0
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
33
45
  type: :development
34
- version_requirements: *id001
46
+ prerelease: false
47
+ version_requirements: *2153445060
48
+ - !ruby/object:Gem::Dependency
49
+ name: awesome_print
50
+ requirement: &2153444240 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *2153444240
35
59
  description: Verser is a bible verse/chapter reference parser
36
- email:
60
+ email:
37
61
  - dev@raw1z.fr
38
62
  executables: []
39
-
40
63
  extensions: []
41
-
42
64
  extra_rdoc_files: []
43
-
44
- files:
65
+ files:
45
66
  - .gitignore
46
67
  - Gemfile
47
68
  - Gemfile.lock
@@ -55,35 +76,34 @@ files:
55
76
  has_rdoc: true
56
77
  homepage: http://rubygems.org/gems/verser
57
78
  licenses: []
58
-
59
79
  post_install_message:
60
80
  rdoc_options: []
61
-
62
- require_paths:
81
+ require_paths:
63
82
  - lib
64
- required_ruby_version: !ruby/object:Gem::Requirement
83
+ required_ruby_version: !ruby/object:Gem::Requirement
65
84
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ segments:
70
90
  - 0
71
- version: "0"
72
- required_rubygems_version: !ruby/object:Gem::Requirement
91
+ hash: -1977891811613380311
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
93
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- segments:
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ segments:
78
99
  - 0
79
- version: "0"
100
+ hash: -1977891811613380311
80
101
  requirements: []
81
-
82
102
  rubyforge_project: verser
83
- rubygems_version: 1.3.7
103
+ rubygems_version: 1.6.2
84
104
  signing_key:
85
105
  specification_version: 3
86
106
  summary: Verser is a bible verse/chapter reference parser
87
- test_files:
107
+ test_files:
88
108
  - spec/spec_helper.rb
89
109
  - spec/verser_spec.rb