gitable 0.2.2 → 0.2.3

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.
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - jruby
7
+ - rbx-18mode
8
+ - rbx-19mode
9
+ - ruby-head
10
+ - ree
@@ -16,12 +16,33 @@ Works with any valid Git URI, because Addressable doesn't.
16
16
  # Maintain the same url format.
17
17
  uri.to_s # => 'git@github.com:martinemde/gitable.git'
18
18
 
19
+ # Uses ssh?
20
+ uri.ssh? # => true
21
+
22
+ # scp format?
23
+ uri.scp? # => true
24
+
19
25
  # If it can't guess the name, you named your repository wrong.
20
26
  uri.project_name # => 'gitable'
21
27
 
28
+ # Will this uri require authentication?
29
+ uri.authenticated? # => true
30
+
31
+ # Will I have to interactively type something into git (a password)?
32
+ uri.interactive_authenticated? # => false
33
+
34
+ # Matching public to private git uris?
35
+ uri.equivalent?('git://github.com/martinemde/gitable.git') # => true
36
+ uri.equivalent?('https://martinemde@github.com/martinemde/gitable.git') # => true
37
+
22
38
  # Inherited from Addressable::URI
23
39
  uri.kind_of?(Addressable::URI) # => true
24
40
 
41
+ # Teenage Mutant Ninja Urls (mutable uris like Addressable, if you want)
42
+ uri.path = 'someotheruser/gitable.git'
43
+ uri.basename = 'umm.git'
44
+ uri.to_s # => 'git@github.com:someotheruser/umm.git'
45
+
25
46
  == heuristic_parse
26
47
 
27
48
  You can use Gitable::URI.heuristic_parse to take user input.
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "gitable"
4
- s.version = "0.2.2"
4
+ s.version = "0.2.3"
5
5
  s.authors = ["Martin Emde"]
6
6
  s.email = ["martin.emde@gmail.com"]
7
7
  s.homepage = "http://github.org/martinemde/gitable"
@@ -26,6 +26,19 @@ module Gitable
26
26
  end
27
27
  end
28
28
 
29
+ ##
30
+ # Parse a git repository URI into a URI object.
31
+ # Rescue parse errors and return nil if uri is not parseable.
32
+ #
33
+ # @param [Addressable::URI, #to_str] uri URI of a git repository.
34
+ #
35
+ # @return [Gitable::URI, nil] The parsed uri, or nil if not parseable.
36
+ def self.parse_when_valid(uri)
37
+ parse(uri)
38
+ rescue TypeError, Gitable::URI::InvalidURIError
39
+ nil
40
+ end
41
+
29
42
  ##
30
43
  # Attempts to make a copied URL bar into a git repository URI.
31
44
  #
@@ -153,6 +166,13 @@ module Gitable
153
166
  false
154
167
  end
155
168
 
169
+ # Dun da dun da dun, Inspector Gadget.
170
+ #
171
+ # @return [String] I'll get you next time Gadget, NEXT TIME!
172
+ def inspect
173
+ "#<#{self.class.to_s} #{to_s}>"
174
+ end
175
+
156
176
  # Set an extension name, replacing one if it exists.
157
177
  #
158
178
  # If there is no basename (i.e. no words in the path) this method call will
@@ -90,6 +90,10 @@ describe Gitable::URI do
90
90
  }.should raise_error(TypeError)
91
91
  end
92
92
 
93
+ it "returns nil with bad type on parse_when_valid" do
94
+ Gitable::URI.parse_when_valid(42).should be_nil
95
+ end
96
+
93
97
  context "(bad uris)" do
94
98
  [
95
99
  "http://", # nothing but scheme
@@ -102,6 +106,10 @@ describe Gitable::URI do
102
106
  Gitable::URI.parse(uri)
103
107
  }.should raise_error(Gitable::URI::InvalidURIError)
104
108
  end
109
+
110
+ it "returns nil on parse_when_valid with #{uri.inspect}" do
111
+ Gitable::URI.parse_when_valid(uri).should be_nil
112
+ end
105
113
  end
106
114
 
107
115
  context "scp uris" do
@@ -458,6 +466,7 @@ describe Gitable::URI do
458
466
 
459
467
  describe_uri "/path/to/repo.git/" do
460
468
  it { subject.to_s.should == @uri }
