Created
December 8, 2009 19:18
-
-
Save mimshwright/251904 to your computer and use it in GitHub Desktop.
ResourceStringUtil
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mimswright.flex.utils | |
{ | |
import mx.resources.ResourceManager; | |
/** | |
* A utility for string related functions within. | |
* | |
* @author Mims H. Wright | |
*/ | |
public class ResourceStringUtil | |
{ | |
public static function get DEFAULT_BUNDLE():String { return "Strings"; } | |
/** | |
* Replaces tokens in a resource string with values from a generic object. | |
* The tokens in the string will be replaced if a matching named property exists | |
* in the tokenValues object. | |
* | |
* @param key The key name for looking up the string in the resource bundle. | |
* @param tokenValues A generic object containing values for the tokens. | |
* @param bundle The resource bundle to use. Default is Strings. | |
* | |
* @example <listing version="3.0"> | |
* | |
* // If the following is defined in Strings.properties... | |
* userSelectedProductMessage=%userName% viewed %productName% at %date%. | |
* | |
* // you could retrieve that data with values replaced by using... | |
* var message:String = PurchliveStringUtil.getResoureceStringWithTokens( | |
* "userSelectedProductMessage", | |
* { | |
* userName: "mims", | |
* productName: product.name, | |
* date: newDate() | |
* }); | |
*/ | |
static public function getResourceStringWithTokens(key:String, tokenValues:Object, bundle:String = ""):String { | |
if (bundle == "") { bundle = DEFAULT_BUNDLE; } | |
var string:String = ResourceManager.getInstance().getString(bundle, key); | |
// match tokens in the format %token% | |
var tokens:Array = string.match(/%[A-Za-z0-9]+%/g); | |
for each (var token:String in tokens) { | |
var propertyName:String = token.slice(1, token.length-1); | |
if (tokenValues[propertyName] != undefined && tokenValues[propertyName] != null) { | |
var value:String = String(tokenValues[propertyName]); | |
string = string.replace("%" + propertyName + "%", value); | |
} else { | |
//else just make that string blank. | |
string = string.replace("%" + propertyName + "%", ""); | |
} | |
} | |
return string; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment