Class: YardJunk::Logger

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/yard-junk/logger.rb,
lib/yard-junk/logger/message.rb,
lib/yard-junk/logger/spellcheck.rb

Defined Under Namespace

Modules: Mixin, Spellcheck Classes: CircularReference, DuplicateParam, InvalidDirectiveFormat, InvalidFileLink, InvalidLink, InvalidTagFormat, MacroAttachError, MacroNameError, Message, MissingParamName, RedundantBraces, SyntaxError, Undocumentable, UnknownDirective, UnknownNamespace, UnknownParam, UnknownTag

Constant Summary collapse

DEFAULT_IGNORE =
%w[Undocumentable].freeze

Instance Method Summary collapse

Instance Method Details

#clearObject



39
40
41
42
43
# File 'lib/yard-junk/logger.rb', line 39

def clear
  messages.clear
  @format = Message::DEFAULT_FORMAT
  @ignore = DEFAULT_IGNORE
end

#format=(fmt) ⇒ Object



45
46
47
# File 'lib/yard-junk/logger.rb', line 45

def format=(fmt)
  @format = fmt.to_s
end

#ignore=(list) ⇒ Object



49
50
51
52
53
54
# File 'lib/yard-junk/logger.rb', line 49

def ignore=(list)
  @ignore = Array(list).map(&:to_s).each do |type|
    Message.valid_type?(type) or
      fail(ArgumentError, "Unrecognized message type to ignore: #{type}")
  end
end

#messagesObject



16
17
18
# File 'lib/yard-junk/logger.rb', line 16

def messages
  @messages ||= []
end

#notify(msg) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/yard-junk/logger.rb', line 29

def notify(msg)
  case msg
  when /Parsing (\w\S+)$/
    # TODO: fragile regexp; cleanup it after everything is parsed.
    @current_parsed_file = Regexp.last_match(1)
  when /^Generating/ # end of parsing of any file
    @current_parsed_file = nil
  end
end

#register(msg, severity = :warn) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/yard-junk/logger.rb', line 20

def register(msg, severity = :warn)
  message =
    Message.registry.filter_map { |t|
      t.try_parse(msg, severity: severity, file: @current_parsed_file)
    }.first || Message.new(message: msg, file: @current_parsed_file)
  messages << message
  puts message.to_s(@format) if output?(message)
end