nwiki 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a4af7ee8548ac25f7892bd7699217b0f6b672876
4
+ data.tar.gz: 40a584882c9bb6e9fe52f53eab247331c1a175d9
5
+ SHA512:
6
+ metadata.gz: 2e3c928266ce7eb664e99cf80308b5faaaedfedaeee2992c9df005dbf9cf45eaeda823dc5682866a5313f9015a322fcbdd6143b2ea682fe596be7446c9706330
7
+ data.tar.gz: 7e27e2dc6ca1bb1280f85a4b3cd8ad5e509114d4d83e0bc62243a2bf1e5c0714dd7e5aae0fc1b59d0f65763cc38ed01e6327b452c8a9572c56e338fa0f1b422f
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 1.9.3-p362
1
+ 2.0.0-p247
data/.travis.yml CHANGED
@@ -1 +1 @@
1
- rvm: 1.9.3
1
+ rvm: 2.0.0
data/CHANGELOG.org CHANGED
@@ -1,4 +1,8 @@
1
1
  * CHANGELOG
2
+ ** 0.1.4
3
+ - [feature] remove dependency of `gollum-lib`
4
+ - [feature] work on Ruby2.0
5
+ - [feature] optimize rendering for smartphone
2
6
  ** 0.1.3
3
7
  - [feature] apply twitter bootstrap 3 style
4
8
  - [fix] fix mime-type when render 404(Not Found) page
data/Gemfile CHANGED
@@ -3,4 +3,5 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in nwiki.gemspec
4
4
  gemspec
5
5
 
6
+ gem 'rugged', git: 'git://github.com/libgit2/rugged.git', branch: 'development', submodules: true
6
7
  gem 'coveralls', require: false
@@ -1,8 +1,104 @@
1
- require 'gollum-lib'
1
+ require 'rugged'
2
+ require 'forwardable'
2
3
 
3
4
  module Nwiki
4
5
  module Core
5
- # copy from gollum
6
- GitAccess = ::Gollum::GitAccess
6
+ class Entry
7
+ extend Forwardable
8
+
9
+ attr_reader :path
10
+
11
+ def initialize path, blob_object
12
+ @path = path
13
+ @blob_object = blob_object
14
+ end
15
+
16
+ def text
17
+ @blob_object.text.force_encoding('UTF-8')
18
+ end
19
+
20
+ def_delegators :@blob_object, :size, :content, :binary?
21
+ end
22
+
23
+ class Diff
24
+ extend Forwardable
25
+
26
+ attr_reader :time
27
+
28
+ def initialize entry, time
29
+ @entry = entry
30
+ @time = time
31
+ end
32
+
33
+ def_delegators :@entry, :size, :content, :text, :binary?, :path
34
+ end
35
+
36
+ class GitAccess
37
+ def initialize repo_path
38
+ @repo = Rugged::Repository.new(::File.expand_path(repo_path))
39
+ end
40
+
41
+ def config
42
+ Rugged::Branch.lookup(@repo, 'config')
43
+ end
44
+
45
+ def title
46
+ title_entry = config.tip.tree.get_entry('title')
47
+ title_blob = @repo.lookup(title_entry[:oid])
48
+ title_blob.text.chomp.force_encoding('UTF-8')
49
+ end
50
+
51
+ def subtitle
52
+ subtitle_entry = config.tip.tree.get_entry('subtitle')
53
+ subtitle_blob = @repo.lookup(subtitle_entry[:oid])
54
+ subtitle_blob.text.chomp.force_encoding('UTF-8')
55
+ end
56
+
57
+ def author
58
+ author_entry = config.tip.tree.get_entry('author')
59
+ author_blob = @repo.lookup(author_entry[:oid])
60
+ author_blob.text.chomp.force_encoding('UTF-8')
61
+ end
62
+
63
+ def find_file
64
+ target = @repo.head.target
65
+ @repo.lookup(target).tree.walk_blobs do |path, object|
66
+ fullpath = path + object[:name]
67
+ if yield(fullpath)
68
+ return Entry.new(fullpath, @repo.lookup(object[:oid]))
69
+ end
70
+ end
71
+ end
72
+
73
+ def all_files
74
+ [].tap do |result|
75
+ target = @repo.head.target
76
+ @repo.lookup(target).tree.walk_blobs do |path, object|
77
+ fullpath = path + object[:name]
78
+ result << Entry.new(fullpath, @repo.lookup(object[:oid]))
79
+ end
80
+ end
81
+ end
82
+
83
+ def log
84
+ walker = Rugged::Walker.new(@repo).tap do |w|
85
+ w.sorting(Rugged::SORT_DATE) # new -> old
86
+ w.push(@repo.head.target)
87
+ end
88
+ [].tap do |result|
89
+ walker.walk.each do |commit|
90
+ commit_time = Time.at(commit.epoch_time)
91
+ parent = commit.parents.first
92
+ next unless parent
93
+ diff = parent.diff(commit)
94
+ diff.deltas.reject(&:deleted?).each do |delta|
95
+ new_file_object = delta.new_file
96
+ path = new_file_object[:path].force_encoding('UTF-8')
97
+ result << Diff.new(Entry.new(path, @repo.lookup(new_file_object[:oid])), commit_time)
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
7
103
  end
