parse_a_changelog 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 386dfd71c49f61ffdd42469141d5a687d4facdd7e2322303a3dd34a92a3b028b
4
- data.tar.gz: d2799e8f10212c91a043e96360ae7597c996c4c7ae4cfee125bd0a9d21227cd8
3
+ metadata.gz: e045590cfc9f23d38e8f2defb7eef9e0922d03abb4912a8b7b89f241e71e1163
4
+ data.tar.gz: 22fb2fbc1e1a1cdee66307a2808b83ca1469028d9bae4f94e86f260f6169e1f5
5
5
  SHA512:
6
- metadata.gz: c88acee63ea012d034a5e32fa0dea5dd91da06b99a67e69720df013f8e7f565904c02ff754542b6bcb83f8a9558bf4c1ec882221951bb1ff2915f8144a7b7e6c
7
- data.tar.gz: e0272cdd7d0a62cc0f04447641fd7531b66facaaf411475cd35285f549f82ff193a1f826cb541910b636fc9155d60fc7e07c5383b5e2afbd3478f1e78a975da3
6
+ metadata.gz: 4c7f832c309f8ce46d459ba44016213b89ecd5465e6a6395f8b8fe2142deae05da2894a133fead184b0fc9d555eba54cc6251c211c267dfe8e1feff98496aa44
7
+ data.tar.gz: 3dd90696a9fd42f3e05ec0d3c3f2faed89dc0fb50089382cd144f3772288ad6ef3272da5a31ed440ef38fc323582b0a73cd20dce1b0a29b3082bdf1c1259c713
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.1.0] - 2020-11-12
10
+ ### Added
11
+ - Allow for metadata section in version string.
12
+ [cyberark/parse-a-changelog#34](https://github.com/cyberark/parse-a-changelog/issues/34)
13
+
9
14
  ## [1.0.2] - 2020-08-26
10
15
  ### Fixed
11
16
  - Added support for semver pre-releases.
@@ -67,7 +72,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
67
72
  - Open source license and contributing information
68
73
  - Change log and versioning information
69
74
 
70
- [Unreleased]: https://github.com/cyberark/parse-a-changelog/compare/v1.0.2...HEAD
75
+ [Unreleased]: https://github.com/cyberark/parse-a-changelog/compare/v1.1.0...HEAD
76
+ [1.1.0]: https://github.com/cyberark/parse-a-changelog/compare/v1.0.2...v1.1.0
71
77
  [1.0.2]: https://github.com/cyberark/parse-a-changelog/compare/v1.0.1...v1.0.2
72
78
  [1.0.1]: https://github.com/cyberark/parse-a-changelog/compare/v1.0.0...v1.0.1
73
79
  [1.0.0]: https://github.com/cyberark/parse-a-changelog/compare/v0.2.3...v1.0.0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.1.0
@@ -4,20 +4,20 @@ grammar KeepAChangelog
4
4
  end
5
5
 
6
6
  rule changelog_header
7
- '# Changelog' "\n"
8
- 'All notable changes to this project will be documented in this file.' "\n"
9
- "\n"
10
- 'The format is based on [Keep a Changelog](http' 's'? '://keepachangelog.com/en/1.0.0/)' "\n"
11
- 'and this project adheres to [Semantic Versioning](http' 's'? '://semver.org/spec/v2.0.0.html).' "\n"
12
- "\n"
7
+ '# Changelog' new_line
8
+ 'All notable changes to this project will be documented in this file.' new_line
9
+ new_line
10
+ 'The format is based on [Keep a Changelog](http' 's'? '://keepachangelog.com/en/1.0.0/)' new_line
11
+ 'and this project adheres to [Semantic Versioning](http' 's'? '://semver.org/spec/v2.0.0.html).' new_line
12
+ new_line
13
13
  end
14
14
 
15
15
  rule unreleased_section
16
- unreleased_header change_section? ("\n" change_section)*
16
+ unreleased_header change_section? (new_line change_section)*
17
17
  end
18
18
 
19
19
  rule unreleased_header
20
- '## ' '['? 'Unreleased' ']'? "\n"
20
+ '## ' '['? 'Unreleased' ']'? new_line
21
21
  end
22
22
 
23
23
  rule change_section
@@ -25,11 +25,11 @@ grammar KeepAChangelog
25
25
  end
26
26
 
27
27
  rule change_header
28
- '### ' ('Added' / 'Changed' / 'Deprecated' / 'Removed' / 'Fixed' / 'Security') "\n"
28
+ '### ' ('Added' / 'Changed' / 'Deprecated' / 'Removed' / 'Fixed' / 'Security') new_line
29
29
  end
30
30
 
31
31
  rule change
32
- ('- ' / ' ') (!"\n" .)+ "\n"?
32
+ ('- ' / ' ') (!new_line .)+ new_line?
33
33
  end
34
34
 
35
35
  rule releases_section
@@ -37,22 +37,26 @@ grammar KeepAChangelog
37
37
  end
38
38
 
39
39
  rule release
40
- "\n" release_header change_section? ("\n" change_section)*
40
+ new_line release_header change_section? (new_line change_section)*
41
41
  end
42
42
 
43
43
  rule release_header
44
- '## ' '['? release_version ']'? ' - ' release_date "\n"
44
+ '## ' '['? release_version ']'? ' - ' release_date new_line
45
45
  end
46
46
 
47
47
  rule release_version
48
- [0-9]+ '.' [0-9]+ '.' [0-9]+ pre_release_version
48
+ [0-9]+ '.' [0-9]+ '.' [0-9]+ pre_release_version metadata
49
49
  end
50
50
 
51
51
  rule pre_release_version
52
- ( '-' [0-9A-Za-z-]+ pre_release_group* ) / ''
52
+ ( '-' [0-9A-Za-z-]+ dot_separated_group* ) / ''
53
+ end
54
+
55
+ rule metadata
56
+ ( '+' [0-9A-Za-z-]+ dot_separated_group* ) / ''
53
57
  end
54
58
 
55
- rule pre_release_group
59
+ rule dot_separated_group
56
60
  '.' [0-9A-Za-z-]+
57
61
  end
58
62
 
@@ -61,19 +65,19 @@ grammar KeepAChangelog
61
65
  end
62
66
 
63
67
  rule diff_section
64
- "\n" unreleased_diff release_diff* initial_release?
68
+ new_line unreleased_diff release_diff* initial_release?
65
69
  end
66
70
 
67
71
  rule unreleased_diff
68
- '[Unreleased]: ' release_url "\n"
72
+ '[Unreleased]: ' release_url new_line
69
73
  end
70
74
 
71
75
  rule initial_release
72
- '[' release_version ']: ' 'https://github.com/' (!'/' .)+ '/' (!'/' .)+ '/releases/tag/v' release_version "\n"
76
+ '[' release_version ']: ' 'https://github.com/' (!'/' .)+ '/' (!'/' .)+ '/releases/tag/v' release_version new_line
73
77
  end
74
78
 
75
79
  rule release_diff
76
- '[' release_version ']: ' release_url "\n"
80
+ '[' release_version ']: ' release_url new_line
77
81
  end
78
82
 
79
83
  rule release_url
@@ -83,4 +87,8 @@ grammar KeepAChangelog
83
87
  rule diff_version
84
88
  'HEAD' / ( 'v' release_version )
85
89
  end
90
+
91
+ rule new_line
92
+ "\n"
93
+ end
86
94
  end
@@ -10,15 +10,17 @@ module ParseAChangelog
10
10
  parser = KeepAChangelogParser.new
11
11
  result = parser.parse(file)
12
12
 
13
- if !result
14
- raise ParseError.new(failure_message(parser))
13
+ unless result
14
+ raise parser_error(
15
+ parser.failure_line, parser.failure_column, parser.failure_reason
16
+ )
15
17
  end
16
-
18
+
17
19
  result
18
20
  end
19
21
 
20
- def failure_message(parser)
21
- parser.failure_reason.split(' after ')[0]
22
+ def parser_error(line, column, reason)
23
+ ParseError.new("line #{line}, column #{column}: #{reason}")
22
24
  end
23
25
  end
24
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_a_changelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Tuttle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-26 00:00:00.000000000 Z
11
+ date: 2020-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.4.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.9.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.9.0
55
69
  description: Uses a grammar describing the keep-a-changelog format to attempt to parse
56
70
  a given file.
57
71
  email: jtuttle.develops@gmail.com