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.
-
#key ⇒ String
The unique key of the log entry.
-
#message ⇒ String
The message of the log entry.
-
#project ⇒ String
The project associated with the log entry.
-
#source ⇒ String
The source of the log entry, e.g., ‘github’, ‘manual’, etc.
-
#tags ⇒ Array<String>
The tags associated with the log entry.
-
#ticket ⇒ String
The ticket associated with the log entry.
-
#time ⇒ Time
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 This is an alias for the constructor and here for consistency with other classes.
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, formatter = nil) ⇒ String
Returns the message string with formatting without the time.
-
#people ⇒ Set<String>
Return people that are mentioned in the entry.
-
#people? ⇒ Boolean
Return true if there are people in the entry.
-
#to_yaml ⇒ String
Convert the log entry to YAML format.
Methods included from Hashify
Constructor Details
#initialize(params = {}) ⇒ LogEntry
Returns a new instance of LogEntry.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/log_entry.rb', line 39 def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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.
37 38 39 |
# File 'lib/log_entry.rb', line 37 def day @day end |
#epic ⇒ Boolean
Returns whether the log entry is an epic.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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 |
#key ⇒ String
Returns the unique key of the log entry. The key is generated based on the time and message.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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 |
#source ⇒ String
Returns the source of the log entry, e.g., ‘github’, ‘manual’, etc.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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 ⇒ Time
Returns the date and time of the log entry.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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.
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 |
# File 'lib/log_entry.rb', line 30 class LogEntry PERSON_REGEX = /(?:\s|^)[~@](\w+)/ include Hashify attr_accessor :key, :source, :time, :tags, :ticket, :url, :epic, :message, :project attr_reader :day def initialize(params = {}) # key can be nil. This is needed for backwards compatibility with older log entries. @key = params[:key] @source = params[:source] || 'manual' @time = params[:time].is_a?(String) ? Time.parse(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. # @param formatter [BaseFormatter] the formatter to use for formatting the message. If nil, a default # ConsoleFormatter is used. # @return [String] the formatted message string def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end # 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>] def people @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 # This is an alias for the constructor and here for consistency with other classes. # # @param hash [Hash] the hash to convert # @return [LogEntry] the created LogEntry object def self.from_hash(hash) new(**hash) end # Convert the log entry to YAML format. # @return [String] the YAML representation of the log entry. 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 This is an alias for the constructor and here for consistency with other classes.
93 94 95 |
# File 'lib/log_entry.rb', line 93 def self.from_hash(hash) new(**hash) end |
Instance Method Details
#==(other) ⇒ Boolean
Compare two log entries for equality.
107 108 109 110 |
# File 'lib/log_entry.rb', line 107 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.
59 60 61 |
# File 'lib/log_entry.rb', line 59 def epic? @epic == true end |
#message_string(known_people = nil, formatter = nil) ⇒ String
Returns the message string with formatting without the time. ConsoleFormatter is used.
68 69 70 71 |
# File 'lib/log_entry.rb', line 68 def (known_people = nil, formatter = nil) formatter ||= LogEntryFormatters::ConsoleFormatter.new(known_people) formatter.format(self) end |
#people ⇒ Set<String>
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.
77 78 79 |
# File 'lib/log_entry.rb', line 77 def people @message.scan(PERSON_REGEX).flatten.uniq.sort.to_set end |
#people? ⇒ Boolean
Return true if there are people in the entry.
84 85 86 |
# File 'lib/log_entry.rb', line 84 def people? people.size.positive? end |
#to_yaml ⇒ String
Convert the log entry to YAML format.
99 100 101 |
# File 'lib/log_entry.rb', line 99 def to_yaml to_hash.to_yaml end |