From 73326c64a5e720f7d31b1e52ef9fda341895e800 Mon Sep 17 00:00:00 2001 From: Seba Gamboa Date: Mon, 28 Sep 2015 18:29:41 -0300 Subject: Handle #define directives --- lib/yard/mruby/parser/c/header_parser.rb | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'lib/yard/mruby/parser/c/header_parser.rb') diff --git a/lib/yard/mruby/parser/c/header_parser.rb b/lib/yard/mruby/parser/c/header_parser.rb index 598fe21..2b2dea7 100644 --- a/lib/yard/mruby/parser/c/header_parser.rb +++ b/lib/yard/mruby/parser/c/header_parser.rb @@ -1,5 +1,46 @@ module YARD::MRuby::Parser::C class HeaderParser < Parser + + # Consumes a directive and generates a DirectiveStatement + def consume_directive + super if @in_body_statements + + @newline = false + start = @index + line = @line + statement = DirectiveStatement.new(nil, @file, line) + @statements << statement + attach_comment(statement) + + multiline = false + advance_loop do + chr = char + case chr + when '\\'; multiline=true; advance + when /\s/; consume_whitespace + else advance + end + + if @newline + if multiline + multiline = false + else + break + end + end + end + + decl = @content[start...@index] + + statement.declaration = decl + end + + def consume_body_statements + @in_body_statements = true + result = super + @in_body_statements = false + result + end end # -- cgit v1.2.3