8
104
  end
@@ -1,4 +1,5 @@
1
1
  require 'rack'
2
+ require 'org-ruby'
2
3
 
3
4
  module Nwiki
4
5
  module Core
@@ -16,8 +17,6 @@ module Nwiki
16
17
  unescaped_path.sub(/^\//, '')
17
18
  end
18
19
 
19
- attr_reader :access
20
-
21
20
  def initialize path
22
21
  @path = path
23
22
  @access = GitAccess.new(path)
@@ -33,57 +32,38 @@ module Nwiki
33
32
  end
34
33
 
35
34
  def find_page_or_file path
36
- blob_entry = @access
37
- .tree('master')
38
- .find { |e| path == e.path.sub(/\.org$/){ '' } }
39
- return nil unless blob_entry
40
- byte_string = blob_entry.blob(@access.repo).data
41
- if blob_entry.name =~ /\.org$/
42
- byte_string.force_encoding(self.class.repo_filename_encoding)
43
- Page.new(::File.basename(blob_entry.name, '.org'), byte_string, self.class.parser)
35
+ entry = @access.find_file do |entry_path|
36
+ path == entry_path.sub(/\.org$/){ '' }
37
+ end
38
+ return nil unless entry
39
+ if entry.path =~ /\.org$/
40
+ path = entry.path.sub(/\.org$/){ '' }
41
+ Page.new(path, entry.text, self.class.parser)
44
42
  else
45
- File.new(blob_entry.name, byte_string)
43
+ File.new(entry.path, entry.content)
46
44
  end
47
45
  end
48
46
 
49
47
  def find_directory path
50
- sha = @access.tree('master')
48
+ files = @access.all_files
51
49
  Directory.encoding = self.class.repo_filename_encoding
52
- Directory.new(path, sha.map(&:path))
50
+ Directory.new(path, files.map(&:path))
53
51
  end
54
52
 
55
53
  def title
56
- blob_entry = @access
57
- .tree('config')
58
- .find { |e| e.path == 'title' }
59
- return '' unless blob_entry
60
- byte_string = blob_entry.blob(@access.repo).data
61
- byte_string.force_encoding(self.class.repo_filename_encoding)
62
- byte_string.chomp
54
+ @access.title
63
55
  end
64
56
 
65
57
  def subtitle
66
- blob_entry = @access
67
- .tree('config')
68
- .find { |e| e.path == 'subtitle' }
69
- return '' unless blob_entry
70
- byte_string = blob_entry.blob(@access.repo).data
71
- byte_string.force_encoding(self.class.repo_filename_encoding)
72
- byte_string.chomp
58
+ @access.subtitle
73
59
  end
74
60
 
75
61
  def author
76
- blob_entry = @access
77
- .tree('config')
78
- .find { |e| e.path == 'author' }
79
- return '' unless blob_entry
80
- byte_string = blob_entry.blob(@access.repo).data
81
- byte_string.force_encoding(self.class.repo_filename_encoding)
82
- byte_string.chomp
62
+ @access.author
83
63
  end
84
64
 
85
- def exist?
86
- @access.exist?
65
+ def log
66
+ @access.log
87
67
  end
88
68
  end
89
69
  end
@@ -7,7 +7,6 @@ module Nwiki
7
7
 
8
8
  def initialize git_repo_path, opts = {}
9
9
  @wiki = Nwiki::Core::Wiki.new git_repo_path
10
- raise unless @wiki.exist?
11
10
  @articles_path = opts[:articles_path] || ''
12
11
  end
13
12
 
@@ -22,42 +21,27 @@ module Nwiki
22
21
  maker.channel.link = Rack::Request.new(env).url
23
22
 
24
23
  maker.channel.author = @wiki.author
25
- maker.channel.date = latest_update
24
+ maker.channel.date = @wiki.log.max_by(&:time).time
26
25
  maker.channel.id = Rack::Request.new(env).url
27
26
 
28
27
  maker.items.do_sort = true
29
28
  maker.items.max_size = 50
30
29
 
31
- log = @wiki.access.repo.log
32
- log.each do |commit|
33
- date = commit.date
34
- commit.show.each do |diff|
35
- next unless diff.new_file
30
+ @wiki.log.each do |diff|
31
+ path = Nwiki::Core::Wiki.canonicalize_path(diff.path)
32
+ next if path =~ /\.gif|png|jpg$/ # FIXME Don't display binary file at feed
33
+ path.gsub!(/\.org$/, '')
36
34
 
37
- path = Nwiki::Core::Wiki.canonicalize_path(diff.b_path)
38
- path.gsub!(/\.org$/, '')
39
-
40
- maker.items.new_item do |item|
41
- item.link = Rack::Request.new(env).url.gsub(Regexp.new(Rack::Request.new(env).fullpath), "#{articles_path}/#{path}")
42
- item.title = File.basename(path)
43
- item.date = date
44
- end
35
+ maker.items.new_item do |item|
36
+ item.link = Rack::Request.new(env).url.gsub(Regexp.new(Rack::Request.new(env).fullpath), "#{articles_path}/#{path}")
37
+ item.title = path
38
+ item.date = diff.time
45
39
  end
46
40
  end
47
41
  }.to_s
