Sha256: a24ae1ae53633eb07baf79808f0d84de375abe2c78b7bf0d44414b2744523024
Contents?: true
Size: 1.48 KB
Versions: 1
Compression:
Stored size: 1.48 KB
Contents
class MalformedLogEntry : Error { read_slot: 'text def initialize: @text } class LogEntry { read_write_slots: ('word, 'number) def LogEntry parse_entry: text { word, number = text split: "|" number = number to_i if: (word && number) then: { LogEntry new do: { word: word number: number } } else: { MalformedLogEntry new: text signal! } } } class LogFile { read_slots: ('filename, 'entries) def initialize: @filename entries: @entries ([]); def parse { @text = File read: @filename with_restarts: { skip_entry: { nil } } do: { @text lines each: |line| { @entries << (LogEntry parse_entry: line) } } } } class LogAnalyzer { read_slots: ('words, 'numbers) def initialize: @logfiles { @words = <[]> @numbers = <[]> } def analyze_all { @entries = @logfiles map: |f| { LogFile new: f . do: { parse } . entries } flatten @entries each: |e| { analyze: e } } def analyze: entry { if: (@words[entry word]) then: |val| { @words[entry word]: (val + 1) } else: { @words[entry word]: 1 } if: (@numbers[entry number]) then: |val| { @numbers[entry number]: (val + 1) } else: { @numbers[entry number]: 1 } } } l = LogAnalyzer new: ["examples/conditions_parsing_log.log"] l analyze_all " words: #{l words to_a sort_by: 'second reverse inspect}" println "numbers: #{l numbers to_a sort_by: 'second reverse inspect}" println
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fancy-0.6.0 | examples/conditions_parsing.fy |