ST_STRING_ROUTINES

Colin Paul Adams <[email protected]> Sat, 15 Nov 2008 22:06:59 +0000
Newsgroups gmane.comp.lang.eiffel.gobo.devel
Message-ID <[email protected]>
indexing

	description:

		"Support routines used by ST_STRING and ST_STRING_BUILDER"

	library: "Gobo Eiffel String Library"
	copyright: "Copyright (c) 2008, Colin Adams and others"
	license: "MIT License"
	date: "$Date:  $"
	revision: "$Revision:  $"

class ST_STRING_ROUTINES

inherit
	
	ST_IMPORTED_UNICODE_CHARACTER_CLASS_ROUTINES

feature -- Access

	string_sums (a_strings: ARRAY [READABLE_STRING_GENERAL]): INTEGER is
			-- Total number of characters in `a_strings'
		require
			a_strings_not_void: a_strings /= Void
			all_strings_not_void: not a_strings.has (Void)
		local
			i, l_count: INTEGER
		do
			from
				i := 1
			until
				i > a_strings.count
			loop
				l_count := l_count + a_strings.item (i).count
				i := i + 1
			end
			Result := l_count
		ensure
			string_sums_non_negative: Result >= 0
		end
	
feature -- Status report
	
	is_all_whitespace (chars: STRING): BOOLEAN is
			-- Does `chars' consist only of XML white-space characters?
		local
			counter: INTEGER
		do
			from
				counter := 1
				Result := True
			variant
				chars.count + 1 - counter
			until
				Result = False or else counter > chars.count
			loop
				if not is_xml_space (chars.item_code (counter)) then
					Result := False
				end
				counter := counter + 1
			end
		end

	is_alphanumeric (a_character_code: INTEGER): BOOLEAN is
			-- Does `a_character_code' represent an alphanumeric character?
		require
			positive_character_code: a_character_code > 0
		do
			Result := unicode_character_class.unicode.valid_code (a_character_code)
				and then (unicode_character_class.is_letter (a_character_code)
							 or else unicode_character_class.is_number (a_character_code))
		end

	is_xml_space (a_code: INTEGER): BOOLEAN is
			-- Does `a_code' represent an XML space?
		do
			Result := a_code = 32 or a_code = 9 or a_code = 10 or a_code = 13
		end
	
end

-- 
Colin Adams
Preston Lancashire

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/