Navigation

About ICU
· ICU Home
· Download ICU
Demos & Tools
· ICU4C Demos
· ICU4J Demos
· Data Customizer
Documents
· User Guide
· ICU FAQ
· ICU4J FAQ
· Docs & Papers
API References
Official Release
· ICU4C (4.8.1)
· ICU4J (4.8.1.1)
Latest Milestone
· ICU4C (49M2)
· ICU4J (49M2)
Data & Charts
· Conversion Tables
· Feature Comparisons
· Performance & Size
Development
· Project Information
· Design Docs
· Source Repository
· Processes
· Members-Only Area
Bugs & Contacts
· Bugs
· Feature Requests
· Mailing Lists

· Feedback
Sitemap
Design Docs‎ > ‎Cleanup‎ > ‎

MessageFormat Redesign

As a part of the cleanup of MessageFormat, here's what we have planned.
  1. Have two interfaces that UFormat inherits from: FormatOnly and ParseOnly (if anyone has better names, let me know!)
  2. Replace API parameter types with these where we can (where it is an acceptable broadening)
  3. Create a MessageFormatOnly that only does formatting, thus only implements FormatOnly
    1. It only does placeholder substitution for strings, and parse of strings.
    2. It has a registry of FormatOnlys that it uses to format based on placeholder-keys / types, but it is unpopulated.
    3. MessageFormat inherits from it, and populates the registry.
Note: longer term, I think we might want to have a more generalized interface: an object that can match at a given point in a string, and (logically) return back a set of results and how far through the string each represented, plus flagged partial-unique results.

That is, with the contents {Jan => M1, January => M1, June => M6, July => M7}, we'd have the following results (pos, string => output-matches)

0, "JanuaryX" => <M1,3>, <M1,7>
0, "JanX" => <M1, 3>
0, "JaX" => <M1,2,partial>
0, "JX" => none
0, "Ju" => none
0, "Jul" => <M7,2,partial>
0, "July" => <M7,2>