Class: NTYChangeLog::Parser
- Inherits:
-
Object
- Object
- NTYChangeLog::Parser
- Defined in:
- lib/nty_change_log/parser.rb
Instance Method Summary collapse
- #parse(text) ⇒ Object
- #parse_change_groups(text) ⇒ Object
- #parse_changes(text) ⇒ Object
- #parse_versions(text) ⇒ Object
Instance Method Details
#parse(text) ⇒ Object
3 4 5 6 |
# File 'lib/nty_change_log/parser.rb', line 3 def parse(text) versions = parse_versions(text.strip) ChangeLog.new(versions) end |
#parse_change_groups(text) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/nty_change_log/parser.rb', line 16 def parse_change_groups(text) result = text.split(/^### (.+)$/)[1..-1].map(&:strip) Hash[*result].map do |name, change_texts| changes = parse_changes(change_texts) ChangeGroup.new(name, changes) end end |
#parse_changes(text) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/nty_change_log/parser.rb', line 24 def parse_changes(text) rows = text.split("\n").map(&:strip) rows.map do |row| match = row.match(/\*\s+(?<description>\S+)(\s+\[#(?<number>\d+)\]\((?<url>.+)\))?$/) if match[:number] == nil Change.new(match[:description], nil) else issue = Issue.new(match[:number].to_i, match[:url]) Change.new(match[:description], issue) end end end |
#parse_versions(text) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/nty_change_log/parser.rb', line 8 def parse_versions(text) result = text.split(/^## (\w+\.\w+\.\w+)$/)[1..-1].map(&:strip) Hash[*result].map do |number, change_group_texts| change_groups = parse_change_groups(change_group_texts) Version.new(number, change_groups) end end |