48
42
  ]
49
43
  ]
50
44
  end
51
-
52
- private
53
- def latest_update
54
- log = @wiki.access.repo.log
55
- latest_update = Time.parse('1900-01-01')
56
- log.each do |commit|
57
- latest_update = commit.date if commit.date > latest_update
58
- end
59
- latest_update
60
- end
61
45
  end
62
46
  end
63
47
  end
@@ -5,7 +5,6 @@ module Nwiki
5
5
  class Html
6
6
  def initialize git_repo_path
7
7
  @wiki = Nwiki::Core::Wiki.new git_repo_path
8
- raise unless @wiki.exist?
9
8
  end
10
9
 
11
10
  def call env
@@ -27,11 +26,10 @@ module Nwiki
27
26
  <html>
28
27
  <head>
29
28
  <title><%= page.title %> - <%= @wiki.title %></title>
29
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
30
30
  <link rel="alternate" type="application/atom+xml" title="ATOM Feed" href="/articles.xml">
31
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
32
31
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
33
32
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">
34
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
35
33
  </head>
36
34
  <body>
37
35
  <div class="container">
@@ -45,6 +43,8 @@ module Nwiki
45
43
  </div>
46
44
  </div>
47
45
  </div>
46
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
47
+ <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
48
48
  </body>
49
49
  </html>
50
50
  EOS
@@ -23,11 +23,10 @@ module Nwiki
23
23
  <head>
24
24
  <meta http-equiv="refresh" content="5;URL=http://niku.name/articles/">
25
25
  <title><%= @wiki.title %></title>
26
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
26
27
  <link rel="alternate" type="application/atom+xml" title="ATOM Feed" href="/articles.xml">
27
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
28
28
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
29
29
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">
30
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
31
30
  </head>
32
31
  <body>
33
32
  <div class="container">
@@ -42,6 +41,8 @@ module Nwiki
42
41
  </div>
43
42
  </div>
44
43
  </div>
44
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
45
+ <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
45
46
  </body>
46
47
  </html>
47
48
  EOS
data/lib/nwiki/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nwiki
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
data/nwiki.gemspec CHANGED
@@ -15,7 +15,6 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ['lib']
16
16
  gem.version = Nwiki::VERSION
17
17
 
18
- gem.add_dependency('gollum-lib')
19
18
  gem.add_dependency('rack')
20
19
  gem.add_dependency('org-ruby')
21
20
 
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  module Nwiki
@@ -7,10 +8,38 @@ module Nwiki
7
8
 
8
9
  subject { described_class.new(path) }
9
10
 
10
- describe '#tree' do
11
- let(:ref) { '63c0856958172223da3309e653f837a3485be4ae' }
11
+ describe '#title' do
12
+ it { expect(subject.title).to eq 'ヽ(´・肉・`)ノログ' }
13
+ end
14
+
15
+ describe '#subtitle' do
16
+ it { expect(subject.subtitle).to eq 'How do we fighting without fighting?' }
17
+ end
18
+
19
+ describe '#author' do
20
+ it { expect(subject.author).to eq 'niku' }
21
+ end
22
+
23
+ describe '#find_file' do
24
+ it { expect(subject.find_file { |path| path == '1/2/b.org' }.text).to eq "* b\n\n" }
25
+ end
26
+
27
+ describe '#all_files' do
28
+ subject { super().all_files }
29
+
30
+ it { expect(subject).to have(5).items }
31
+ it { expect(subject.first).to be_kind_of Entry}
32
+ it { expect(subject.first.path).to eq '1/2/a.org'}
33
+ end
34
+
35
+ describe '#log' do
36
+ subject { super().log }
12
37
 
13
- it { subject.tree(ref).should have_at_least(1).blob_entries }
38
+ it { expect(subject).to be_kind_of Enumerable }
39
+ it { expect(subject.first.path).to eq 'foo.org' }
40
+ it { expect(subject.first.time).to eq Time.parse('2012-08-09 20:15:07 +0900') }
41
+ it { expect(subject.last.path).to eq '1/2/b.org' }
42
+ it { expect(subject.last.time).to eq Time.parse('2012-06-14 21:55:15 +0900') }
14
43
  end
15
44
  end
16
45
  end
@@ -45,10 +45,10 @@ module Nwiki
45
45
  it { subject.title.content.should eq 'ヽ(´・肉・`)ノログ' }
46
46
  it { subject.subtitle.content.should eq 'How do we fighting without fighting?' }
47
47
  it { subject.author.name.content.should eq 'niku' }
48
- it { subject.date.should eq Time.parse('2013-02-07 23:25:44 +0900') }
48
+ it { subject.date.should eq Time.parse('2012-08-09 20:15:07 +0900') }
49
49
  it { subject.id.content.should eq 'http://example.org/articles.xml' }
50
- it { subject.items.first.link.href.should eq 'http://example.org/articles/icon.png' }
51
- it { subject.items.first.title.content.should eq "icon.png" }
50
+ it { subject.items.first.link.href.should eq 'http://example.org/articles/foo' }
51
+ it { subject.items.first.title.content.should eq 'foo' }
52
52
  it { subject.items.first.date.should eq Time.parse('2012-08-09 20:15:07 +0900') }
53
53
  end
54
54
 
@@ -59,6 +59,7 @@ module Nwiki
59
59
  let(:path) { '/articles/foo' }
60
60
 
61
61
  it { subject.should be_ok }
62
+ it { subject.should match %r!<title[^>]*>foo - ヽ(´・肉・`)ノログ</title>!}
62
63
  it { subject.should match %r!<h2[^>]*>Foo</h2>! }
63
64
  it { subject.should match %r!<h3[^>]*>Bar</h3>! }
64
65
  end
@@ -92,6 +93,7 @@ module Nwiki
92
93
  let(:path) { URI.encode '/articles/日本語ディレクトリ/わたしだ' }
93
94
 
94
95
  it { subject.should be_ok }
96
+ it { subject.body.should match %r!<title[^>]*>日本語ディレクトリ/わたしだ - ヽ(´・肉・`)ノログ</title>!}
95
97
  it { subject.body.should match %r!<h2[^>]*>お前だったのか</h2>! }
96
98
  it { subject.body.should match %r!<h3[^>]*>気づかなかったな</h3>! }
97
99
  end
metadata CHANGED
@@ -1,158 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nwiki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.1.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - niku
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-09 00:00:00.000000000 Z
11
+ date: 2013-10-09 00:00:00.000000000 Z
13
12
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: gollum-lib
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
13
  - !ruby/object:Gem::Dependency
31
14
  name: rack
32
15
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
16
  requirements:
35
- - - ! '>='
17
+ - - '>='
36
18
  - !ruby/object:Gem::Version
37
19
  version: '0'
38
20
  type: :runtime
39
21
  prerelease: false
40
22
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
23
  requirements:
43
- - - ! '>='
24
+ - - '>='
44
25
  - !ruby/object:Gem::Version
