Class: Worklog::LogEntry
Overview
A single log entry in a DailyLog.
Constant Summary collapse
- PERSON_REGEX =
/(?:\s|^)[~@](\w+)/
Instance Attribute Summary collapse
-
#day ⇒ Object
readonly
Returns the value of attribute day.
-
#epic ⇒ Boolean
Whether the log entry is an epic.
-
#message ⇒ String
The message of the log entry.
-
#project ⇒ String
The project associated with the log entry.
-
#tags ⇒ Array<String>
The tags associated with the log entry.
-
#ticket ⇒ String
The ticket associated with the log entry.
-
#time ⇒ DateTime
The date and time of the log entry.
-
#url ⇒ String
The URL associated with the log entry.
Class Method Summary collapse
-
.from_hash(hash) ⇒ LogEntry
Create a LogEntry from a hash with symbolized keys.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Compare two log entries for equality.
-
#epic? ⇒ Boolean
Returns true if the entry is an epic, false otherwise.
-
#initialize(params = {}) ⇒ LogEntry
constructor
A new instance of LogEntry.
-
#message_string(known_people = nil) ⇒ Object
Returns the message string with formatting without the time.
- #people ⇒ Object
-
#people? ⇒ Boolean
Return true if there are people in the entry.
-
#to_yaml ⇒ Object
Convert the log entry to YAML format.
Methods included from Hashify
Constructor Details
#initialize(params = {}) ⇒ LogEntry
Returns a new instance of LogEntry.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/log_entry.rb', line 34 def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end |
Instance Attribute Details
#day ⇒ Object (readonly)
Returns the value of attribute day.
32 33 34 |
# File 'lib/log_entry.rb', line 32 def day @day end |
#epic ⇒ Boolean
Returns whether the log entry is an epic.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
#message ⇒ String
Returns the message of the log entry.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
#project ⇒ String
Returns the project associated with the log entry.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
#tags ⇒ Array<String>
Returns the tags associated with the log entry.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
#ticket ⇒ String
Returns the ticket associated with the log entry.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
#time ⇒ DateTime
Returns the date and time of the log entry.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
#url ⇒ String
Returns the URL associated with the log entry.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/log_entry.rb', line 25 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) @time = params[:time] # If tags are nil, set to empty array. # This is similar to the CLI default value. @tags = params[:tags] || [] @ticket = params[:ticket] @url = params[:url] || '' @epic = params[:epic] @message = params[:message] @project = params[:project] # Back reference to the day @day = params[:day] || nil end # Returns true if the entry is an epic, false otherwise. # @return [Boolean] def epic? @epic == true end # Returns the message string with formatting without the time. # @param known_people Hash[String, Person] A hash of people with their handles as keys. def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end # Return true if there are people in the entry. # # @return [Boolean] def people? people.size.positive? end # Create a LogEntry from a hash with symbolized keys # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end # Convert the log entry to YAML format. def to_yaml to_hash.to_yaml end # Compare two log entries for equality. # # @param other [LogEntry] The other log entry to compare against. # @return [Boolean] True if the log entries are equal, false otherwise. def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end end |
Class Method Details
.from_hash(hash) ⇒ LogEntry
Create a LogEntry from a hash with symbolized keys
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/log_entry.rb', line 111 def self.from_hash(hash) new( time: hash[:time], tags: hash[:tags], ticket: hash[:ticket], url: hash[:url], epic: hash[:epic], message: hash[:message], project: hash[:project] ) end |
Instance Method Details
#==(other) ⇒ Boolean
Compare two log entries for equality.
132 133 134 135 |
# File 'lib/log_entry.rb', line 132 def ==(other) time == other.time && == other. && ticket == other.ticket && url == other.url && epic == other.epic && == other. end |
#epic? ⇒ Boolean
Returns true if the entry is an epic, false otherwise.
51 52 53 |
# File 'lib/log_entry.rb', line 51 def epic? @epic == true end |
#message_string(known_people = nil) ⇒ Object
Returns the message string with formatting without the time.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/log_entry.rb', line 57 def (known_people = nil) # replace all mentions of people with their names. msg = @message.dup people.each do |person| next unless known_people && known_people[person] msg.gsub!(/[~@]#{person}/) do |match| s = '' s += ' ' if match[0] == ' ' s += "#{Rainbow(known_people[person].name).underline} (~#{person})" if known_people && known_people[person] s end end s = '' s += if epic Rainbow("[EPIC] #{msg}").bg(:white).fg(:black) else msg end s += " [#{Rainbow(@ticket).fg(:blue)}]" if @ticket # Add tags in brackets if defined. s += ' [' + @tags.map { |tag| "#{tag}" }.join(', ') + ']' if @tags && @tags.size > 0 # Add URL in brackets if defined. s += " [#{@url}]" if @url && @url != '' s += " [#{@project}]" if @project && @project != '' s end |
#people ⇒ Object
92 93 94 95 96 97 98 |
# File 'lib/log_entry.rb', line 92 def people # Return people that are mentioned in the entry. People are defined as character sequences # starting with @ or ~. Whitespaces are used to separate people. Punctuation is ignored. # Empty set if no people are mentioned. # @return [Set<String>] @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end |
#people? ⇒ Boolean
Return true if there are people in the entry.
103 104 105 |
# File 'lib/log_entry.rb', line 103 def people? people.size.positive? end |
#to_yaml ⇒ Object
Convert the log entry to YAML format.
124 125 126 |
# File 'lib/log_entry.rb', line 124 def to_yaml to_hash.to_yaml end |