469
+ it { subject.inspect.should =~ %r|^#<Gitable::URI #{@uri}>$| }
461
470
  it { subject.should be_equivalent(@uri) }
462
471
  it { subject.should be_equivalent('/path/to/repo.git') }
463
472
  it { subject.should be_equivalent('file:///path/to/repo.git') }
@@ -476,6 +485,7 @@ describe Gitable::URI do
476
485
 
477
486
  describe_uri "file:///path/to/repo.git/" do
478
487
  it { subject.to_s.should == @uri }
488
+ it { subject.inspect.should =~ %r|^#<Gitable::URI #{@uri}>$| }
479
489
  it { subject.should be_equivalent(@uri) }
480
490
  it { subject.should be_equivalent('/path/to/repo.git') }
481
491
  it { subject.should be_equivalent('file:///path/to/repo.git') }
@@ -494,6 +504,7 @@ describe Gitable::URI do
494
504
 
495
505
  describe_uri "ssh://git@github.com/martinemde/gitable.git" do
496
506
  it { subject.to_s.should == @uri }
507
+ it { subject.inspect.should =~ %r|^#<Gitable::URI #{@uri}>$| }
497
508
  it { subject.should be_equivalent(@uri) }
498
509
  it { subject.should be_equivalent('git://github.com/martinemde/gitable.git') }
499
510
  it { subject.should be_equivalent('git@github.com:martinemde/gitable.git') }
@@ -521,6 +532,7 @@ describe Gitable::URI do
521
532
 
522
533
  describe_uri "https://github.com/martinemde/gitable.git" do
523
534
  it { subject.to_s.should == @uri }
535
+ it { subject.inspect.should =~ %r|^#<Gitable::URI #{@uri}>$| }
524
536
  it { subject.should be_equivalent(@uri) }
525
537
  it { subject.should be_equivalent('ssh://git@github.com/martinemde/gitable.git') }
526
538
  it { subject.should be_equivalent('git://github.com/martinemde/gitable.git') }
@@ -546,6 +558,7 @@ describe Gitable::URI do
546
558
 
547
559
  describe_uri "https://martinemde@github.com/martinemde/gitable.git" do
548
560
  it { subject.to_s.should == @uri }
561
+ it { subject.inspect.should =~ %r|^#<Gitable::URI #{@uri}>$| }
549
562
  it { subject.should be_equivalent(@uri) }
550
563
  it { subject.should be_equivalent('ssh://git@github.com/martinemde/gitable.git') }
551
564
  it { subject.should be_equivalent('git://github.com/martinemde/gitable.git') }
@@ -574,6 +587,7 @@ describe Gitable::URI do
574
587
 
575
588
  describe_uri "git://github.com/martinemde/gitable.git" do
576
589
  it { subject.to_s.should == @uri }
590
+ it { subject.inspect.should =~ %r|^#<Gitable::URI #{@uri}>$| }
577
591
  it { subject.should be_equivalent(@uri) }
578
592
  it { subject.should be_equivalent('ssh://git@github.com/martinemde/gitable.git') }
579
593
  it { subject.should be_equivalent('git@github.com:martinemde/gitable.git') }
@@ -601,6 +615,7 @@ describe Gitable::URI do
601
615
 
602
616
  describe_uri "git@github.com:martinemde/gitable.git" do
603
617
  it { subject.to_s.should == @uri }
618
+ it { subject.inspect.should =~ %r|^#<Gitable::ScpURI #{@uri}>$| }
604
619
  it { subject.should be_equivalent(@uri) }
605
620
  it { subject.should be_equivalent('ssh://git@github.com/martinemde/gitable.git') }
606
621
  it { subject.should be_equivalent('git://github.com/martinemde/gitable.git') }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-04 00:00:00.000000000 Z
12
+ date: 2012-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
16
- requirement: &70179914661980 !ruby/object:Gem::Requirement
16
+ requirement: &70120045559900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70179914661980
24
+ version_requirements: *70120045559900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70179914661440 !ruby/object:Gem::Requirement
27
+ requirement: &70120045559360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70179914661440
35
+ version_requirements: *70120045559360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70179914661020 !ruby/object:Gem::Requirement
38
+ requirement: &70120045558940 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70179914661020
46
+ version_requirements: *70120045558940
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rcov
49
- requirement: &70179914660560 !ruby/object:Gem::Requirement
49
+ requirement: &70120045558480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70179914660560
57
+ version_requirements: *70120045558480
58
58
  description: Addressable::URI for Git URIs with special handling for scp-style URIs
59
59
  that Addressable doesn't like.
60
60
  email:
@@ -67,6 +67,7 @@ extra_rdoc_files:
67
67
  files:
68
68
  - .document
69
69
  - .gitignore
70
+ - .travis.yml
70
71
  - Gemfile
71
72
  - LICENSE
72
73
  - README.rdoc
@@ -93,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
94
  version: '0'
94
95
  segments:
95
96
  - 0
96
- hash: 925310224133331721
97
+ hash: -3667744996364921328
97
98
  required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  none: false
99
100
  requirements:
@@ -102,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
103
  version: '0'
103
104
  segments:
104
105
  - 0
105
- hash: 925310224133331721
106
+ hash: -3667744996364921328
106
107
  requirements: []
107
108
  rubyforge_project:
108
109
  rubygems_version: 1.8.10