history 0.2.0 → 0.3.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/.ruby +2 -2
- data/DEMO.md +1 -1
- data/HISTORY.md +10 -0
- data/demo/01_history.md +1 -1
- data/lib/history.rb +61 -42
- data/lib/history.yml +2 -2
- metadata +8 -8
data/.ruby
CHANGED
|
@@ -54,7 +54,7 @@ title: History
|
|
|
54
54
|
created: '2010-02-19'
|
|
55
55
|
organization: Rubyworks
|
|
56
56
|
summary: HISTORY and CHANGELOG parser
|
|
57
|
-
version: 0.
|
|
57
|
+
version: 0.3.0
|
|
58
58
|
description: ! 'History is a HISTORY file parser. It can parse common HISTORY file
|
|
59
59
|
layouts
|
|
60
60
|
|
|
@@ -63,4 +63,4 @@ description: ! 'History is a HISTORY file parser. It can parse common HISTORY fi
|
|
|
63
63
|
a number of things, in particular it can be used to generate tag messages
|
|
64
64
|
|
|
65
65
|
and add pre-release change lists to release announcements.'
|
|
66
|
-
date: '2012-05-
|
|
66
|
+
date: '2012-05-27'
|
data/DEMO.md
CHANGED
|
@@ -68,7 +68,7 @@ The initializer takes the root directory for the project
|
|
|
68
68
|
and looks for a file called +HISTORY+, optionally ending
|
|
69
69
|
in an extension such as +.txt+ or +.rdoc+, etc.
|
|
70
70
|
|
|
71
|
-
history = History.
|
|
71
|
+
history = History.at('tmp/example')
|
|
72
72
|
|
|
73
73
|
Now we should have an enumeration of each release entry in
|
|
74
74
|
the HISTORY file.
|
data/HISTORY.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# RELEASE HISTORY
|
|
2
2
|
|
|
3
|
+
## 0.3.0 / 2012-05-27
|
|
4
|
+
|
|
5
|
+
New release makes the constructor interface more flexible, in part
|
|
6
|
+
by making use of the Pathname library.
|
|
7
|
+
|
|
8
|
+
Changes:
|
|
9
|
+
|
|
10
|
+
* Improves constructor interface.
|
|
11
|
+
|
|
12
|
+
|
|
3
13
|
## 0.2.0 / 2012-05-25
|
|
4
14
|
|
|
5
15
|
This the first usable release. There's actual code now ;)
|
data/demo/01_history.md
CHANGED
|
@@ -61,7 +61,7 @@ The initializer takes the root directory for the project
|
|
|
61
61
|
and looks for a file called +HISTORY+, optionally ending
|
|
62
62
|
in an extension such as +.txt+ or +.rdoc+, etc.
|
|
63
63
|
|
|
64
|
-
history = History.
|
|
64
|
+
history = History.at('tmp/example')
|
|
65
65
|
|
|
66
66
|
Now we should have an enumeration of each release entry in
|
|
67
67
|
the HISTORY file.
|
data/lib/history.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require 'pathname'
|
|
2
2
|
require 'history/release'
|
|
3
3
|
|
|
4
4
|
# The History class is a HISTORY file parser. It parses HISTORY files
|
|
@@ -38,25 +38,40 @@ class History
|
|
|
38
38
|
# Convenience constant for `File::FNM_CASEFOLD`.
|
|
39
39
|
CASEFOLD = File::FNM_CASEFOLD
|
|
40
40
|
|
|
41
|
-
#
|
|
42
|
-
def self.parse(text
|
|
43
|
-
|
|
44
|
-
new(opts[:file], opts)
|
|
41
|
+
# Parse history from given text.
|
|
42
|
+
def self.parse(text)
|
|
43
|
+
new(text.to_s)
|
|
45
44
|
end
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
# Read and parse history from given file.
|
|
47
|
+
def self.read(file)
|
|
48
|
+
new(Pathname.new(file))
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
#
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
# Lookup history file given a project root directory.
|
|
52
|
+
# If a history file is not present, assume a default
|
|
53
|
+
# file name of `HISTORY`.
|
|
54
|
+
def self.at(root=Dir.pwd)
|
|
55
|
+
if file = Dir.glob(File.join(root, DEFAULT_FILE), CASEFOLD).first
|
|
56
|
+
new(Pathname.new(file))
|
|
57
|
+
else
|
|
58
|
+
file = File.join(root, 'HISTORY')
|
|
59
|
+
new(:file=>file)
|
|
60
|
+
end
|
|
54
61
|
end
|
|
55
62
|
|
|
56
|
-
#
|
|
63
|
+
# Alias for #at.
|
|
57
64
|
def self.find(root=Dir.pwd)
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
at(root)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Does a HISTORY file exist?
|
|
69
|
+
def self.exist?(path=Dir.pwd)
|
|
70
|
+
if File.directory?(path)
|
|
71
|
+
Dir.glob(File.join(path, DEFAULT_FILE), CASEFOLD).first
|
|
72
|
+
else
|
|
73
|
+
File.exist?(path) ? path : false
|
|
74
|
+
end
|
|
60
75
|
end
|
|
61
76
|
|
|
62
77
|
# HISTORY file's path.
|
|
@@ -69,46 +84,50 @@ class History
|
|
|
69
84
|
attr :releases
|
|
70
85
|
|
|
71
86
|
# New History.
|
|
72
|
-
def initialize(
|
|
73
|
-
if Hash ===
|
|
87
|
+
def initialize(io=nil, opts={})
|
|
88
|
+
if Hash === io
|
|
74
89
|
opts = file
|
|
75
|
-
|
|
90
|
+
io = nil
|
|
76
91
|
end
|
|
77
92
|
|
|
78
|
-
@
|
|
79
|
-
@text = opts[:text]
|
|
93
|
+
@releases = []
|
|
80
94
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
95
|
+
case io
|
|
96
|
+
when String
|
|
97
|
+
parse(io)
|
|
98
|
+
when Pathname
|
|
99
|
+
@file = io
|
|
100
|
+
parse(io.read)
|
|
101
|
+
when File
|
|
102
|
+
@file = io.path
|
|
103
|
+
parse(io.read)
|
|
84
104
|
else
|
|
85
|
-
|
|
105
|
+
parse(io.read)
|
|
86
106
|
end
|
|
87
107
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
end
|
|
108
|
+
@file = opts[:file] if opts.key?(:file)
|
|
109
|
+
end
|
|
91
110
|
|
|
92
|
-
|
|
111
|
+
# Does history file exist?
|
|
112
|
+
def exist?
|
|
113
|
+
File.file?(@file)
|
|
93
114
|
end
|
|
94
115
|
|
|
95
|
-
#
|
|
96
|
-
def parse
|
|
97
|
-
|
|
98
|
-
entry = nil
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
next unless entry
|
|
107
|
-
entry << line
|
|
108
|
-
end
|
|
116
|
+
# Parse History text.
|
|
117
|
+
def parse(text)
|
|
118
|
+
return unless text
|
|
119
|
+
releases, entry = [], nil
|
|
120
|
+
text.each_line do |line|
|
|
121
|
+
if HEADER_RE =~ line
|
|
122
|
+
releases << Release.new(entry) if entry
|
|
123
|
+
entry = line
|
|
124
|
+
else
|
|
125
|
+
next unless entry
|
|
126
|
+
entry << line
|
|
109
127
|
end
|
|
110
|
-
@releases << Release.new(entry)
|
|
111
128
|
end
|
|
129
|
+
releases << Release.new(entry)
|
|
130
|
+
@releases = releases
|
|
112
131
|
end
|
|
113
132
|
|
|
114
133
|
# Lookup release by version.
|
|
@@ -116,7 +135,7 @@ class History
|
|
|
116
135
|
releases.find{ |r| r.version == version }
|
|
117
136
|
end
|
|
118
137
|
|
|
119
|
-
# Returns first entry in
|
|
138
|
+
# Returns first entry in release list.
|
|
120
139
|
def release
|
|
121
140
|
releases.first
|
|
122
141
|
end
|
data/lib/history.yml
CHANGED
|
@@ -54,7 +54,7 @@ title: History
|
|
|
54
54
|
created: '2010-02-19'
|
|
55
55
|
organization: Rubyworks
|
|
56
56
|
summary: HISTORY and CHANGELOG parser
|
|
57
|
-
version: 0.
|
|
57
|
+
version: 0.3.0
|
|
58
58
|
description: ! 'History is a HISTORY file parser. It can parse common HISTORY file
|
|
59
59
|
layouts
|
|
60
60
|
|
|
@@ -63,4 +63,4 @@ description: ! 'History is a HISTORY file parser. It can parse common HISTORY fi
|
|
|
63
63
|
a number of things, in particular it can be used to generate tag messages
|
|
64
64
|
|
|
65
65
|
and add pre-release change lists to release announcements.'
|
|
66
|
-
date: '2012-05-
|
|
66
|
+
date: '2012-05-27'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: history
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
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-05-
|
|
12
|
+
date: 2012-05-27 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: detroit
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &16873300 !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: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *16873300
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: qed
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &16871960 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '0'
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *16871960
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: ae
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &16868240 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,7 +43,7 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *16868240
|
|
47
47
|
description: ! 'History is a HISTORY file parser. It can parse common HISTORY file
|
|
48
48
|
layouts
|
|
49
49
|
|