diff --git a/lib/bro.rb b/lib/bro.rb index 99f5fac..35d0dcf 100755 --- a/lib/bro.rb +++ b/lib/bro.rb @@ -269,15 +269,9 @@ def require_relative(path) say <<-QQQ.unindent #{"#{list.length} entr#{s} for #{cmd_display}".status.underline} #{"-- submit your own example with \"bro add #{cmd_display}\"".colored.yellow} - QQQ - sep = "" - (HighLine::SystemExtensions.terminal_size[0] - 5).times { sep += "." } - sep += "\n" - i = 0 - isDefault = true list.each {|data| i += 1 @@ -285,27 +279,55 @@ def require_relative(path) obj["#{i}"] = data['id'] state.write_state(obj) - days = (DateTime.now - DateTime.parse(data['updated_at'])).ceil.to_i - - body = data['msg'] - - body = body.gsub(/^([^#][^\n]*)$/, "\\1".important) - - say sep + "\n" if i > 1 - - say body + "\n\n" + lines = data['msg'].split("\n") + + body = [] + header_found = false + lines.each_with_index {|line, index| + line.strip! + unless line.length == 0 + if /^s?#/.match(line) + # Line starts with a hashtag + if index == 0 + # Consider it a header if it's the first line + line = line.upcase.colored.yellow.sub /#\s?/, "#{i}. " + header_found = true + else + # Otherwise, it's a comment + line = "\t#{line.colored.green}" + end + else + # Line doesn't start with a hashtag + if line.index cmd or line[0] == '$' + # Line contains the search keyword, or starts with a $ + # Consider it a shell command + if line[0] != '$' + # If the line doesn't start with a $, add it + line = "\t$ #{line}" + else + # Otherwise, just indent the line + line = "\t#{line}" + end + # Highlight the search query + line.gsub! cmd, cmd.important + else + # Last resort - assume it's a comment + line = "\t# #{line}".colored.green + end + end + else + # Feed a new line + line = "" + end - upstr = "bro thanks" - upstr += " #{i}" unless isDefault - downstr = "bro ...no" - downstr += " #{i}" unless isDefault + body.push line + } - msg = "\t#{upstr.colored.green}\tto upvote (#{data['up']})\n\t#{downstr.colored.red}\tto downvote (#{data['down']})" - if days > 0 - #msg += "\tlast updated\t#{days} days ago" + if !header_found + body.unshift "#{i}. UNTITLED".colored.yellow end - say msg + "\n\n" - isDefault = false + + puts "\n" + body.join("\n") + "\n" } end