Changeset 15374
- Timestamp:
- 07/07/08 17:20:58 (5 years ago)
- Location:
- lang/io/MessageResource
- Files:
-
- 2 modified
-
io/MessageResource.io (modified) (3 diffs)
-
tests/MessageResourceTest.io (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/io/MessageResource/io/MessageResource.io
r15164 r15374 1 1 MessageResource := Object clone do ( 2 lang ::= nil 3 locale ::= nil 4 encoding ::= "UTF8" 5 2 6 init := method( 3 7 replace := Map clone 4 8 replace atPut("-", "") 5 9 6 self lang := System getEnvironmentVariable("LANG")10 self setLang(System getEnvironmentVariable("LANG")) 7 11 split := lang splitNoEmpties(".") 8 self locale := split at(0) 9 self encoding := split at(1) 10 self encodeName := self encoding replaceMap(replace) 12 13 self setLocale(split at(0)) 14 self setEncoding(split at(1) uppercase) 15 self encodeName := encoding replaceMap(replace) 11 16 self encodingMessage := ("as" .. encoding) asMessage 12 17 ) 18 __getLocaleMessage := method(locale, id, 19 resourceLocale := self getSlot(locale) 20 if(resourceLocale isNil) then ( 21 resourceLocale = self getSlot("C") 22 ) 23 if(resourceLocale isNil) then ( 24 Exception raise("locale not found locale: " .. locale) 25 ) 26 message := resourceLocale getSlot(id) 27 if(message isNil) then ( 28 Exception raise("message not found id: " .. id) 29 ) 30 message 31 ) 13 32 getMessage := method(messageId, params, 14 message := self getSlot(locale) getSlot(messageId)15 message interpolateInPlace(params)33 message := __getLocaleMessage(locale, messageId) 34 message asMutable doMessage(encodingMessage) interpolateInPlace(params) 16 35 ) 17 36 curlyBrackets := method( … … 25 44 forward := method( 26 45 name := call message name 27 message := self getSlot(locale) getSlot(name)46 message := __getLocaleMessage(locale, name) 28 47 message container := self 29 48 message encodingMessage := self encodingMessage … … 34 53 message 35 54 ) 55 56 UnitTest := Object clone do ( 57 on := method( 58 target := call sender 59 target messageResource := MessageResource clone 60 target getArgs := method(a, b, msg, 61 messageResource := self messageResource 62 args := list() 63 if(a isNil not) then ( 64 if(a encoding != messageResource encoding) then ( 65 a = a doMessage(messageResource encodingMessage) 66 ) 67 ) 68 if(b isNil not) then( 69 if(b encoding != messageResource encoding) then ( 70 b = b doMessage(messageResource encodingMessage) 71 ) 72 ) 73 args append(a, b, msg) 74 args 75 ) 76 target __assert := method(name, args, UnitTest performWithArgList(name, args)) 77 target assertEquals = method(a, b, msg, 78 __assert(call message name, getArgs(a, b, msg)) 79 ) 80 target assertNotEquals = method(a, b, msg, 81 __assert(call message name, getArgs(a, b, msg)) 82 ) 83 ) 84 ) 36 85 ) -
lang/io/MessageResource/tests/MessageResourceTest.io
r15164 r15374 1 1 MessageResourceTest := UnitTest clone do( 2 2 type := "MessageResourceTest" 3 init := method(4 )5 3 setUp := method( 6 4 ) 7 5 tearDown := method( 8 6 ) 7 testMessage := method( 8 serverStart := HogeMessage SERVER_START {name := "hoge"} 9 assertEquals(serverStart, "サーバ hoge が始動しました") 10 assertNotEquals(serverStart, "サーバ #{name} が始動しました") 11 assertNotEquals(serverStart, "サーバ aaaa が始動しました") 12 ) 9 13 testGetMessage := method( 10 serverStart := HogeMessage SERVER_START {name := "hoge"} 11 assertEquals(serverStart, "サーバ hoge が始動しました" asUTF8) 14 params := Object clone do( 15 name := "foo" 16 ) 17 serverStop := HogeMessage getMessage("SERVER_STOP", params) 18 assertEquals(serverStop, "サーバ foo が停止しました") 19 ) 20 testLocaleMessage := method( 21 serverStart := FooMessage SERVER_START {name := "hoge"} 22 assertEquals(serverStart, "server hoge has started") 23 assertNotEquals(serverStart, "サーバ hoge が始動しました") 24 ) 25 testMessageNotFound := method( 26 assertRaisesException(HogeMessage hello) 27 assertRaisesException(HogeMessage getMessage("world", nil)) 28 ) 29 testNilMessageParams := method( 30 assertRaisesException(HogeMessage SERVER_START {nil}) 31 assertRaisesException(HogeMessage getMessage(SERVER_START, nil)) 32 e := try ( 33 assertNotNil(HogeMessage NONE_MSG) 34 assertEquals(HogeMessage NONE_MSG, "ほげ") 35 ); e catch(Exception, 36 fail("パラメータが無いので、メッセージのままでOK") 37 ) 38 e1 := try ( 39 assertNotNil(HogeMessage getMessage("NONE_MSG")) 40 assertEquals(HogeMessage getMessage("NONE_MSG"), "ほげ") 41 ); e1 catch(Exception, 42 fail("パラメータが無いので、メッセージのままでOK") 43 ) 44 ) 45 testUnknownLocale := method( 46 serverStart := BarMessage SERVER_START {name := "hoge"} 47 assertEquals(serverStart, "server hoge has started") 48 assertNotEquals(serverStart, "サーバ hoge が始動しました") 12 49 ) 13 50 14 HogeMessage := MessageResource clone do (51 HogeMessage := MessageResource clone do ( 15 52 ja_JP := { 16 53 SERVER_START := "サーバ #{name} が始動しました", 17 SERVER_STOP := "サーバ #{name} が停止しました" 54 SERVER_STOP := "サーバ #{name} が停止しました", 55 NONE_MSG := "ほげ" 18 56 } 57 ) 58 FooMessage := MessageResource clone do ( 59 locale := "C" 19 60 C := { 20 61 SERVER_START := "server #{name} has started", … … 22 63 } 23 64 ) 65 BarMessage := FooMessage clone do ( 66 locale := "bar" 67 ) 68 MessageResource UnitTest on 24 69 )
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)