INDEX CLUSTER FEATURES SHORT FRAMES NO FRAMES

indexing

description: "Formatter for integral numbers"
title: "EiffelBase: library of reusable components for Eiffel. ", "Based on EiffelBase library for ISE Eiffel, ", "used with permission. "
project: "EiffelBase Library"
copyright: "(c) 1986-1997 Interactive Software Engineering Inc. ", "Modifications and extensions: ", "(c) 1997-2001 Object Tools ", "All rights reserved. Duplication and distribution prohibited", "May be used only with Visual Eiffel under terms of user ", "license "
key: format_integer
cluster: eiffelbase
class FORMAT_INTEGER
inherit

ISE_GENERAL
end
creation

make
feature -- Initialization

make (w: INTEGER)
require
reasonable_field: w >= 1
ensure
blank_fill: fill_character = ' '
show_sign_negative: show_sign_negative
no_separator: no_separator
width_set: width = w
right_justified: right_justified
leading_sign: leading_sign
feature -- Access

fill_character: CHARACTER

width: INTEGER

separator: CHARACTER

justification: INTEGER

trailing_sign: BOOLEAN

sign_format: INTEGER

sign_string: STRING

bracketted_negative: BOOLEAN
feature -- Status report

centered: BOOLEAN
-- Are numbers to be formatted centered?
ensure
Result = (justification = center_justification)

left_justified: BOOLEAN
-- Are numbers to be formatted with spaces on the right?
ensure
Result = (justification = left_justification)

right_justified: BOOLEAN
-- Are numbers to be formatted with spaces on the left?
ensure
Result = (justification = right_justification)

not_justified: BOOLEAN
-- Are numbers to be formatted in smallest string possible
ensure
Result = (justification = no_justification)

show_sign_negative: BOOLEAN
-- Are numbers to show sign only when negative?
ensure
Result = (sign_format = sign_negative_value)

show_sign_positive: BOOLEAN
-- Are numbers to show sign only when positive?
ensure
Result = (sign_format = sign_positive_value)

show_sign: BOOLEAN
-- Are numbers to show sign whether positive or negative?
ensure
Result = (sign_format = show_sign_value)

ignore_sign: BOOLEAN
-- Ignore the sign of a number?
ensure
Result = (sign_format = ignore_sign_value)

no_separator: BOOLEAN
-- Is there a separator?
ensure
Result = (separator = '%U')

leading_sign: BOOLEAN
-- Is the sign leading?
ensure
Result = not trailing_sign
feature -- Status setting

blank_fill
-- Fill numbers with blanks.
ensure
fill_character = ' '

zero_fill
-- Fill numbers with zeros.
ensure
fill_character = '0'

dollar_fill
-- Fill numbers with dollars.
ensure
fill_character = '$'

asterisk_fill
-- Fill numbers with asterisks.
ensure
fill_character = '*'

set_fill (c: CHARACTER)
-- Fill numbers with `c'
ensure
fill_character = c

set_width (w: INTEGER)
-- Set width to `w'
require
wide_enough: w >= 1
ensure
width = w

underscore_separate
-- Set separator to underscore.
ensure
separator = '_'

comma_separate
-- Set separator to comma.
ensure
separator = ','

dot_separate
-- Set separator to period.
ensure
separator = '.'

remove_separator
-- Remove the separator.
ensure
separator = '%U'

set_separator (c: CHARACTER)
-- Set the separator to `c'
ensure
separator = c

left_justify
--Put padding on right
ensure
left_justified

center_justify
-- Put padding on right and left
ensure
centered

right_justify
-- Put padding on left
ensure
right_justified

no_justify
-- Always return the smallest string possible
ensure
not_justified

sign_leading
-- Set the sign to lead
ensure
leading_sign

sign_trailing
-- Set the sign to trail
ensure
trailing_sign

sign_positive_only
-- Show sign for positive numbers only.
ensure
show_sign_positive

sign_negative_only
-- Show sign for negative numbers only.
ensure
show_sign_negative

sign_show
-- Show sign for all numbers.
ensure
show_sign

sign_ignore
-- Do not show sign.
ensure
ignore_sign

sign_normal
-- Set sign for - and +.
ensure
sign_string.is_equal (- +)

sign_cr_dr
-- Set sign for CR/DR
ensure
sign_string.is_equal (CR DR)

sign_dr_cr
-- Set sign for DR/CR
ensure
sign_string.is_equal (DR CR)

sign_floating_dollar
-- Set sign for floating dollar.
ensure
sign_string.is_equal ($$$)

sign_floating_dollar_signed
-- Set sign for floating dollar include sign.
ensure
sign_string.is_equal (-$ $+$)

set_sign (s: STRING)
-- Set sign values for positive, zero, negative
-- All values must be the same length.
-- Stored as negative, zero, positive.
require
s /= void
s.count >= 3
s.count \\ 3 = 0
ensure
sign_string.is_equal (s)

bracket_negative
-- Bracket negative numbers.
ensure
bracketted_negative

unbracket_negative
-- Do not bracket negative numbers.
ensure
not bracketted_negative
feature -- Conversion

formatted (i: INTEGER): STRING
-- Format the integer.
ensure
exists: Result /= void
correct_length: not_justified or Result.count >= width
invariant

sign_string_constraint: sign_string /= void
wide_enough: width >= 1
no_justification <= justification and justification <= right_justification
end -- class FORMAT_INTEGER

INDEX CLUSTER FEATURES SHORT FRAMES NO FRAMES