45
26
  version: '0'
46
27
  - !ruby/object:Gem::Dependency
47
28
  name: org-ruby
48
29
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
30
  requirements:
51
- - - ! '>='
31
+ - - '>='
52
32
  - !ruby/object:Gem::Version
53
33
  version: '0'
54
34
  type: :runtime
55
35
  prerelease: false
56
36
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
37
  requirements:
59
- - - ! '>='
38
+ - - '>='
60
39
  - !ruby/object:Gem::Version
61
40
  version: '0'
62
41
  - !ruby/object:Gem::Dependency
63
42
  name: rake
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
- - - ! '>='
45
+ - - '>='
68
46
  - !ruby/object:Gem::Version
69
47
  version: '0'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
- - - ! '>='
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
55
  - !ruby/object:Gem::Dependency
79
56
  name: rspec
80
57
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
58
  requirements:
83
- - - ! '>='
59
+ - - '>='
84
60
  - !ruby/object:Gem::Version
85
61
  version: '0'
86
62
  type: :development
87
63
  prerelease: false
88
64
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
65
  requirements:
91
- - - ! '>='
66
+ - - '>='
92
67
  - !ruby/object:Gem::Version
93
68
  version: '0'
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: rack-test
96
71
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
72
  requirements:
99
- - - ! '>='
73
+ - - '>='
100
74
  - !ruby/object:Gem::Version
101
75
  version: '0'
102
76
  type: :development
103
77
  prerelease: false
104
78
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
79
  requirements:
107
- - - ! '>='
80
+ - - '>='
108
81
  - !ruby/object:Gem::Version
109
82
  version: '0'
110
83
  - !ruby/object:Gem::Dependency
111
84
  name: guard
112
85
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
86
  requirements:
115
- - - ! '>='
87
+ - - '>='
116
88
  - !ruby/object:Gem::Version
117
89
  version: '0'
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
93
  requirements:
123
- - - ! '>='
94
+ - - '>='
124
95
  - !ruby/object:Gem::Version
125
96
  version: '0'
126
97
  - !ruby/object:Gem::Dependency
127
98
  name: guard-rspec
128
99
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
100
  requirements:
131
- - - ! '>='
101
+ - - '>='
132
102
  - !ruby/object:Gem::Version
133
103
  version: '0'
134
104
  type: :development
135
105
  prerelease: false
136
106
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
107
  requirements:
139
- - - ! '>='
108
+ - - '>='
140
109
  - !ruby/object:Gem::Version
141
110
  version: '0'
142
111
  - !ruby/object:Gem::Dependency
143
112
  name: ruby_gntp
144
113
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
114
  requirements:
147
- - - ! '>='
115
+ - - '>='
148
116
  - !ruby/object:Gem::Version
149
117
  version: '0'
150
118
  type: :development
151
119
  prerelease: false
152
120
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
121
  requirements:
155
- - - ! '>='
122
+ - - '>='
156
123
  - !ruby/object:Gem::Version
157
124
  version: '0'
158
125
  description: Write a gem description
@@ -252,33 +219,26 @@ files:
252
219
  - spec/spec_helper.rb
253
220
  homepage: ''
254
221
  licenses: []
222
+ metadata: {}
255
223
  post_install_message:
256
224
  rdoc_options: []
257
225
  require_paths:
258
226
  - lib
259
227
  required_ruby_version: !ruby/object:Gem::Requirement
260
- none: false
261
228
  requirements:
262
- - - ! '>='
229
+ - - '>='
263
230
  - !ruby/object:Gem::Version
264
231
  version: '0'
265
- segments:
266
- - 0
267
- hash: 2850042242604829177
268
232
  required_rubygems_version: !ruby/object:Gem::Requirement
269
- none: false
270
233
  requirements:
271
- - - ! '>='
234
+ - - '>='
272
235
  - !ruby/object:Gem::Version
273
236
  version: '0'
274
- segments:
275
- - 0
276
- hash: 2850042242604829177
277
237
  requirements: []
278
238
  rubyforge_project:
279
- rubygems_version: 1.8.23
239
+ rubygems_version: 2.0.3
280
240
  signing_key:
281
- specification_version: 3
241
+ specification_version: 4
282
242
  summary: Write a gem summary
283
243
  test_files:
284
244
  - spec/examples/sample.git/HEAD