File : marks-scanners-fixed.adb
-- Marks.Scanners.Fixed (body)
--
-- Copyright (c) 2009 Tidorum Ltd.
--
-- This file is part of Find_Marks.
--
-- Find_Marks is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
package body Marks.Scanners.Fixed is
-- overriding
procedure Scan (
Line : in String;
Scanner : in out Scanner_T;
Markable : out Boolean)
is
First : constant Natural := First_Visible (Line);
-- Line(First_Vis) is the first non-whitespace character.
-- Zero if the Line is pure whitespace.
begin
if First = 0 then
-- A blank line.
Markable := False;
else
Markable := not Begins_By (
Prefix => Scanner.Comment_Prefix.all,
Text => Line(First .. Line'Last));
if not Markable
and then Begins_By (
Prefix => Scanner.Mark_Prefix.all,
Text => Line(First .. Line'Last))
then
-- This is a mark line.
Find_Properties_And_Names (
Text => Line(First + Scanner.Mark_Prefix'Length .. Line'Last),
Quit => Scanner.Mark_Suffix.all);
end if;
end if;
end Scan;
-- overriding
procedure Handle_Option (
Option : in String;
Scanner : in out Scanner_T;
Valid : out Boolean;
Chosen : out Boolean)
is
begin
Chosen := Option = Scanner.Option.all;
Valid := Chosen;
end Handle_Option;
-- overriding
function Suffix_Chooses_Me (
Suffix : String;
Scanner : Scanner_T)
return Boolean
is
begin
return To_Lower (Suffix) = Scanner.File_Suffix.all;
end Suffix_Chooses_Me;
end Marks.Scanners.Fixed;