diff options
author | Anika Henke <anika@selfthinker.org> | 2012-06-29 17:51:09 +0100 |
---|---|---|
committer | Anika Henke <anika@selfthinker.org> | 2012-06-29 17:51:09 +0100 |
commit | 0c06a181819249c6a4a2a6c60e13f739df1f2253 (patch) | |
tree | 859377c572d0acbfc520b02304ef515bf3aebbe0 /_test/tests | |
parent | ef7e36e4fd2a168977754f0aac1d855fb651f104 (diff) | |
parent | 5d0aaf958325f500ce69cfb79e69eb0d8f83fdeb (diff) | |
download | rpg-0c06a181819249c6a4a2a6c60e13f739df1f2253.tar.gz rpg-0c06a181819249c6a4a2a6c60e13f739df1f2253.tar.bz2 |
Merge branch 'master' of github.com:splitbrain/dokuwiki into frontend_improvements
Conflicts:
lib/tpl/dokuwiki/css/basic.css
Diffstat (limited to '_test/tests')
105 files changed, 31651 insertions, 0 deletions
diff --git a/_test/tests/inc/auth_aclcheck.test.php b/_test/tests/inc/auth_aclcheck.test.php new file mode 100644 index 000000000..ea48ec6a5 --- /dev/null +++ b/_test/tests/inc/auth_aclcheck.test.php @@ -0,0 +1,240 @@ +<?php + +class auth_acl_test extends DokuWikiTest { + + var $oldConf; + var $oldAuthAcl; + + function setup() { + global $conf; + global $AUTH_ACL; + global $auth; + $this->oldConf = $conf; + $this->oldAuthAcl = $AUTH_ACL; + $auth = new auth_basic(); + } + + function teardown() { + global $conf; + global $AUTH_ACL; + $conf = $this->oldConf; + $AUTH_ACL = $this->oldAuthAcl; + + } + + function test_restricted(){ + global $conf; + global $AUTH_ACL; + $conf['superuser'] = 'john'; + $conf['useacl'] = 1; + + $AUTH_ACL = array( + '* @ALL 0', + '* @user 8', + ); + + // anonymous user + $this->assertEquals(auth_aclcheck('page', '',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); + + // user with no matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); + + // user with matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); + + // super user + $this->assertEquals(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); + } + + function test_restricted_ropage(){ + global $conf; + global $AUTH_ACL; + $conf['superuser'] = 'john'; + $conf['useacl'] = 1; + + $AUTH_ACL = array( + '* @ALL 0', + '* @user 8', + 'namespace:page @user 1', + ); + + // anonymous user + $this->assertEquals(auth_aclcheck('page', '',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); + + // user with no matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); + + // user with matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_READ); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); + + // super user + $this->assertEquals(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); + } + + function test_aclexample(){ + global $conf; + global $AUTH_ACL; + $conf['superuser'] = 'john'; + $conf['useacl'] = 1; + + $AUTH_ACL = array( + '* @ALL 4', + '* bigboss 16', + 'start @ALL 1', + 'marketing:* @marketing 8', + 'devel:* @ALL 0', + 'devel:* @devel 8', + 'devel:* bigboss 16', + 'devel:funstuff bigboss 0', + 'devel:* @marketing 1', + 'devel:marketing @marketing 2', + ); + + + $this->assertEquals(auth_aclcheck('page', '' ,array()) , AUTH_CREATE); + $this->assertEquals(auth_aclcheck('page', 'bigboss' ,array('foo')) , AUTH_DELETE); + $this->assertEquals(auth_aclcheck('page', 'jill' ,array('marketing')) , AUTH_CREATE); + $this->assertEquals(auth_aclcheck('page', 'jane' ,array('devel')) , AUTH_CREATE); + + $this->assertEquals(auth_aclcheck('start', '' ,array()) , AUTH_READ); + $this->assertEquals(auth_aclcheck('start', 'bigboss' ,array('foo')) , AUTH_READ); + $this->assertEquals(auth_aclcheck('start', 'jill' ,array('marketing')) , AUTH_READ); + $this->assertEquals(auth_aclcheck('start', 'jane' ,array('devel')) , AUTH_READ); + + $this->assertEquals(auth_aclcheck('marketing:page', '' ,array()) , AUTH_CREATE); + $this->assertEquals(auth_aclcheck('marketing:page', 'bigboss' ,array('foo')) , AUTH_DELETE); + $this->assertEquals(auth_aclcheck('marketing:page', 'jill' ,array('marketing')) , AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('marketing:page', 'jane' ,array('devel')) , AUTH_CREATE); + + + $this->assertEquals(auth_aclcheck('devel:page', '' ,array()) , AUTH_NONE); + $this->assertEquals(auth_aclcheck('devel:page', 'bigboss' ,array('foo')) , AUTH_DELETE); + $this->assertEquals(auth_aclcheck('devel:page', 'jill' ,array('marketing')) , AUTH_READ); + $this->assertEquals(auth_aclcheck('devel:page', 'jane' ,array('devel')) , AUTH_UPLOAD); + + $this->assertEquals(auth_aclcheck('devel:funstuff', '' ,array()) , AUTH_NONE); + $this->assertEquals(auth_aclcheck('devel:funstuff', 'bigboss' ,array('foo')) , AUTH_NONE); + $this->assertEquals(auth_aclcheck('devel:funstuff', 'jill' ,array('marketing')) , AUTH_READ); + $this->assertEquals(auth_aclcheck('devel:funstuff', 'jane' ,array('devel')) , AUTH_UPLOAD); + + $this->assertEquals(auth_aclcheck('devel:marketing', '' ,array()) , AUTH_NONE); + $this->assertEquals(auth_aclcheck('devel:marketing', 'bigboss' ,array('foo')) , AUTH_DELETE); + $this->assertEquals(auth_aclcheck('devel:marketing', 'jill' ,array('marketing')) , AUTH_EDIT); + $this->assertEquals(auth_aclcheck('devel:marketing', 'jane' ,array('devel')) , AUTH_UPLOAD); + + } + + function test_multiadmin_restricted(){ + global $conf; + global $AUTH_ACL; + $conf['superuser'] = 'john,@admin,doe,@roots'; + $conf['useacl'] = 1; + + $AUTH_ACL = array( + '* @ALL 0', + '* @user 8', + ); + + // anonymous user + $this->assertEquals(auth_aclcheck('page', '',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); + + // user with no matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); + + // user with matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); + + // super user john + $this->assertEquals(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); + + // super user doe + $this->assertEquals(auth_aclcheck('page', 'doe',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','doe',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'doe',array('foo')), AUTH_ADMIN); + + // user with matching admin group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','admin')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','admin')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','admin')), AUTH_ADMIN); + + // user with matching another admin group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','roots')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','roots')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','roots')), AUTH_ADMIN); + } + + function test_multiadmin_restricted_ropage(){ + global $conf; + global $AUTH_ACL; + $conf['superuser'] = 'john,@admin,doe,@roots'; + $conf['useacl'] = 1; + + $AUTH_ACL = array( + '* @ALL 0', + '* @user 8', + 'namespace:page @user 1', + ); + + // anonymous user + $this->assertEquals(auth_aclcheck('page', '',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','',array()), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); + + // user with no matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); + + // user with matching group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_READ); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); + + // super user john + $this->assertEquals(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); + + // super user doe + $this->assertEquals(auth_aclcheck('page', 'doe',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','doe',array('foo')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'doe',array('foo')), AUTH_ADMIN); + + // user with matching admin group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','admin')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','admin')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','admin')), AUTH_ADMIN); + + // user with matching another admin group + $this->assertEquals(auth_aclcheck('page', 'jill',array('foo','roots')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:page','jill',array('foo','roots')), AUTH_ADMIN); + $this->assertEquals(auth_aclcheck('namespace:*', 'jill',array('foo','roots')), AUTH_ADMIN); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/auth_admincheck.test.php b/_test/tests/inc/auth_admincheck.test.php new file mode 100644 index 000000000..d88399cbe --- /dev/null +++ b/_test/tests/inc/auth_admincheck.test.php @@ -0,0 +1,126 @@ +<?php + +class auth_admin_test_AuthInSensitive extends auth_basic { + function isCaseSensitive(){ + return false; + } +} + +class auth_admin_test extends DokuWikiTest { + + private $oldauth; + + function setup() { + global $auth; + $this->oldauth = $auth; + } + + function setSensitive() { + global $auth; + $auth = new auth_basic(); + } + + function setInSensitive() { + global $auth; + $auth = new auth_admin_test_AuthInSensitive(); + } + + function teardown() { + global $auth; + global $conf; + global $AUTH_ACL; + unset($conf); + unset($AUTH_ACL); + $auth = $this->oldauth; + } + + function test_ismanager_insensitive(){ + $this->setInSensitive(); + global $conf; + $conf['superuser'] = 'john,@admin,@Mötly Görls, Dörte'; + $conf['manager'] = 'john,@managers,doe, @Mötly Böys, Dänny'; + + // anonymous user + $this->assertEquals(auth_ismanager('jill', null,false), false); + + // admin or manager users + $this->assertEquals(auth_ismanager('john', null,false), true); + $this->assertEquals(auth_ismanager('doe', null,false), true); + + $this->assertEquals(auth_ismanager('dörte', null,false), true); + $this->assertEquals(auth_ismanager('dänny', null,false), true); + + // admin or manager groups + $this->assertEquals(auth_ismanager('jill', array('admin'),false), true); + $this->assertEquals(auth_ismanager('jill', array('managers'),false), true); + + $this->assertEquals(auth_ismanager('jill', array('mötly görls'),false), true); + $this->assertEquals(auth_ismanager('jill', array('mötly böys'),false), true); + } + + function test_isadmin_insensitive(){ + $this->setInSensitive(); + global $conf; + $conf['superuser'] = 'john,@admin,doe,@roots'; + + // anonymous user + $this->assertEquals(auth_ismanager('jill', null,true), false); + + // admin user + $this->assertEquals(auth_ismanager('john', null,true), true); + $this->assertEquals(auth_ismanager('doe', null,true), true); + + // admin groups + $this->assertEquals(auth_ismanager('jill', array('admin'),true), true); + $this->assertEquals(auth_ismanager('jill', array('roots'),true), true); + $this->assertEquals(auth_ismanager('john', array('admin'),true), true); + $this->assertEquals(auth_ismanager('doe', array('admin'),true), true); + } + + function test_ismanager_sensitive(){ + $this->setSensitive(); + global $conf; + $conf['superuser'] = 'john,@admin,@Mötly Görls, Dörte'; + $conf['manager'] = 'john,@managers,doe, @Mötly Böys, Dänny'; + + // anonymous user + $this->assertEquals(auth_ismanager('jill', null,false), false); + + // admin or manager users + $this->assertEquals(auth_ismanager('john', null,false), true); + $this->assertEquals(auth_ismanager('doe', null,false), true); + + $this->assertEquals(auth_ismanager('dörte', null,false), false); + $this->assertEquals(auth_ismanager('dänny', null,false), false); + + // admin or manager groups + $this->assertEquals(auth_ismanager('jill', array('admin'),false), true); + $this->assertEquals(auth_ismanager('jill', array('managers'),false), true); + + $this->assertEquals(auth_ismanager('jill', array('mötly görls'),false), false); + $this->assertEquals(auth_ismanager('jill', array('mötly böys'),false), false); + } + + function test_isadmin_sensitive(){ + $this->setSensitive(); + global $conf; + $conf['superuser'] = 'john,@admin,doe,@roots'; + + // anonymous user + $this->assertEquals(auth_ismanager('jill', null,true), false); + + // admin user + $this->assertEquals(auth_ismanager('john', null,true), true); + $this->assertEquals(auth_ismanager('Doe', null,true), false); + + // admin groups + $this->assertEquals(auth_ismanager('jill', array('admin'),true), true); + $this->assertEquals(auth_ismanager('jill', array('roots'),true), true); + $this->assertEquals(auth_ismanager('john', array('admin'),true), true); + $this->assertEquals(auth_ismanager('doe', array('admin'),true), true); + $this->assertEquals(auth_ismanager('Doe', array('admin'),true), true); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/auth_nameencode.test.php b/_test/tests/inc/auth_nameencode.test.php new file mode 100644 index 000000000..21db304e0 --- /dev/null +++ b/_test/tests/inc/auth_nameencode.test.php @@ -0,0 +1,47 @@ +<?php + +class auth_nameencode_test extends DokuWikiTest { + + function teardown() { + global $cache_authname; + $cache_authname = array(); + } + + function test_simple(){ + $in = 'hey$you'; + $out = 'hey%24you'; + $this->assertEquals(auth_nameencode($in),$out); + } + + function test_quote(){ + $in = 'hey"you'; + $out = 'hey%22you'; + $this->assertEquals(auth_nameencode($in),$out); + } + + function test_complex(){ + $in = 'hey $ you !$%! foo '; + $out = 'hey%20%24%20you%20%21%24%25%21%20foo%20'; + $this->assertEquals(auth_nameencode($in),$out); + } + + function test_complexutf8(){ + $in = 'häü $ yü !$%! foo '; + $out = 'häü%20%24%20yü%20%21%24%25%21%20foo%20'; + $this->assertEquals(auth_nameencode($in),$out); + } + + function test_groupskipon(){ + $in = '@hey$you'; + $out = '@hey%24you'; + $this->assertEquals(auth_nameencode($in,true),$out); + } + + function test_groupskipoff(){ + $in = '@hey$you'; + $out = '%40hey%24you'; + $this->assertEquals(auth_nameencode($in),$out); + } +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/auth_password.test.php b/_test/tests/inc/auth_password.test.php new file mode 100644 index 000000000..426353291 --- /dev/null +++ b/_test/tests/inc/auth_password.test.php @@ -0,0 +1,80 @@ +<?php + +class auth_password_test extends PHPUnit_Framework_TestCase { + + // hashes for the password foo$method, using abcdefgh as salt + var $passes = array( + 'smd5' => '$1$abcdefgh$SYbjm2AEvSoHG7Xapi8so.', + 'apr1' => '$apr1$abcdefgh$C/GzYTF4kOVByYLEoD5X4.', + 'md5' => '8fa22d62408e5351553acdd91c6b7003', + 'sha1' => 'b456d3b0efd105d613744ffd549514ecafcfc7e1', + 'ssha' => '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk', + 'lsmd5' => '{SMD5}HGbkPrkWgy9KgcRGWlrsUWFiY2RlZmdo', + 'crypt' => 'ablvoGr1hvZ5k', + 'mysql' => '4a1fa3780bd6fd55', + 'my411' => '*e5929347e25f82e19e4ebe92f1dc6b6e7c2dbd29', + 'kmd5' => 'a579299436d7969791189acadd86fcb716', + 'djangomd5' => 'md5$abcde$d0fdddeda8cd92725d2b54148ac09158', + 'djangosha1' => 'sha1$abcde$c8e65a7f0acc9158843048a53dcc5a6bc4d17678', + ); + + + function test_cryptPassword(){ + foreach($this->passes as $method => $hash){ + $info = "testing method $method"; + $this->assertEquals(auth_cryptPassword('foo'.$method, $method,'abcdefgh12345678912345678912345678'), + $hash, $info); + } + } + + function test_verifyPassword(){ + foreach($this->passes as $method => $hash){ + $info = "testing method $method"; + $this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info); + $this->assertFalse(auth_verifyPassword('bar'.$method, $hash), $info); + } + } + + function test_verifySelf(){ + foreach($this->passes as $method => $hash){ + $info = "testing method $method"; + $hash = auth_cryptPassword('foo'.$method,$method); + $this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info); + } + } + + function test_bcrypt_self(){ + $hash = auth_cryptPassword('foobcrypt','bcrypt'); + $this->assertTrue(auth_verifyPassword('foobcrypt',$hash)); + } + + function test_verifyPassword_fixedbcrypt(){ + $this->assertTrue(auth_verifyPassword('foobcrypt','$2a$12$uTWercxbq4sjp2xAzv3we.ZOxk51m5V/Bv5bp2H27oVFJl5neFQoC')); + } + + function test_verifyPassword_nohash(){ + $this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/')); + } + + function test_verifyPassword_fixedpmd5(){ + $this->assertTrue(auth_verifyPassword('test12345','$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0')); + $this->assertTrue(auth_verifyPassword('test12345','$H$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0')); + } + + /** + * pmd5 checking should throw an exception when a hash with a too high + * iteration count is passed + */ + function test_verifyPassword_pmd5Exception(){ + $except = false; + try{ + auth_verifyPassword('foopmd5', '$H$abcdefgh1ZbJodHxmeXVAhEzTG7IAp.'); + }catch (Exception $e){ + $except = true; + } + $this->assertTrue($except); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/blowfish.test.php b/_test/tests/inc/blowfish.test.php new file mode 100644 index 000000000..972df11f4 --- /dev/null +++ b/_test/tests/inc/blowfish.test.php @@ -0,0 +1,33 @@ +<?php +/** + * Test for blowfish encryption. + */ +class blowfish_test extends DokuWikiTest { + public function testEncryptDecryptNumbers() { + $secret = '$%ÄüfuDFRR'; + $string = '12345678'; + $this->assertEquals( + $string, + PMA_blowfish_decrypt(PMA_blowfish_encrypt($string, $secret), $secret) + ); + } + + public function testEncryptDecryptChars() { + $secret = '$%ÄüfuDFRR'; + $string = 'abcDEF012!"§$%&/()=?`´"\',.;:-_#+*~öäüÖÄÜ^°²³'; + $this->assertEquals( + $string, + PMA_blowfish_decrypt(PMA_blowfish_encrypt($string, $secret), $secret) + ); + } + + // FS#1690 FS#1713 + public function testEncryptDecryptBinary() { + $secret = '$%ÄüfuDFRR'; + $string = "this is\0binary because of\0zero bytes"; + $this->assertEquals( + $string, + PMA_blowfish_decrypt(PMA_blowfish_encrypt($string, $secret), $secret) + ); + } +} diff --git a/_test/tests/inc/common_cleanText.test.php b/_test/tests/inc/common_cleanText.test.php new file mode 100644 index 000000000..00e70d4c7 --- /dev/null +++ b/_test/tests/inc/common_cleanText.test.php @@ -0,0 +1,25 @@ +<?php + +class common_cleanText_test extends DokuWikiTest { + + function test_unix(){ + $unix = 'one + two + + three'; + + $this->assertEquals($unix,cleanText($unix)); + } + + function test_win(){ + $unix = "one\ntwo\nthree"; + $win = "one\r\ntwo\r\nthree"; + + $this->assertEquals(bin2hex($unix), '6f6e650a74776f0a7468726565'); + $this->assertEquals(bin2hex($win), '6f6e650d0a74776f0d0a7468726565'); + $this->assertNotEquals($unix, $win); + $this->assertEquals($unix, cleanText($win)); + } +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/common_clientip.test.php b/_test/tests/inc/common_clientip.test.php new file mode 100644 index 000000000..5b569cd98 --- /dev/null +++ b/_test/tests/inc/common_clientip.test.php @@ -0,0 +1,151 @@ +<?php + +class common_clientIP_test extends DokuWikiTest { + + function test_simple_all(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(),$out); + } + + function test_proxy1_all(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = '77.77.77.77'; + $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; + $out = '123.123.123.123,77.77.77.77'; + $this->assertEquals(clientIP(),$out); + } + + function test_proxy2_all(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77'; + $out = '123.123.123.123,77.77.77.77'; + $this->assertEquals(clientIP(),$out); + } + + function test_proxyhops_all(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66'; + $out = '123.123.123.123,77.77.77.77,66.66.66.66'; + $this->assertEquals(clientIP(),$out); + } + + function test_simple_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(true),$out); + } + + function test_proxy1_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = '77.77.77.77'; + $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; + $out = '77.77.77.77'; + $this->assertEquals(clientIP(true),$out); + } + + function test_proxy2_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77'; + $out = '77.77.77.77'; + $this->assertEquals(clientIP(true),$out); + } + + function test_proxyhops_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66'; + $out = '66.66.66.66'; + $this->assertEquals(clientIP(true),$out); + } + + function test_local_all(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1'; + $out = '123.123.123.123,127.0.0.1'; + $this->assertEquals(clientIP(),$out); + } + + function test_local1_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1'; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(true),$out); + } + + function test_local2_single(){ + $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '123.123.123.123'; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(true),$out); + } + + function test_local3_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1,10.0.0.1,192.168.0.2,172.17.1.1,172.21.1.1,172.31.1.1'; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(true),$out); + } + + function test_local4_single(){ + $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '192.168.0.5'; + $out = '192.168.0.5'; + $this->assertEquals(clientIP(true),$out); + } + + function test_garbage_all(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(),$out); + } + + function test_garbage_single(){ + $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; + $out = '123.123.123.123'; + $this->assertEquals(clientIP(true),$out); + } + + function test_garbageonly_all(){ + $_SERVER['REMOTE_ADDR'] = 'argh'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; + $out = '0.0.0.0'; + $this->assertEquals(clientIP(),$out); + } + + function test_garbageonly_single(){ + $_SERVER['REMOTE_ADDR'] = 'argh'; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; + $out = '0.0.0.0'; + $this->assertEquals(clientIP(true),$out); + } + + function test_malicious(){ + $_SERVER['REMOTE_ADDR'] = ''; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '<?php set_time_limit(0);echo \'my_delim\';passthru(123.123.123.123);die;?>'; + $out = '0.0.0.0'; + $this->assertEquals(clientIP(),$out); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/common_obfuscate.test.php b/_test/tests/inc/common_obfuscate.test.php new file mode 100644 index 000000000..b8ec70980 --- /dev/null +++ b/_test/tests/inc/common_obfuscate.test.php @@ -0,0 +1,26 @@ +<?php + +class common_obfuscate_test extends DokuWikiTest { + + function test_none(){ + global $conf; + $conf['mailguard'] = 'none'; + $this->assertEquals(obfuscate('jon-doe@example.com'), 'jon-doe@example.com'); + } + + function test_hex(){ + global $conf; + $conf['mailguard'] = 'hex'; + $this->assertEquals(obfuscate('jon-doe@example.com'), + 'jon-doe@example.com'); + } + + function test_visible(){ + global $conf; + $conf['mailguard'] = 'visible'; + $this->assertEquals(obfuscate('jon-doe@example.com'), 'jon [dash] doe [at] example [dot] com'); + } + + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/common_pagetemplate.test.php b/_test/tests/inc/common_pagetemplate.test.php new file mode 100644 index 000000000..a076ce069 --- /dev/null +++ b/_test/tests/inc/common_pagetemplate.test.php @@ -0,0 +1,15 @@ +<?php + +class common_pagetemplate_test extends DokuWikiTest { + + function test_none(){ + global $conf; + $conf['sepchar'] = '-'; + $data = array( + 'id' => 'page-id-long', + 'tpl' => '"@PAGE@" "@!PAGE@" "@!!PAGE@" "@!PAGE!@"', + ); + $this->assertEquals(parsePageTemplate($data), '"page id long" "Page id long" "Page Id Long" "PAGE ID LONG"'); + } +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/common_wl.test.php b/_test/tests/inc/common_wl.test.php new file mode 100644 index 000000000..2e34dcae3 --- /dev/null +++ b/_test/tests/inc/common_wl.test.php @@ -0,0 +1,148 @@ +<?php + +class common_wl_test extends DokuWikiTest { + + function test_wl_empty() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + $conf['start'] = 'start'; + + $this->assertEquals(DOKU_BASE . DOKU_SCRIPT . '?id=start' , wl()); + } + + function test_wl_empty_rewrite1() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 1; + $conf['start'] = 'start'; + + $this->assertEquals(DOKU_BASE . 'start' , wl()); + } + + function test_wl_empty_rewrite2() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 2; + $conf['start'] = 'start'; + + $this->assertEquals(DOKU_BASE . DOKU_SCRIPT . '/start' , wl()); + } + + function test_wl_id() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some'; + $this->assertEquals($expect, wl('some')); + } + + function test_wl_id_ns() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:some'; + $this->assertEquals($expect, wl('some:some')); + } + + function test_wl_id_ns_start() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:'; + $this->assertEquals($expect, wl('some:')); + } + + function test_wl_args_array() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $args = array('a' => 'b', 'c' => 'd', 'q' => '&ä'); + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d&q=%26%C3%A4'; + $this->assertEquals($expect, wl('some:', $args)); + } + + function test_wl_args_string() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $args = 'a=b&c=d'; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d'; + $this->assertEquals($expect, wl('some:', $args)); + } + + function test_wl_args_comma_string() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $args = 'a=b,c=d'; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d'; + $this->assertEquals($expect, wl('some:', $args)); + } + + function test_wl_abs() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $expect = DOKU_URL . DOKU_SCRIPT . '?id=some:'; + $this->assertEquals($expect, wl('some:', '', true)); + } + + function test_wl_sep() { + global $conf; + $conf['useslash'] = 0; + $conf['userewrite'] = 0; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d'; + $this->assertEquals($expect, wl('some:', 'a=b,c=d', false, '&')); + } + + function test_wl_useslash() { + global $conf; + $conf['useslash'] = 1; + $conf['userewrite'] = 0; + + $expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d'; + $this->assertEquals($expect, wl('some:', 'a=b,c=d', false, '&')); + } + + function test_wl_useslash_rewrite1() { + global $conf; + $conf['useslash'] = 1; + $conf['userewrite'] = 1; + + $expect = DOKU_BASE . 'some/?a=b&c=d'; + $this->assertEquals($expect, wl('some:', 'a=b,c=d', false, '&')); + } + + function test_wl_useslash_rewrite1_sub_page() { + global $conf; + $conf['useslash'] = 1; + $conf['userewrite'] = 1; + + $expect = DOKU_BASE . 'some/one?a=b&c=d'; + $this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&')); + } + + function test_wl_useslash_rewrite2() { + global $conf; + $conf['useslash'] = 1; + $conf['userewrite'] = 2; + + $expect = DOKU_BASE . DOKU_SCRIPT . '/some/one?a=b&c=d'; + $this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&')); + } + + + +}
\ No newline at end of file diff --git a/_test/tests/inc/form_form.test.php b/_test/tests/inc/form_form.test.php new file mode 100644 index 000000000..02242a807 --- /dev/null +++ b/_test/tests/inc/form_form.test.php @@ -0,0 +1,102 @@ +<?php + +class form_test extends DokuWikiTest { + + function _testform() { + $form = new Doku_Form(array('id' => 'dw__testform', 'action' => '/test')); + $form->startFieldset('Test'); + $form->addHidden('summary', 'changes &c'); + $form->addElement(form_makeTextField('t', 'v', 'Text', 'text__id', 'block')); + $form->addElement(form_makeCheckboxField('r', '1', 'Check', 'check__id', 'simple')); + $form->addElement(form_makeButton('submit', 'save', 'Save', array('accesskey'=>'s'))); + $form->addElement(form_makeButton('submit', 'cancel', 'Cancel')); + $form->endFieldset(); + return $form; + } + + function _realoutput() { + global $lang; + $realoutput = '<form id="dw__testform" action="/test" method="post" '; + $realoutput .= 'accept-charset="'.$lang['encoding'].'">'; + $realoutput .= "\n"; + $realoutput .= '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" />'; + $realoutput .= '<input type="hidden" name="summary" value="changes &c" />'; + $realoutput .= "\n"; + $realoutput .= "<fieldset ><legend>Test</legend>\n"; + $realoutput .= '<label class="block" for="text__id"><span>Text</span> '; + $realoutput .= '<input type="text" id="text__id" name="t" value="v" class="edit" /></label><br />'; + $realoutput .= "\n"; + $realoutput .= '<label class="simple" for="check__id">'; + $realoutput .= '<input type="checkbox" id="check__id" name="r" value="1" /> '; + $realoutput .= '<span>Check</span></label>'; + $realoutput .= "\n"; + $realoutput .= '<input name="do[save]" type="submit" value="Save" class="button" accesskey="s" title="Save [S]" />'; + $realoutput .= "\n"; + $realoutput .= '<input name="do[cancel]" type="submit" value="Cancel" class="button" />'; + $realoutput .= "\n"; + $realoutput .= "</fieldset>\n</div></form>\n"; + return $realoutput; + } + + function _ignoreTagWS($data){ + return preg_replace('/>\s+</','><',$data); + } + + function test_form_print() { + $form = $this->_testform(); + ob_start(); + $form->printForm(); + $output = ob_get_contents(); + ob_end_clean(); + $form->addHidden('sectok', getSecurityToken()); + $this->assertEquals($this->_ignoreTagWS($output),$this->_ignoreTagWS($this->_realoutput())); + } + + function test_get_element_at() { + $form = $this->_testform(); + $e1 =& $form->getElementAt(1); + $this->assertEquals($e1, array('_elem'=>'textfield', + '_text'=>'Text', + '_class'=>'block', + 'id'=>'text__id', + 'name'=>'t', + 'value'=>'v', + 'class'=>'edit')); + $e2 =& $form->getElementAt(99); + $this->assertEquals($e2, array('_elem'=>'closefieldset')); + } + + function test_find_element_by_type() { + $form = $this->_testform(); + $this->assertEquals($form->findElementByType('button'), 3); + $this->assertFalse($form->findElementByType('text')); + } + + function test_find_element_by_id() { + $form = $this->_testform(); + $this->assertEquals($form->findElementById('check__id'), 2); + $this->assertFalse($form->findElementById('dw__testform')); + } + + function test_find_element_by_attribute() { + $form = $this->_testform(); + $this->assertEquals($form->findElementByAttribute('value','Cancel'), 4); + $this->assertFalse($form->findElementByAttribute('name','cancel')); + } + + function test_close_fieldset() { + $form = new Doku_Form(array('id' => 'dw__testform', 'action' => '/test')); + $form->startFieldset('Test'); + $form->addHidden('summary', 'changes &c'); + $form->addElement(form_makeTextField('t', 'v', 'Text', 'text__id', 'block')); + $form->addElement(form_makeCheckboxField('r', '1', 'Check', 'check__id', 'simple')); + $form->addElement(form_makeButton('submit', 'save', 'Save', array('accesskey'=>'s'))); + $form->addElement(form_makeButton('submit', 'cancel', 'Cancel')); + ob_start(); + $form->printForm(); + $output = ob_get_contents(); + ob_end_clean(); + $this->assertEquals($this->_ignoreTagWS($output),$this->_ignoreTagWS($this->_realoutput())); + } + +} diff --git a/_test/tests/inc/html_hilight.test.php b/_test/tests/inc/html_hilight.test.php new file mode 100644 index 000000000..bb0cdd424 --- /dev/null +++ b/_test/tests/inc/html_hilight.test.php @@ -0,0 +1,100 @@ +<?php + +class html_hilight_test extends DokuWikiTest { + + function testHighlightOneWord() { + $html = 'Foo bar Foo'; + $this->assertRegExp( + '/Foo <span.*>bar<\/span> Foo/', + html_hilight($html,'bar') + ); + } + + function testHighlightTwoWords() { + $html = 'Foo bar Foo php Foo'; + $this->assertRegExp( + '/Foo <span.*>bar<\/span> Foo <span.*>php<\/span> Foo/', + html_hilight($html,array('bar','php')) + ); + } + + function testHighlightTwoWordsHtml() { + $html = 'Foo <b>bar</b> <i>Foo</i> php Foo'; + $this->assertRegExp( + '/Foo <b><span.*>bar<\/span><\/b> <i>Foo<\/i> <span.*>php<\/span> Foo/', + html_hilight($html,array('bar','php')) + ); + } + + function testNoMatchHtml() { + $html = 'Foo <font>font</font> Bar'; + $this->assertRegExp( + '/Foo <font><span.*>font<\/span><\/font> Bar/', + html_hilight($html,'font') + ); + } + + function testWildcardRight() { + $html = 'foo bar foobar barfoo foobarfoo foo'; + $this->assertRegExp( + '/foo <span.*>bar<\/span> foobar <span.*>bar<\/span>foo foobarfoo foo/', + html_hilight($html,'bar*') + ); + } + + function testWildcardLeft() { + $html = 'foo bar foobar barfoo foobarfoo foo'; + $this->assertRegExp( + '/foo <span.*>bar<\/span> foo<span.*>bar<\/span> barfoo foobarfoo foo/', + html_hilight($html,'*bar') + ); + } + + function testWildcardBoth() { + $html = 'foo bar foobar barfoo foobarfoo foo'; + $this->assertRegExp( + '/foo <span.*>bar<\/span> foo<span.*>bar<\/span> <span.*>bar<\/span>foo foo<span.*>bar<\/span>foo foo/', + html_hilight($html,'*bar*') + ); + } + + function testNoHighlight() { + $html = 'Foo bar Foo'; + $this->assertRegExp( + '/Foo bar Foo/', + html_hilight($html,'php') + ); + } + + function testMatchAttribute() { + $html = 'Foo <b class="x">bar</b> Foo'; + $this->assertRegExp( + '/Foo <b class="x">bar<\/b> Foo/', + html_hilight($html,'class="x"') + ); + } + + function testMatchAttributeWord() { + $html = 'Foo <b class="x">bar</b> Foo'; + $this->assertEquals( + 'Foo <b class="x">bar</b> Foo', + html_hilight($html,'class="x">bar') + ); + } + + function testRegexInjection() { + $html = 'Foo bar Foo'; + $this->assertRegExp( + '/Foo bar Foo/', + html_hilight($html,'*') + ); + } + + function testRegexInjectionSlash() { + $html = 'Foo bar Foo'; + $this->assertRegExp( + '/Foo bar Foo/', + html_hilight($html,'x/') + ); + } +} diff --git a/_test/tests/inc/httpclient_http.test.php b/_test/tests/inc/httpclient_http.test.php new file mode 100644 index 000000000..9cae3736a --- /dev/null +++ b/_test/tests/inc/httpclient_http.test.php @@ -0,0 +1,180 @@ +<?php + +class httpclient_http_test extends DokuWikiTest { + protected $server = 'http://httpbin.org'; + + /** + * @group internet + */ + function test_simpleget(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/get?foo=bar'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('args',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['args']); + } + + /** + * @group internet + */ + function test_dget(){ + $http = new HTTPClient(); + $data = $http->dget($this->server.'/get',array('foo'=>'bar')); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('args',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['args']); + } + + /** + * @group internet + */ + function test_gzip(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/gzip'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('gzipped',$resp); + $this->assertTrue($resp['gzipped']); + } + + /** + * @group internet + */ + function test_simplepost(){ + $http = new HTTPClient(); + $data = $http->post($this->server.'/post',array('foo'=>'bar')); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('form',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['form']); + } + + /** + * @group internet + */ + function test_redirect(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/redirect/3'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('url',$resp); + $this->assertRegExp('/\/get$/', $resp['url']); + } + + /** + * @group internet + */ + function test_relredirect(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/relative-redirect/3'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('url',$resp); + $this->assertRegExp('/\/get$/', $resp['url']); + } + + /** + * @group internet + */ + function test_redirectfail(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/redirect/5'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals('Maximum number of redirects exceeded',$http->error); + } + + /** + * @group internet + */ + function test_cookies(){ + $http = new HTTPClient(); + $http->get($this->server.'/cookies/set/foo/bar'); + $this->assertEquals(array('foo' => 'bar'), $http->cookies); + $data = $http->get($this->server.'/cookies'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('cookies',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['cookies']); + } + + /** + * @group internet + */ + function test_teapot(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/status/418'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals(418,$http->status); + } + + /** + * @group internet + */ + function test_maxbody(){ + $http = new HTTPClient(); + $http->max_bodysize = 250; + $data = $http->get($this->server.'/stream/30'); + $this->assertTrue($data === false, 'HTTP response'); + } + + /** + * @group internet + */ + function test_basicauth(){ + $http = new HTTPClient(); + $http->user = 'user'; + $http->pass = 'pass'; + $data = $http->get($this->server.'/basic-auth/user/pass'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertEquals(array('authenticated'=>true,'user'=>'user'), $resp); + } + + /** + * @group internet + */ + function test_basicauthfail(){ + $http = new HTTPClient(); + $http->user = 'user'; + $http->pass = 'invalid'; + $data = $http->get($this->server.'/basic-auth/user/pass'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals(401,$http->status); + } + + /** + * @group internet + */ + function test_timeout(){ + $http = new HTTPClient(); + $http->timeout = 5; + $data = $http->get($this->server.'/delay/10'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals(-100,$http->status); + } + + /** + * @group internet + */ + function test_headers(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/response-headers?baz=&foo=bar'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('baz',$http->resp_headers); + $this->assertArrayHasKey('foo',$http->resp_headers); + $this->assertEquals('bar',$http->resp_headers['foo']); + } +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/httpclient_https.test.php b/_test/tests/inc/httpclient_https.test.php new file mode 100644 index 000000000..26a0f86db --- /dev/null +++ b/_test/tests/inc/httpclient_https.test.php @@ -0,0 +1,15 @@ +<?php + +class httpclient_https_test extends httpclient_http_test { + protected $server = 'https://httpbin.org/'; + + public function setUp(){ + // skip tests when this PHP has no SSL support + $transports = stream_get_transports(); + if(!in_array('ssl',$transports)){ + $this->markTestSkipped('No SSL support available.'); + } + parent::setUp(); + } +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/init_fullpath.test.php b/_test/tests/inc/init_fullpath.test.php new file mode 100644 index 000000000..fabf03fa0 --- /dev/null +++ b/_test/tests/inc/init_fullpath.test.php @@ -0,0 +1,86 @@ +<?php + +class init_fullpath_test extends DokuWikiTest { + + function test_unix_paths(){ + $base = $_SERVER['SCRIPT_FILENAME']; + $_SERVER['SCRIPT_FILENAME'] = '/absolute/path/self.php'; + $GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS'] = false; + + // paths to check + $tests = array( + '/foo/bar/baz' => '/foo/bar/baz', + '/foo//bar/baz' => '/foo/bar/baz', + '/foo/../bar/baz' => '/bar/baz', + '/foo/./bar/baz' => '/foo/bar/baz', + '/foo/bar/..' => '/foo', + '/foo/bar/../../../baz' => '/baz', + + 'foo/bar/baz' => '/absolute/path/foo/bar/baz', + 'foo//bar/baz' => '/absolute/path/foo/bar/baz', + 'foo/../bar/baz' => '/absolute/path/bar/baz', + 'foo/./bar/baz' => '/absolute/path/foo/bar/baz', + 'foo/bar/..' => '/absolute/path/foo', + 'foo/bar/../../../baz' => '/absolute/baz', + ); + + foreach($tests as $from => $to){ + $info = "Testing '$from' resulted in '".fullpath($from)."'"; + + $this->assertEquals(fullpath($from), $to, $info); + } + + + $_SERVER['SCRIPT_FILENAME'] = $base; + unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']); + } + + function test_windows_paths(){ + $base = $_SERVER['SCRIPT_FILENAME']; + $_SERVER['SCRIPT_FILENAME'] = '/absolute/path/self.php'; + $GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS'] = true; + + // paths to check + $tests = array( + 'c:foo/bar/baz' => 'c:/foo/bar/baz', + 'c:foo//bar/baz' => 'c:/foo/bar/baz', + 'c:foo/../bar/baz' => 'c:/bar/baz', + 'c:foo/./bar/baz' => 'c:/foo/bar/baz', + 'c:foo/bar/..' => 'c:/foo', + 'c:foo/bar/../../../baz' => 'c:/baz', + + 'c:/foo/bar/baz' => 'c:/foo/bar/baz', + 'c:/foo//bar/baz' => 'c:/foo/bar/baz', + 'c:/foo/../bar/baz' => 'c:/bar/baz', + 'c:/foo/./bar/baz' => 'c:/foo/bar/baz', + 'c:/foo/bar/..' => 'c:/foo', + 'c:/foo/bar/../../../baz' => 'c:/baz', + + 'c:\\foo\\bar\\baz' => 'c:/foo/bar/baz', + 'c:\\foo\\\\bar\\baz' => 'c:/foo/bar/baz', + 'c:\\foo\\..\\bar\\baz' => 'c:/bar/baz', + 'c:\\foo\\.\\bar\\baz' => 'c:/foo/bar/baz', + 'c:\\foo\\bar\\..' => 'c:/foo', + 'c:\\foo\\bar\\..\\..\\..\\baz' => 'c:/baz', + + '\\\\server\\share/foo/bar/baz' => '\\\\server\\share/foo/bar/baz', + '\\\\server\\share/foo//bar/baz' => '\\\\server\\share/foo/bar/baz', + '\\\\server\\share/foo/../bar/baz' => '\\\\server\\share/bar/baz', + '\\\\server\\share/foo/./bar/baz' => '\\\\server\\share/foo/bar/baz', + '\\\\server\\share/foo/bar/..' => '\\\\server\\share/foo', + '\\\\server\\share/foo/bar/../../../baz' => '\\\\server\\share/baz', + ); + + foreach($tests as $from => $to){ + $info = "Testing '$from' resulted in '".fullpath($from)."'"; + + $this->assertEquals(fullpath($from), $to, $info); + } + + + $_SERVER['SCRIPT_FILENAME'] = $base; + unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']); + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/init_getbaseurl.test.php b/_test/tests/inc/init_getbaseurl.test.php new file mode 100644 index 000000000..af5a8b318 --- /dev/null +++ b/_test/tests/inc/init_getbaseurl.test.php @@ -0,0 +1,303 @@ +<?php + +class init_getBaseURL_test extends DokuWikiTest { + + /** + * Apache, mod_php, subdirectory + * + * data provided by Andreas Gohr <andi@splitbrain.org> + */ + function test1(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; + + $this->assertEquals(getBaseURL(),'/dokuwiki/'); + } + + /** + * Apache, CGI, mod_userdir, subdirectory + * + * data provided by Hilko Bengen <bengen@hilluzination.de> + */ + function test2(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/localhost'; + $_SERVER['HTTP_HOST'] = 'localhost'; + $_SERVER['SCRIPT_FILENAME'] = '/usr/lib/cgi-bin/php4'; + $_SERVER['REQUEST_URI'] = '/~bengen/dokuwiki/doku.php?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/cgi-bin/php4'; + $_SERVER['PATH_INFO'] = '/~bengen/dokuwiki/doku.php'; + $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/~bengen/dokuwiki/doku.php'; + + $this->assertEquals(getBaseURL(),'/~bengen/dokuwiki/'); + } + + /** + * Apache, FastCGI, mod_userdir, subdirectory + * + * data provided by Hilko Bengen <bengen@hilluzination.de> + */ + function test3(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/localhost'; + $_SERVER['HTTP_HOST'] = 'localhost'; + $_SERVER['SCRIPT_FILENAME'] = '/var/run/php-fastcgi/fcgi-bin/bengen/php4'; + $_SERVER['REQUEST_URI'] = '/~bengen/dokuwiki/doku.php?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/fcgi-bin/php4-bengen'; + $_SERVER['PATH_INFO'] = '/~bengen/dokuwiki/doku.php'; + $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/~bengen/dokuwiki/doku.php'; + + $this->assertEquals(getBaseURL(),'/~bengen/dokuwiki/'); + } + + /** + * Apache, mod_php, mod_userdir, subdirectory + * + * data provided by Hilko Bengen <bengen@hilluzination.de> + */ + function test4(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/localhost'; + $_SERVER['HTTP_HOST'] = 'localhost'; + $_SERVER['SCRIPT_FILENAME'] = '/home/bengen/public_html/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/~bengen/dokuwiki/doku.php?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/~bengen/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/~bengen/dokuwiki/doku.php'; + + $this->assertEquals(getBaseURL(),'/~bengen/dokuwiki/'); + } + + /** + * IIS + * + * data provided by David Mach <david.mach@centrum.cz> + */ + function test5(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = null; + $_SERVER['HTTP_HOST'] = 'intranet'; + $_SERVER['SCRIPT_FILENAME'] = null; + $_SERVER['REQUEST_URI'] = null; + $_SERVER['SCRIPT_NAME'] = '/wiki/doku.php'; + $_SERVER['PATH_INFO'] = '/wiki/doku.php'; + $_SERVER['PATH_TRANSLATED'] = 'C:\\Inetpub\\wwwroot\\wiki\\doku.php'; + $_SERVER['PHP_SELF'] = '/wiki/doku.php'; + + $this->assertEquals(getBaseURL(),'/wiki/'); + } + + /** + * Apache 2, mod_php, real URL rewriting, useslash (bug #292) + * + * data provided by Ted <bugsX2904@elcsplace.com> + */ + function test6(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/home/websites/wiki/htdocs'; + $_SERVER['HTTP_HOST'] = 'wiki.linuxwan.net'; + $_SERVER['SCRIPT_FILENAME'] = '/home/websites/wiki/htdocs/doku.php'; + $_SERVER['REQUEST_URI'] = '/wiki/syntax?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/wiki/syntax'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = null; + $_SERVER['PHP_SELF'] = '/wiki/syntax'; + + $this->assertEquals(getBaseURL(),'/'); + } + + /** + * lighttpd, fastcgi + * + * data provided by Andreas Gohr <andi@splitbrain.org> + */ + function test7(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'localhost'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = ''; + $_SERVER['PATH_TRANSLATED'] = null; + $_SERVER['PHP_SELF'] = ''; + + $this->assertEquals(getBaseURL(),'/dokuwiki/'); + } + + /** + * Apache, mod_php, Pseudo URL rewrite, useslash + * + * data provided by Andreas Gohr <andi@splitbrain.org> + */ + function test8(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php/wiki/syntax?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = '/wiki/syntax'; + $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki/syntax'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php/wiki/syntax'; + + $this->assertEquals(getBaseURL(),'/dokuwiki/'); + } + + /** + * Apache, mod_php, real URL rewrite, useslash + * + * data provided by Andreas Gohr <andi@splitbrain.org> + */ + function test9(){ + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/wiki/syntax?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; + + $this->assertEquals(getBaseURL(),'/dokuwiki/'); + } + + /** + * Possible user settings of $conf['baseurl'] & absolute baseURL required + * + * data provided by Andreas Gohr <andi@splitbrain.org> + */ + function test10(){ + // values for $conf['baseurl'] and expected results + $tests = array( + 'http://www.mysite.com' => 'http://www.mysite.com/dokuwiki/', + 'http://www.mysite.com/' => 'http://www.mysite.com/dokuwiki/', + 'http://www.mysite.com/path/to/wiki' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', + 'http://www.mysite.com/path/to/wiki/' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', + ); + + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/wiki/syntax?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; + + foreach ($tests as $test => $correct_result) { + $conf['baseurl'] = $test; + $this->assertEquals(getBaseURL(true),$correct_result); + } + } + /** + * Possible user settings of $conf['baseurl'] & absolute baseURL required + * + * data provided by Andreas Gohr <andi@splitbrain.org> + */ + function test11(){ + // values for $conf['baseurl'] and expected results + $tests = array( + 'http://www.mysite.com' => 'http://www.mysite.com/dokuwiki/', + 'http://www.mysite.com/' => 'http://www.mysite.com/dokuwiki/', + 'http://www.mysite.com/path/to/wiki' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', + 'http://www.mysite.com/path/to/wiki/' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', + ); + + global $conf; + $conf['basedir'] = '/dokuwiki'; + $conf['baseurl'] = ''; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/wiki/syntax?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; + + foreach ($tests as $test => $correct_result) { + $conf['baseurl'] = $test; + $this->assertEquals(getBaseURL(true),$correct_result); + } + } + + /** + * Absolute URL with IPv6 domain name. + * lighttpd, fastcgi + * + * data provided by Michael Hamann <michael@content-space.de> + */ + function test12() { + global $conf; + $conf['basedir'] = ''; + $conf['baseurl'] = ''; + $conf['canonical'] = 0; + + $_SERVER['DOCUMENT_ROOT'] = '/srv/http/'; + $_SERVER['HTTP_HOST'] = '[fd00::6592:39ed:a2ed:2c78]'; + $_SERVER['SCRIPT_FILENAME'] = '/srv/http/~michitux/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/~michitux/dokuwiki/doku.php?do=debug'; + $_SERVER['SCRIPT_NAME'] = '/~michitux/dokuwiki/doku.php'; + $_SERVER['PATH_INFO'] = null; + $_SERVER['PATH_TRANSLATED'] = null; + $_SERVER['PHP_SELF'] = '/~michitux/dokuwiki/doku.php'; + $_SERVER['SERVER_PORT'] = '80'; + $_SERVER['SERVER_NAME'] = '[fd00'; + $this->assertEquals(getBaseURL(true), 'http://[fd00::6592:39ed:a2ed:2c78]/~michitux/dokuwiki/'); + } +} + +//Setup VIM: ex: et ts=2 : diff --git a/_test/tests/inc/input.test.php b/_test/tests/inc/input.test.php new file mode 100644 index 000000000..761b7ddbc --- /dev/null +++ b/_test/tests/inc/input.test.php @@ -0,0 +1,216 @@ +<?php + +/** + * Tests for the Input class + */ +class input_test extends DokuWikiTest { + + private $data = array( + 'array' => array('foo', 'bar'), + 'string' => 'foo', + 'int' => '17', + 'zero' => '0', + 'one' => '1', + 'empty' => '', + 'emptya' => array() + ); + + public function test_str() { + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $_GET['get'] = 1; + $_POST['post'] = 1; + $INPUT = new Input(); + + $this->assertSame('foo', $INPUT->str('string')); + $this->assertSame('', $INPUT->str('none')); + $this->assertSame('', $INPUT->str('empty')); + $this->assertSame('foo', $INPUT->str('none', 'foo')); + $this->assertSame('', $INPUT->str('empty', 'foo')); + $this->assertSame('foo', $INPUT->str('empty', 'foo', true)); + + $this->assertSame(false, $INPUT->str('get', false)); + $this->assertSame(false, $INPUT->str('post', false)); + + $this->assertSame('foo', $INPUT->post->str('string')); + $this->assertSame('', $INPUT->post->str('none')); + $this->assertSame('', $INPUT->post->str('empty')); + $this->assertSame('foo', $INPUT->post->str('none', 'foo')); + $this->assertSame('', $INPUT->post->str('empty', 'foo')); + $this->assertSame('foo', $INPUT->post->str('empty', 'foo', true)); + + $this->assertSame(false, $INPUT->post->str('get', false)); + $this->assertSame('1', $INPUT->post->str('post', false)); + + $this->assertSame('foo', $INPUT->get->str('string')); + $this->assertSame('', $INPUT->get->str('none')); + $this->assertSame('', $INPUT->get->str('empty')); + $this->assertSame('foo', $INPUT->get->str('none', 'foo')); + $this->assertSame('', $INPUT->get->str('empty', 'foo')); + $this->assertSame('foo', $INPUT->get->str('empty', 'foo', true)); + + $this->assertSame(false, $INPUT->get->str('post', false)); + $this->assertSame('1', $INPUT->get->str('get', false)); + + $this->assertSame('', $INPUT->str('array')); + } + + public function test_int() { + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $_GET['get'] = 1; + $_POST['post'] = 1; + $INPUT = new Input(); + + $this->assertSame(17, $INPUT->int('int')); + $this->assertSame(0, $INPUT->int('none')); + $this->assertSame(0, $INPUT->int('empty')); + $this->assertSame(42, $INPUT->int('none', 42)); + $this->assertSame(0, $INPUT->int('zero', 42)); + $this->assertSame(42, $INPUT->int('zero', 42, true)); + + $this->assertSame(false, $INPUT->int('get', false)); + $this->assertSame(false, $INPUT->int('post', false)); + + $this->assertSame(17, $INPUT->post->int('int')); + $this->assertSame(0, $INPUT->post->int('none')); + $this->assertSame(0, $INPUT->post->int('empty')); + $this->assertSame(42, $INPUT->post->int('none', 42)); + $this->assertSame(0, $INPUT->post->int('zero', 42)); + $this->assertSame(42, $INPUT->post->int('zero', 42, true)); + + $this->assertSame(false, $INPUT->post->int('get', false)); + $this->assertSame(1, $INPUT->post->int('post', false)); + + $this->assertSame(17, $INPUT->post->int('int')); + $this->assertSame(0, $INPUT->post->int('none')); + $this->assertSame(0, $INPUT->post->int('empty')); + $this->assertSame(42, $INPUT->post->int('none', 42)); + $this->assertSame(0, $INPUT->post->int('zero', 42)); + $this->assertSame(42, $INPUT->post->int('zero', 42, true)); + + $this->assertSame(false, $INPUT->get->int('post', false)); + $this->assertSame(1, $INPUT->get->int('get', false)); + + $this->assertSame(0, $INPUT->int('array')); + + $this->assertSame(0, $INPUT->int('zero', -1)); + $this->assertSame(-1, $INPUT->int('empty', -1)); + $this->assertSame(-1, $INPUT->int('zero', -1, true)); + $this->assertSame(-1, $INPUT->int('empty', -1, true)); + } + + public function test_arr() { + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $_GET['get'] = array(1, 2); + $_POST['post'] = array(1, 2); + $INPUT = new Input(); + + $this->assertSame(array('foo', 'bar'), $INPUT->arr('array')); + $this->assertSame(array(), $INPUT->arr('none')); + $this->assertSame(array(), $INPUT->arr('empty')); + $this->assertSame(array(1, 2), $INPUT->arr('none', array(1, 2))); + $this->assertSame(array(), $INPUT->arr('emptya', array(1, 2))); + $this->assertSame(array(1, 2), $INPUT->arr('emptya', array(1, 2), true)); + + $this->assertSame(false, $INPUT->arr('get', false)); + $this->assertSame(false, $INPUT->arr('post', false)); + + $this->assertSame(array('foo', 'bar'), $INPUT->post->arr('array')); + $this->assertSame(array(), $INPUT->post->arr('none')); + $this->assertSame(array(), $INPUT->post->arr('empty')); + $this->assertSame(array(1, 2), $INPUT->post->arr('none', array(1, 2))); + $this->assertSame(array(), $INPUT->post->arr('emptya', array(1, 2))); + $this->assertSame(array(1, 2), $INPUT->post->arr('emptya', array(1, 2), true)); + + $this->assertSame(false, $INPUT->post->arr('get', false)); + $this->assertSame(array(1, 2), $INPUT->post->arr('post', false)); + + $this->assertSame(array('foo', 'bar'), $INPUT->get->arr('array')); + $this->assertSame(array(), $INPUT->get->arr('none')); + $this->assertSame(array(), $INPUT->get->arr('empty')); + $this->assertSame(array(1, 2), $INPUT->get->arr('none', array(1, 2))); + $this->assertSame(array(), $INPUT->get->arr('emptya', array(1, 2))); + $this->assertSame(array(1, 2), $INPUT->get->arr('emptya', array(1, 2), true)); + + $this->assertSame(array(1, 2), $INPUT->get->arr('get', false)); + $this->assertSame(false, $INPUT->get->arr('post', false)); + } + + public function test_bool() { + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $_GET['get'] = '1'; + $_POST['post'] = '1'; + $INPUT = new Input(); + + $this->assertSame(true, $INPUT->bool('one')); + $this->assertSame(false, $INPUT->bool('zero')); + + $this->assertSame(false, $INPUT->bool('get')); + $this->assertSame(false, $INPUT->bool('post')); + + $this->assertSame(true, $INPUT->post->bool('one')); + $this->assertSame(false, $INPUT->post->bool('zero')); + + $this->assertSame(false, $INPUT->post->bool('get')); + $this->assertSame(true, $INPUT->post->bool('post')); + + $this->assertSame(false, $INPUT->bool('zero', -1)); + $this->assertSame(-1, $INPUT->bool('empty', -1)); + $this->assertSame(-1, $INPUT->bool('zero', -1, true)); + $this->assertSame(-1, $INPUT->bool('empty', -1, true)); + } + + public function test_remove() { + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $INPUT = new Input(); + + $INPUT->remove('string'); + $this->assertNull($_REQUEST['string']); + $this->assertNull($_POST['string']); + $this->assertNull($_GET['string']); + + $INPUT->post->remove('int'); + $this->assertNull($_POST['int']); + $this->assertEquals(17, $_GET['int']); + $this->assertEquals(17, $_REQUEST['int']); + } + + public function test_set(){ + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $INPUT = new Input(); + + $INPUT->set('test','foo'); + $this->assertEquals('foo',$_REQUEST['test']); + $this->assertNull($_POST['test']); + $this->assertNull($_GET['test']); + + $INPUT->get->set('test2','foo'); + $this->assertEquals('foo',$_GET['test2']); + $this->assertEquals('foo',$_REQUEST['test2']); + $this->assertNull($_POST['test']); + } + + public function test_ref(){ + $_REQUEST = $this->data; + $_POST = $this->data; + $_GET = $this->data; + $INPUT = new Input(); + + $test = &$INPUT->ref('string'); + $this->assertEquals('foo',$test); + $_REQUEST['string'] = 'bla'; + $this->assertEquals('bla',$test); + } + +} diff --git a/_test/tests/inc/ixr_library_date.test.php b/_test/tests/inc/ixr_library_date.test.php new file mode 100644 index 000000000..f38486925 --- /dev/null +++ b/_test/tests/inc/ixr_library_date.test.php @@ -0,0 +1,35 @@ +<?php + +require_once DOKU_INC.'inc/IXR_Library.php'; + +class ixr_library_date_test extends DokuWikiTest { + + + function test_parseIso(){ + // multiple tests + $tests = array( + // full datetime, different formats + array('2010-08-17T09:23:14', 1282036994), + array('20100817T09:23:14', 1282036994), + array('2010-08-17 09:23:14', 1282036994), + array('20100817 09:23:14', 1282036994), + array('2010-08-17T09:23:14Z', 1282036994), + array('20100817T09:23:14Z', 1282036994), + + // no seconds + array('2010-08-17T09:23', 1282036980), + array('20100817T09:23', 1282036980), + + // no time + array('2010-08-17', 1282003200), + //array('20100817', 1282003200), #this will NOT be parsed, but is assumed to be timestamp + ); + + foreach($tests as $test){ + $dt = new IXR_Date($test[0]); + $this->assertEquals($dt->getTimeStamp(),$test[1]); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/ixr_library_ixr_message.test.php b/_test/tests/inc/ixr_library_ixr_message.test.php new file mode 100644 index 000000000..b8afd607e --- /dev/null +++ b/_test/tests/inc/ixr_library_ixr_message.test.php @@ -0,0 +1,134 @@ +<?php + +class ixr_library_ixr_message_test extends DokuWikiTest { + + function test_untypedvalue1(){ + $xml = '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wiki.getBackLinks</methodName><params><param><value> change </value></param></params></methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.getBackLinks'); + $this->assertEquals($ixrmsg->params,array(' change ')); + } + + function test_untypedvalue2(){ + $xml = '<?xml version="1.0" encoding="UTF-8"?> + <methodCall> + <methodName>wiki.getBackLinks</methodName> + <params> + <param> + <value> change </value> + </param> + </params> + </methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.getBackLinks'); + $this->assertEquals($ixrmsg->params,array(' change ')); + } + + function test_stringvalue1(){ + $xml = '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wiki.getBackLinks</methodName><params><param><value><string> change </string></value></param></params></methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.getBackLinks'); + $this->assertEquals($ixrmsg->params,array(' change ')); + } + + function test_stringvalue2(){ + $xml = '<?xml version="1.0" encoding="UTF-8"?> + <methodCall> + <methodName>wiki.getBackLinks</methodName> + <params> + <param> + <value> + <string> change </string> + </value> + </param> + </params> + </methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.getBackLinks'); + $this->assertEquals($ixrmsg->params,array(' change ')); + } + + function test_emptyvalue1(){ + $xml = '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wiki.getBackLinks</methodName><params><param><value><string></string></value></param></params></methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.getBackLinks'); + $this->assertEquals($ixrmsg->params,array('')); + } + + function test_emptyvalue2(){ + $xml = '<?xml version="1.0" encoding="UTF-8"?> + <methodCall> + <methodName>wiki.getBackLinks</methodName> + <params> + <param> + <value> + <string></string> + </value> + </param> + </params> + </methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.getBackLinks'); + $this->assertEquals($ixrmsg->params,array('')); + } + + function test_struct(){ + $xml = '<?xml version=\'1.0\'?> + <methodCall> + <methodName>wiki.putPage</methodName> + <params> + <param> + <value><string>start</string></value> + </param> + <param> + <value><string>test text</string></value> + </param> + <param> + <value><struct> + <member> + <name>sum</name> + <value><string>xmlrpc edit</string></value> + </member> + <member> + <name>minor</name> + <value><string>1</string></value> + </member> + </struct></value> + </param> + </params> + </methodCall>'; + + $ixrmsg = new IXR_Message($xml); + $ixrmsg->parse(); + + $this->assertEquals($ixrmsg->messageType,'methodCall'); + $this->assertEquals($ixrmsg->methodName,'wiki.putPage'); + $this->assertEquals($ixrmsg->params,array('start','test text',array('sum'=>'xmlrpc edit','minor'=>'1'))); + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/json.test.php b/_test/tests/inc/json.test.php new file mode 100644 index 000000000..ca939d885 --- /dev/null +++ b/_test/tests/inc/json.test.php @@ -0,0 +1,418 @@ +<?php +/** + * Unit tests for JSON. + * + * @author Michal Migurski <mike-json@teczno.com> + * @author Matt Knapp <mdknapp[at]gmail[dot]com> + * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com> + * @copyright 2005 Michal Migurski + * @version CVS: $Id: Test-JSON.php,v 1.28 2006/06/28 05:54:17 migurski Exp $ + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + * @link http://mike.teczno.com/JSON/Test-JSON.phps + */ + +class JSON_EncDec_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json = new JSON(); + $this->json->skipnative = true; + + $obj = new stdClass(); + $obj->a_string = '"he":llo}:{world'; + $obj->an_array = array(1, 2, 3); + $obj->obj = new stdClass(); + $obj->obj->a_number = 123; + + $this->obj = $obj; + $this->obj_j = '{"a_string":"\"he\":llo}:{world","an_array":[1,2,3],"obj":{"a_number":123}}'; + $this->obj_d = 'object with properties, nested object and arrays'; + + $this->arr = array(null, true, array(1, 2, 3), "hello\"],[world!"); + $this->arr_j = '[null,true,[1,2,3],"hello\"],[world!"]'; + $this->arr_d = 'array with elements and nested arrays'; + + $this->str1 = 'hello world'; + $this->str1_j = '"hello world"'; + $this->str1_j_ = "'hello world'"; + $this->str1_d = 'hello world'; + $this->str1_d_ = 'hello world, double quotes'; + + $this->str2 = "hello\t\"world\""; + $this->str2_j = '"hello\\t\\"world\\""'; + $this->str2_d = 'hello world, with tab, double-quotes'; + + $this->str3 = "\\\r\n\t\"/"; + $this->str3_j = '"\\\\\\r\\n\\t\\"\\/"'; + $this->str3_d = 'backslash, return, newline, tab, double-quote'; + + $this->str4 = 'héllö wørłd'; + $this->str4_j = '"h\u00e9ll\u00f6 w\u00f8r\u0142d"'; + $this->str4_j_ = '"héllö wørłd"'; + $this->str4_d = 'hello world, with unicode'; + } + + function test_to_JSON() { + $this->assertEquals('null', $this->json->encode(null), 'type case: null'); + $this->assertEquals('true', $this->json->encode(true), 'type case: boolean true'); + $this->assertEquals('false', $this->json->encode(false), 'type case: boolean false'); + + $this->assertEquals('1', $this->json->encode(1), 'numeric case: 1'); + $this->assertEquals('-1', $this->json->encode(-1), 'numeric case: -1'); + $this->assertEquals('1.000000', $this->json->encode(1.0), 'numeric case: 1.0'); + $this->assertEquals('1.100000', $this->json->encode(1.1), 'numeric case: 1.1'); + + $this->assertEquals($this->str1_j, $this->json->encode($this->str1), "string case: {$this->str1_d}"); + $this->assertEquals($this->str2_j, $this->json->encode($this->str2), "string case: {$this->str2_d}"); + $this->assertEquals($this->str3_j, $this->json->encode($this->str3), "string case: {$this->str3_d}"); + $this->assertEquals($this->str4_j, $this->json->encode($this->str4), "string case: {$this->str4_d}"); + + $this->assertEquals($this->arr_j, $this->json->encode($this->arr), "array case: {$this->arr_d}"); + $this->assertEquals($this->obj_j, $this->json->encode($this->obj), "object case: {$this->obj_d}"); + } + + function test_from_JSON() { + $this->assertEquals(null, $this->json->decode('null'), 'type case: null'); + $this->assertEquals(true, $this->json->decode('true'), 'type case: boolean true'); + $this->assertEquals(false, $this->json->decode('false'), 'type case: boolean false'); + + $this->assertEquals(1, $this->json->decode('1'), 'numeric case: 1'); + $this->assertEquals(-1, $this->json->decode('-1'), 'numeric case: -1'); + $this->assertEquals(1.0, $this->json->decode('1.0'), 'numeric case: 1.0'); + $this->assertEquals(1.1, $this->json->decode('1.1'), 'numeric case: 1.1'); + + $this->assertEquals(11.0, $this->json->decode('1.1e1'), 'numeric case: 1.1e1'); + $this->assertEquals(11.0, $this->json->decode('1.10e+1'), 'numeric case: 1.10e+1'); + $this->assertEquals(0.11, $this->json->decode('1.1e-1'), 'numeric case: 1.1e-1'); + $this->assertEquals(-0.11, $this->json->decode('-1.1e-1'), 'numeric case: -1.1e-1'); + + $this->assertEquals($this->str1, $this->json->decode($this->str1_j), "string case: {$this->str1_d}"); + $this->assertEquals($this->str1, $this->json->decode($this->str1_j_), "string case: {$this->str1_d_}"); + $this->assertEquals($this->str2, $this->json->decode($this->str2_j), "string case: {$this->str2_d}"); + $this->assertEquals($this->str3, $this->json->decode($this->str3_j), "string case: {$this->str3_d}"); + $this->assertEquals($this->str4, $this->json->decode($this->str4_j), "string case: {$this->str4_d}"); + $this->assertEquals($this->str4, $this->json->decode($this->str4_j_), "string case: {$this->str4_d}"); + + $this->assertEquals($this->arr, $this->json->decode($this->arr_j), "array case: {$this->arr_d}"); + $this->assertEquals($this->obj, $this->json->decode($this->obj_j), "object case: {$this->obj_d}"); + } + + function test_to_then_from_JSON() { + $this->assertEquals(null, $this->json->decode($this->json->encode(null)), 'type case: null'); + $this->assertEquals(true, $this->json->decode($this->json->encode(true)), 'type case: boolean true'); + $this->assertEquals(false, $this->json->decode($this->json->encode(false)), 'type case: boolean false'); + + $this->assertEquals(1, $this->json->decode($this->json->encode(1)), 'numeric case: 1'); + $this->assertEquals(-1, $this->json->decode($this->json->encode(-1)), 'numeric case: -1'); + $this->assertEquals(1.0, $this->json->decode($this->json->encode(1.0)), 'numeric case: 1.0'); + $this->assertEquals(1.1, $this->json->decode($this->json->encode(1.1)), 'numeric case: 1.1'); + + $this->assertEquals($this->str1, $this->json->decode($this->json->encode($this->str1)), "string case: {$this->str1_d}"); + $this->assertEquals($this->str2, $this->json->decode($this->json->encode($this->str2)), "string case: {$this->str2_d}"); + $this->assertEquals($this->str3, $this->json->decode($this->json->encode($this->str3)), "string case: {$this->str3_d}"); + $this->assertEquals($this->str4, $this->json->decode($this->json->encode($this->str4)), "string case: {$this->str4_d}"); + + $this->assertEquals($this->arr, $this->json->decode($this->json->encode($this->arr)), "array case: {$this->arr_d}"); + $this->assertEquals($this->obj, $this->json->decode($this->json->encode($this->obj)), "object case: {$this->obj_d}"); + } + + function test_from_then_to_JSON() { + $this->assertEquals('null', $this->json->encode($this->json->decode('null')), 'type case: null'); + $this->assertEquals('true', $this->json->encode($this->json->decode('true')), 'type case: boolean true'); + $this->assertEquals('false', $this->json->encode($this->json->decode('false')), 'type case: boolean false'); + + $this->assertEquals('1', $this->json->encode($this->json->decode('1')), 'numeric case: 1'); + $this->assertEquals('-1', $this->json->encode($this->json->decode('-1')), 'numeric case: -1'); + $this->assertEquals('1.0', $this->json->encode($this->json->decode('1.0')), 'numeric case: 1.0'); + $this->assertEquals('1.1', $this->json->encode($this->json->decode('1.1')), 'numeric case: 1.1'); + + $this->assertEquals($this->str1_j, $this->json->encode($this->json->decode($this->str1_j)), "string case: {$this->str1_d}"); + $this->assertEquals($this->str2_j, $this->json->encode($this->json->decode($this->str2_j)), "string case: {$this->str2_d}"); + $this->assertEquals($this->str3_j, $this->json->encode($this->json->decode($this->str3_j)), "string case: {$this->str3_d}"); + $this->assertEquals($this->str4_j, $this->json->encode($this->json->decode($this->str4_j)), "string case: {$this->str4_d}"); + $this->assertEquals($this->str4_j, $this->json->encode($this->json->decode($this->str4_j_)), "string case: {$this->str4_d}"); + + $this->assertEquals($this->arr_j, $this->json->encode($this->json->decode($this->arr_j)), "array case: {$this->arr_d}"); + $this->assertEquals($this->obj_j, $this->json->encode($this->json->decode($this->obj_j)), "object case: {$this->obj_d}"); + } +} + +class JSON_AssocArray_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json_l = new JSON(JSON_LOOSE_TYPE); + $this->json_l->skipnative = true; + $this->json_s = new JSON(); + $this->json_s->skipnative = true; + + $this->arr = array('car1'=> array('color'=> 'tan', 'model' => 'sedan'), + 'car2' => array('color' => 'red', 'model' => 'sports')); + $this->arr_jo = '{"car1":{"color":"tan","model":"sedan"},"car2":{"color":"red","model":"sports"}}'; + $this->arr_d = 'associative array with nested associative arrays'; + + $this->arn = array(0=> array(0=> 'tan\\', 'model\\' => 'sedan'), 1 => array(0 => 'red', 'model' => 'sports')); + $this->arn_ja = '[{"0":"tan\\\\","model\\\\":"sedan"},{"0":"red","model":"sports"}]'; + $this->arn_d = 'associative array with nested associative arrays, and some numeric keys thrown in'; + + $this->arrs = array (1 => 'one', 2 => 'two', 5 => 'five'); + $this->arrs_jo = '{"1":"one","2":"two","5":"five"}'; + $this->arrs_d = 'associative array numeric keys which are not fully populated in a range of 0 to length-1'; + } + + function test_type() { + $this->assertEquals('array', gettype($this->json_l->decode($this->arn_ja)), "loose type should be array"); + $this->assertEquals('array', gettype($this->json_s->decode($this->arn_ja)), "strict type should be array"); + } + + function test_to_JSON() { + // both strict and loose JSON should result in an object + $this->assertEquals($this->arr_jo, $this->json_l->encode($this->arr), "array case - loose: {$this->arr_d}"); + $this->assertEquals($this->arr_jo, $this->json_s->encode($this->arr), "array case - strict: {$this->arr_d}"); + + // ...unless the input array has some numeric indeces, in which case the behavior is to degrade to a regular array + $this->assertEquals($this->arn_ja, $this->json_s->encode($this->arn), "array case - strict: {$this->arn_d}"); + + // Test a sparsely populated numerically indexed associative array + $this->assertEquals($this->arrs_jo, $this->json_l->encode($this->arrs), "sparse numeric assoc array: {$this->arrs_d}"); + } + + function test_to_then_from_JSON() { + // these tests motivated by a bug in which strings that end + // with backslashes followed by quotes were incorrectly decoded. + + foreach(array('\\"', '\\\\"', '\\"\\"', '\\""\\""', '\\\\"\\\\"') as $v) { + $this->assertEquals(array($v), $this->json_l->decode($this->json_l->encode(array($v)))); + $this->assertEquals(array('a' => $v), $this->json_l->decode($this->json_l->encode(array('a' => $v)))); + } + } +} + +class JSON_NestedArray_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json = new JSON(JSON_LOOSE_TYPE); + $this->json->skipnative = true; + + $this->str1 = '[{"this":"that"}]'; + $this->arr1 = array(array('this' => 'that')); + + $this->str2 = '{"this":["that"]}'; + $this->arr2 = array('this' => array('that')); + + $this->str3 = '{"params":[{"foo":["1"],"bar":"1"}]}'; + $this->arr3 = array('params' => array(array('foo' => array('1'), 'bar' => '1'))); + + $this->str4 = '{"0": {"foo": "bar", "baz": "winkle"}}'; + $this->arr4 = array('0' => array('foo' => 'bar', 'baz' => 'winkle')); + + $this->str5 = '{"params":[{"options": {"old": [ ], "new": {"0": {"elements": {"old": [], "new": {"0": {"elementName": "aa", "isDefault": false, "elementRank": "0", "priceAdjust": "0", "partNumber": ""}}}, "optionName": "aa", "isRequired": false, "optionDesc": null}}}}]}'; + $this->arr5 = array ( + 'params' => array ( + 0 => array ( + 'options' => + array ( + 'old' => array(), + 'new' => array ( + 0 => array ( + 'elements' => array ( + 'old' => array(), + 'new' => array ( + 0 => array ( + 'elementName' => 'aa', + 'isDefault' => false, + 'elementRank' => '0', + 'priceAdjust' => '0', + 'partNumber' => '', + ), + ), + ), + 'optionName' => 'aa', + 'isRequired' => false, + 'optionDesc' => NULL, + ), + ), + ), + ), + ), + ); + } + + function test_type() { + $this->assertEquals('array', gettype($this->json->decode($this->str1)), "loose type should be array"); + $this->assertEquals('array', gettype($this->json->decode($this->str2)), "loose type should be array"); + $this->assertEquals('array', gettype($this->json->decode($this->str3)), "loose type should be array"); + } + + function test_from_JSON() { + $this->assertEquals($this->arr1, $this->json->decode($this->str1), "simple compactly-nested array"); + $this->assertEquals($this->arr2, $this->json->decode($this->str2), "simple compactly-nested array"); + $this->assertEquals($this->arr3, $this->json->decode($this->str3), "complex compactly nested array"); + $this->assertEquals($this->arr4, $this->json->decode($this->str4), "complex compactly nested array"); + $this->assertEquals($this->arr5, $this->json->decode($this->str5), "super complex compactly nested array"); + } + + function _test_from_JSON() { + $super = '{"params":[{"options": {"old": {}, "new": {"0": {"elements": {"old": {}, "new": {"0": {"elementName": "aa", "isDefault": false, "elementRank": "0", "priceAdjust": "0", "partNumber": ""}}}, "optionName": "aa", "isRequired": false, "optionDesc": ""}}}}]}'; + print("trying {$super}...\n"); + print var_export($this->json->decode($super)); + } +} + +class JSON_Object_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json_l = new JSON(JSON_LOOSE_TYPE); + $this->json_l->skipnative = true; + $this->json_s = new JSON(); + $this->json_s->skipnative = true; + + $this->obj_j = '{"a_string":"\"he\":llo}:{world","an_array":[1,2,3],"obj":{"a_number":123}}'; + + $this->obj1 = new stdClass(); + $this->obj1->car1 = new stdClass(); + $this->obj1->car1->color = 'tan'; + $this->obj1->car1->model = 'sedan'; + $this->obj1->car2 = new stdClass(); + $this->obj1->car2->color = 'red'; + $this->obj1->car2->model = 'sports'; + $this->obj1_j = '{"car1":{"color":"tan","model":"sedan"},"car2":{"color":"red","model":"sports"}}'; + $this->obj1_d = 'Object with nested objects'; + } + + function test_type() { + $this->assertEquals('object', gettype($this->json_s->decode($this->obj_j)), "checking whether decoded type is object"); + $this->assertEquals('array', gettype($this->json_l->decode($this->obj_j)), "checking whether decoded type is array"); + } + + function test_to_JSON() { + $this->assertEquals($this->obj1_j, $this->json_s->encode($this->obj1), "object - strict: {$this->obj1_d}"); + $this->assertEquals($this->obj1_j, $this->json_l->encode($this->obj1), "object - loose: {$this->obj1_d}"); + } + + function test_from_then_to_JSON() { + $this->assertEquals($this->obj_j, $this->json_s->encode($this->json_s->decode($this->obj_j)), "object case"); + $this->assertEquals($this->obj_j, $this->json_l->encode($this->json_l->decode($this->obj_j)), "array case"); + } +} + +class JSON_Spaces_Comments_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json = new JSON(JSON_LOOSE_TYPE); + $this->json->skipnative = true; + + $this->obj_j = '{"a_string":"\"he\":llo}:{world","an_array":[1,2,3],"obj":{"a_number":123}}'; + + $this->obj_js = '{"a_string": "\"he\":llo}:{world", + "an_array":[1, 2, 3], + "obj": {"a_number":123}}'; + + $this->obj_jc1 = '{"a_string": "\"he\":llo}:{world", + // here is a comment, hoorah + "an_array":[1, 2, 3], + "obj": {"a_number":123}}'; + + $this->obj_jc2 = '/* this here is the sneetch */ "the sneetch" + // this has been the sneetch.'; + + $this->obj_jc3 = '{"a_string": "\"he\":llo}:{world", + /* here is a comment, hoorah */ + "an_array":[1, 2, 3 /* and here is another */], + "obj": {"a_number":123}}'; + + $this->obj_jc4 = '{\'a_string\': "\"he\":llo}:{world", + /* here is a comment, hoorah */ + \'an_array\':[1, 2, 3 /* and here is another */], + "obj": {"a_number":123}}'; + } + + function test_spaces() { + $this->assertEquals($this->json->decode($this->obj_j), $this->json->decode($this->obj_js), "checking whether notation with spaces works"); + } + + function test_comments() { + $this->assertEquals($this->json->decode($this->obj_j), $this->json->decode($this->obj_jc1), "checking whether notation with single line comments works"); + $this->assertEquals('the sneetch', $this->json->decode($this->obj_jc2), "checking whether notation with multiline comments works"); + $this->assertEquals($this->json->decode($this->obj_j), $this->json->decode($this->obj_jc3), "checking whether notation with multiline comments works"); + $this->assertEquals($this->json->decode($this->obj_j), $this->json->decode($this->obj_jc4), "checking whether notation with single-quotes and multiline comments works"); + } +} + +class JSON_Empties_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json_l = new JSON(JSON_LOOSE_TYPE); + $this->json_l->skipnative = true; + $this->json_l->skipnative = true; + $this->json_s = new JSON(); + $this->json_s->skipnative = true; + + $this->obj0_j = '{}'; + $this->arr0_j = '[]'; + + $this->obj1_j = '{ }'; + $this->arr1_j = '[ ]'; + + $this->obj2_j = '{ /* comment inside */ }'; + $this->arr2_j = '[ /* comment inside */ ]'; + } + + function test_type() { + $this->assertEquals('array', gettype($this->json_l->decode($this->arr0_j)), "should be array"); + $this->assertEquals('object', gettype($this->json_s->decode($this->obj0_j)), "should be object"); + + $this->assertEquals(0, count($this->json_l->decode($this->arr0_j)), "should be empty array"); + $this->assertEquals(0, count(get_object_vars($this->json_s->decode($this->obj0_j))), "should be empty object"); + + $this->assertEquals('array', gettype($this->json_l->decode($this->arr1_j)), "should be array, even with space"); + $this->assertEquals('object', gettype($this->json_s->decode($this->obj1_j)), "should be object, even with space"); + + $this->assertEquals(0, count($this->json_l->decode($this->arr1_j)), "should be empty array, even with space"); + $this->assertEquals(0, count(get_object_vars($this->json_s->decode($this->obj1_j))), "should be empty object, even with space"); + + $this->assertEquals('array', gettype($this->json_l->decode($this->arr2_j)), "should be array, despite comment"); + $this->assertEquals('object', gettype($this->json_s->decode($this->obj2_j)), "should be object, despite comment"); + + $this->assertEquals(0, count($this->json_l->decode($this->arr2_j)), "should be empty array, despite comment"); + $this->assertEquals(0, count(get_object_vars($this->json_s->decode($this->obj2_j))), "should be empty object, despite commentt"); + } +} + +class JSON_UnquotedKeys_TestCase extends DokuWikiTest { + + function setUp() { + parent::setUp(); + + $this->json = new JSON(JSON_LOOSE_TYPE); + $this->json->skipnative = true; + + $this->arn = array(0=> array(0=> 'tan', 'model' => 'sedan'), 1 => array(0 => 'red', 'model' => 'sports')); + $this->arn_ja = '[{0:"tan","model":"sedan"},{"0":"red",model:"sports"}]'; + $this->arn_d = 'associative array with unquoted keys, nested associative arrays, and some numeric keys thrown in'; + + $this->arrs = array (1 => 'one', 2 => 'two', 5 => 'fi"ve'); + $this->arrs_jo = '{"1":"one",2:"two","5":\'fi"ve\'}'; + $this->arrs_d = 'associative array with unquoted keys, single-quoted values, numeric keys which are not fully populated in a range of 0 to length-1'; + } + + function test_from_JSON() { + // ...unless the input array has some numeric indeces, in which case the behavior is to degrade to a regular array + $this->assertEquals($this->arn, $this->json->decode($this->arn_ja), "array case - strict: {$this->arn_d}"); + + // Test a sparsely populated numerically indexed associative array + $this->assertEquals($this->arrs, $this->json->decode($this->arrs_jo), "sparse numeric assoc array: {$this->arrs_d}"); + } +} + diff --git a/_test/tests/inc/mail_isvalid.test.php b/_test/tests/inc/mail_isvalid.test.php new file mode 100644 index 000000000..25e6b1f7b --- /dev/null +++ b/_test/tests/inc/mail_isvalid.test.php @@ -0,0 +1,80 @@ +<?php + +class mail_isvalid extends DokuWikiTest { + + + function test1(){ + $tests = array(); + + // our own tests + $tests[] = array('bugs@php.net',true); + $tests[] = array('~someone@somewhere.com',true); + $tests[] = array('no+body.here@somewhere.com.au',true); + $tests[] = array('username+tag@domain.com',true); // FS#1447 + $tests[] = array("rfc2822+allthesechars_#*!'`/-={}are.legal@somewhere.com.au",true); + $tests[] = array('_foo@test.com',true); // FS#1049 + $tests[] = array('bugs@php.net1',true); // new ICAN rulez seem to allow this + $tests[] = array('.bugs@php.net1',false); + $tests[] = array('bu..gs@php.net',false); + $tests[] = array('bugs@php..net',false); + $tests[] = array('bugs@.php.net',false); + $tests[] = array('bugs@php.net.',false); + $tests[] = array('bu(g)s@php.net1',false); + $tests[] = array('bu[g]s@php.net1',false); + $tests[] = array('somebody@somewhere.museum',true); + $tests[] = array('somebody@somewhere.travel',true); + $tests[] = array('root@[2010:fb:fdac::311:2101]',true); + $tests[] = array('test@example', true); // we allow local addresses + + // tests from http://code.google.com/p/php-email-address-validation/ below + + $tests[] = array('test@example.com', true); + $tests[] = array('TEST@example.com', true); + $tests[] = array('1234567890@example.com', true); + $tests[] = array('test+test@example.com', true); + $tests[] = array('test-test@example.com', true); + $tests[] = array('t*est@example.com', true); + $tests[] = array('+1~1+@example.com', true); + $tests[] = array('{_test_}@example.com', true); + $tests[] = array('"[[ test ]]"@example.com', true); + $tests[] = array('test.test@example.com', true); + $tests[] = array('test."test"@example.com', true); + $tests[] = array('"test@test"@example.com', true); + $tests[] = array('test@123.123.123.123', true); + $tests[] = array('test@[123.123.123.123]', true); + $tests[] = array('test@example.example.com', true); + $tests[] = array('test@example.example.example.com', true); + + $tests[] = array('test.example.com', false); + $tests[] = array('test.@example.com', false); + $tests[] = array('test..test@example.com', false); + $tests[] = array('.test@example.com', false); + $tests[] = array('test@test@example.com', false); + $tests[] = array('test@@example.com', false); + $tests[] = array('-- test --@example.com', false); // No spaces allowed in local part + $tests[] = array('[test]@example.com', false); // Square brackets only allowed within quotes + $tests[] = array('"test\test"@example.com', false); // Quotes cannot contain backslash + $tests[] = array('"test"test"@example.com', false); // Quotes cannot be nested + $tests[] = array('()[]\;:,<>@example.com', false); // Disallowed Characters + $tests[] = array('test@.', false); + $tests[] = array('test@example.', false); + $tests[] = array('test@.org', false); + $tests[] = array('12345678901234567890123456789012345678901234567890123456789012345@example.com', false); // 64 characters is maximum length for local part. This is 65. + $tests[] = array('test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com', false); // 255 characters is maximum length for domain. This is 256. + $tests[] = array('test@[123.123.123.123', false); + $tests[] = array('test@123.123.123.123]', false); + + + foreach($tests as $test){ + $info = 'Testing '.$test[0]; + + if($test[1]){ + $this->assertTrue((bool) mail_isvalid($test[0]), $info); + }else{ + $this->assertFalse((bool) mail_isvalid($test[0]), $info); + } + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/mail_quoted_printable_encode.test.php b/_test/tests/inc/mail_quoted_printable_encode.test.php new file mode 100644 index 000000000..52ddf6228 --- /dev/null +++ b/_test/tests/inc/mail_quoted_printable_encode.test.php @@ -0,0 +1,42 @@ +<?php + +class mail_quotedprintable_encode extends DokuWikiTest { + + function test_simple(){ + $in = 'hello'; + $out = 'hello'; + $this->assertEquals(mail_quotedprintable_encode($in),$out); + } + + function test_spaceend(){ + $in = "hello \nhello"; + $out = "hello=20\nhello"; + $this->assertEquals(mail_quotedprintable_encode($in),$out); + } + + function test_german_utf8(){ + $in = 'hello überlänge'; + $out = 'hello =C3=BCberl=C3=A4nge'; + $this->assertEquals(mail_quotedprintable_encode($in),$out); + } + + function test_wrap(){ + $in = '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'; + $out = "123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234=\n56789 123456789"; + $this->assertEquals(mail_quotedprintable_encode($in,74),$out); + } + + function test_nowrap(){ + $in = '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'; + $out = '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'; + $this->assertEquals(mail_quotedprintable_encode($in,0),$out); + } + + function test_russian_utf8(){ + $in = 'Ваш пароль для системы Доку Вики'; + $out = '=D0=92=D0=B0=D1=88 =D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8C =D0=B4=D0=BB=D1=8F =D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=8B =D0=94=D0=BE=D0=BA=D1=83 =D0=92=D0=B8=D0=BA=D0=B8'; + $this->assertEquals(mail_quotedprintable_encode($in,0),$out); + } +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/mailer.test.php b/_test/tests/inc/mailer.test.php new file mode 100644 index 000000000..b2c74a257 --- /dev/null +++ b/_test/tests/inc/mailer.test.php @@ -0,0 +1,94 @@ +<?php + +/** + * Extends the mailer class to expose internal variables for testing + */ +class TestMailer extends Mailer { + public function prop($name){ + return $this->$name; + } +} + +class mailer_test extends DokuWikiTest { + + + function test_userheader(){ + $mail = new TestMailer(); + $headers = $mail->prop('headers'); + $this->assertArrayNotHasKey('X-Dokuwiki-User',$headers); + + $_SERVER['REMOTE_USER'] = 'andi'; + $mail = new TestMailer(); + $headers = $mail->prop('headers'); + $this->assertArrayHasKey('X-Dokuwiki-User',$headers); + } + + function test_setHeader(){ + $mail = new TestMailer(); + + // check existance of default headers + $headers = $mail->prop('headers'); + $this->assertArrayHasKey('X-Mailer',$headers); + $this->assertArrayHasKey('X-Dokuwiki-Title',$headers); + $this->assertArrayHasKey('X-Dokuwiki-Server',$headers); + $this->assertArrayHasKey('X-Auto-Response-Suppress',$headers); + $this->assertArrayHasKey('List-Id',$headers); + + // set a bunch of test headers + $mail->setHeader('test-header','bla'); + $mail->setHeader('to','A valid ASCII name <test@example.com>'); + $mail->setHeader('from',"Thös ne\needs\x00serious cleaning$§%."); + $mail->setHeader('bad',"Thös ne\needs\x00serious cleaning$§%.",false); + $mail->setHeader("weird\n*+\x00foo.-_@bar?",'now clean'); + + // are they set? + $headers = $mail->prop('headers'); + $this->assertArrayHasKey('Test-Header',$headers); + $this->assertEquals('bla',$headers['Test-Header']); + $this->assertArrayHasKey('To',$headers); + $this->assertEquals('A valid ASCII name <test@example.com>',$headers['To']); + $this->assertArrayHasKey('From',$headers); + $this->assertEquals('Ths neeedsserious cleaning.',$headers['From']); + $this->assertArrayHasKey('Bad',$headers); + $this->assertEquals("Thös ne\needs\x00serious cleaning$§%.",$headers['Bad']); + $this->assertArrayHasKey('Weird+foo.-_@bar',$headers); + + // unset a header again + $mail->setHeader('test-header',''); + $headers = $mail->prop('headers'); + $this->assertArrayNotHasKey('Test-Header',$headers); + } + + function test_simplemail(){ + global $conf; + $conf['htmlmail'] = 0; + $mail = new TestMailer(); + $mail->to('test@example.com'); + $mail->setBody('A test mail in ASCII'); + + $dump = $mail->dump(); + $this->assertNotRegexp('/Content-Type: multipart/',$dump); + $this->assertRegexp('#Content-Type: text/plain; charset=UTF-8#',$dump); + $this->assertRegexp('/'.base64_encode('A test mail in ASCII').'/',$dump); + + $conf['htmlmail'] = 1; + } + + function test_replacements(){ + $mail = new TestMailer(); + + $replacements = array( '@DATE@','@BROWSER@','@IPADDRESS@','@HOSTNAME@', + '@TITLE@','@DOKUWIKIURL@','@USER@','@NAME@','@MAIL@'); + $mail->setBody('A test mail in with replacements '.join(' ',$replacements)); + + $text = $mail->prop('text'); + $html = $mail->prop('html'); + + foreach($replacements as $repl){ + $this->assertNotRegexp("/$repl/",$text,"$repl replacement still in text"); + $this->assertNotRegexp("/$repl/",$html,"$repl replacement still in html"); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/pageutils_clean_id.test.php b/_test/tests/inc/pageutils_clean_id.test.php new file mode 100644 index 000000000..9c5781b24 --- /dev/null +++ b/_test/tests/inc/pageutils_clean_id.test.php @@ -0,0 +1,155 @@ +<?php + +class init_clean_id_test extends DokuWikiTest { + + function teardown() { + global $cache_cleanid; + $cache_cleanid = array(); + } + + function test_default(){ + // we test multiple cases here + // format: $id, $ascii, $correct_output + $tests = array(); + + // set dokuwiki defaults + global $conf; + $conf['sepchar'] = '_'; + $conf['deaccent'] = 1; + + $tests[] = array('page',false,'page'); + $tests[] = array('pa_ge',false,'pa_ge'); + $tests[] = array('pa%ge',false,'pa_ge'); + $tests[] = array('pa#ge',false,'pa_ge'); + $tests[] = array('pàge',false,'page'); + $tests[] = array('pagĖ',false,'page'); + $tests[] = array('pa$%^*#ge',false,'pa_ge'); + $tests[] = array('*page*',false,'page'); + $tests[] = array('ښ',false,'ښ'); + $tests[] = array('päge',false,'paege'); + $tests[] = array('foo bar',false,'foo_bar'); + $tests[] = array('PÄGÖ',false,'paegoe'); + $tests[] = array('Faß','false','fass'); + $tests[] = array('ښ侧化并곦 β',false,'ښ侧化并곦_β'); + $tests[] = array('page:page',false,'page:page'); + $tests[] = array('page;page',false,'page:page'); + $tests[] = array('page:page 1.2',false,'page:page_1.2'); + + $tests[] = array('page._#!','false','page'); + $tests[] = array('._#!page','false','page'); + $tests[] = array('page._#!page','false','page._page'); + $tests[] = array('ns._#!:page','false','ns:page'); + $tests[] = array('ns:._#!page','false','ns:page'); + $tests[] = array('ns._#!ns:page','false','ns._ns:page'); + $tests[] = array('ns_:page',false,'ns:page'); + $tests[] = array('page...page','false','page...page'); + + $conf['useslash'] = 0; + $tests[] = array('page/page',false,'page_page'); + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + + $conf['useslash'] = 1; + $tests = array(); + $tests[] = array('page/page',false,'page:page'); + + $this->teardown(); + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + } + + function test_sepchar(){ + // we test multiple cases here + // format: $id, $ascii, $correct_output + $tests = array(); + + global $conf; + $conf['sepchar'] = '-'; + $conf['deaccent'] = 1; + + $tests[] = array('pa-ge',false,'pa-ge'); + $tests[] = array('pa%ge',false,'pa-ge'); + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + } + + function test_deaccent_keep(){ + // we test multiple cases here + // format: $id, $ascii, $correct_output + $tests = array(); + + global $conf; + $conf['sepchar'] = '_'; + $conf['deaccent'] = 0; + + $tests[] = array('pàge',false,'pàge'); + $tests[] = array('pagĖ',false,'pagė'); + $tests[] = array('pagĒēĔĕĖėĘęĚě',false,'pagēēĕĕėėęęěě'); + $tests[] = array('ښ',false,'ښ'); + $tests[] = array('ښ侧化并곦ঝഈβ',false,'ښ侧化并곦ঝഈβ'); + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + } + + function test_deaccent_romanize(){ + // we test multiple cases here + // format: $id, $ascii, $correct_output + $tests = array(); + + global $conf; + $conf['sepchar'] = '_'; + $conf['deaccent'] = 2; + + $tests[] = array('pàge',false,'page'); + $tests[] = array('pagĖ',false,'page'); + $tests[] = array('pagĒēĔĕĖėĘęĚě',false,'pageeeeeeeeee'); + $tests[] = array('ښ',false,'ښ'); + $tests[] = array('ښ侧化并곦ঝഈβ',false,'ښ侧化并곦ঝഈβ'); + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + } + + function test_deaccent_ascii(){ + // we test multiple cases here + // format: $id, $ascii, $correct_output + $tests = array(); + + global $conf; + $conf['sepchar'] = '_'; + $conf['deaccent'] = 0; + + $tests[] = array('pàge',true,'page'); + $tests[] = array('pagĖ',true,'page'); + $tests[] = array('pagĒēĔĕĖėĘęĚě',true,'pageeeeeeeeee'); + $tests[] = array('ښ',true,''); + $tests[] = array('ښ侧化并곦ঝഈβ',true,''); + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + + $conf['deaccent'] = 1; + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + + $conf['deaccent'] = 2; + + foreach($tests as $test){ + $this->assertEquals(cleanID($test[0],$test[1]),$test[2]); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/pageutils_getid.test.php b/_test/tests/inc/pageutils_getid.test.php new file mode 100644 index 000000000..0fcd58666 --- /dev/null +++ b/_test/tests/inc/pageutils_getid.test.php @@ -0,0 +1,106 @@ +<?php + +class init_getID_test extends DokuWikiTest { + + /** + * fetch media files with basedir and urlrewrite=2 + * + * data provided by Jan Decaluwe <jan@jandecaluwe.com> + */ + function test1(){ + global $conf; + $conf['basedir'] = '//'; + $conf['userewrite'] = 2; + $conf['deaccent'] = 0; // the default (1) gives me strange exceptions + + + $_SERVER['SCRIPT_FILENAME'] = '/lib/exe/fetch.php'; + $_SERVER['REQUEST_URI'] = '/lib/exe/fetch.php/myhdl-0.5dev1.tar.gz?id=snapshots&cache=cache'; + + $this->assertEquals(getID('media'), 'myhdl-0.5dev1.tar.gz'); + } + + + /** + * getID with internal mediafile, urlrewrite=2, no basedir set, apache, mod_php + */ + function test2(){ + global $conf; + $conf['basedir'] = ''; + $conf['userewrite'] = '2'; + $conf['baseurl'] = ''; + $conf['useslash'] = '1'; + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/lib/exe/detail.php'; + $_SERVER['PHP_SELF'] = '/dokuwiki/lib/exe/detail.php/wiki/discussion/button-dw.png'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/lib/exe/detail.php/wiki/discussion/button-dw.png?id=test&debug=1'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/lib/exe/detail.php'; + $_SERVER['PATH_INFO'] = '/wiki/discussion/button-dw.png'; + $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki/discussion/button-dw.png'; + + $this->assertEquals(getID('media',true), 'wiki:discussion:button-dw.png'); + $this->assertEquals(getID('media',false), 'wiki/discussion/button-dw.png'); + } + + /** + * getID with given id in url and userewrite=2, no basedir set, dokuwiki not in document root. + */ + function test3() { + global $conf; + $conf['basedir'] = ''; + $conf['userewrite'] = '2'; + $conf['baseurl'] = ''; + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['SCRIPT_FILENAME'] = '/usr/share/dokuwiki/doku.php'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php/wiki:dokuwiki'; + $_SERVER['PATH_INFO'] = '/wiki:dokuwiki'; + $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki:dokuwiki'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php/wiki:dokuwiki'; + + $this->assertEquals(getID(), 'wiki:dokuwiki'); + } + + /** + * getID with given id in url and userewrite=2, no basedir set, Apache and CGI. + */ + function test4() { + global $conf; + $conf['basedir'] = ''; + $conf['userewrite'] = '2'; + $conf['baseurl'] = ''; + $conf['useslash'] = '1'; + + $_SERVER['DOCUMENT_ROOT'] = '/var/www/vhosts/example.com/htdocs'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/vhosts/example.com/htdocs/doku.php'; + $_SERVER['SCRIPT_NAME'] = '/doku.php'; + $_SERVER['REQUEST_URI'] = '/doku.php/wiki/dokuwiki'; + $_SERVER['PATH_INFO'] = '/wiki/dokuwiki'; + $_SERVER['PATH_TRANSLATED'] = '/var/www/vhosts/example.com/htdocs/doku.php'; + $_SERVER['PHP_SELF'] = '/doku.php/wiki/dokuwiki'; + + $this->assertEquals(getID(), 'wiki:dokuwiki'); + } + + /** + * getID with given id / in url and userewrite=2, no basedir set, Apache and CGI. + */ + function test5() { + global $conf; + $conf['basedir'] = ''; + $conf['userewrite'] = '2'; + $conf['baseurl'] = ''; + $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; + $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; + $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; + $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php/?do=debug'; + $_SERVER['PATH_INFO'] = '/'; + $_SERVER['PATH_TRANSLATED'] = '/var/www/index.html'; + $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php/'; + + $this->assertEquals(getID(), cleanID($conf['start'])); + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/pageutils_resolve_id.test.php b/_test/tests/inc/pageutils_resolve_id.test.php new file mode 100644 index 000000000..23a2405d4 --- /dev/null +++ b/_test/tests/inc/pageutils_resolve_id.test.php @@ -0,0 +1,43 @@ +<?php + +class init_resolve_id_test extends DokuWikiTest { + + + function test1(){ + // we test multiple cases here + // format: $ns, $page, $output + $tests = array(); + + // relative current in root + $tests[] = array('','page','page'); + $tests[] = array('','.page','page'); + $tests[] = array('','.:page','page'); + + // relative current in namespace + $tests[] = array('lev1:lev2','page','lev1:lev2:page'); + $tests[] = array('lev1:lev2','.page','lev1:lev2:page'); + $tests[] = array('lev1:lev2','.:page','lev1:lev2:page'); + + // relative upper in root + $tests[] = array('','..page','page'); + $tests[] = array('','..:page','page'); + + // relative upper in namespace + $tests[] = array('lev1:lev2','..page','lev1:page'); + $tests[] = array('lev1:lev2','..:page','lev1:page'); + $tests[] = array('lev1:lev2','..:..:page','page'); + $tests[] = array('lev1:lev2','..:..:..:page','page'); + + // strange and broken ones + $tests[] = array('lev1:lev2','....:....:page','lev1:lev2:page'); + $tests[] = array('lev1:lev2','..:..:lev3:page','lev3:page'); + $tests[] = array('lev1:lev2','..:..:lev3:..:page','page'); + $tests[] = array('lev1:lev2','..:..:lev3:..:page:....:...','page'); + + foreach($tests as $test){ + $this->assertEquals(resolve_id($test[0],$test[1]),$test[2]); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/pageutils_resolve_pageid.test.php b/_test/tests/inc/pageutils_resolve_pageid.test.php new file mode 100644 index 000000000..41a441658 --- /dev/null +++ b/_test/tests/inc/pageutils_resolve_pageid.test.php @@ -0,0 +1,78 @@ +<?php + +class init_resolve_pageid_test extends DokuWikiTest { + + + function test1(){ + global $conf; + + // we test multiple cases here + // format: $ns, $page, $output + $tests = array(); + + // relative current in root + $tests[] = array('','page','page'); + $tests[] = array('','.page','page'); + $tests[] = array('','.:page','page'); + + // relative current in namespace + $tests[] = array('lev1:lev2','page','lev1:lev2:page'); + $tests[] = array('lev1:lev2','.page','lev1:lev2:page'); + $tests[] = array('lev1:lev2','.:page','lev1:lev2:page'); + + // relative upper in root + $tests[] = array('','..page','page'); + $tests[] = array('','..:page','page'); + + // relative upper in namespace + $tests[] = array('lev1:lev2','..page','lev1:page'); + $tests[] = array('lev1:lev2','..:page','lev1:page'); + $tests[] = array('lev1:lev2','..:..:page','page'); + $tests[] = array('lev1:lev2','..:..:..:page','page'); + + // strange and broken ones + $tests[] = array('lev1:lev2','....:....:page','lev1:lev2:page'); + $tests[] = array('lev1:lev2','..:..:lev3:page','lev3:page'); + $tests[] = array('lev1:lev2','..:..:lev3:..:page','page'); + $tests[] = array('lev1:lev2','..:..:lev3:..:page:....:...','page'); + + // now some tests with existing and none existing files + $conf['start'] = 'start'; + + $tests[] = array('','.:','start'); + $tests[] = array('foo','.:','foo:start'); + $tests[] = array('','foo:','foo:start'); + $tests[] = array('foo','foo:','foo:start'); + + // empty $page + global $ID; + $ID = 'my:space'; + $tests[] = array('my', '', 'my:space'); + + foreach($tests as $test){ + $page = $test[1]; + resolve_pageid($test[0],$page,$foo); + + $this->assertEquals($page,$test[2]); + } + } + + /** + * Empty page on homepage should resolve to start page + */ + function test_resolve_pageid_empty_homepage() { + global $ID; + $ID = ''; + global $conf; + $conf['start'] = 'someverystrangestartname'; + + $ns = ''; + $page = ''; + $exist = true; + + resolve_pageid($ns, $page, $exist); + $this->assertEquals($page, $conf['start']); + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/parser/lexer.test.php b/_test/tests/inc/parser/lexer.test.php new file mode 100644 index 000000000..d0965a13e --- /dev/null +++ b/_test/tests/inc/parser/lexer.test.php @@ -0,0 +1,531 @@ +<?php +/** +* @version $Id: lexer.todo.php,v 1.2 2005/03/25 21:00:22 harryf Exp $ +* @package Doku +* @subpackage Tests +*/ + +/** +* Includes +*/ +require_once DOKU_INC . 'inc/parser/lexer.php'; + +/** +* @package Doku +* @subpackage Tests +*/ +class TestOfLexerParallelRegex extends DokuWikiTest { + + function testNoPatterns() { + $regex = new Doku_LexerParallelRegex(false); + $this->assertFalse($regex->match("Hello", $match)); + $this->assertEquals($match, ""); + } + function testNoSubject() { + $regex = new Doku_LexerParallelRegex(false); + $regex->addPattern(".*"); + $this->assertTrue($regex->match("", $match)); + $this->assertEquals($match, ""); + } + function testMatchAll() { + $regex = new Doku_LexerParallelRegex(false); + $regex->addPattern(".*"); + $this->assertTrue($regex->match("Hello", $match)); + $this->assertEquals($match, "Hello"); + } + function testCaseSensitive() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("abc"); + $this->assertTrue($regex->match("abcdef", $match)); + $this->assertEquals($match, "abc"); + $this->assertTrue($regex->match("AAABCabcdef", $match)); + $this->assertEquals($match, "abc"); + } + function testCaseInsensitive() { + $regex = new Doku_LexerParallelRegex(false); + $regex->addPattern("abc"); + $this->assertTrue($regex->match("abcdef", $match)); + $this->assertEquals($match, "abc"); + $this->assertTrue($regex->match("AAABCabcdef", $match)); + $this->assertEquals($match, "ABC"); + } + function testMatchMultiple() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("abc"); + $regex->addPattern("ABC"); + $this->assertTrue($regex->match("abcdef", $match)); + $this->assertEquals($match, "abc"); + $this->assertTrue($regex->match("AAABCabcdef", $match)); + $this->assertEquals($match, "ABC"); + $this->assertFalse($regex->match("Hello", $match)); + } + function testPatternLabels() { + $regex = new Doku_LexerParallelRegex(false); + $regex->addPattern("abc", "letter"); + $regex->addPattern("123", "number"); + $this->assertEquals($regex->match("abcdef", $match), "letter"); + $this->assertEquals($match, "abc"); + $this->assertEquals($regex->match("0123456789", $match), "number"); + $this->assertEquals($match, "123"); + } + function testMatchMultipleWithLookaheadNot() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("abc"); + $regex->addPattern("ABC"); + $regex->addPattern("a(?!\n).{1}"); + $this->assertTrue($regex->match("abcdef", $match)); + $this->assertEquals($match, "abc"); + $this->assertTrue($regex->match("AAABCabcdef", $match)); + $this->assertEquals($match, "ABC"); + $this->assertTrue($regex->match("a\nab", $match)); + $this->assertEquals($match, "ab"); + $this->assertFalse($regex->match("Hello", $match)); + } + function testMatchSetOptionCaseless() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("a(?i)b(?i)c"); + $this->assertTrue($regex->match("aBc", $match)); + $this->assertEquals($match, "aBc"); + } + function testMatchSetOptionUngreedy() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("(?U)\w+"); + $this->assertTrue($regex->match("aaaaaa", $match)); + $this->assertEquals($match, "a"); + } + function testMatchLookaheadEqual() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("\w(?=c)"); + $this->assertTrue($regex->match("xbyczd", $match)); + $this->assertEquals($match, "y"); + } + function testMatchLookaheadNot() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("\w(?!b|c)"); + $this->assertTrue($regex->match("xbyczd", $match)); + $this->assertEquals($match, "b"); + } + function testMatchLookbehindEqual() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("(?<=c)\w"); + $this->assertTrue($regex->match("xbyczd", $match)); + $this->assertEquals($match, "z"); + } + function testMatchLookbehindNot() { + $regex = new Doku_LexerParallelRegex(true); + $regex->addPattern("(?<!\A|x|b)\w"); + $this->assertTrue($regex->match("xbyczd", $match)); + $this->assertEquals($match, "c"); + } +} + + +class TestOfLexerStateStack extends DokuWikiTest { + function testStartState() { + $stack = new Doku_LexerStateStack("one"); + $this->assertEquals($stack->getCurrent(), "one"); + } + function testExhaustion() { + $stack = new Doku_LexerStateStack("one"); + $this->assertFalse($stack->leave()); + } + function testStateMoves() { + $stack = new Doku_LexerStateStack("one"); + $stack->enter("two"); + $this->assertEquals($stack->getCurrent(), "two"); + $stack->enter("three"); + $this->assertEquals($stack->getCurrent(), "three"); + $this->assertTrue($stack->leave()); + $this->assertEquals($stack->getCurrent(), "two"); + $stack->enter("third"); + $this->assertEquals($stack->getCurrent(), "third"); + $this->assertTrue($stack->leave()); + $this->assertTrue($stack->leave()); + $this->assertEquals($stack->getCurrent(), "one"); + } +} + +class TestParser { + function TestParser() { + } + function accept() { + } + function a() { + } + function b() { + } +} + +class TestOfLexer extends DokuWikiTest { + function testNoPatterns() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->never())->method('accept'); + $lexer = new Doku_Lexer($handler); + $this->assertFalse($lexer->parse("abcdef")); + } + function testEmptyPage() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->never())->method('accept'); + $lexer = new Doku_Lexer($handler); + $lexer->addPattern("a+"); + $this->assertTrue($lexer->parse("")); + } + function testSinglePattern() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('accept') + ->with("aaa", DOKU_LEXER_MATCHED, 0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('accept') + ->with("x", DOKU_LEXER_UNMATCHED, 3)->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('accept') + ->with("a", DOKU_LEXER_MATCHED, 4)->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('accept') + ->with("yyy", DOKU_LEXER_UNMATCHED, 5)->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('accept') + ->with("a", DOKU_LEXER_MATCHED, 8)->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('accept') + ->with("x", DOKU_LEXER_UNMATCHED, 9)->will($this->returnValue(true)); + $handler->expects($this->at(6))->method('accept') + ->with("aaa", DOKU_LEXER_MATCHED, 10)->will($this->returnValue(true)); + $handler->expects($this->at(7))->method('accept') + ->with("z", DOKU_LEXER_UNMATCHED, 13)->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler); + $lexer->addPattern("a+"); + $this->assertTrue($lexer->parse("aaaxayyyaxaaaz")); + } + function testMultiplePattern() { + $handler = $this->getMock('TestParser', array('accept')); + $target = array("a", "b", "a", "bb", "x", "b", "a", "xxxxxx", "a", "x"); + $positions = array(0, 1, 2, 3, 5, 6, 7, 8, 14, 15); + for ($i = 0; $i < count($target); $i++) { + $handler->expects($this->at($i))->method('accept') + ->with($target[$i], $this->anything(), $positions[$i])->will($this->returnValue(true)); + } + $lexer = new Doku_Lexer($handler); + $lexer->addPattern("a+"); + $lexer->addPattern("b+"); + $this->assertTrue($lexer->parse("ababbxbaxxxxxxax")); + } +} + +class TestOfLexerModes extends DokuWikiTest { + function testIsolatedPattern() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('a') + ->with("a", DOKU_LEXER_MATCHED,0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,1)->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,2)->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('a') + ->with("bxb", DOKU_LEXER_UNMATCHED,4)->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('a') + ->with("aaa", DOKU_LEXER_MATCHED,7)->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('a') + ->with("x", DOKU_LEXER_UNMATCHED,10)->will($this->returnValue(true)); + $handler->expects($this->at(6))->method('a') + ->with("aaaa", DOKU_LEXER_MATCHED,11)->will($this->returnValue(true)); + $handler->expects($this->at(7))->method('a') + ->with("x", DOKU_LEXER_UNMATCHED,15)->will($this->returnValue(true)); + $lexer = new Doku_Lexer($handler, "a"); + $lexer->addPattern("a+", "a"); + $lexer->addPattern("b+", "b"); + $this->assertTrue($lexer->parse("abaabxbaaaxaaaax")); + } + function testModeChange() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('a') + ->with("a", DOKU_LEXER_MATCHED,0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,1)->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,2)->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,4)->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('a') + ->with("aaa", DOKU_LEXER_MATCHED,5)->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('b') + ->with(":", DOKU_LEXER_ENTER,8)->will($this->returnValue(true)); + $handler->expects($this->at(6))->method('b') + ->with("a", DOKU_LEXER_UNMATCHED,9)->will($this->returnValue(true)); + $handler->expects($this->at(7))->method('b') + ->with("b", DOKU_LEXER_MATCHED, 10)->will($this->returnValue(true)); + $handler->expects($this->at(8))->method('b') + ->with("a", DOKU_LEXER_UNMATCHED,11)->will($this->returnValue(true)); + $handler->expects($this->at(9))->method('b') + ->with("bb", DOKU_LEXER_MATCHED,12)->will($this->returnValue(true)); + $handler->expects($this->at(10))->method('b') + ->with("a", DOKU_LEXER_UNMATCHED,14)->will($this->returnValue(true)); + $handler->expects($this->at(11))->method('b') + ->with("bbb", DOKU_LEXER_MATCHED,15)->will($this->returnValue(true)); + $handler->expects($this->at(12))->method('b') + ->with("a", DOKU_LEXER_UNMATCHED,18)->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "a"); + $lexer->addPattern("a+", "a"); + $lexer->addEntryPattern(":", "a", "b"); + $lexer->addPattern("b+", "b"); + $this->assertTrue($lexer->parse("abaabaaa:ababbabbba")); + } + function testNesting() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,2)->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,3)->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,5)->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('b') + ->with("(", DOKU_LEXER_ENTER,6)->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('b') + ->with("bb", DOKU_LEXER_MATCHED,7)->will($this->returnValue(true)); + $handler->expects($this->at(6))->method('b') + ->with("a", DOKU_LEXER_UNMATCHED,9)->will($this->returnValue(true)); + $handler->expects($this->at(7))->method('b') + ->with("bb", DOKU_LEXER_MATCHED,10)->will($this->returnValue(true)); + $handler->expects($this->at(8))->method('b') + ->with(")", DOKU_LEXER_EXIT,12)->will($this->returnValue(true)); + $handler->expects($this->at(9))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,13)->will($this->returnValue(true)); + $handler->expects($this->at(10))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,15)->will($this->returnValue(true)); + + + $lexer = new Doku_Lexer($handler, "a"); + $lexer->addPattern("a+", "a"); + $lexer->addEntryPattern("(", "a", "b"); + $lexer->addPattern("b+", "b"); + $lexer->addExitPattern(")", "b"); + $this->assertTrue($lexer->parse("aabaab(bbabb)aab")); + } + function testSingular() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('b') + ->with("b", DOKU_LEXER_SPECIAL,2)->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,3)->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('a') + ->with("xx", DOKU_LEXER_UNMATCHED,5)->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('b') + ->with("bbb", DOKU_LEXER_SPECIAL,7)->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('a') + ->with("xx", DOKU_LEXER_UNMATCHED,10)->will($this->returnValue(true)); + $lexer = new Doku_Lexer($handler, "a"); + $lexer->addPattern("a+", "a"); + $lexer->addSpecialPattern("b+", "a", "b"); + $this->assertTrue($lexer->parse("aabaaxxbbbxx")); + } + function testUnwindTooFar() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('a') + ->with(")", DOKU_LEXER_EXIT,2)->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "a"); + $lexer->addPattern("a+", "a"); + $lexer->addExitPattern(")", "a"); + $this->assertFalse($lexer->parse("aa)aa")); + } +} + +class TestOfLexerHandlers extends DokuWikiTest { + function testModeMapping() { + $handler = $this->getMock('TestParser'); + $handler->expects($this->at(0))->method('a') + ->with("aa", DOKU_LEXER_MATCHED,0)->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('a') + ->with("(", DOKU_LEXER_ENTER,2)->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('a') + ->with("bb", DOKU_LEXER_MATCHED,3)->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('a') + ->with("a", DOKU_LEXER_UNMATCHED,5)->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('a') + ->with("bb", DOKU_LEXER_MATCHED,6)->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('a') + ->with(")", DOKU_LEXER_EXIT,8)->will($this->returnValue(true)); + $handler->expects($this->at(6))->method('a') + ->with("b", DOKU_LEXER_UNMATCHED,9)->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "mode_a"); + $lexer->addPattern("a+", "mode_a"); + $lexer->addEntryPattern("(", "mode_a", "mode_b"); + $lexer->addPattern("b+", "mode_b"); + $lexer->addExitPattern(")", "mode_b"); + $lexer->mapHandler("mode_a", "a"); + $lexer->mapHandler("mode_b", "a"); + $this->assertTrue($lexer->parse("aa(bbabb)b")); + } +} + +class TestParserByteIndex { + + function TestParserByteIndex() {} + + function ignore() {} + + function caught() {} +} + +class TestOfLexerByteIndices extends DokuWikiTest { + + function testIndex() { + $doc = "aaa<file>bcd</file>eee"; + + $handler = $this->getMock('TestParserByteIndex'); + $handler->expects($this->any())->method('ignore')->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('caught') + ->with("<file>", DOKU_LEXER_ENTER, strpos($doc,'<file>'))->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('caught') + ->with("b", DOKU_LEXER_SPECIAL, strpos($doc,'b'))->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('caught') + ->with("c", DOKU_LEXER_MATCHED, strpos($doc,'c'))->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('caught') + ->with("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d'))->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('caught') + ->with("</file>", DOKU_LEXER_EXIT, strpos($doc,'</file>'))->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "ignore"); + $lexer->addEntryPattern("<file>", "ignore", "caught"); + $lexer->addExitPattern("</file>", "caught"); + $lexer->addSpecialPattern('b','caught','special'); + $lexer->mapHandler('special','caught'); + $lexer->addPattern('c','caught'); + + $this->assertTrue($lexer->parse($doc)); + } + + function testIndexLookaheadEqual() { + $doc = "aaa<file>bcd</file>eee"; + + $handler = $this->getMock('TestParserByteIndex'); + $handler->expects($this->any())->method('ignore')->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('caught') + ->with("<file>", DOKU_LEXER_ENTER, strpos($doc,'<file>'))->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('caught') + ->with("b", DOKU_LEXER_SPECIAL, strpos($doc,'b'))->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('caught') + ->with("c", DOKU_LEXER_MATCHED, strpos($doc,'c'))->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('caught') + ->with("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d'))->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('caught') + ->with("</file>", DOKU_LEXER_EXIT, strpos($doc,'</file>'))->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "ignore"); + $lexer->addEntryPattern('<file>(?=.*</file>)', "ignore", "caught"); + $lexer->addExitPattern("</file>", "caught"); + $lexer->addSpecialPattern('b','caught','special'); + $lexer->mapHandler('special','caught'); + $lexer->addPattern('c','caught'); + + $this->assertTrue($lexer->parse($doc)); + } + + function testIndexLookaheadNotEqual() { + $doc = "aaa<file>bcd</file>eee"; + + $handler = $this->getMock('TestParserByteIndex'); + $handler->expects($this->any())->method('ignore')->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('caught') + ->with("<file>", DOKU_LEXER_ENTER, strpos($doc,'<file>'))->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('caught') + ->with("b", DOKU_LEXER_SPECIAL, strpos($doc,'b'))->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('caught') + ->with("c", DOKU_LEXER_MATCHED, strpos($doc,'c'))->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('caught') + ->with("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d'))->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('caught') + ->with("</file>", DOKU_LEXER_EXIT, strpos($doc,'</file>'))->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "ignore"); + $lexer->addEntryPattern('<file>(?!foo)', "ignore", "caught"); + $lexer->addExitPattern("</file>", "caught"); + $lexer->addSpecialPattern('b','caught','special'); + $lexer->mapHandler('special','caught'); + $lexer->addPattern('c','caught'); + + $this->assertTrue($lexer->parse($doc)); + } + + function testIndexLookbehindEqual() { + $doc = "aaa<file>bcd</file>eee"; + + $handler = $this->getMock('TestParserByteIndex'); + $handler->expects($this->any())->method('ignore')->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('caught') + ->with("<file>", DOKU_LEXER_ENTER, strpos($doc,'<file>'))->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('caught') + ->with("b", DOKU_LEXER_SPECIAL, strpos($doc,'b'))->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('caught') + ->with("c", DOKU_LEXER_MATCHED, strpos($doc,'c'))->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('caught') + ->with("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d'))->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('caught') + ->with("</file>", DOKU_LEXER_EXIT, strpos($doc,'</file>'))->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "ignore"); + $lexer->addEntryPattern('<file>', "ignore", "caught"); + $lexer->addExitPattern("(?<=d)</file>", "caught"); + $lexer->addSpecialPattern('b','caught','special'); + $lexer->mapHandler('special','caught'); + $lexer->addPattern('c','caught'); + + $this->assertTrue($lexer->parse($doc)); + } + + function testIndexLookbehindNotEqual() { + $doc = "aaa<file>bcd</file>eee"; + + $handler = $this->getMock('TestParserByteIndex'); + $handler->expects($this->any())->method('ignore')->will($this->returnValue(true)); + $handler->expects($this->at(1))->method('caught') + ->with("<file>", DOKU_LEXER_ENTER, strpos($doc,'<file>'))->will($this->returnValue(true)); + $handler->expects($this->at(2))->method('caught') + ->with("b", DOKU_LEXER_SPECIAL, strpos($doc,'b'))->will($this->returnValue(true)); + $handler->expects($this->at(3))->method('caught') + ->with("c", DOKU_LEXER_MATCHED, strpos($doc,'c'))->will($this->returnValue(true)); + $handler->expects($this->at(4))->method('caught') + ->with("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d'))->will($this->returnValue(true)); + $handler->expects($this->at(5))->method('caught') + ->with("</file>", DOKU_LEXER_EXIT, strpos($doc,'</file>'))->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, 'ignore'); + $lexer->addEntryPattern('<file>', 'ignore', 'caught'); + $lexer->addExitPattern('(?<!c)</file>', 'caught'); + $lexer->addSpecialPattern('b','caught','special'); + $lexer->mapHandler('special','caught'); + $lexer->addPattern('c','caught'); + + $this->assertTrue($lexer->parse($doc)); + } + + /** + * This test is primarily to ensure the correct match is chosen + * when there are non-captured elements in the pattern. + */ + function testIndexSelectCorrectMatch() { + $doc = "ALL FOOLS ARE FOO"; + $pattern = '\bFOO\b'; + + $handler = $this->getMock('TestParserByteIndex'); + $handler->expects($this->any())->method('ignore')->will($this->returnValue(true)); + + $matches = array(); + preg_match('/'.$pattern.'/',$doc,$matches,PREG_OFFSET_CAPTURE); + + $handler->expects($this->once())->method('caught') + ->with("FOO", DOKU_LEXER_SPECIAL, $matches[0][1])->will($this->returnValue(true)); + + $lexer = new Doku_Lexer($handler, "ignore"); + $lexer->addSpecialPattern($pattern,'ignore','caught'); + + $this->assertTrue($lexer->parse($doc)); + } + +} + +?> diff --git a/_test/tests/inc/parser/parser.inc.php b/_test/tests/inc/parser/parser.inc.php new file mode 100644 index 000000000..e9efef0d3 --- /dev/null +++ b/_test/tests/inc/parser/parser.inc.php @@ -0,0 +1,29 @@ +<?php + +require_once DOKU_INC . 'inc/parser/parser.php'; +require_once DOKU_INC . 'inc/parser/handler.php'; + +abstract class TestOfDoku_Parser extends PHPUnit_Framework_TestCase { + + var $P; + var $H; + + function setup() { + $this->P = new Doku_Parser(); + $this->H = new Doku_Handler(); + $this->P->Handler = & $this->H; + } + + function tearDown() { + unset($this->P); + unset($this->H); + } +} + +function stripByteIndex($call) { + unset($call[2]); + if ($call[0] == "nest") { + $call[1][0] = array_map('stripByteIndex',$call[1][0]); + } + return $call; +} diff --git a/_test/tests/inc/parser/parser_eol.test.php b/_test/tests/inc/parser/parser_eol.test.php new file mode 100644 index 000000000..6264f8b55 --- /dev/null +++ b/_test/tests/inc/parser/parser_eol.test.php @@ -0,0 +1,96 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Eol extends TestOfDoku_Parser { + + function testEol() { + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("Foo\nBar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testEolMultiple() { + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("Foo\n\nbar\nFoo"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("Foo")), + array('p_close',array()), + array('p_open',array()), + array('cdata',array("bar".DOKU_PARSER_EOL."Foo")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testWinEol() { + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("Foo\r\nBar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testLinebreak() { + $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); + $this->P->parse('Foo\\\\ Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nFoo")), + array('linebreak',array()), + array('cdata',array("Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testLinebreakPlusEol() { + $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse('Foo\\\\'."\n\n".'Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("Foo")), + array('linebreak',array()), + array('p_close',array()), + array('p_open',array()), + array('cdata',array("Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testLinebreakInvalid() { + $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); + $this->P->parse('Foo\\\\Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo\\\\Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + +} + diff --git a/_test/tests/inc/parser/parser_footnote.test.php b/_test/tests/inc/parser/parser_footnote.test.php new file mode 100644 index 000000000..f3b5ddf56 --- /dev/null +++ b/_test/tests/inc/parser/parser_footnote.test.php @@ -0,0 +1,388 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser { + + function setup() { + parent::setup(); + $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); + } + + function testFootnote() { + $this->P->parse('Foo (( testing )) Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' testing ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testNotAFootnote() { + $this->P->parse("Foo (( testing\n Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nFoo (( testing\n Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteLinefeed() { + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("Foo (( testing\ntesting )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array('Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(" testing\ntesting ")), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteNested() { + $this->P->parse('Foo (( x((y))z )) Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' x((y')), + array('footnote_close',array()), + ))), + array('cdata',array('z )) Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteEol() { + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("Foo \nX(( test\ning ))Y\n Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array('Foo '.DOKU_PARSER_EOL.'X')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(" test\ning ")), + array('footnote_close',array()), + ))), + array('cdata',array('Y'.DOKU_PARSER_EOL.' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteStrong() { + $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); + $this->P->parse('Foo (( **testing** )) Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' ')), + array('strong_open',array()), + array('cdata',array('testing')), + array('strong_close',array()), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteHr() { + $this->P->addMode('hr',new Doku_Parser_Mode_HR()); + $this->P->parse("Foo (( \n ---- \n )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' ')), + array('hr',array()), + array('cdata',array("\n ")), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteCode() { + $this->P->addMode('code',new Doku_Parser_Mode_Code()); + $this->P->parse("Foo (( <code>Test</code> )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' ')), + array('code',array('Test',null,null)), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnotePreformatted() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->parse("Foo (( \n Test\n )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' ')), + array('preformatted',array('Test')), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnotePreformattedEol() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("Foo (( \n Test\n )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array('Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' ')), + array('preformatted',array('Test')), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteUnformatted() { + $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); + $this->P->parse("Foo (( <nowiki>Test</nowiki> )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' ')), + array('unformatted',array('Test')), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteNotHeader() { + $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); + $this->P->parse("Foo (( \n====Test====\n )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(" \n====Test====\n ")), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteTable() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse("Foo (( +| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | + )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('table_open',array(3, 2, 8)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(123)), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteList() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse("Foo (( + *A + * B + * C + )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteQuote() { + $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); + $this->P->parse("Foo (( +> def +>>ghi + )) Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('quote_open',array()), + array('cdata',array(" def")), + array('quote_open',array()), + array('cdata',array("ghi")), + array('quote_close',array()), + array('quote_close',array()), + array('cdata',array(' ')), + array('footnote_close',array()), + ))), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testFootnoteNesting() { + $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); + $this->P->parse("(( a ** (( b )) ** c ))"); + + $calls = array( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n")), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array(' a ')), + array('strong_open',array()), + array('cdata',array(' (( b ')), + array('footnote_close',array()), + ))), + array('cdata',array(" ")), + array('strong_close',array()), + array('cdata',array(" c ))")), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parser/parser_headers.test.php b/_test/tests/inc/parser/parser_headers.test.php new file mode 100644 index 000000000..a1bf7d2ba --- /dev/null +++ b/_test/tests/inc/parser/parser_headers.test.php @@ -0,0 +1,282 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Headers extends TestOfDoku_Parser { + + function testHeader1() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ====== Header ====== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',1,6)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader2() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ===== Header ===== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',2,6)), + array('section_open',array(2)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader3() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ==== Header ==== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',3,6)), + array('section_open',array(3)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader4() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n === Header === \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',4,6)), + array('section_open',array(4)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader5() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n == Header == \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',5,6)), + array('section_open',array(5)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader2UnevenSmaller() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ===== Header == \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',2,6)), + array('section_open',array(2)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader2UnevenBigger() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ===== Header =========== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',2,6)), + array('section_open',array(2)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeaderLarge() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ======= Header ======= \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',1,6)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeaderSmall() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n= Header =\n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc \n= Header =\n def")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + + function testHeader1Mixed() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n====== == Header == ======\n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('== Header ==',1,6)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeader5Mixed() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n== ====== Header ====== ==\n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('====== Header ======',5,6)), + array('section_open',array(5)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testHeaderMultiline() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n== ====== Header\n ====== ==\n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc \n== ====== Header")), + array('p_close',array()), + array('header',array('',1,23)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + +# function testNoToc() { +# $this->P->addMode('notoc',new Doku_Parser_Mode_NoToc()); +# $this->P->parse('abc ~~NOTOC~~ def'); +# $this->assertFalse($this->H->meta['toc']); +# } + + function testHeader1Eol() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("abc \n ====== Header ====== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array('abc ')), + array('p_close',array()), + array('header',array('Header',1, 6)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array(' def')), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + + } + + function testHeaderMulti2() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("abc \n ====== Header ====== \n def abc \n ===== Header2 ===== \n def"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc ")), + array('p_close',array()), + array('header',array('Header',1,6)), + array('section_open',array(1)), + array('p_open',array()), + array('cdata',array("\n def abc ")), + array('p_close',array()), + array('section_close',array()), + array('header',array('Header2',2,39)), + array('section_open',array(2)), + array('p_open',array()), + array('cdata',array("\n def")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()) + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + +} + diff --git a/_test/tests/inc/parser/parser_i18n.test.php b/_test/tests/inc/parser/parser_i18n.test.php new file mode 100644 index 000000000..096f2e227 --- /dev/null +++ b/_test/tests/inc/parser/parser_i18n.test.php @@ -0,0 +1,162 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_i18n extends TestOfDoku_Parser { + + function testFormatting() { + $formats = array ( + 'strong', 'emphasis', 'underline', 'monospace', + 'subscript', 'superscript', 'deleted', + ); + foreach ( $formats as $format ) { + $this->P->addMode($format,new Doku_Parser_Mode_Formatting($format)); + } + $this->P->parse("I**ñ**t__ë__r//n//â<sup>t</sup>i<sub>ô</sub>n''à''liz<del>æ</del>tiøn"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nI")), + array('strong_open',array()), + array('cdata',array('ñ')), + array('strong_close',array()), + array('cdata',array('t')), + array('underline_open',array()), + array('cdata',array('ë')), + array('underline_close',array()), + array('cdata',array('r')), + array('emphasis_open',array()), + array('cdata',array('n')), + array('emphasis_close',array()), + array('cdata',array('â')), + array('superscript_open',array()), + array('cdata',array('t')), + array('superscript_close',array()), + array('cdata',array('i')), + array('subscript_open',array()), + array('cdata',array('ô')), + array('subscript_close',array()), + array('cdata',array('n')), + array('monospace_open',array()), + array('cdata',array('à')), + array('monospace_close',array()), + array('cdata',array('liz')), + array('deleted_open',array()), + array('cdata',array('æ')), + array('deleted_close',array()), + array('cdata',array("tiøn")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testHeader() { + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->parse("Foo\n ==== Iñtërnâtiônàlizætiøn ==== \n Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nFoo")), + array('p_close',array()), + array('header',array('Iñtërnâtiônàlizætiøn',3,5)), + array('section_open',array(3)), + array('p_open',array()), + array('cdata',array("\n Bar")), + array('p_close',array()), + array('section_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testTable() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +| Row 0 Col 1 | Iñtërnâtiônàlizætiøn | Row 0 Col 3 | +| Row 1 Col 1 | Iñtërnâtiônàlizætiøn | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Iñtërnâtiônàlizætiøn ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Iñtërnâtiônàlizætiøn ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(153)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testAcronym() { + $t = array('Iñtërnâtiônàlizætiøn'); + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym($t)); + $this->P->parse("Foo Iñtërnâtiônàlizætiøn Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nFoo ")), + array('acronym',array('Iñtërnâtiônàlizætiøn')), + array('cdata',array(" Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testInterwiki() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[wp>Iñtërnâtiônàlizætiøn|Iñtërnâtiônàlizætiøn]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('interwikilink',array('wp>Iñtërnâtiônàlizætiøn','Iñtërnâtiônàlizætiøn','wp','Iñtërnâtiônàlizætiøn')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInternalLink() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[x:Iñtërnâtiônàlizætiøn:y:foo_bar:z|Iñtërnâtiônàlizætiøn]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('x:Iñtërnâtiônàlizætiøn:y:foo_bar:z','Iñtërnâtiônàlizætiøn')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parser/parser_links.test.php b/_test/tests/inc/parser/parser_links.test.php new file mode 100644 index 000000000..529efac6e --- /dev/null +++ b/_test/tests/inc/parser/parser_links.test.php @@ -0,0 +1,691 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Links extends TestOfDoku_Parser { + + function testExternalLinkSimple() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo http://www.google.com Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('http://www.google.com', NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalLinkCase() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo HTTP://WWW.GOOGLE.COM Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('HTTP://WWW.GOOGLE.COM', NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalIPv4() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo http://123.123.3.21/foo Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('http://123.123.3.21/foo', NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalIPv6() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo http://[3ffe:2a00:100:7031::1]/foo Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('http://[3ffe:2a00:100:7031::1]/foo', NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalMulti(){ + $this->teardown(); + + $links = array( + 'http://www.google.com', + 'HTTP://WWW.GOOGLE.COM', + 'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html', + 'http://[1080:0:0:0:8:800:200C:417A]/index.html', + 'http://[3ffe:2a00:100:7031::1]', + 'http://[1080::8:800:200C:417A]/foo', + 'http://[::192.9.5.5]/ipng', + 'http://[::FFFF:129.144.52.38]:80/index.html', + 'http://[2010:836B:4179::836B:4179]', + ); + $titles = array(false,null,'foo bar'); + foreach($links as $link){ + foreach($titles as $title){ + if($title === false){ + $source = $link; + $name = null; + }elseif($title === null){ + $source = "[[$link]]"; + $name = null; + }else{ + $source = "[[$link|$title]]"; + $name = $title; + } + $this->setup(); + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo $source Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array($link, $name)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls), $calls, $source); + $this->teardown(); + } + } + + $this->setup(); + } + + function testExternalLinkJavascript() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo javascript:alert('XSS'); Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nFoo javascript:alert('XSS'); Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalWWWLink() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo www.google.com Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('http://www.google.com', 'www.google.com')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalFTPLink() { + $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); + $this->P->parse("Foo ftp.sunsite.com Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('ftp://ftp.sunsite.com', 'ftp.sunsite.com')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + function testEmail() { + $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); + $this->P->parse("Foo <bugs@php.net> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('emaillink',array('bugs@php.net', NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testEmailRFC2822() { + $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); + $this->P->parse("Foo <~fix+bug's.for/ev{e}r@php.net> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('emaillink',array("~fix+bug's.for/ev{e}r@php.net", NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testEmailCase() { + $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); + $this->P->parse("Foo <bugs@pHp.net> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('emaillink',array('bugs@pHp.net', NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + + function testInternalLinkOneChar() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[l]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('l',NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInternalLinkNoChar() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('',NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInternalLinkNamespaceNoTitle() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[foo:bar]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('foo:bar',NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInternalLinkNamespace() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[x:1:y:foo_bar:z|Test]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('x:1:y:foo_bar:z','Test')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInternalLinkSectionRef() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[wiki:syntax#internal|Syntax]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('wiki:syntax#internal','Syntax')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testExternalInInternalLink() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[http://www.google.com|Google]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('http://www.google.com','Google')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInterwikiLink() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[iw>somepage|Some Page]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('interwikilink',array('iw>somepage','Some Page','iw','somepage')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInterwikiLinkCase() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[IW>somepage|Some Page]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('interwikilink',array('IW>somepage','Some Page','iw','somepage')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInterwikiPedia() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[wp>Callback_(computer_science)|callbacks]] Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('interwikilink',array('wp>Callback_(computer_science)','callbacks','wp','Callback_(computer_science)')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testCamelCase() { + $this->P->addMode('camelcaselink',new Doku_Parser_Mode_CamelCaseLink()); + $this->P->parse("Foo FooBar Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('camelcaselink',array('FooBar')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testFileLink() { + $this->P->addMode('filelink',new Doku_Parser_Mode_FileLink()); + $this->P->parse('Foo file://temp/file.txt Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('filelink',array('file://temp/file.txt ',NULL)), + array('cdata',array('Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testFileLinkInternal() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse('Foo [[file://temp/file.txt|Some File]] Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externallink',array('file://temp/file.txt','Some File')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testWindowsShareLink() { + $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); + $this->P->parse('Foo \\\server\share Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('windowssharelink',array('\\\server\share',NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testWindowsShareLinkHyphen() { + $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); + $this->P->parse('Foo \\\server\share-hyphen Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('windowssharelink',array('\\\server\share-hyphen',NULL)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testWindowsShareLinkInternal() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse('Foo [[\\\server\share|My Documents]] Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('windowssharelink',array('\\\server\share','My Documents')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternal() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{img.gif}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternalLinkOnly() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{img.gif?linkonly}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','linkonly')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaNotImage() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{foo.txt?10x10|Some File}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('foo.txt','Some File',null,10,10,'cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternalLAlign() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{img.gif }} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif',NULL,'left',NULL,NULL,'cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternalRAlign() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{ img.gif}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif',NULL,'right',NULL,NULL,'cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternalCenter() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{ img.gif }} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif',NULL,'center',NULL,NULL,'cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternalParams() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{img.gif?50x100nocache}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif',NULL,NULL,'50','100','nocache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInternalTitle() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{img.gif?50x100|Some Image}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia',array('img.gif','Some Image',NULL,'50','100','cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaExternal() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{http://www.google.com/img.gif}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,NULL,NULL,'cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaExternalParams() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{http://www.google.com/img.gif?50x100nocache}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,'50','100','nocache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaExternalTitle() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{http://www.google.com/img.gif?50x100|Some Image}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('externalmedia', + array('http://www.google.com/img.gif','Some Image',NULL,'50','100','cache','details')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInInternalLink() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[x:1:y:foo_bar:z|{{img.gif?10x20nocache|Some Image}}]] Bar"); + + $image = array( + 'type'=>'internalmedia', + 'src'=>'img.gif', + 'title'=>'Some Image', + 'align'=>NULL, + 'width'=>10, + 'height'=>20, + 'cache'=>'nocache', + 'linking'=>'details', + ); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('x:1:y:foo_bar:z',$image)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaNoImageInInternalLink() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[x:1:y:foo_bar:z|{{foo.txt?10x20nocache|Some Image}}]] Bar"); + + $image = array( + 'type'=>'internalmedia', + 'src'=>'foo.txt', + 'title'=>'Some Image', + 'align'=>NULL, + 'width'=>10, + 'height'=>20, + 'cache'=>'nocache', + 'linking'=>'details', + ); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internallink',array('x:1:y:foo_bar:z',$image)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testMediaInEmailLink() { + $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); + $this->P->parse("Foo [[foo@example.com|{{img.gif?10x20nocache|Some Image}}]] Bar"); + + $image = array( + 'type'=>'internalmedia', + 'src'=>'img.gif', + 'title'=>'Some Image', + 'align'=>NULL, + 'width'=>10, + 'height'=>20, + 'cache'=>'nocache', + 'linking'=>'details', + ); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('emaillink',array('foo@example.com',$image)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testNestedMedia() { + $this->P->addMode('media',new Doku_Parser_Mode_Media()); + $this->P->parse('Foo {{img.gif|{{foo.gif|{{bar.gif|Bar}}}}}} Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('internalmedia', + array('img.gif','{{foo.gif|{{bar.gif|Bar',NULL,NULL,NULL,'cache','details')), + array('cdata',array('}}}} Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } + +} + diff --git a/_test/tests/inc/parser/parser_lists.test.php b/_test/tests/inc/parser/parser_lists.test.php new file mode 100644 index 000000000..e4ef1f83e --- /dev/null +++ b/_test/tests/inc/parser/parser_lists.test.php @@ -0,0 +1,393 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Lists extends TestOfDoku_Parser { + + function testUnorderedList() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse(' + *A + * B + * C +'); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testOrderedList() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse(' + -A + - B + - C +'); + $calls = array ( + array('document_start',array()), + array('listo_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listo_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listo_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listo_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + + function testMixedList() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse(' + -A + * B + - C +'); + $calls = array ( + array('document_start',array()), + array('listo_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listo_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testUnorderedListWinEOL() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse("\r\n *A\r\n * B\r\n * C\r\n"); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testOrderedListWinEOL() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse("\r\n -A\r\n - B\r\n - C\r\n"); + $calls = array ( + array('document_start',array()), + array('listo_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listo_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listo_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listo_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testNotAList() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse("Foo -bar *foo Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nFoo -bar *foo Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testUnorderedListParagraph() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse('Foo + *A + * B + * C +Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("Foo")), + array('p_close',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('p_open',array()), + array('cdata',array("Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // This is really a failing test - formatting able to spread across list items + // Problem is fixing it would mean a major rewrite of lists + function testUnorderedListStrong() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); + $this->P->parse(' + ***A** + *** B + * C** +'); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('strong_open',array()), + array('cdata',array("A")), + array('strong_close',array()), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('strong_open',array()), + array('cdata',array(" B\n * C")), + array('strong_close',array()), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // This is really a failing test - unformatted able to spread across list items + // Problem is fixing it would mean a major rewrite of lists + function testUnorderedListUnformatted() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); + $this->P->parse(' + *%%A%% + *%% B + * C%% +'); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('unformatted',array("A")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('unformatted',array(" B\n * C")), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testUnorderedListLinebreak() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); + $this->P->parse(' + *A\\\\ D + * B + * C +'); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('linebreak',array()), + array('cdata',array("D")), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' C')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testUnorderedListLinebreak2() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); + $this->P->parse(' + *A\\\\ + * B +'); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array("A")), + array('linebreak',array()), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(' B')), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testUnorderedListFootnote() { + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); + $this->P->parse(' + *((A)) + *(( B + * C )) + +'); + $calls = array ( + array('document_start',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('nest', array( array( + array('footnote_open',array()), + array('cdata',array("A")), + array('footnote_close',array()) + ))), + array('listcontent_close',array()), + array('listu_open',array()), + array('listitem_open',array(2)), + array('listcontent_open',array()), + array('nest', array( array( + array('footnote_open',array()), + array('cdata',array(" B")), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(" C )) ")), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('cdata',array("\n\n")), + array('footnote_close',array()) + ))), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('document_end',array()) + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parser/parser_preformatted.test.php b/_test/tests/inc/parser/parser_preformatted.test.php new file mode 100644 index 000000000..f7a01a7e5 --- /dev/null +++ b/_test/tests/inc/parser/parser_preformatted.test.php @@ -0,0 +1,231 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser { + + function testFile() { + $this->P->addMode('file',new Doku_Parser_Mode_File()); + $this->P->parse('Foo <file>testing</file> Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('p_close',array()), + array('file',array('testing',null,null)), + array('p_open',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testCode() { + $this->P->addMode('code',new Doku_Parser_Mode_Code()); + $this->P->parse('Foo <code>testing</code> Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('p_close',array()), + array('code',array('testing', null, null)), + array('p_open',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testCodeWhitespace() { + $this->P->addMode('code',new Doku_Parser_Mode_Code()); + $this->P->parse("Foo <code \n>testing</code> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('p_close',array()), + array('code',array('testing', null, null)), + array('p_open',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testCodeLang() { + $this->P->addMode('code',new Doku_Parser_Mode_Code()); + $this->P->parse("Foo <code php>testing</code> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('p_close',array()), + array('code',array('testing', 'php', null)), + array('p_open',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testPreformatted() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->parse("F oo\n x \n y \nBar\n"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nF oo")), + array('p_close',array()), + array('preformatted',array("x \n y ")), + array('p_open',array()), + array('cdata',array('Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testPreformattedWinEOL() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->parse("F oo\r\n x \r\n y \r\nBar\r\n"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nF oo")), + array('p_close',array()), + array('preformatted',array("x \n y ")), + array('p_open',array()), + array('cdata',array('Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testPreformattedTab() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->parse("F oo\n\tx\t\n\t\ty\t\nBar\n"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nF oo")), + array('p_close',array()), + array('preformatted',array("x\t\n\ty\t")), + array('p_open',array()), + array('cdata',array("Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testPreformattedTabWinEOL() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->parse("F oo\r\n\tx\t\r\n\t\ty\t\r\nBar\r\n"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nF oo")), + array('p_close',array()), + array('preformatted',array("x\t\n\ty\t")), + array('p_open',array()), + array('cdata',array("Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testPreformattedList() { + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); + $this->P->parse(" - x \n * y \nF oo\n x \n y \n -X\n *Y\nBar\n"); + $calls = array ( + array('document_start',array()), + array('listo_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(" x ")), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listo_close',array()), + array('listu_open',array()), + array('listitem_open',array(1)), + array('listcontent_open',array()), + array('cdata',array(" y ")), + array('listcontent_close',array()), + array('listitem_close',array()), + array('listu_close',array()), + array('p_open',array()), + array('cdata',array("F oo")), + array('p_close',array()), + array('preformatted',array("x \n y \n-X\n*Y")), + array('p_open',array()), + array('cdata',array("Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // test for php + function testPHP() { + + $this->P->addMode('php',new Doku_Parser_Mode_PHP()); + $this->P->parse('Foo <php>testing</php> Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('php',array('testing')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // test with for HTML + function testHTML() { + + $this->P->addMode('html',new Doku_Parser_Mode_HTML()); + $this->P->parse('Foo <html>testing</html> Bar'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('html',array('testing')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + + + function testPreformattedPlusHeaderAndEol() { + // Note that EOL must come after preformatted! + $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); + $this->P->addMode('header',new Doku_Parser_Mode_Header()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("F oo\n ==Test==\n y \nBar\n"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("F oo")), + array('p_close',array()), + array('preformatted',array("==Test==\n y ")), + array('p_open',array()), + array('cdata',array('Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parser/parser_quote.test.php b/_test/tests/inc/parser/parser_quote.test.php new file mode 100644 index 000000000..ae14671c1 --- /dev/null +++ b/_test/tests/inc/parser/parser_quote.test.php @@ -0,0 +1,94 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Quote extends TestOfDoku_Parser { + + function testQuote() { + $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); + $this->P->parse("abc\n> def\n>>ghi\nklm"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc")), + array('p_close',array()), + array('quote_open',array()), + array('cdata',array(" def")), + array('quote_open',array()), + array('cdata',array("ghi")), + array('quote_close',array()), + array('quote_close',array()), + array('p_open',array()), + array('cdata',array("klm")), + array('p_close',array()), + array('document_end',array()), + + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testQuoteWinCr() { + $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); + $this->P->parse("abc\r\n> def\r\n>>ghi\r\nklm"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc")), + array('p_close',array()), + array('quote_open',array()), + array('cdata',array(" def")), + array('quote_open',array()), + array('cdata',array("ghi")), + array('quote_close',array()), + array('quote_close',array()), + array('p_open',array()), + array('cdata',array("klm")), + array('p_close',array()), + array('document_end',array()), + + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testQuoteMinumumContext() { + $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); + $this->P->parse("\n> def\n>>ghi\n "); + $calls = array ( + array('document_start',array()), + array('quote_open',array()), + array('cdata',array(" def")), + array('quote_open',array()), + array('cdata',array("ghi")), + array('quote_close',array()), + array('quote_close',array()), + array('document_end',array()), + + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testQuoteEol() { + $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse("abc\n> def\n>>ghi\nklm"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("abc")), + array('p_close',array()), + array('quote_open',array()), + array('cdata',array(" def")), + array('quote_open',array()), + array('cdata',array("ghi")), + array('quote_close',array()), + array('quote_close',array()), + array('p_open',array()), + array('cdata',array("klm")), + array('p_close',array()), + array('document_end',array()), + + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + +} + diff --git a/_test/tests/inc/parser/parser_quotes.test.php b/_test/tests/inc/parser/parser_quotes.test.php new file mode 100644 index 000000000..b2dae1039 --- /dev/null +++ b/_test/tests/inc/parser/parser_quotes.test.php @@ -0,0 +1,269 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Quotes extends TestOfDoku_Parser { + + function setup() { + parent::setup(); + global $conf; + $conf['typography'] = 2; + } + + function testSingleQuoteOpening() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("Foo 'hello Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('singlequoteopening',array()), + array('cdata',array('hello Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleQuoteOpeningSpecial() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("Foo said:'hello Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo said:')), + array('singlequoteopening',array()), + array('cdata',array('hello Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleQuoteClosing() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("Foo hello' Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo hello')), + array('singlequoteclosing',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleQuoteClosingSpecial() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("Foo hello') Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo hello')), + array('singlequoteclosing',array()), + array('cdata',array(') Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleQuotes() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("Foo 'hello' Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('singlequoteopening',array()), + array('cdata',array('hello')), + array('singlequoteclosing',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testApostrophe() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("hey it's fine weather today"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'hey it')), + array('apostrophe',array()), + array('cdata',array('s fine weather today')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + + function testSingleQuotesSpecial() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse("Foo ('hello') Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo (')), + array('singlequoteopening',array()), + array('cdata',array('hello')), + array('singlequoteclosing',array()), + array('cdata',array(') Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testDoubleQuoteOpening() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('Foo "hello Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('doublequoteopening',array()), + array('cdata',array('hello Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testDoubleQuoteOpeningSpecial() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('Foo said:"hello Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo said:')), + array('doublequoteopening',array()), + array('cdata',array('hello Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testDoubleQuoteClosing() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('Foo hello" Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo hello')), + array('doublequoteclosing',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testDoubleQuoteClosingSpecial() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('Foo hello") Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo hello')), + array('doublequoteclosing',array()), + array('cdata',array(') Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testDoubleQuotes() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('Foo "hello" Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('doublequoteopening',array()), + array('cdata',array('hello')), + array('doublequoteclosing',array()), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testDoubleQuotesSpecial() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('Foo ("hello") Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo (')), + array('doublequoteopening',array()), + array('cdata',array('hello')), + array('doublequoteclosing',array()), + array('cdata',array(') Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testAllQuotes() { + $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); + $this->P->parse('There was written "He thought \'It\'s a man\'s world\'".'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'There was written ')), + array('doublequoteopening',array()), + array('cdata',array('He thought ')), + array('singlequoteopening',array()), + array('cdata',array('It')), + array('apostrophe',array()), + array('cdata',array('s a man')), + array('apostrophe',array()), + array('cdata',array('s world')), + array('singlequoteclosing',array()), + array('doublequoteclosing',array()), + array('cdata',array(".")), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + +} + diff --git a/_test/tests/inc/parser/parser_replacements.test.php b/_test/tests/inc/parser/parser_replacements.test.php new file mode 100644 index 000000000..f0367dac0 --- /dev/null +++ b/_test/tests/inc/parser/parser_replacements.test.php @@ -0,0 +1,379 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser { + + function testSingleAcronym() { + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOOBAR'))); + $this->P->parse('abc FOOBAR xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('acronym',array('FOOBAR')), + array('cdata',array(' xyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testAlmostAnAcronym() { + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOOBAR'))); + $this->P->parse('abcFOOBARxyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abcFOOBARxyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testPickAcronymCorrectly() { + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOO'))); + $this->P->parse('FOOBAR FOO'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'FOOBAR ')), + array('acronym',array('FOO')), + array('cdata',array('')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultipleAcronyms() { + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOO','BAR'))); + $this->P->parse('abc FOO def BAR xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('acronym',array('FOO')), + array('cdata',array(' def ')), + array('acronym',array('BAR')), + array('cdata',array(' xyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + + } + + function testMultipleAcronymsWithSubset1() { + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOO','A.FOO','FOO.1','A.FOO.1'))); + $this->P->parse('FOO A.FOO FOO.1 A.FOO.1'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n")), + array('acronym',array('FOO')), + array('cdata',array(" ")), + array('acronym',array('A.FOO')), + array('cdata',array(" ")), + array('acronym',array('FOO.1')), + array('cdata',array(" ")), + array('acronym',array('A.FOO.1')), + array('cdata',array('')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultipleAcronymsWithSubset2() { + $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('A.FOO.1','FOO.1','A.FOO','FOO'))); + $this->P->parse('FOO A.FOO FOO.1 A.FOO.1'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n")), + array('acronym',array('FOO')), + array('cdata',array(" ")), + array('acronym',array('A.FOO')), + array('cdata',array(" ")), + array('acronym',array('FOO.1')), + array('cdata',array(" ")), + array('acronym',array('A.FOO.1')), + array('cdata',array('')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleSmileyFail() { + $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)'))); + $this->P->parse('abc:-)xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc:-)xyz")), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleSmiley() { + $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)'))); + $this->P->parse('abc :-) xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('smiley',array(':-)')), + array('cdata',array(' xyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultipleSmileysFail() { + $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)','^_^'))); + $this->P->parse('abc:-)x^_^yz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc:-)x^_^yz")), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultipleSmileys() { + $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)','^_^'))); + $this->P->parse('abc :-) x ^_^ yz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('smiley',array(':-)')), + array('cdata',array(' x ')), + array('smiley',array('^_^')), + array('cdata',array(' yz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testBackslashSmileyFail() { + // This smiley is really :-\\ but escaping makes like interesting + $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-\\\\'))); + $this->P->parse('abc:-\\\xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\nabc".':-\\\\'."xyz")), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testBackslashSmiley() { + // This smiley is really :-\\ but escaping makes like interesting + $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-\\\\'))); + $this->P->parse('abc :-\\\ xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('smiley',array(':-\\\\')), + array('cdata',array(' xyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleWordblock() { + $this->P->addMode('wordblock',new Doku_Parser_Mode_Wordblock(array('CAT'))); + $this->P->parse('abc CAT xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('wordblock',array('CAT')), + array('cdata',array(' xyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testWordblockCase() { + $this->P->addMode('wordblock',new Doku_Parser_Mode_Wordblock(array('CAT'))); + $this->P->parse('abc cat xyz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('wordblock',array('cat')), + array('cdata',array(' xyz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultipleWordblock() { + $this->P->addMode('wordblock',new Doku_Parser_Mode_Wordblock(array('CAT','dog'))); + $this->P->parse('abc cat x DOG yz'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'abc ')), + array('wordblock',array('cat')), + array('cdata',array(' x ')), + array('wordblock',array('DOG')), + array('cdata',array(' yz')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testSingleEntity() { + $this->P->addMode('entity',new Doku_Parser_Mode_Entity(array('->'))); + $this->P->parse('x -> y'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'x ')), + array('entity',array('->')), + array('cdata',array(' y')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultipleEntities() { + $this->P->addMode('entity',new Doku_Parser_Mode_Entity(array('->','<-'))); + $this->P->parse('x -> y <- z'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'x ')), + array('entity',array('->')), + array('cdata',array(' y ')), + array('entity',array('<-')), + array('cdata',array(' z')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultiplyEntity() { + $this->P->addMode('multiplyentity',new Doku_Parser_Mode_MultiplyEntity()); + $this->P->parse('Foo 10x20 Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('multiplyentity',array(10,20)), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testMultiplyEntityHex() { + // the multiply entity pattern should not match hex numbers, eg. 0x123 + $this->P->addMode('multiplyentity',new Doku_Parser_Mode_MultiplyEntity()); + $this->P->parse('Foo 0x123 Bar'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo 0x123 Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testHR() { + $this->P->addMode('hr',new Doku_Parser_Mode_HR()); + $this->P->parse("Foo \n ---- \n Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('p_close',array()), + array('hr',array()), + array('p_open',array()), + array('cdata',array("\n Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testHREol() { + $this->P->addMode('hr',new Doku_Parser_Mode_HR()); + $this->P->parse("Foo \n----\n Bar"); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('p_close',array()), + array('hr',array()), + array('p_open',array()), + array('cdata',array("\n Bar")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parser/parser_table.test.php b/_test/tests/inc/parser/parser_table.test.php new file mode 100644 index 000000000..96789c38c --- /dev/null +++ b/_test/tests/inc/parser/parser_table.test.php @@ -0,0 +1,572 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Table extends TestOfDoku_Parser { + + function testTable() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(121)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testTableWinEOL() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse("\r\nabc\r\n| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |\r\n| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |\r\ndef"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(121)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testEmptyTable() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +| +def'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(0, 1, 6)), + array('tablerow_open',array()), + array('tablerow_close',array()), + array('table_close',array(7)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testTableHeaders() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +^ X | Y ^ Z | +def'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 1, 6)), + array('tablerow_open',array()), + array('tableheader_open',array(1,NULL,1)), + array('cdata',array(' X ')), + array('tableheader_close',array()), + array('tablecell_open',array(1,NULL,1)), + array('cdata',array(' Y ')), + array('tablecell_close',array()), + array('tableheader_open',array(1,NULL,1)), + array('cdata',array(' Z ')), + array('tableheader_close',array()), + array('tablerow_close',array()), + array('table_close',array(19)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + + } + + function testCellAlignment() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +| X | Y ^ Z | +def'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 1, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'right',1)), + array('cdata',array(' X ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Y ')), + array('tablecell_close',array()), + array('tableheader_open',array(1,'center',1)), + array('cdata',array(' Z ')), + array('tableheader_close',array()), + array('tablerow_close',array()), + array('table_close',array(23)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testCellSpan() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +| d || e | +| f ^ ^| +|||| +def'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 3, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(2,'right',1)), + array('cdata',array(' d ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,NULL,1)), + array('cdata',array(' e ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,NULL,1)), + array('cdata',array(' f ')), + array('tablecell_close',array()), + array('tableheader_open',array(2,NULL,1)), + array('cdata',array(' ')), + array('tableheader_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablerow_close',array()), + array('table_close',array(31)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testCellRowSpan() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->parse(' +abc +| a | c:::|| +|:::^ d | e| +|b ^ ::: |:::f| +def'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 3, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,NULL,2)), + array('cdata',array(' a ')), + array('tablecell_close',array()), + array('tablecell_open',array(2,'right',1)), + array('cdata',array(' c:::')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tableheader_open',array(1,'left',2)), + array('cdata',array(' d ')), + array('tableheader_close',array()), + array('tablecell_open',array(1,NULL,1)), + array('cdata',array(' e')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array('b ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,NULL,1)), + array('cdata',array(':::f')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(51)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testCellAlignmentFormatting() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); + $this->P->parse(' +abc +| **X** | Y ^ Z | +def'); + + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 1, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'right',1)), + array('cdata',array(' ')), + array('strong_open',array()), + array('cdata',array('X')), + array('strong_close',array()), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Y ')), + array('tablecell_close',array()), + array('tableheader_open',array(1,'center',1)), + array('cdata',array(' Z ')), + array('tableheader_close',array()), + array('tablerow_close',array()), + array('table_close',array(27)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + + } + + function testTableEol() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); + $this->P->parse(' +abc +| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("abc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(121)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // This is really a failing test - formatting able to spread across cols + // Problem is fixing it would mean a major rewrite of table handling + function testTableStrong() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); + $this->P->parse(' +abc +| **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' ')), + array('strong_open',array()), + array('cdata',array('Row 0 Col 1')), + array('strong_close',array()), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' ')), + array('strong_open',array()), + array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), + array('strong_close',array()), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,null,1)), + array('cdata',array('')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(129)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // This is really a failing test - unformatted able to spread across cols + // Problem is fixing it would mean a major rewrite of table handling + function testTableUnformatted() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); + $this->P->parse(' +abc +| <nowiki>Row 0 Col 1</nowiki> | <nowiki>Row 0 Col 2 | Row 0 Col 3</nowiki> | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' ')), + array('unformatted',array('Row 0 Col 1')), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' ')), + array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,null,1)), + array('cdata',array('')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(155)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + function testTableLinebreak() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); + $this->P->parse(' +abc +| Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0')), + array('linebreak',array()), + array('cdata',array('Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 0 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(123)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } + + // This is really a failing test - footnote able to spread across cols + // Problem is fixing it would mean a major rewrite of table handling + function testTableFootnote() { + $this->P->addMode('table',new Doku_Parser_Mode_Table()); + $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); + $this->P->parse(' +abc +| ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) | +| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | +def'); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n\nabc")), + array('p_close',array()), + array('table_open',array(3, 2, 6)), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array('Row 0 Col 1')), + array('footnote_close',array()), + ))), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' ')), + array('nest', array ( array ( + array('footnote_open',array()), + array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), + array('footnote_close',array()), + ))), + array('cdata',array(' ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,null,1)), + array('cdata',array('')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('tablerow_open',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 1 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 2 ')), + array('tablecell_close',array()), + array('tablecell_open',array(1,'left',1)), + array('cdata',array(' Row 1 Col 3 ')), + array('tablecell_close',array()), + array('tablerow_close',array()), + array('table_close',array(129)), + array('p_open',array()), + array('cdata',array('def')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parser/parser_unformatted.test.php b/_test/tests/inc/parser/parser_unformatted.test.php new file mode 100644 index 000000000..f20ba5e8b --- /dev/null +++ b/_test/tests/inc/parser/parser_unformatted.test.php @@ -0,0 +1,38 @@ +<?php +require_once 'parser.inc.php'; + +class TestOfDoku_Parser_Unformatted extends TestOfDoku_Parser { + + function testNowiki() { + $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); + $this->P->parse("Foo <nowiki>testing</nowiki> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('unformatted',array('testing')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + + } + + function testDoublePercent() { + $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); + $this->P->parse("Foo %%testing%% Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('unformatted',array('testing')), + array('cdata',array(' Bar')), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); + } +} + diff --git a/_test/tests/inc/parserutils_set_metadata_during_rendering.test.php b/_test/tests/inc/parserutils_set_metadata_during_rendering.test.php new file mode 100644 index 000000000..0683848f1 --- /dev/null +++ b/_test/tests/inc/parserutils_set_metadata_during_rendering.test.php @@ -0,0 +1,91 @@ +<?php + +class parserutils_set_metadata_during_rendering_test extends DokuWikiTest { + // the id used for this test case + private $id; + // if the test case is currently running + private $active = false; + // the original plugin controller + private $plugin_controller; + + // the actual test + function test_p_set_metadata_during_rendering() { + global $EVENT_HANDLER; + $this->id = 'test:p_set_metadata_during_rendering'; + $this->active = true; + + // write the wiki page so it exists and needs to be rendered + saveWikiText($this->id, 'Test '.time(), 'Test data setup'); + + $EVENT_HANDLER->register_hook('PARSER_METADATA_RENDER', 'BEFORE', $this, 'helper_set_metadata', array('test_before_set' => 'test')); + $EVENT_HANDLER->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, 'helper_set_metadata', array('test_after_set' => 'test')); + $EVENT_HANDLER->register_hook('PARSER_HANDLER_DONE', 'BEFORE', $this, 'helper_inject_test_instruction'); + + // Change the global plugin controller so this test can be a fake syntax plugin + global $plugin_controller; + $this->plugin_controller = $plugin_controller; + $plugin_controller = $this; + + // the actual rendering, all hooks should be executed here + $newMeta = p_get_metadata($this->id); + + // restore the plugin controller + $plugin_controller = $this->plugin_controller; + + // assert that all three calls to p_set_metadata have been successful + $this->assertEquals($newMeta['test_before_set'], 'test'); + $this->assertEquals($newMeta['test_after_set'], 'test'); + $this->assertEquals($newMeta['test_during_rendering'], 'test'); + + // clean up + $this->active = false; + + // make sure the saved metadata is the one that has been rendered + $this->assertEquals($newMeta, p_get_metadata($this->id)); + + saveWikiText($this->id, '', 'Test data remove'); + } + + // helper for the action plugin part of the test, tries executing p_set_metadata during rendering + function helper_set_metadata($event, $meta) { + if ($this->active) { + p_set_metadata($this->id, $meta, false, true); + $key = array_pop(array_keys($meta)); + $this->assertTrue(is_string($meta[$key])); // ensure we really have a key + // ensure that the metadata property hasn't been set previously + $this->assertNotEquals($meta[$key], p_get_metadata($this->id, $key)); + } + } + + // helper for injecting an instruction for this test case + function helper_inject_test_instruction($event) { + if ($this->active) + $event->data->calls[] = array('plugin', array('parserutils_test', array())); + } + + // fake syntax plugin rendering method that tries calling p_set_metadata during the actual rendering process + function render($format, &$renderer, $data) { + if ($this->active) { + $key = 'test_during_rendering'; + p_set_metadata($this->id, array($key => 'test'), false, true); + // ensure that the metadata property hasn't been set previously + $this->assertNotEquals($key, p_get_metadata($this->id, $key)); + } + } + + // wrapper function for the fake plugin controller + function getList($type='',$all=false){ + return $this->plugin_controller->getList(); + } + + // wrapper function for the fake plugin controller, return $this for the fake syntax of this test + function &load($type,$name,$new=false,$disabled=false){ + if ($name == 'parserutils_test') { + return $this; + } else { + return $this->plugin_controller->load($type, $name, $new, $disabled); + } + } +} + +// vim:ts=4:sw=4:et: diff --git a/_test/tests/inc/remote.test.php b/_test/tests/inc/remote.test.php new file mode 100644 index 000000000..49152d8db --- /dev/null +++ b/_test/tests/inc/remote.test.php @@ -0,0 +1,330 @@ +<?php + +class MockAuth extends auth_basic { + function isCaseSensitive() { return true; } +} + +class RemoteAPICoreTest { + + function __getRemoteInfo() { + return array( + 'wiki.stringTestMethod' => array( + 'args' => array(), + 'return' => 'string', + 'doc' => 'Test method', + 'name' => 'stringTestMethod', + ), 'wiki.intTestMethod' => array( + 'args' => array(), + 'return' => 'int', + 'doc' => 'Test method', + 'name' => 'intTestMethod', + ), 'wiki.floatTestMethod' => array( + 'args' => array(), + 'return' => 'float', + 'doc' => 'Test method', + 'name' => 'floatTestMethod', + ), 'wiki.dateTestMethod' => array( + 'args' => array(), + 'return' => 'date', + 'doc' => 'Test method', + 'name' => 'dateTestMethod', + ), 'wiki.fileTestMethod' => array( + 'args' => array(), + 'return' => 'file', + 'doc' => 'Test method', + 'name' => 'fileTestMethod', + ), 'wiki.voidTestMethod' => array( + 'args' => array(), + 'return' => 'void', + 'doc' => 'Test method', + 'name' => 'voidTestMethod', + ), 'wiki.oneStringArgMethod' => array( + 'args' => array('string'), + 'return' => 'string', + 'doc' => 'Test method', + 'name' => 'oneStringArgMethod', + ), 'wiki.twoArgMethod' => array( + 'args' => array('string', 'int'), + 'return' => 'array', + 'doc' => 'Test method', + 'name' => 'twoArgMethod', + ), 'wiki.twoArgWithDefaultArg' => array( + 'args' => array('string', 'string'), + 'return' => 'string', + 'doc' => 'Test method', + 'name' => 'twoArgWithDefaultArg', + ), 'wiki.publicCall' => array( + 'args' => array(), + 'return' => 'boolean', + 'doc' => 'testing for public access', + 'name' => 'publicCall', + 'public' => 1 + ) + ); + } + function stringTestMethod() { return 'success'; } + function intTestMethod() { return 42; } + function floatTestMethod() { return 3.14159265; } + function dateTestMethod() { return 2623452346; } + function fileTestMethod() { return 'file content'; } + function voidTestMethod() { return null; } + function oneStringArgMethod($arg) {return $arg; } + function twoArgMethod($string, $int) { return array($string, $int); } + function twoArgWithDefaultArg($string1, $string2 = 'default') { return array($string1, $string2); } + function publicCall() {return true;} + +} + +class remote_plugin_testplugin extends DokuWiki_Remote_Plugin { + function _getMethods() { + return array( + 'method1' => array( + 'args' => array(), + 'return' => 'void' + ), 'methodString' => array( + 'args' => array(), + 'return' => 'string' + ), 'method2' => array( + 'args' => array('string', 'int'), + 'return' => 'array', + 'name' => 'method2', + ), 'method2ext' => array( + 'args' => array('string', 'int', 'bool'), + 'return' => 'array', + 'name' => 'method2', + ), 'publicCall' => array( + 'args' => array(), + 'return' => 'boolean', + 'doc' => 'testing for public access', + 'name' => 'publicCall', + 'public' => 1 + ) + ); + } + + function method1() { return null; } + function methodString() { return 'success'; } + function method2($str, $int, $bool = false) { return array($str, $int, $bool); } + function publicCall() {return true;} + +} + + +class remote_test extends DokuWikiTest { + + var $originalConf; + var $userinfo; + + var $remote; + + function setUp() { + global $plugin_controller; + global $conf; + global $USERINFO; + global $auth; + + parent::setUp(); + + $pluginManager = $this->getMock('Doku_Plugin_Controller'); + $pluginManager->expects($this->any())->method('getList')->will($this->returnValue(array('testplugin'))); + $pluginManager->expects($this->any())->method('load')->will($this->returnValue(new remote_plugin_testplugin())); + + $plugin_controller = $pluginManager; + + $this->originalConf = $conf; + $conf['remote'] = 1; + $conf['remoteuser'] = '!!not set!!'; + $conf['useacl'] = 0; + + $this->userinfo = $USERINFO; + $this->remote = new RemoteAPI(); + + $auth = new MockAuth(); + } + + function tearDown() { + global $conf; + global $USERINFO; + $conf = $this->originalConf; + $USERINFO = $this->userinfo; + + } + + function test_pluginMethods() { + $methods = $this->remote->getPluginMethods(); + $actual = array_keys($methods); + sort($actual); + $expect = array('plugin.testplugin.method1', 'plugin.testplugin.method2', 'plugin.testplugin.methodString', 'plugin.testplugin.method2ext', 'plugin.testplugin.publicCall'); + sort($expect); + $this->assertEquals($expect,$actual); + } + + function test_hasAccessSuccess() { + $this->assertTrue($this->remote->hasAccess()); + } + + function test_hasAccessFail() { + global $conf; + $conf['remote'] = 0; + $this->assertFalse($this->remote->hasAccess()); + } + + function test_hasAccessFailAcl() { + global $conf; + $conf['useacl'] = 1; + $this->assertFalse($this->remote->hasAccess()); + } + + function test_hasAccessSuccessAclEmptyRemoteUser() { + global $conf; + $conf['useacl'] = 1; + $conf['remoteuser'] = ''; + + $this->assertTrue($this->remote->hasAccess()); + } + + function test_hasAccessSuccessAcl() { + global $conf; + global $USERINFO; + $conf['useacl'] = 1; + $conf['remoteuser'] = '@grp,@grp2'; + $USERINFO['grps'] = array('grp'); + $this->assertTrue($this->remote->hasAccess()); + } + + function test_hasAccessFailAcl2() { + global $conf; + global $USERINFO; + $conf['useacl'] = 1; + $conf['remoteuser'] = '@grp'; + $USERINFO['grps'] = array('grp1'); + + $this->assertFalse($this->remote->hasAccess()); + } + + + function test_forceAccessSuccess() { + global $conf; + $conf['remote'] = 1; + $this->remote->forceAccess(); // no exception should occur + } + + /** + * @expectedException RemoteException + */ + function test_forceAccessFail() { + global $conf; + $conf['remote'] = 0; + $this->remote->forceAccess(); + } + + function test_generalCoreFunctionWithoutArguments() { + global $conf; + $conf['remote'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + + $this->assertEquals($remoteApi->call('wiki.stringTestMethod'), 'success'); + $this->assertEquals($remoteApi->call('wiki.intTestMethod'), 42); + $this->assertEquals($remoteApi->call('wiki.floatTestMethod'), 3.14159265); + $this->assertEquals($remoteApi->call('wiki.dateTestMethod'), 2623452346); + $this->assertEquals($remoteApi->call('wiki.fileTestMethod'), 'file content'); + $this->assertEquals($remoteApi->call('wiki.voidTestMethod'), null); + } + + /** + * @expectedException RemoteException + */ + function test_generalCoreFunctionOnArgumentMismatch() { + global $conf; + $conf['remote'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + + $remoteApi->call('wiki.voidTestMethod', array('something')); + } + + function test_generalCoreFunctionWithArguments() { + global $conf; + $conf['remote'] = 1; + + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + + $this->assertEquals($remoteApi->call('wiki.oneStringArgMethod', array('string')), 'string'); + $this->assertEquals($remoteApi->call('wiki.twoArgMethod', array('string', 1)), array('string' , 1)); + $this->assertEquals($remoteApi->call('wiki.twoArgWithDefaultArg', array('string')), array('string', 'default')); + $this->assertEquals($remoteApi->call('wiki.twoArgWithDefaultArg', array('string', 'another')), array('string', 'another')); + } + + function test_pluginCallMethods() { + global $conf; + $conf['remote'] = 1; + + $remoteApi = new RemoteApi(); + $this->assertEquals($remoteApi->call('plugin.testplugin.method1'), null); + $this->assertEquals($remoteApi->call('plugin.testplugin.method2', array('string', 7)), array('string', 7, false)); + $this->assertEquals($remoteApi->call('plugin.testplugin.method2ext', array('string', 7, true)), array('string', 7, true)); + $this->assertEquals($remoteApi->call('plugin.testplugin.methodString'), 'success'); + } + + /** + * @expectedException RemoteException + */ + function test_notExistingCall() { + global $conf; + $conf['remote'] = 1; + + $remoteApi = new RemoteApi(); + $remoteApi->call('dose not exist'); + } + + function test_publicCallCore() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + $this->assertTrue($remoteApi->call('wiki.publicCall')); + } + + function test_publicCallPlugin() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $this->assertTrue($remoteApi->call('plugin.testplugin.publicCall')); + } + + /** + * @expectedException RemoteAccessDeniedException + */ + function test_publicCallCoreDeny() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + $remoteApi->call('wiki.stringTestMethod'); + } + + /** + * @expectedException RemoteAccessDeniedException + */ + function test_publicCallPluginDeny() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->call('plugin.testplugin.methodString'); + } + + function test_pluginCallCustomPath() { + global $EVENT_HANDLER; + $EVENT_HANDLER->register_hook('RPC_CALL_ADD', 'BEFORE', $this, 'pluginCallCustomPathRegister'); + + $remoteApi = new RemoteAPI(); + $result = $remoteApi->call('custom.path'); + $this->assertEquals($result, 'success'); + } + + function pluginCallCustomPathRegister(&$event, $param) { + $event->data['custom.path'] = array('testplugin', 'methodString'); + } +} diff --git a/_test/tests/inc/safefn.test.php b/_test/tests/inc/safefn.test.php new file mode 100644 index 000000000..175b72dfc --- /dev/null +++ b/_test/tests/inc/safefn.test.php @@ -0,0 +1,46 @@ +<?php +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class safeFN_test extends DokuWikiTest { + + + function test1(){ + // we test multiple cases here - format: string, repl, additional, test + $tests = array(); + $tests[] = array('äa.txt', '%5g]a.txt'); + $tests[] = array('ä.', '%5g].'); + $tests[] = array('asciistring','asciistring'); + $tests[] = array('ascii-_/.string','ascii-_/.string'); + $tests[] = array('AName','%x%1a]ame'); + $tests[] = array('A Name','%x%0%1a]ame'); + $tests[] = array('Another...Name','%x]nother...%1a]ame'); + $tests[] = array('Aß∂ƒName','%x%5b%6oy%aa%1a]ame'); + $tests[] = array('A%ß-∂_.ƒName','%x%%5b]-%6oy]_.%aa%1a]ame'); + $tests[] = array('A%%ß-∂_.ƒName','%x%%%5b]-%6oy]_.%aa%1a]ame'); + $tests[] = array('데이터도 함께 복원됩니다. 강력한','%zf4%13dg%15ao%zhg%0%164o%yig%0%11at%138w%zk9%zag%zb8].%0%xyt%10cl%164c]'); + $tests[] = array('совместимая','%td%ta%sy%t8%t1%td%te%t4%t8%sw%tr]'); + $tests[] = array('нехватка_файлового_пространства_на_сервере_p0-squid.some.domain.1270211897.txt.gz','%t9%t1%th%sy%sw%te%t6%sw]_%tg%sw%t5%t7%ta%sy%ta%sz%ta]_%tb%tc%ta%td%te%tc%sw%t9%td%te%sy%sw]_%t9%sw]_%td%t1%tc%sy%t1%tc%t1]_p0-squid.some.domain.1270211897.txt.gz'); + + $tests[] = array('name[1]','name[1]'); + $tests[] = array('Name[1]','%1a]ame[1]'); + $tests[] = array('Name[A]','%1a]ame[%x]]'); + + foreach($tests as $test){ + list($utf8,$safe) = $test; + $this->assertEquals(SafeFN::encode($utf8),$safe); + $this->assertEquals(SafeFN::decode($safe),$utf8); + } + } + + function test2(){ + $tests[] = array('совместимая','%td%ta%sy%t8%t1%td%te%t4%t8%sw%tr'); + + foreach($tests as $test){ + list($utf8,$safe) = $test; + $this->assertEquals(SafeFN::decode($safe),$utf8); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/search/data/ns1/ns3/page3.txt b/_test/tests/inc/search/data/ns1/ns3/page3.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/_test/tests/inc/search/data/ns1/ns3/page3.txt diff --git a/_test/tests/inc/search/data/ns1/page1.txt b/_test/tests/inc/search/data/ns1/page1.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/_test/tests/inc/search/data/ns1/page1.txt diff --git a/_test/tests/inc/search/data/ns1/page2.txt b/_test/tests/inc/search/data/ns1/page2.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/_test/tests/inc/search/data/ns1/page2.txt diff --git a/_test/tests/inc/search/data/ns2/nopage.ext b/_test/tests/inc/search/data/ns2/nopage.ext new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/_test/tests/inc/search/data/ns2/nopage.ext diff --git a/_test/tests/inc/search/data/ns2/page1.txt b/_test/tests/inc/search/data/ns2/page1.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/_test/tests/inc/search/data/ns2/page1.txt diff --git a/_test/tests/inc/search/search.test.php b/_test/tests/inc/search/search.test.php new file mode 100644 index 000000000..33cc80e74 --- /dev/null +++ b/_test/tests/inc/search/search.test.php @@ -0,0 +1,101 @@ +<?php + +class search_test extends DokuWikiTest { + function strip_index_data($entry) { + $n_entry = array(); + foreach(array('id', 'type', 'level', 'open') as $k) { + $n_entry[$k] = $entry[$k]; + } + return $n_entry; + } + + function test_search_index(){ + $data = array(); + search($data, dirname(__FILE__) . '/data', 'search_index', + array('ns' => 'ns2')); + $this->assertEquals(array_map(array($this, 'strip_index_data'), $data), + array( + array( + 'id' => 'ns1', + 'type' => 'd', + 'level' => 1, + 'open' => false + ), array( + 'id' => 'ns2', + 'type' => 'd', + 'level' => 1, + 'open' => true + ), array( + 'id' => 'ns2:page1', + 'type' => 'f', + 'level' => 2, + 'open' => true, + ), )); + $data = array(); + search($data, dirname(__FILE__) . '/data', 'search_index', + array('ns' => 'ns1/ns3')); + $this->assertEquals(array_map(array($this, 'strip_index_data'), $data), + array( + array( + 'id' => 'ns1', + 'type' => 'd', + 'level' => 1, + 'open' => true, + ), + array( + 'id' => 'ns1:ns3', + 'type' => 'd', + 'level' => 2, + 'open' => true, + ), + array( + 'id' => 'ns1:ns3:page3', + 'type' => 'f', + 'level' => 3, + 'open' => true, + ), + array( + 'id' => 'ns1:page1', + 'type' => 'f', + 'level' => 2, + 'open' => true, + ), + array( + 'id' => 'ns1:page2', + 'type' => 'f', + 'level' => 2, + 'open' => true, + ), + array( + 'id' => 'ns2', + 'type' => 'd', + 'level' => 1, + 'open' => false, + ), )); + $data = array(); + search($data, dirname(__FILE__) . '/data', 'search_index', + array('ns' => 'ns1/ns3', 'nofiles' => true)); + $this->assertEquals(array_map(array($this, 'strip_index_data'), $data), + array( + array( + 'id' => 'ns1', + 'type' => 'd', + 'level' => 1, + 'open' => true, + ), + array( + 'id' => 'ns1:ns3', + 'type' => 'd', + 'level' => 2, + 'open' => true, + ), + array( + 'id' => 'ns2', + 'type' => 'd', + 'level' => 1, + 'open' => false, + ), )); + + } +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_correctidx.test.php b/_test/tests/inc/utf8_correctidx.test.php new file mode 100644 index 000000000..a704fd0e8 --- /dev/null +++ b/_test/tests/inc/utf8_correctidx.test.php @@ -0,0 +1,77 @@ +<?php +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class utf8_correctidx_test extends DokuWikiTest { + + + function test_singlebyte(){ + // we test multiple cases here - format: in, offset, length, out + $tests = array(); + + // single byte, should return current index + $tests[] = array('aaживπά우리をあöä',0,false,0); + $tests[] = array('aaживπά우리をあöä',1,false,1); + $tests[] = array('aaживπά우리をあöä',1,true,1); + + foreach($tests as $test){ + $this->assertEquals(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); + } + } + + function test_twobyte(){ + // we test multiple cases here - format: in, offset, length, out + $tests = array(); + + // two byte, should move to boundary, expect even number + $tests[] = array('aaживπά우리をあöä',2,false,2); + $tests[] = array('aaживπά우리をあöä',3,false,2); + $tests[] = array('aaживπά우리をあöä',4,false,4); + + $tests[] = array('aaживπά우리をあöä',2,true,2); + $tests[] = array('aaживπά우리をあöä',3,true,4); + $tests[] = array('aaживπά우리をあöä',4,true,4); + + foreach($tests as $test){ + $this->assertEquals(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); + } + } + + function test_threebyte(){ + // we test multiple cases here - format: in, offset, length, out + $tests = array(); + + // three byte, should move to boundary 10 or 13 + $tests[] = array('aaживπά우리をあöä',10,false,10); + $tests[] = array('aaживπά우리をあöä',11,false,10); + $tests[] = array('aaживπά우리をあöä',12,false,10); + $tests[] = array('aaживπά우리をあöä',13,false,13); + + $tests[] = array('aaживπά우리をあöä',10,true,10); + $tests[] = array('aaживπά우리をあöä',11,true,13); + $tests[] = array('aaживπά우리をあöä',12,true,13); + $tests[] = array('aaживπά우리をあöä',13,true,13); + + foreach($tests as $test){ + $this->assertEquals(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); + } + } + + function test_bounds(){ + // we test multiple cases here - format: in, offset, length, out + $tests = array(); + + // bounds checking + $tests[] = array('aaживπά우리をあöä',-2,false,0); + $tests[] = array('aaживπά우리をあöä',128,false,29); + + $tests[] = array('aaживπά우리をあöä',-2,true,0); + $tests[] = array('aaживπά우리をあöä',128,true,29); + + foreach($tests as $test){ + $this->assertEquals(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_html.test.php b/_test/tests/inc/utf8_html.test.php new file mode 100644 index 000000000..bdebd9d45 --- /dev/null +++ b/_test/tests/inc/utf8_html.test.php @@ -0,0 +1,70 @@ +<?php + +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class utf8_html_test extends DokuWikiTest { + + function test_from_1byte(){ + $in = 'a'; + $out = 'a'; + $this->assertEquals(utf8_tohtml($in),$out); + } + + function test_from_2byte(){ + $in = "\xc3\xbc"; + $out = 'ü'; + $this->assertEquals(utf8_tohtml($in),$out); + } + + function test_from_3byte(){ + $in = "\xe2\x99\x8a"; + $out = '♊'; + $this->assertEquals(utf8_tohtml($in),$out); + } + + function test_from_4byte(){ + $in = "\xf4\x80\x80\x81"; + $out = '􀀁'; + $this->assertEquals(utf8_tohtml($in),$out); + } + + function test_to_1byte(){ + $out = 'a'; + $in = 'a'; + $this->assertEquals(utf8_unhtml($in),$out); + } + + function test_to_2byte(){ + $out = "\xc3\xbc"; + $in = 'ü'; + $this->assertEquals(utf8_unhtml($in),$out); + } + + function test_to_3byte(){ + $out = "\xe2\x99\x8a"; + $in = '♊'; + $this->assertEquals(utf8_unhtml($in),$out); + } + + function test_to_4byte(){ + $out = "\xf4\x80\x80\x81"; + $in = '􀀁'; + $this->assertEquals(utf8_unhtml($in),$out); + } + + function test_without_entities(){ + $out = '&#38;&#38;'; + $in = '&#38;&amp;#38;'; + $this->assertEquals(utf8_unhtml($in),$out); + } + + function test_with_entities(){ + $out = '&&#38;'; + $in = '&#38;&amp;#38;'; + $this->assertEquals(utf8_unhtml($in,HTML_ENTITIES),$out); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_kanaromaji.txt b/_test/tests/inc/utf8_kanaromaji.txt new file mode 100644 index 000000000..d6bf51e95 --- /dev/null +++ b/_test/tests/inc/utf8_kanaromaji.txt @@ -0,0 +1,22893 @@ +いつか;itsuka +いつか;itsuka +いつつ;itsutsu +いつでも;itsudemo +いつのまにか;itsunomanika +いつまでも;itsumademo +いつも;itsumo +いてん;iten +いと;ito +いとこ;itoko +いとこ;itoko +いとま;itoma +いど;ido +いど;ido +いどう;idou +いない;inai +いなか;inaka +いにしえ;inishie +いぬ;inu +いね;ine +いねむり;inemuri +いのち;inochi +いのる;inoru +いはん;ihan +いばる;ibaru +いふく;ifuku +いま;ima +いま;ima +いまに;imani +いまにも;imanimo +いみ;imi +いもうと;imouto +いや;iya +いやがる;iyagaru +いよいよ;iyoiyo +いらい;irai +いらい;irai +いらいら;iraira +いらっしゃる;irassharu +いりぐち;iriguchi +いりょう;iryou +いる;iru +いる;iru +いる;iru +いる;iru +いれもの;iremono +いれる;ireru +いろ;iro +いろいろ;iroiro +いわ;iwa +いわい;iwai +いわう;iwau +いわば;iwaba +いわゆる;iwayuru +いん;in +いん;in +いんさつ;insatsu +いんしょう;inshou +いんたい;intai +いんよう;in_you +いんりょく;inryoku +うえ;ue +うえき;ueki +うえした;ueshita +うえる;ueru +うえる;ueru +うお;uo +うかがう;ukagau +うかぶ;ukabu +うかべる;ukaberu +うがい;ugai +うく;uku +うけたまわる;uketamawaru +うけつけ;uketsuke +うけとり;uketori +うけとる;uketoru +うけもつ;ukemotsu +うける;ukeru +うごかす;ugokasu +うごく;ugoku +うさぎ;usagi +うし;ushi +うしなう;ushinau +うじ;uji +うすい;usui +うすぐらい;usugurai +うすめる;usumeru +うずめる;uzumeru +うそ;uso +うた;uta +うたう;utau +うたがう;utagau +うち;uchi +うちあわせ;uchiawase +うちあわせる;uchiawaseru +うちけす;uchikesu +うちゅう;uchuu +うっかり;ukkari +うったえる;uttaeru +うつ;utsu +うつ;utsu +うつ;utsu +うつくしい;utsukushii +うつす;utsusu +うつす;utsusu +うつす;utsusu +うつる;utsuru +うつる;utsuru +うつる;utsuru +うつわ;utsuwa +うで;ude +うどん;udon +うなずく;unazuku +うなる;unaru +うばう;ubau +うま;uma +うまい;umai +うまれ;umare +うまれる;umareru +うみ;umi +うむ;umu +うめ;ume +うやまう;uyamau +うら;ura +うら;ura +うらがえす;uragaesu +うらぎる;uragiru +うらぐち;uraguchi +うらなう;uranau +うらみ;urami +うらむ;uramu +うらやましい;urayamashii +うらやむ;urayamu +うりあげ;uriage +うりきれ;urikire +うりきれる;urikireru +うりば;uriba +うる;uru +うる;uru +うるさい;urusai +うれしい;ureshii +うれゆき;ureyuki +うれる;ureru +うろうろ;urouro +うわぎ;uwagi +うわさ;uwasa +うわて;uwate +うわる;uwaru +うん;un +うんが;unga +うんてん;unten +うんどう;undou +え;e +え;e +え;e +え;e +えいえん;eien +えいが;eiga +えいきゅう;eikyuu +えいきょう;eikyou +えいぎょう;eigyou +えいご;eigo +えいせい;eisei +えいぶん;eibun +えいよう;eiyou +えいわ;eiwa +ええ;ee +ええと;eeto +えがお;egao +えがく;egaku +えき;eki +えき;eki +えきたい;ekitai +えさ;esa +えだ;eda +えのぐ;enogu +えらい;erai +えらぶ;erabu +えん;en +えん;en +えん;en +えん;en +えん;en +えんかい;enkai +えんき;enki +えんぎ;engi +えんげい;engei +えんげき;engeki +えんしゅう;enshuu +えんしゅう;enshuu +えんじょ;enjo +えんぜつ;enzetsu +えんそう;ensou +えんそく;ensoku +えんちょう;enchou +えんとつ;entotsu +えんりょ;enryo +お;o +おい;oi +おいかける;oikakeru +おいこす;oikosu +おいしい;oishii +おいつく;oitsuku +おいでになる;oideninaru +おう;ou +おう;ou +おうえん;ouen +おうさま;ousama +おうしょく;oushoku +おうじ;ouji +おうじょ;oujo +おうじる;oujiru +おうずる;ouzuru +おうせつ;ousetsu +おうたい;outai +おうだん;oudan +おうふく;oufuku +おうべい;oubei +おうよう;ouyou +おえる;oeru +おおい;ooi +おおいに;ooini +おおう;oou +おおきい;ookii +おおごと;oogoto +おおざっぱ;oozappa +おおどおり;oodoori +おおや;ooya +おおよそ;ooyoso +おか;oka +おかあさん;okaasan +おかげ;okage +おかげさまで;okagesamade +おかしい;okashii +おかず;okazu +おかまいなく;okamainaku +おかわり;okawari +おがむ;ogamu +おき;oki +おきる;okiru +おぎなう;oginau +おく;oku +おく;oku +おく;oku +おくがい;okugai +おくさん;okusan +おくじょう;okujou +おくりがな;okurigana +おくりもの;okurimono +おくる;okuru +おくる;okuru +おくれる;okureru +おこさん;okosan +おこす;okosu +おこたる;okotaru +おこなう;okonau +おこる;okoru +おさ;osa +おさえる;osaeru +おさきに;osakini +おさない;osanai +おさめる;osameru +おさめる;osameru +おさめる;osameru +おしい;oshii +おしいれ;oshiire +おしえる;oshieru +おしゃべり;oshaberi +おしゃれ;oshare +おじ;oji +おじいさん;ojiisan +おじぎ;ojigi +おじさん;ojisan +おじゃまします;ojamashimasu +おじょうさん;ojousan +おす;osu +おせん;osen +おそい;osoi +おそらく;osoraku +おそれる;osoreru +おそろしい;osoroshii +おそわる;osowaru +おだいじに;odaijini +おだやか;odayaka +おちつく;ochitsuku +おちる;ochiru +おっしゃる;ossharu +おっと;otto +おてあらい;otearai +おてつだいさん;otetsudaisan +おと;oto +おとうと;otouto +おとうさん;otousan +おとこ;otoko +おとこのひと;otokonohito +おとしもの;otoshimono +おとす;otosu +おととい;ototoi +おととし;ototoshi +おとな;otona +おとなしい;otonashii +おとめ;otome +おとる;otoru +おどかす;odokasu +おどり;odori +おどる;odoru +おどろかす;odorokasu +おどろく;odoroku +おなか;onaka +おなご;onago +おなじ;onaji +おに;oni +おにいさん;oniisan +おねえさん;oneesan +おねがいします;onegaishimasu +おのおの;onoono +おのおの;onoono +おはよう;ohayou +おば;oba +おばあさん;obaasan +おばさん;obasan +おひる;ohiru +おび;obi +おぼえる;oboeru +おぼれる;oboreru +おまいり;omairi +おまちどおさま;omachidoosama +おまわりさん;omawarisan +おめでとう;omedetou +おも;omo +おもい;omoi +おもいがけない;omoigakenai +おもいきり;omoikiri +おもいこむ;omoikomu +おもいだす;omoidasu +おもいつく;omoitsuku +おもいで;omoide +おもう;omou +おもしろい;omoshiroi +おもたい;omotai +おもちゃ;omocha +おもて;omote +おもなる;omonaru +おもに;omoni +おもやく;omoyaku +おもわず;omowazu +おや;oya +おや;oya +おやすみ;oyasumi +おやつ;oyatsu +おやゆび;oyayubi +およぎ;oyogi +およぐ;oyogu +およそ;oyoso +およぼす;oyobosu +おりる;oriru +おりる;oriru +おる;oru +おれる;oreru +おろす;orosu +おろす;orosu +おわり;owari +おわる;owaru +おん;on +おんがく;ongaku +おんけい;onkei +おんしつ;onshitsu +おんせん;onsen +おんたい;ontai +おんだん;ondan +おんちゅう;onchuu +おんど;ondo +おんな;onna +おんなのこ;onnanoko +おんなのひと;onnanohito +か;ka +か;ka +か;ka +か;ka +か;ka +か;ka +かい;kai +かい;kai +かい;kai +かいいん;kaiin +かいかい;kaikai +かいかん;kaikan +かいが;kaiga +かいがい;kaigai +かいがん;kaigan +かいぎ;kaigi +かいけい;kaikei +かいけつ;kaiketsu +かいごう;kaigou +かいさつ;kaisatsu +かいさん;kaisan +かいし;kaishi +かいしゃ;kaisha +かいしゃく;kaishaku +かいじょう;kaijou +かいすいよく;kaisuiyoku +かいすう;kaisuu +かいすうけん;kaisuuken +かいせい;kaisei +かいせい;kaisei +かいせつ;kaisetsu +かいぜん;kaizen +かいぞう;kaizou +かいだん;kaidan +かいつう;kaitsuu +かいてき;kaiteki +かいてん;kaiten +かいとう;kaitou +かいとう;kaitou +かいふく;kaifuku +かいほう;kaihou +かいほう;kaihou +かいもの;kaimono +かいよう;kaiyou +かいわ;kaiwa +かう;kau +かう;kau +かえす;kaesu +かえす;kaesu +かえって;kaette +かえり;kaeri +かえる;kaeru +かえる;kaeru +かえる;kaeru +かえる;kaeru +かえる;kaeru +かえる;kaeru +かお;kao +かおく;kaoku +かおり;kaori +かかえる;kakaeru +かかく;kakaku +かかり;kakari +かかる;kakaru +かかわる;kakawaru +かがく;kagaku +かがく;kagaku +かがみ;kagami +かがやく;kagayaku +かきとめ;kakitome +かきとり;kakitori +かきね;kakine +かぎ;kagi +かぎり;kagiri +かぎる;kagiru +かく;kaku +かく;kaku +かく;kaku +かく;kaku +かくう;kakuu +かくご;kakugo +かくじ;kakuji +かくじつ;kakujitsu +かくじゅう;kakujuu +かくす;kakusu +かくだい;kakudai +かくち;kakuchi +かくちょう;kakuchou +かくど;kakudo +かくにん;kakunin +かくべつ;kakubetsu +かくりつ;kakuritsu +しびれる;shibireru +しへい;shihei +しほん;shihon +しぼう;shibou +しぼむ;shibomu +しぼる;shiboru +しま;shima +しま;shima +しまい;shimai +しまう;shimau +しまった;shimatta +しまる;shimaru +しみじみ;shimijimi +しみん;shimin +しめい;shimei +しめきり;shimekiri +しめきる;shimekiru +しめす;shimesu +しめた;shimeta +しめる;shimeru +しめる;shimeru +しめる;shimeru +しめる;shimeru +しも;shimo +しもべ;shimobe +しゃかい;shakai +しゃかいかがく;shakaikagaku +しゃがむ;shagamu +しゃこ;shako +しゃしょう;shashou +しゃしん;shashin +しゃせい;shasei +しゃせつ;shasetsu +しゃっきん;shakkin +しゃっくり;shakkuri +しゃぶる;shaburu +じょうはつ;jouhatsu +じょうひん;jouhin +じょうふ;joufu +じょうほう;jouhou +じょおう;joou +じょきょうじゅ;jokyouju +じょしゅ;joshu +じょじょに;jojoni +じょせい;josei +じょゆう;joyuu +じん;jin +じんこう;jinkou +じんこう;jinkou +じんしゅ;jinshu +じんじ;jinji +じんじゃ;jinja +じんせい;jinsei +じんぞう;jinzou +じんぶつ;jinbutsu +じんぶんかがく;jinbunkagaku +じんめい;jinmei +じんもく;jinmoku +じんるい;jinrui +す;su +す;su +すいえい;suiei +すいさん;suisan +すいじ;suiji +すいじゅん;suijun +すいじょうき;suijouki +すいせん;suisen +すいそ;suiso +すいちょく;suichoku +すいてい;suitei +すいてき;suiteki +すいとう;suitou +すいどう;suidou +ちゅうがく;chuugaku +ちゅうげん;chuugen +ちゅうこ;chuuko +ちゅうし;chuushi +ちゅうし;chuushi +ちゅうしゃ;chuusha +ちゅうしゃ;chuusha +ちゅうしょう;chuushou +ちゅうしょく;chuushoku +ちゅうしん;chuushin +ちゅうじゅん;chuujun +ちゅうせい;chuusei +ちゅうせい;chuusei +ちゅうと;chuuto +ちゅうねん;chuunen +ちゅうもく;chuumoku +ちゅうもん;chuumon +ちょう;chou +ちょうか;chouka +ちょうき;chouki +ちょうこく;choukoku +ちょうさ;chousa +ちょうし;choushi +ちょうしょ;chousho +ちょうじょ;choujo +ちょうじょう;choujou +ちょうせい;chousei +ちょうせつ;chousetsu +ちょうたん;choutan +ちょうだい;choudai +ちょうてん;chouten +ちょうど;choudo +ちょうなん;chounan +ちょうほうけい;chouhoukei +ちょうみりょう;choumiryou +ちょうめ;choume +にんき;ninki +にんぎょう;ningyou +にんげん;ningen +ぬう;nuu +ぬく;nuku +ぬぐ;nugu +ぬける;nukeru +ぬすむ;nusumu +ぬの;nuno +ぬらす;nurasu +ぬる;nuru +ぬるい;nurui +ぬれる;nureru +ね;ne +ね;ne +ねがい;negai +ねがう;negau +ねこ;neko +ねじ;neji +ねじる;nejiru +ねず;nezu +ねだん;nedan +ねっしん;nesshin +ねっする;nessuru +ねったい;nettai +ねっちゅう;necchuu +ねつ;netsu +ねぼう;nebou +ねまき;nemaki +ねまき;nemaki +ねむい;nemui +ねむる;nemuru +ねらい;nerai +ねらう;nerau +ねる;neru +ねんかん;nenkan +ねんじゅう;nenjuu +ねんせい;nensei +ねんだい;nendai +ねんど;nendo +ほうそく;housoku +ほうたい;houtai +ほうちょう;houchou +ほうていしき;houteishiki +ほうふ;houfu +ほうほう;houhou +ほうめん;houmen +ほうもん;houmon +ほうりつ;houritsu +ほうる;houru +ほえる;hoeru +ほお;hoo +ほか;hoka +ほかく;hokaku +ほがらか;hogaraka +ほけん;hoken +ほこり;hokori +ほこり;hokori +ほこる;hokoru +ほころびる;hokorobiru +ほし;hoshi +ほしい;hoshii +ほしょう;hoshou +ほす;hosu +ほそい;hosoi +ほそう;hosou +ほぞん;hozon +ほっきょく;hokkyoku +ほとんど;hotondo +ほど;hodo +ほどう;hodou +ほどく;hodoku +ほのお;honoo +ほほえむ;hohoemu +ほぼ;hobo +ほめる;homeru +ほり;hori +ほる;horu +ほる;horu +ほん;hon +かならずしも;kanarazushimo +かならずしもない;kanarazushimonai +わけ;wake +くげ;kuge +ぶけ;buke +へいみん;heimin +いなか;inaka +た;ta +たとえば;tatoeba +やま;yama +わたなべ;watanabe +かわ;kawa +わたる;wataru +いみ;imi +つづき;tsuduki +あきた;akita +あきたけん;akitaken +かいぬし;kainushi +つかえる;tsukaeru +そのうちに;sonouchini +なくなる;nakunaru +まいにち;mainichi +あいだ;aida +ねんかん;nenkan +ある;aru +しぬ;shinu +たてる;tateru +ひとびと;hitobito +ゆうめい;yuumei +にほんじゅう;nihonjuu +はい;hai +しょるい;shorui +せつめい;setsumei +こくせき;kokuseki +うまれる;umareru +ゆみ;yumi +オーストラリア;oosutoraria +スペイン;supein +じゅうしょ;juusho +しょくぎょう;shokugyou +きょかしょう;kyokashou +たいざい;taizai +ため;tame +にゅうがくする;nyuugakusuru +クラブ;kurabu +テニス;tenisu +させる;saseru +てがみ;tegami +りょうしん;ryoushin +どうぶつえん;doubutsuen +もくようび;mokuyoubi +おおよろこび;ooyorokobi +はじめて;hajimete +わたしたち;watashitachi +いじょう;ijou +ならぶ;narabu +きせつ;kisetsu +こたえる;kotaeru +きりん;kirin +くび;kubi +しわ;shiwa +ぞう;zou +だらけ;darake +とう;tou +アフリカ;afurika +インド;indo +みみ;mimi +あいきょう;aikyou +くま;kuma +ピーナッツ;piinattsu +むしゃむしゃ;mushamusha +えだ;eda +さる;saru +とびうつる;tobiutsuru +ねむい;nemui +め;me +ゆっくり;yukkuri +らくだ;rakuda +いもうと;imouto +おどろく;odoroku +おり;ori +こわい;kowai +ちゃん;chan +なく;naku +ほえる;hoeru +ライオン;raion +かくれる;kakureru +かぐ;kagu +かぐ;kagu +かけざん;kakezan +かけつ;kaketsu +かける;kakeru +かける;kakeru +かげ;kage +かげつ;kagetsu +かげん;kagen +かこ;kako +かこう;kakou +かこう;kakou +かこむ;kakomu +かご;kago +かさ;kasa +かさい;kasai +かさねる;kasaneru +かざり;kazari +かざる;kazaru +かざん;kazan +かし;kashi +かし;kashi +かしこい;kashikoi +かしこまりました;kashikomarimashita +かしだし;kashidashi +かしつ;kashitsu +かしま;kashima +かしや;kashiya +かしゅ;kashu +かしょ;kasho +かしょう;kashou +かじ;kaji +かじ;kaji +かじつ;kajitsu +かじょう;kajou +かじる;kajiru +かす;kasu +かする;kasuru +かず;kazu +かせぐ;kasegu +かせん;kasen +かぜ;kaze +かぜ;kaze +かぜい;kazei +かそく;kasoku +かそくど;kasokudo +かぞえる;kazoeru +かぞく;kazoku +かた;kata +かた;kata +かた;kata +かたい;katai +かたい;katai +かたい;katai +かたい;katai +かたかな;katakana +かたがた;katagata +かたき;kataki +かたち;katachi +かたづく;kataduku +かたづける;katadukeru +かたな;katana +かたぶく;katabuku +かたまり;katamari +かたまる;katamaru +かたみち;katamichi +かたよる;katayoru +かたよる;katayoru +かたる;kataru +かち;kachi +かち;kachi +かっき;kakki +かっこ;kakko +かっこう;kakkou +かってに;katteni +かつ;katsu +かつぐ;katsugu +かつじ;katsuji +かつどう;katsudou +かつやく;katsuyaku +かつよう;katsuyou +かつりょく;katsuryoku +かづけ;kaduke +かてい;katei +かてい;katei +かてい;katei +かてい;katei +かど;kado +かな;kana +かない;kanai +かなしい;kanashii +かなしむ;kanashimu +かなづかい;kanadukai +かなづち;kanaduchi +かならずしも;kanarazushimo +かなり;kanari +かね;kane +かね;kane +かねぐら;kanegura +かねつ;kanetsu +かねもち;kanemochi +かねる;kaneru +かのう;kanou +かのじょ;kanojo +かはんすう;kahansuu +かばん;kaban +かひん;kahin +かび;kabi +かびん;kabin +かぶ;kabu +かぶせる;kabuseru +かぶる;kaburu +かべ;kabe +かま;kama +かまいません;kamaimasen +かみ;kami +かみ;kami +かみ;kami +かみくず;kamikuzu +かみさま;kamisama +かみそり;kamisori +かみのけ;kaminoke +かむ;kamu +かめ;kame +かもく;kamoku +かもしれない;kamoshirenai +かもつ;kamotsu +かゆ;kayu +かゆい;kayui +かよう;kayou +かよう;kayou +かよう;kayou +から;kara +からい;karai +からかう;karakau +からだ;karada +からだ;karada +からっぽ;karappo +かりる;kariru +かる;karu +かるい;karui +かるた;karuta +かれ;kare +かれら;karera +かれる;kareru +かわ;kawa +かわ;kawa +かわ;kawa +かわいい;kawaii +かわいがる;kawaigaru +かわいそう;kawaisou +かわいらしい;kawairashii +かわかす;kawakasu +かわく;kawaku +かわく;kawaku +かわせ;kawase +かわら;kawara +かわり;kawari +かわる;kawaru +かわる;kawaru +かん;kan +かん;kan +かん;kan +かん;kan +かん;kan +かん;kan +かんかく;kankaku +かんかく;kankaku +かんがえ;kangae +かんがえる;kangaeru +かんき;kanki +かんきゃく;kankyaku +かんきょう;kankyou +かんけい;kankei +かんげい;kangei +かんげき;kangeki +かんこう;kankou +かんごふ;kangofu +かんさい;kansai +かんさつ;kansatsu +かんしゃ;kansha +かんしょう;kanshou +かんしん;kanshin +かんしん;kanshin +かんじ;kanji +かんじ;kanji +かんじゃ;kanja +かんじょう;kanjou +かんじょう;kanjou +かんじる;kanjiru +かんする;kansuru +かんずる;kanzuru +かんせい;kansei +かんせつ;kansetsu +かんぜん;kanzen +かんそう;kansou +かんそう;kansou +かんそく;kansoku +かんたい;kantai +かんたん;kantan +かんちがい;kanchigai +かんちょう;kanchou +かんづめ;kandume +かんでんち;kandenchi +かんとう;kantou +かんとく;kantoku +かんどう;kandou +かんねん;kannen +かんばん;kanban +かんぱい;kanpai +かんびょう;kanbyou +かんり;kanri +かんりょう;kanryou +かんれん;kanren +かんわ;kanwa +がい;gai +がい;gai +がいこう;gaikou +がいこく;gaikoku +がいしゅつ;gaishutsu +がいぶ;gaibu +がいろん;gairon +がか;gaka +がく;gaku +がくしゃ;gakusha +がくしゅう;gakushuu +がくじゅつ;gakujutsu +がくせい;gakusei +がくねん;gakunen +がくぶ;gakubu +がくもん;gakumon +がくりょく;gakuryoku +がち;gachi +がっか;gakka +がっかい;gakkai +がっかり;gakkari +がっき;gakki +がっき;gakki +がっきゅう;gakkyuu +がっこう;gakkou +がっぴ;gappi +がまん;gaman +がる;garu +がわ;gawa +がんきょう;gankyou +がんじつ;ganjitsu +がんばる;ganbaru +き;ki +き;ki +き;ki +き;ki +きあつ;kiatsu +きいろい;kiiroi +きえる;kieru +きおく;kioku +きおん;kion +きかい;kikai +きかい;kikai +きかえる;kikaeru +きかん;kikan +きかん;kikan +きかんしゃ;kikansha +ききん;kikin +きぎょう;kigyou +きく;kiku +きく;kiku +きぐ;kigu +きけん;kiken +きげん;kigen +きげん;kigen +きこう;kikou +きこえる;kikoeru +きごう;kigou +きざし;kizashi +きざむ;kizamu +きし;kishi +きしゃ;kisha +きしゃ;kisha +きしょう;kishou +きじ;kiji +きじ;kiji +きじゅん;kijun +きすう;kisuu +きず;kizu +きせつ;kisetsu +きせる;kiseru +きそ;kiso +きそく;kisoku +きた;kita +きたい;kitai +きたい;kitai +きたく;kitaku +きたない;kitanai +きたる;kitaru +きち;kichi +きちょう;kichou +きちんと;kichinto +きっかけ;kikkake +きっさ;kissa +きって;kitte +きっと;kitto +きっぷ;kippu +きつい;kitsui +きづく;kiduku +きにいる;kiniiru +きにゅう;kinyuu +きぬ;kinu +きねん;kinen +きのう;kinou +きのう;kinou +きのどく;kinodoku +きはい;kihai +きばん;kiban +きびしい;kibishii +きふ;kifu +きぶん;kibun +きほん;kihon +きぼう;kibou +きまり;kimari +きまる;kimaru +きみ;kimi +きみ;kimi +きみょう;kimyou +きめる;kimeru +きもち;kimochi +きもの;kimono +きゃく;kyaku +きゃくせき;kyakuseki +きゃくま;kyakuma +きゅう;kyuu +きゅう;kyuu +きゅう;kyuu +きゅう;kyuu +きゅうか;kyuuka +きゅうぎょう;kyuugyou +きゅうけい;kyuukei +きゅうげき;kyuugeki +きゅうこう;kyuukou +きゅうこう;kyuukou +きゅうしゅう;kyuushuu +きゅうじょ;kyuujo +きゅうそく;kyuusoku +きゅうそく;kyuusoku +きゅうよ;kyuuyo +きゅうよう;kyuuyou +きゅうりょう;kyuuryou +きょう;kyou +きょう;kyou +きょういく;kyouiku +きょういん;kyouin +きょうか;kyouka +きょうかい;kyoukai +きょうかい;kyoukai +きょうかしょ;kyoukasho +きょうきゅう;kyoukyuu +きょうぎ;kyougi +きょうさん;kyousan +きょうし;kyoushi +きょうしつ;kyoushitsu +きょうしゅく;kyoushuku +きょうじゅ;kyouju +きょうそう;kyousou +きょうだい;kyoudai +きょうだい;kyoudai +きょうちょう;kyouchou +きょうつう;kyoutsuu +きょうどう;kyoudou +きょうふ;kyoufu +きょうみ;kyoumi +きょうよう;kyouyou +きょうり;kyouri +きょうりょく;kyouryoku +きょうりょく;kyouryoku +きょか;kyoka +きょく;kyoku +きょく;kyoku +きょくせん;kyokusen +きょだい;kyodai +きょねん;kyonen +きょり;kyori +きよい;kiyoi +きよう;kiyou +きらい;kirai +きらう;kirau +きらく;kiraku +きり;kiri +きりつ;kiritsu +きる;kiru +きる;kiru +きる;kiru +きれい;kirei +きれる;kireru +きろく;kiroku +きわ;kiwa +きわた;kiwata +きをつける;kiwotsukeru +きんえん;kin_en +きんがく;kingaku +きんきん;kinkin +きんぎょ;kingyo +きんし;kinshi +きんじょ;kinjo +きんせん;kinsen +きんぞく;kinzoku +きんだい;kindai +きんちょう;kinchou +ああ;aa +あい;ai +あいかわらず;aikawarazu +あいさつ;aisatsu +あいじょう;aijou +あいする;aisuru +あいず;aizu +あいだ;aida +あいて;aite +あいにく;ainiku +あいまい;aimai +あう;au +あう;au +あう;au +あお;ao +あおい;aoi +あおじろい;aojiroi +あか;aka +あかい;akai +あかがね;akagane +あかちゃん;akachan +あかり;akari +あかるい;akarui +あがる;agaru +あき;aki +あき;aki +あき;aki +あきうど;akiudo +あきらか;akiraka +あきらめる;akirameru +あきる;akiru +あきれる;akireru +あく;aku +あく;aku +あく;aku +あくしゅ;akushu +あくび;akubi +あくま;akuma +あくまで;akumade +あくる;akuru +あけがた;akegata +あける;akeru +あける;akeru +あげる;ageru +あげる;ageru +あこがれる;akogareru +あさ;asa +あさい;asai +あさって;asatte +あさねぼう;asanebou +あざ;aza +あし;ashi +あしあと;ashiato +あした;ashita +あしもと;ashimoto +あじ;aji +あじわう;ajiwau +あずかる;azukaru +あずける;azukeru +あずま;azuma +あせ;ase +あそこ;asoko +あそび;asobi +あたい;atai +あたえる;ataeru +あたし;atashi +あたたかい;atatakai +あたたまる;atatamaru +あたためる;atatameru +あたま;atama +あたらしい;atarashii +あたり;atari +あたりまえ;atarimae +あたる;ataru +あだびと;adabito +あちこち;achikochi +あちら;achira +あちらこちら;achirakochira +あっこう;akkou +あっしゅく;asshuku +あっち;acchi +あつい;atsui +あつい;atsui +あつい;atsui +あつかう;atsukau +あつかましい;atsukamashii +あつまり;atsumari +あつまる;atsumaru +あつめる;atsumeru +あてな;atena +あてはまる;atehamaru +あてはめる;atehameru +あてる;ateru +あと;ato +あと;ato +あな;ana +あなた;anata +あに;ani +あね;ane +あの;ano +あばれる;abareru +あびる;abiru +あふれる;afureru +あぶない;abunai +あぶら;abura +あぶる;aburu +あまい;amai +あまど;amado +あまやかす;amayakasu +あまり;amari +あまる;amaru +あみもの;amimono +あむ;amu +あめ;ame +あめ;ame +あやうい;ayaui +あやしい;ayashii +あやまり;ayamari +あやまる;ayamaru +あら;ara +あらい;arai +あらい;arai +あらう;arau +あらし;arashi +あらすじ;arasuji +あらそう;arasou +あらた;arata +あらためて;aratamete +あらためる;aratameru +あらゆる;arayuru +あらわす;arawasu +あらわす;arawasu +あらわす;arawasu +あらわれ;araware +あらわれる;arawareru +ありがたい;arigatai +ありがとう;arigatou +ある;aru +ある;aru +ある;aru +あるいは;aruiha +あるく;aruku +あるじ;aruji +あれ;are +あれこれ;arekore +あれる;areru +あわ;awa +あわせる;awaseru +あわただしい;awatadashii +あわてる;awateru +あわれ;aware +あん;an +あんい;an_i +あんがい;angai +あんき;anki +あんしん;anshin +あんぜん;anzen +あんてい;antei +あんな;anna +あんない;annai +あんまり;anmari +い;i +いい;ii +いいえ;iie +いいだす;iidasu +いいつける;iitsukeru +いいん;iin +いう;iu +いえ;ie +いえぬし;ienushi +いか;ika +いかが;ikaga +いかずち;ikazuchi +いかる;ikaru +いがい;igai +いがい;igai +いがく;igaku +いき;iki +いき;iki +いきいき;ikiiki +いきおい;ikioi +いきなり;ikinari +いきもの;ikimono +いきる;ikiru +いぎ;igi +いく;iku +いく;iku +いくさ;ikusa +いくさ;ikusa +いくじ;ikuji +いくつ;ikutsu +いくぶん;ikubun +いくら;ikura +いけ;ike +いけない;ikenai +いけばな;ikebana +いけん;iken +いこう;ikou +いご;igo +いさましい;isamashii +いし;ishi +いし;ishi +いし;ishi +いし;ishi +いしき;ishiki +いしゃ;isha +いしょくじゅう;ishokujuu +いじ;iji +いじめる;ijimeru +いじょう;ijou +いじょう;ijou +いじわる;ijiwaru +いす;isu +いずみ;izumi +いずれ;izure +いぜん;izen +いそがしい;isogashii +いそぐ;isogu +いた;ita +いたい;itai +いたす;itasu +いたずら;itazura +いただきます;itadakimasu +いただく;itadaku +いたみ;itami +いたむ;itamu +いたる;itaru +いだい;idai +いだく;idaku +いち;ichi +いち;ichi +いち;ichi +いち;ichi +いちいち;ichiichi +いちおう;ichiou +いちげん;ichigen +いちじ;ichiji +いちじつ;ichijitsu +いちじょう;ichijou +いちだんと;ichidanto +いちど;ichido +いちどに;ichidoni +いちにん;ichinin +いちば;ichiba +いちばん;ichiban +いちぶ;ichibu +いちりゅう;ichiryuu +いっか;ikka +いっさくじつ;issakujitsu +いっさくねん;issakunen +いっしゅ;isshu +いっしゅん;isshun +いっしょ;issho +いっしょう;isshou +いっしょうけんめい;isshoukenmei +いっせい;issei +いっそう;issou +いったい;ittai +いったん;ittan +いっち;icchi +いっぱい;ippai +いっぱん;ippan +いっぽう;ippou +いつ;itsu +きんにく;kinniku +きんゆう;kin_yuu +きんよう;kin_you +ぎいん;giin +ぎかい;gikai +ぎし;gishi +ぎしき;gishiki +ぎじゅつ;gijutsu +ぎちょう;gichou +ぎっしり;gisshiri +ぎむ;gimu +ぎもん;gimon +ぎゃく;gyaku +ぎゅうにゅう;gyuunyuu +ぎょう;gyou +ぎょうぎ;gyougi +ぎょうじ;gyouji +ぎょうれつ;gyouretsu +ぎょぎょう;gyogyou +ぎょく;gyoku +ぎろん;giron +ぎん;gin +ぎんこう;ginkou +く;ku +くいき;kuiki +くう;kuu +くうき;kuuki +くうこう;kuukou +くうそう;kuusou +くうちゅう;kuuchuu +くぎ;kugi +くぎる;kugiru +くぐる;kuguru +くさ;kusa +くさい;kusai +くさり;kusari +くさる;kusaru +くし;kushi +くしゃみ;kushami +くしん;kushin +くじょう;kujou +くすり;kusuri +くすりゆび;kusuriyubi +くず;kuzu +くずす;kuzusu +くずれる;kuzureru +くせ;kuse +くたびれる;kutabireru +くだく;kudaku +くだける;kudakeru +くださる;kudasaru +くだもの;kudamono +くだらない;kudaranai +くだり;kudari +くだる;kudaru +くち;kuchi +くちびる;kuchibiru +くちべに;kuchibeni +くっつく;kuttsuku +くっつける;kuttsukeru +くつ;kutsu +くつう;kutsuu +くつした;kutsushita +くとうてん;kutouten +くどい;kudoi +くに;kuni +くにざかい;kunizakai +くばる;kubaru +くび;kubi +くふう;kufuu +くぶん;kubun +くべつ;kubetsu +くみ;kumi +くみあい;kumiai +くみあわせ;kumiawase +くみたてる;kumitateru +くむ;kumu +くむ;kumu +くむ;kumu +くも;kumo +くもり;kumori +くもる;kumoru +くやしい;kuyashii +くやむ;kuyamu +くらい;kurai +くらい;kurai +くらし;kurashi +くらす;kurasu +くらべる;kuraberu +くりかえす;kurikaesu +くるう;kuruu +くるしい;kurushii +くるしむ;kurushimu +くるしめる;kurushimeru +くるま;kuruma +くるむ;kurumu +くれ;kure +くれぐれも;kureguremo +くれる;kureru +くれる;kureru +くろ;kuro +くろい;kuroi +くろう;kurou +くわえる;kuwaeru +くわしい;kuwashii +くわわる;kuwawaru +くん;kun +くんれん;kunren +ぐあい;guai +ぐうすう;guusuu +ぐうぜん;guuzen +ぐたい;gutai +ぐっすり;gussuri +ぐらい;gurai +ぐん;gun +ぐん;gun +ぐんたい;guntai +け;ke +けい;kei +けい;kei +けい;kei +けいい;keii +けいえい;keiei +けいかく;keikaku +けいかん;keikan +けいき;keiki +けいけん;keiken +けいこ;keiko +けいこう;keikou +けいこうとう;keikoutou +けいこく;keikoku +けいご;keigo +けいさつ;keisatsu +けいさん;keisan +けいざい;keizai +けいしき;keishiki +けいじ;keiji +けいじ;keiji +けいぞく;keizoku +けいと;keito +けいとう;keitou +けいど;keido +けいば;keiba +けいび;keibi +けいやく;keiyaku +けいゆ;keiyu +けいようし;keiyoushi +けいようどうし;keiyoudoushi +けが;kega +けがす;kegasu +けがれる;kegareru +けがわ;kegawa +けさ;kesa +けしき;keshiki +けしょう;keshou +けしゴム;keshigomu +けす;kesu +けずる;kezuru +けた;keta +けち;kechi +けっか;kekka +けっかん;kekkan +けっきょく;kekkyoku +けっこう;kekkou +けっこん;kekkon +けっさく;kessaku +けっして;kesshite +けっしん;kesshin +けっせき;kesseki +けってん;ketten +けつあつ;ketsuatsu +けつえき;ketsueki +けつだん;ketsudan +けつろん;ketsuron +けむい;kemui +けむり;kemuri +ける;keru +けれど;keredo +けわしい;kewashii +けん;ken +けん;ken +けんか;kenka +けんかい;kenkai +けんがく;kengaku +けんきゅう;kenkyuu +けんきょ;kenkyo +けんこう;kenkou +けんさ;kensa +けんしゅう;kenshuu +けんせつ;kensetsu +けんそん;kenson +けんちく;kenchiku +けんちょう;kenchou +けんとう;kentou +けんとう;kentou +けんびきょう;kenbikyou +けんぶつ;kenbutsu +けんぽう;kenpou +けんめい;kenmei +けんり;kenri +げいじゅつ;geijutsu +げいのう;geinou +げか;geka +げき;geki +げき;geki +げきじょう;gekijou +げきぞう;gekizou +げしゃ;gesha +げしゅく;geshuku +げじゅん;gejun +げすい;gesui +げた;geta +げっきゅう;gekkyuu +げつまつ;getsumatsu +げつよう;getsuyou +げん;gen +げんいん;gen_in +げんかい;genkai +げんかん;genkan +げんき;genki +げんきん;genkin +げんこう;genkou +げんご;gengo +げんさん;gensan +げんざい;genzai +げんし;genshi +げんしょう;genshou +げんじつ;genjitsu +げんじゅう;genjuu +げんじょう;genjou +げんじょう;genjou +げんだい;gendai +げんど;gendo +げんに;genni +げんり;genri +げんりょう;genryou +こ;ko +こ;ko +こ;ko +こい;koi +こい;koi +こいしい;koishii +こいびと;koibito +こう;kou +こう;kou +こういん;kouin +こううん;kouun +こうえん;kouen +こうえん;kouen +こうか;kouka +こうか;kouka +こうか;kouka +こうかん;koukan +こうがい;kougai +こうがい;kougai +こうきゅう;koukyuu +こうきょう;koukyou +こうぎ;kougi +こうぎょう;kougyou +こうくう;koukuu +こうけい;koukei +こうけん;kouken +こうげい;kougei +こうげき;kougeki +こうこう;koukou +こうこう;koukou +こうこく;koukoku +こうさ;kousa +こうさい;kousai +こうさてん;kousaten +こうし;koushi +こうしき;koushiki +こうしゃ;kousha +こうしゃ;kousha +こうしゅう;koushuu +こうじ;kouji +こうじつ;koujitsu +こうじょう;koujou +こうすい;kousui +こうせい;kousei +こうせい;kousei +こうせき;kouseki +こうせん;kousen +こうそう;kousou +こうそく;kousoku +こうぞう;kouzou +こうたい;koutai +こうち;kouchi +こうちゃ;koucha +こうつう;koutsuu +こうつうきかん;koutsuukikan +こうてい;koutei +こうてい;koutei +こうとう;koutou +こうとうがっこう;koutougakkou +こうど;koudo +こうどう;koudou +こうどう;koudou +こうはい;kouhai +こうばん;kouban +こうひょう;kouhyou +こうふく;koufuku +こうぶつ;koubutsu +こうへい;kouhei +こうほ;kouho +こうむ;koumu +こうもく;koumoku +こうよう;kouyou +こうりゅう;kouryuu +こうりょ;kouryo +こうりょく;kouryoku +こえ;koe +こえる;koeru +こえる;koeru +こおり;koori +こがす;kogasu +こきゅう;kokyuu +こきょう;kokyou +こくおう;kokuou +こくご;kokugo +こくさい;kokusai +こくせき;kokuseki +こくばん;kokuban +こくふく;kokufuku +こくみん;kokumin +こくもつ;kokumotsu +こくりつ;kokuritsu +こぐ;kogu +こげる;kogeru +ここ;koko +ここのか;kokonoka +ここのつ;kokonotsu +こころ;kokoro +こころあたり;kokoroatari +こころえる;kokoroeru +こごえる;kogoeru +こごる;kogoru +こし;koshi +こしかけ;koshikake +こしかける;koshikakeru +こしょう;koshou +こしょう;koshou +こしらえる;koshiraeru +こじん;kojin +こす;kosu +こす;kosu +こたい;kotai +こたえ;kotae +こたえる;kotaeru +こちら;kochira +こちらこそ;kochirakoso +こっか;kokka +こっかい;kokkai +こっせつ;kossetsu +こっそり;kossori +こつ;kotsu +こづかい;kodukai +こづつみ;kodutsumi +こてん;koten +こと;koto +こと;koto +ことし;kotoshi +ことづける;kotodukeru +ことなる;kotonaru +ことば;kotoba +ことばづかい;kotobadukai +ことり;kotori +ことわざ;kotowaza +ことわる;kotowaru +こども;kodomo +こな;kona +こないだ;konaida +この;kono +このあいだ;konoaida +このごろ;konogoro +このみ;konomi +このむ;konomu +こぼす;kobosu +こぼれる;koboreru +こまかい;komakai +こまる;komaru +こむ;komu +こむ;komu +こむぎ;komugi +こめ;kome +こや;koya +こゆび;koyubi +こらえる;koraeru +これ;kore +これら;korera +ころがす;korogasu +ころがる;korogaru +ころす;korosu +ころぶ;korobu +こわい;kowai +こわす;kowasu +こわれる;kowareru +こん;kon +こんかい;konkai +こんご;kongo +こんごう;kongou +こんざつ;konzatsu +こんだて;kondate +こんど;kondo +こんな;konna +こんなに;konnani +こんなん;konnan +こんにちは;konnichiha +こんばんは;konbanha +こんやく;kon_yaku +こんらん;konran +ご;go +ご;go +ご;go +ご;go +ごう;gou +ごう;gou +ごう;gou +ごういん;gouin +ごうか;gouka +ごうかく;goukaku +ごうぎ;gougi +ごうけい;goukei +ごうとう;goutou +ごうどう;goudou +ごうり;gouri +ごうりゅう;gouryuu +ごかい;gokai +ごがく;gogaku +ごく;goku +ごくろうさま;gokurousama +ごご;gogo +ごじゅうおん;gojuuon +ごぜん;gozen +ごちそう;gochisou +ごちそうさま;gochisousama +ごと;goto +ごはん;gohan +ごぶさた;gobusata +ごみ;gomi +ごめん;gomen +ごめんください;gomenkudasai +ごめんなさい;gomennasai +ごらく;goraku +ごらん;goran +さ;sa +さあ;saa +さい;sai +さい;sai +さい;sai +さいきん;saikin +さいこう;saikou +さいご;saigo +さいさん;saisan +さいしゅう;saishuu +さいしょ;saisho +さいじつ;saijitsu +さいそく;saisoku +さいちゅう;saichuu +さいてい;saitei +さいてん;saiten +さいなん;sainan +さいのう;sainou +さいばん;saiban +さいふ;saifu +さいほう;saihou +さいわい;saiwai +さか;saka +さかい;sakai +さかさ;sakasa +さかさま;sakasama +さかずき;sakazuki +さかのぼる;sakanoboru +さかば;sakaba +さからう;sakarau +さかり;sakari +さかる;sakaru +さかん;sakan +さが;saga +さがす;sagasu +さがす;sagasu +さがる;sagaru +さき;saki +さきおととい;sakiototoi +さきほど;sakihodo +さぎょう;sagyou +さく;saku +さく;saku +さく;saku +さくいん;sakuin +さくしゃ;sakusha +さくじょ;sakujo +さくせい;sakusei +さくひん;sakuhin +さくぶつ;sakubutsu +さくぶん;sakubun +さくら;sakura +さぐる;saguru +さけ;sake +さけぶ;sakebu +さける;sakeru +さげる;sageru +ささえる;sasaeru +ささやく;sasayaku +ささる;sasaru +さしあげる;sashiageru +さしつかえ;sashitsukae +さしひく;sashihiku +さしみ;sashimi +さじ;saji +さす;sasu +さす;sasu +さす;sasu +さす;sasu +さす;sasu +さすが;sasuga +さそう;sasou +さっか;sakka +さっき;sakki +さっきょく;sakkyoku +さっさと;sassato +さっそく;sassoku +さっぱり;sappari +さつ;satsu +さつ;satsu +さつえい;satsuei +さて;sate +さとう;satou +さばく;sabaku +さび;sabi +さびしい;sabishii +さびる;sabiru +さべつ;sabetsu +さほう;sahou +さま;sama +さまざま;samazama +さます;samasu +さます;samasu +さまたげる;samatageru +さむい;samui +さめる;sameru +さめる;sameru +さゆう;sayuu +さようなら;sayounara +さら;sara +さらいげつ;saraigetsu +さらいしゅう;saraishuu +さらいねん;sarainen +さらに;sarani +さる;saru +さる;saru +さわがしい;sawagashii +さわぎ;sawagi +さわやか;sawayaka +さわる;sawaru +さん;san +さん;san +さんか;sanka +さんかく;sankaku +さんぎょう;sangyou +さんこう;sankou +さんすう;sansuu +さんせい;sansei +さんせい;sansei +さんそ;sanso +さんち;sanchi +さんぽ;sanpo +さんりん;sanrin +ざいがく;zaigaku +ざいさん;zaisan +ざいもく;zaimoku +ざいりょう;zairyou +ざしき;zashiki +ざせき;zaseki +ざっし;zasshi +ざっと;zatto +ざつおん;zatsuon +ざぶとん;zabuton +ざんねん;zannen +し;shi +し;shi +し;shi +しあい;shiai +しあがる;shiagaru +しあさって;shiasatte +しあわせ;shiawase +しいんと;shiinto +しおからい;shiokarai +しかい;shikai +しかく;shikaku +しかくい;shikakui +しかし;shikashi +しかた;shikata +しかたがない;shikataganai +しかも;shikamo +しかる;shikaru +しき;shiki +しき;shiki +しきち;shikichi +しきゅう;shikyuu +しきゅう;shikyuu +しきりに;shikirini +しく;shiku +しけん;shiken +しげき;shigeki +しげる;shigeru +しげん;shigen +しごと;shigoto +ししゃごにゅう;shishagonyuu +ししゅつ;shishutsu +しじ;shiji +しじゅう;shijuu +しじん;shijin +しずか;shizuka +しずまる;shizumaru +しずむ;shizumu +しせい;shisei +しぜん;shizen +しぜんかがく;shizenkagaku +しそう;shisou +しそん;shison +した;shita +した;shita +したい;shitai +したがう;shitagau +したがき;shitagaki +したがって;shitagatte +したぎ;shitagi +したく;shitaku +したしい;shitashii +したためる;shitatameru +したまち;shitamachi +しだい;shidai +しち;shichi +しっかり;shikkari +しっき;shikki +しっぱい;shippai +しっぴつ;shippitsu +しっぽ;shippo +しつ;shitsu +しつ;shitsu +しつぎょう;shitsugyou +しつこい;shitsukoi +しつど;shitsudo +しつぼう;shitsubou +しつもん;shitsumon +しつれい;shitsurei +しつれいしました;shitsureishimashita +しつれん;shitsuren +してい;shitei +してつ;shitetsu +してん;shiten +しどう;shidou +しな;shina +しなもの;shinamono +しぬ;shinu +しはい;shihai +しはらい;shiharai +しはらう;shiharau +しばい;shibai +しばしば;shibashiba +しばふ;shibafu +しばらく;shibaraku +しばる;shibaru +しゃべる;shaberu +しゃらく;sharaku +しゃりん;sharin +しゅ;shu +しゅう;shuu +しゅう;shuu +しゅう;shuu +しゅうい;shuui +しゅうかい;shuukai +しゅうかく;shuukaku +しゅうかん;shuukan +しゅうかん;shuukan +しゅうきょう;shuukyou +しゅうきん;shuukin +しゅうごう;shuugou +しゅうしょく;shuushoku +しゅうじ;shuuji +しゅうせい;shuusei +しゅうぜん;shuuzen +しゅうだん;shuudan +しゅうちゅう;shuuchuu +しゅうてん;shuuten +しゅうにゅう;shuunyuu +しゅうにん;shuunin +しゅうへん;shuuhen +しゅうり;shuuri +しゅうりょう;shuuryou +しゅぎ;shugi +しゅくしょう;shukushou +しゅくじつ;shukujitsu +しゅくだい;shukudai +しゅくはく;shukuhaku +しゅご;shugo +しゅしょう;shushou +しゅじゅつ;shujutsu +しゅだん;shudan +しゅちょう;shuchou +しゅっきん;shukkin +しゅっしん;shusshin +しゅっせき;shusseki +しゅっちょう;shucchou +しゅっぱつ;shuppatsu +しゅっぱん;shuppan +しゅつじょう;shutsujou +しゅと;shuto +しゅふ;shufu +しゅみ;shumi +しゅやく;shuyaku +しゅよう;shuyou +しゅるい;shurui +しゅんかん;shunkan +しょ;sho +しょい;shoi +しょう;shou +しょう;shou +しょう;shou +しょう;shou +しょう;shou +しょう;shou +しょうか;shouka +しょうかい;shoukai +しょうがい;shougai +しょうがくきん;shougakukin +しょうがくせい;shougakusei +しょうがっこう;shougakkou +しょうがつ;shougatsu +しょうきょくてき;shoukyokuteki +しょうきん;shoukin +しょうぎ;shougi +しょうぎょう;shougyou +しょうこう;shoukou +しょうご;shougo +しょうしゃ;shousha +しょうしょう;shoushou +しょうじ;shouji +しょうじき;shoujiki +しょうじょう;shoujou +しょうじる;shoujiru +しょうすう;shousuu +しょうせつ;shousetsu +しょうたい;shoutai +しょうち;shouchi +しょうてん;shouten +しょうてん;shouten +しょうとつ;shoutotsu +しょうどく;shoudoku +しょうにん;shounin +しょうねん;shounen +しょうはい;shouhai +しょうばい;shoubai +しょうひ;shouhi +しょうひん;shouhin +しょうひん;shouhin +しょうぶ;shoubu +しょうべん;shouben +しょうぼう;shoubou +しょうぼうしょ;shoubousho +しょうみ;shoumi +しょうめい;shoumei +しょうめん;shoumen +しょうゆ;shouyu +しょうらい;shourai +しょうりゃく;shouryaku +しょきゅう;shokyuu +しょく;shoku +しょくえん;shokuen +しょくぎょう;shokugyou +しょくじ;shokuji +しょくたく;shokutaku +しょくどう;shokudou +しょくにん;shokunin +しょくば;shokuba +しょくひん;shokuhin +しょくぶつ;shokubutsu +しょくもつ;shokumotsu +しょくよく;shokuyoku +しょくりょう;shokuryou +しょさい;shosai +しょしょ;shosho +しょじゅん;shojun +しょせき;shoseki +しょっき;shokki +しょてん;shoten +しょどう;shodou +しょほ;shoho +しょめい;shomei +しょもつ;shomotsu +しょり;shori +しょるい;shorui +しよう;shiyou +しらが;shiraga +しらせ;shirase +しらせる;shiraseru +しらべる;shiraberu +しり;shiri +しりあい;shiriai +しりぞく;shirizoku +しりぞける;shirizokeru +しりつ;shiritsu +しりょう;shiryou +しる;shiru +しる;shiru +しろ;shiro +しろ;shiro +しろ;shiro +しろい;shiroi +しろうと;shirouto +しわ;shiwa +しん;shin +しん;shin +しんかんせん;shinkansen +しんがく;shingaku +しんがり;shingari +しんくう;shinkuu +しんけい;shinkei +しんけん;shinken +しんこう;shinkou +しんこく;shinkoku +しんごう;shingou +しんさつ;shinsatsu +しんしん;shinshin +しんじゅう;shinjuu +しんじる;shinjiru +しんずる;shinzuru +しんせき;shinseki +しんせつ;shinsetsu +しんせん;shinsen +しんぞう;shinzou +しんだい;shindai +しんだん;shindan +しんちょう;shinchou +しんにゅう;shinnyuu +しんばん;shinban +しんぱい;shinpai +しんぶん;shinbun +しんぽ;shinpo +しんめんもく;shinmenmoku +しんや;shin_ya +しんゆう;shin_yuu +しんよう;shin_you +しんらい;shinrai +しんり;shinri +しんりん;shinrin +しんるい;shinrui +しんろ;shinro +しんわ;shinwa +じいん;jiin +じえい;jiei +じかた;jikata +じかに;jikani +じかん;jikan +じかんわり;jikanwari +じき;jiki +じき;jiki +じけん;jiken +じこ;jiko +じこく;jikoku +じさつ;jisatsu +じさん;jisan +じしゃく;jishaku +じしゅう;jishuu +じしょ;jisho +じしん;jishin +じしん;jishin +じしん;jishin +じじつ;jijitsu +じじょう;jijou +じそく;jisoku +じたい;jitai +じたく;jitaku +じだい;jidai +じち;jichi +じっかん;jikkan +じっけん;jikken +じっこう;jikkou +じっさい;jissai +じっし;jisshi +じっしゅう;jisshuu +じっせき;jisseki +じっと;jitto +じっぷん;jippun +じつ;jitsu +じつげん;jitsugen +じつに;jitsuni +じつは;jitsuha +じつぶつ;jitsubutsu +じつよう;jitsuyou +じつりょく;jitsuryoku +じつれい;jitsurei +じてん;jiten +じてんしゃ;jitensha +じどう;jidou +じどう;jidou +じどうしゃ;jidousha +じばん;jiban +じびき;jibiki +じぶん;jibun +じまん;jiman +じみ;jimi +じむ;jimu +じめん;jimen +じゃくてん;jakuten +じゃぐち;jaguchi +じゃま;jama +じゃんけん;janken +じゅう;juu +じゅうきょ;juukyo +じゅうし;juushi +じゅうしょ;juusho +じゅうたい;juutai +じゅうたい;juutai +じゅうたく;juutaku +じゅうたん;juutan +じゅうだい;juudai +じゅうてん;juuten +じゅうみん;juumin +じゅうよう;juuyou +じゅうりょう;juuryou +じゅうりょく;juuryoku +じゅぎょう;jugyou +じゅくご;jukugo +じゅけん;juken +じゅつご;jutsugo +じゅみょう;jumyou +じゅよう;juyou +じゅわき;juwaki +じゅん;jun +じゅんかん;junkan +じゅんさ;junsa +じゅんじゅん;junjun +じゅんじょ;junjo +じゅんじょう;junjou +じゅんすい;junsui +じゅんちょう;junchou +じゅんばん;junban +じゆう;jiyuu +じょ;jo +じょう;jou +じょう;jou +じょうかく;joukaku +じょうき;jouki +じょうきゅう;joukyuu +じょうきょう;joukyou +じょうきょう;joukyou +じょうぎ;jougi +じょうけん;jouken +じょうしき;joushiki +じょうしゃ;jousha +じょうじゅん;joujun +じょうたい;joutai +じょうたつ;joutatsu +じょうだん;joudan +じょうとう;joutou +すいぶん;suibun +すいへい;suihei +すいへいせん;suiheisen +すいみん;suimin +すいめん;suimen +すいよう;suiyou +すう;suu +すうがく;suugaku +すうじ;suuji +すえっこ;suekko +すがた;sugata +すき;suki +すききらい;sukikirai +すきずき;sukizuki +すきとおる;sukitooru +すきま;sukima +すぎ;sugi +すぎ;sugi +すぎる;sugiru +すくう;sukuu +すくない;sukunai +すくなくとも;sukunakutomo +すぐ;sugu +すぐれる;sugureru +すこし;sukoshi +すこしも;sukoshimo +すごい;sugoi +すごす;sugosu +すじ;suji +すすむ;susumu +すすめる;susumeru +すすめる;susumeru +すず;suzu +すずしい;suzushii +すずむ;suzumu +すっかり;sukkari +すっきり;sukkiri +すっと;sutto +すっぱい;suppai +すてき;suteki +すてる;suteru +すでに;sudeni +すな;suna +すなお;sunao +すなわち;sunawachi +すばらしい;subarashii +すべて;subete +すべる;suberu +すまい;sumai +すませる;sumaseru +すまない;sumanai +すみ;sumi +すみ;sumi +すみません;sumimasen +すむ;sumu +すむ;sumu +すむ;sumu +すめらぎ;sumeragi +すもう;sumou +すり;suri +する;suru +する;suru +する;suru +すると;suruto +するどい;surudoi +すれちがう;surechigau +すわる;suwaru +すんぽう;sunpou +ず;zu +ずいひつ;zuihitsu +ずいぶん;zuibun +ずうずうしい;zuuzuushii +ずかん;zukan +ずけい;zukei +ずっと;zutto +ずつう;zutsuu +ずのう;zunou +ずひょう;zuhyou +ずらす;zurasu +ずるい;zurui +ずれる;zureru +せい;sei +せい;sei +せい;sei +せい;sei +せいかく;seikaku +せいかく;seikaku +せいかつ;seikatsu +せいき;seiki +せいきゅう;seikyuu +せいけつ;seiketsu +せいげん;seigen +せいこう;seikou +せいさく;seisaku +せいさん;seisan +せいしき;seishiki +せいしつ;seishitsu +せいしょ;seisho +せいしょうねん;seishounen +せいしん;seishin +せいじ;seiji +せいじん;seijin +せいすう;seisuu +せいせき;seiseki +せいぜい;seizei +せいそう;seisou +せいぞう;seizou +せいぞん;seizon +せいちょう;seichou +せいと;seito +せいとう;seitou +せいど;seido +せいねん;seinen +せいねんがっぴ;seinengappi +せいのう;seinou +せいひん;seihin +せいび;seibi +せいふ;seifu +せいぶつ;seibutsu +せいぶん;seibun +せいべつ;seibetsu +せいほうけい;seihoukei +せいめい;seimei +せいもん;seimon +せいよう;seiyou +せいり;seiri +せいりつ;seiritsu +せいれき;seireki +せかい;sekai +せき;seki +せき;seki +せきたん;sekitan +せきどう;sekidou +せきにん;sekinin +せきゆ;sekiyu +せけん;seken +せっかく;sekkaku +せっきょくてき;sekkyokuteki +せっきん;sekkin +せっけい;sekkei +せっけん;sekken +せっする;sessuru +せつ;setsu +せつ;setsu +せつぞく;setsuzoku +せつび;setsubi +せつめい;setsumei +せつやく;setsuyaku +せともの;setomono +せなか;senaka +せびろ;sebiro +せまい;semai +せまる;semaru +せめ;seme +せめる;semeru +せめる;semeru +せりふ;serifu +せわ;sewa +せん;sen +せん;sen +せん;sen +せん;sen +せんこう;senkou +せんざい;senzai +せんしゅ;senshu +せんじつ;senjitsu +せんす;sensu +せんすい;sensui +せんせい;sensei +せんせい;sensei +せんせんげつ;sensengetsu +せんせんしゅう;sensenshuu +せんそう;sensou +せんぞ;senzo +せんたく;sentaku +せんたく;sentaku +せんたん;sentan +せんでん;senden +せんとう;sentou +せんぱい;senpai +せんぷうき;senpuuki +せんめん;senmen +せんろ;senro +ぜいかん;zeikan +ぜいきん;zeikin +ぜいたく;zeitaku +ぜったい;zettai +ぜつめつ;zetsumetsu +ぜひ;zehi +ぜひとも;zehitomo +ぜん;zen +ぜん;zen +ぜんいん;zen_in +ぜんこく;zenkoku +ぜんご;zengo +ぜんしゃ;zensha +ぜんしゅう;zenshuu +ぜんしん;zenshin +ぜんしん;zenshin +ぜんぜん;zenzen +ぜんたい;zentai +ぜんぱん;zenpan +ぜんぶ;zenbu +ぜんりょく;zenryoku +そう;sou +そう;sou +そうい;soui +そうおん;souon +そうこ;souko +そうご;sougo +そうさ;sousa +そうさく;sousaku +そうしき;soushiki +そうして;soushite +そうじ;souji +そうぞう;souzou +そうぞうしい;souzoushii +そうぞく;souzoku +そうだん;soudan +そうち;souchi +そうとう;soutou +そうべつ;soubetsu +そうりだいじん;souridaijin +そうりょう;souryou +そくたつ;sokutatsu +そくてい;sokutei +そくど;sokudo +そくりょう;sokuryou +そくりょく;sokuryoku +そこ;soko +そこ;soko +そこで;sokode +そしき;soshiki +そしつ;soshitsu +そして;soshite +そせん;sosen +そそぐ;sosogu +そそっかしい;sosokkashii +そだつ;sodatsu +そだてる;sodateru +そちら;sochira +そっくり;sokkuri +そっちょく;socchoku +そっと;sotto +そつぎょう;sotsugyou +そで;sode +そと;soto +そなえる;sonaeru +その;sono +そのうえ;sonoue +そのうち;sonouchi +そのため;sonotame +そのほか;sonohoka +そのまま;sonomama +そば;soba +そふ;sofu +そぼ;sobo +そぼく;soboku +そまつ;somatsu +それ;sore +それから;sorekara +それぞれ;sorezore +それで;sorede +それでは;soredeha +それでも;soredemo +それとも;soretomo +それなら;sorenara +それに;soreni +それほど;sorehodo +それる;soreru +そろう;sorou +そろえる;soroeru +そろそろ;sorosoro +そろばん;soroban +そんがい;songai +そんけい;sonkei +そんざい;sonzai +そんしつ;sonshitsu +そんぞく;sonzoku +そんちょう;sonchou +そんとく;sontoku +そんな;sonna +ぞい;zoi +ぞうか;zouka +ぞうきん;zoukin +ぞうげん;zougen +ぞうせん;zousen +ぞうだい;zoudai +ぞうり;zouri +ぞくする;zokusuru +ぞくぞく;zokuzoku +ぞんじる;zonjiru +た;ta +たい;tai +たいいく;taiiku +たいいん;taiin +たいおん;taion +たいかい;taikai +たいきん;taikin +たいくつ;taikutsu +たいけい;taikei +たいこ;taiko +たいさく;taisaku +たいざい;taizai +たいし;taishi +たいした;taishita +たいして;taishite +たいしょう;taishou +たいしょう;taishou +たいじゅう;taijuu +たいする;taisuru +たいせい;taisei +たいせき;taiseki +たいせつ;taisetsu +たいせん;taisen +たいそう;taisou +たいてい;taitei +たいど;taido +たいはん;taihan +たいふう;taifuu +たいへん;taihen +たいほ;taiho +たいぼく;taiboku +たいよう;taiyou +たいら;taira +たいりく;tairiku +たいりつ;tairitsu +たうえ;taue +たえず;taezu +たおす;taosu +たおれる;taoreru +たか;taka +たかい;takai +たかめる;takameru +たから;takara +たがい;tagai +たがやす;tagayasu +たき;taki +たく;taku +たく;taku +たくさん;takusan +たくわえる;takuwaeru +たけ;take +たしか;tashika +たしか;tashika +たしかめる;tashikameru +たしょう;tashou +たす;tasu +たすかる;tasukaru +たすける;tasukeru +たずねる;tazuneru +たずねる;tazuneru +たたかい;tatakai +たたかう;tatakau +たたく;tataku +たたむ;tatamu +ただ;tada +ただ;tada +ただいま;tadaima +ただし;tadashi +ただしい;tadashii +ただちに;tadachini +たち;tachi +たちあがる;tachiagaru +たちどまる;tachidomaru +たちば;tachiba +たちまち;tachimachi +たっする;tassuru +たった;tatta +たっぷり;tappuri +たつ;tatsu +たつ;tatsu +たつ;tatsu +たつ;tatsu +たて;tate +たてもの;tatemono +たてる;tateru +たてる;tateru +たとえ;tatoe +たとえば;tatoeba +たとえる;tatoeru +たな;tana +たに;tani +たのしい;tanoshii +たのしみ;tanoshimi +たのしむ;tanoshimu +たのみ;tanomi +たのむ;tanomu +たのもしい;tanomoshii +たば;taba +たばこ;tabako +たび;tabi +たび;tabi +たび;tabi +たびたび;tabitabi +たぶん;tabun +たべる;taberu +たま;tama +たま;tama +たまご;tamago +たまたま;tamatama +たまに;tamani +たまらない;tamaranai +たまる;tamaru +ため;tame +ためいき;tameiki +ためし;tameshi +ためし;tameshi +ためす;tamesu +ためらう;tamerau +たより;tayori +たよる;tayoru +たりる;tariru +たる;taru +たれ;tare +たん;tan +たん;tan +たんい;tan_i +たんき;tanki +たんこう;tankou +たんご;tango +たんしょ;tansho +たんじゅん;tanjun +たんじょう;tanjou +たんす;tansu +たんすい;tansui +たんすう;tansuu +たんとう;tantou +たんなる;tannaru +たんに;tanni +たんぺん;tanpen +だい;dai +だい;dai +だい;dai +だいいち;daiichi +だいがく;daigaku +だいがくいん;daigakuin +だいきん;daikin +だいく;daiku +だいしょう;daishou +だいじょうぶ;daijoubu +だいじん;daijin +だいたい;daitai +だいとうりょう;daitouryou +だいどころ;daidokoro +だいひょう;daihyou +だいぶ;daibu +だいぶぶん;daibubun +だいめい;daimei +だいめいし;daimeishi +だいり;dairi +だえん;daen +だから;dakara +だけど;dakedo +だす;dasu +だっせん;dassen +だって;datte +だとう;datou +だます;damasu +だまる;damaru +だめ;dame +だらけ;darake +だらしない;darashinai +だれか;dareka +だん;dan +だん;dan +だんかい;dankai +だんし;danshi +だんすい;dansui +だんせい;dansei +だんたい;dantai +だんだん;dandan +だんち;danchi +だんてい;dantei +だんぼう;danbou +ち;chi +ち;chi +ちい;chii +ちいき;chiiki +ちいさい;chiisai +ちえ;chie +ちか;chika +ちかい;chikai +ちかう;chikau +ちかく;chikaku +ちかごろ;chikagoro +ちかすい;chikasui +ちかづく;chikaduku +ちかづける;chikadukeru +ちかてつ;chikatetsu +ちかよる;chikayoru +ちから;chikara +ちからづよい;chikaraduyoi +ちがい;chigai +ちがいない;chigainai +ちがう;chigau +ちきゅう;chikyuu +ちぎる;chigiru +ちく;chiku +ちこく;chikoku +ちしき;chishiki +ちしつ;chishitsu +ちじ;chiji +ちじん;chijin +ちず;chizu +ちたい;chitai +ちち;chichi +ちちおや;chichioya +ちちはは;chichihaha +ちぢむ;chidimu +ちぢめる;chidimeru +ちぢれる;chidireru +ちっとも;chittomo +ちてん;chiten +ちのう;chinou +ちへいせん;chiheisen +ちめい;chimei +ちゃ;cha +ちゃいろ;chairo +ちゃく;chaku +ちゃくちゃく;chakuchaku +ちゃわん;chawan +ちゃん;chan +ちゃんと;chanto +ちゅう;chuu +ちゅう;chuu +ちゅうい;chuui +ちゅうおう;chuuou +ちゅうかん;chuukan +ちゅうかん;chuukan +ちょきん;chokin +ちょくご;chokugo +ちょくせつ;chokusetsu +ちょくせん;chokusen +ちょくぜん;chokuzen +ちょくつう;chokutsuu +ちょくりゅう;chokuryuu +ちょしゃ;chosha +ちょぞう;chozou +ちょっかく;chokkaku +ちょっけい;chokkei +ちょっと;chotto +ちらかす;chirakasu +ちらかる;chirakaru +ちらす;chirasu +ちり;chiri +ちりがみ;chirigami +ちる;chiru +つい;tsui +ついか;tsuika +ついで;tsuide +ついに;tsuini +つう;tsuu +つうか;tsuuka +つうか;tsuuka +つうがく;tsuugaku +つうきん;tsuukin +つうこう;tsuukou +つうしん;tsuushin +つうじる;tsuujiru +つうち;tsuuchi +つうちょう;tsuuchou +つうやく;tsuuyaku +つうよう;tsuuyou +つうろ;tsuuro +つかい;tsukai +つかう;tsukau +つかまえる;tsukamaeru +つかまる;tsukamaru +つかむ;tsukamu +つかれ;tsukare +つかれる;tsukareru +つき;tsuki +つき;tsuki +つきあい;tsukiai +つきあう;tsukiau +つきあたり;tsukiatari +つきあたる;tsukiataru +つぎつぎ;tsugitsugi +つく;tsuku +つく;tsuku +つく;tsuku +つく;tsuku +つく;tsuku +つく;tsuku +つくえ;tsukue +つくる;tsukuru +つくる;tsukuru +つぐ;tsugu +つけくわえる;tsukekuwaeru +つける;tsukeru +つける;tsukeru +つける;tsukeru +つける;tsukeru +つける;tsukeru +つごう;tsugou +つたえる;tsutaeru +つたわる;tsutawaru +つち;tsuchi +つちゅう;tsuchuu +つっこむ;tsukkomu +つつ;tsutsu +つつみ;tsutsumi +つづき;tsuduki +つづく;tsuduku +つづける;tsudukeru +つとめ;tsutome +つとめる;tsutomeru +つとめる;tsutomeru +つとめる;tsutomeru +つな;tsuna +つながり;tsunagari +つながる;tsunagaru +つなぐ;tsunagu +つなげる;tsunageru +つねに;tsuneni +つばさ;tsubasa +つぶ;tsubu +つぶす;tsubusu +つぶれる;tsubureru +つま;tsuma +つまずく;tsumazuku +つまらない;tsumaranai +つまり;tsumari +つまる;tsumaru +つみ;tsumi +つむ;tsumu +つめ;tsume +つめたい;tsumetai +つめる;tsumeru +つもり;tsumori +つもる;tsumoru +つゆ;tsuyu +つよい;tsuyoi +つり;tsuri +つりあう;tsuriau +つる;tsuru +つる;tsuru +つるす;tsurusu +つれ;tsure +つれる;tsureru +て;te +てあらい;tearai +てい;tei +ていあん;teian +ていいん;teiin +ていか;teika +ていか;teika +ていき;teiki +ていきけん;teikiken +ていきゅうび;teikyuubi +ていこう;teikou +ていし;teishi +ていし;teishi +ていし;teishi +ていしゃ;teisha +ていしゅつ;teishutsu +ていでん;teiden +ていど;teido +ていねい;teinei +ていりゅうじょ;teiryuujo +ていれ;teire +てがみ;tegami +てき;teki +てきかく;tekikaku +てきかく;tekikaku +てきする;tekisuru +てきせつ;tekisetsu +てきとう;tekitou +てきど;tekido +てきよう;tekiyou +てくび;tekubi +てごろ;tegoro +てじな;tejina +てちょう;techou +てっきょう;tekkyou +てっきり;tekkiri +てっこう;tekkou +てっする;tessuru +てってい;tettei +てっぽう;teppou +てつ;tetsu +てつがく;tetsugaku +てつだい;tetsudai +てつだう;tetsudau +てつづき;tetsuduki +てつどう;tetsudou +てつや;tetsuya +てぬぐい;tenugui +てぶくろ;tebukuro +てま;tema +てまえ;temae +てら;tera +てらす;terasu +てる;teru +てん;ten +てん;ten +てんいん;ten_in +てんかい;tenkai +てんき;tenki +てんけい;tenkei +てんこう;tenkou +てんじょう;tenjou +てんすう;tensuu +てんてん;tenten +てんてん;tenten +てんねん;tennen +てんらんかい;tenrankai +で;de +であい;deai +であう;deau +であう;deau +でいり;deiri +でいりぐち;deiriguchi +でかける;dekakeru +できあがり;dekiagari +できあがる;dekiagaru +できごと;dekigoto +できる;dekiru +できるだけ;dekirudake +でぐち;deguchi +でこぼこ;dekoboko +ですから;desukara +でたらめ;detarame +では(でわ);deha(dewa) +でむかえ;demukae +でむかえる;demukaeru +でも;demo +でる;deru +でんき;denki +でんき;denki +でんきゅう;denkyuu +でんし;denshi +でんしゃ;densha +でんせん;densen +でんせん;densen +でんち;denchi +でんちゅう;denchuu +でんとう;dentou +でんとう;dentou +でんぱ;denpa +でんぽう;denpou +でんりゅう;denryuu +でんりょく;denryoku +でんわ;denwa +と;to +とい;toi +といあわせ;toiawase +とう;tou +とう;tou +とう;tou +とうあん;touan +とういつ;touitsu +とうけい;toukei +とうげ;touge +とうざい;touzai +とうしょ;tousho +とうじ;touji +とうじつ;toujitsu +とうじょう;toujou +とうだい;toudai +とうちゃく;touchaku +とうとう;toutou +とうなん;tounan +とうばん;touban +とうひょう;touhyou +とうぶん;toubun +とうめい;toumei +とうゆ;touyu +とうよう;touyou +とおい;tooi +とおか;tooka +とおく;tooku +とおす;toosu +とおり;toori +とおりかかる;toorikakaru +とおりすぎる;toorisugiru +とおる;tooru +とかい;tokai +とかす;tokasu +とがる;togaru +とき;toki +ときどき;tokidoki +とく;toku +とく;toku +とくい;tokui +とくしゅ;tokushu +とくしょく;tokushoku +とくちょう;tokuchou +とくてい;tokutei +とくばい;tokubai +とくべつ;tokubetsu +とけい;tokei +とけこむ;tokekomu +とける;tokeru +とける;tokeru +とこ;toko +とこのま;tokonoma +とこや;tokoya +ところ;tokoro +ところが;tokoroga +ところで;tokorode +とざん;tozan +とし;toshi +とし;toshi +としつき;toshitsuki +としょ;tosho +としより;toshiyori +としん;toshin +とじょう;tojou +とじる;tojiru +とたん;totan +とだな;todana +とち;tochi +とっきゅう;tokkyuu +とっくに;tokkuni +とつぜん;totsuzen +とても;totemo +ととのう;totonou +とどく;todoku +とどける;todokeru +とどまる;todomaru +とどまる;todomaru +とどめる;todomeru +とどめる;todomeru +となり;tonari +とにかく;tonikaku +とばす;tobasu +とばり;tobari +とばり;tobari +とびこむ;tobikomu +とびだす;tobidasu +とぶ;tobu +とぶ;tobu +とまる;tomaru +とめる;tomeru +とも;tomo +ともかく;tomokaku +ともしび;tomoshibi +ともだち;tomodachi +ともに;tomoni +とら;tora +とらえる;toraeru +とり;tori +とりあげる;toriageru +とりいれる;toriireru +とりかえる;torikaeru +とりけす;torikesu +とりだす;toridasu +とりわけ;toriwake +とる;toru +とる;toru +とる;toru +とる;toru +とれる;toreru +とんでもない;tondemonai +どう;dou +どう;dou +どういたしまして;douitashimashite +どういつ;douitsu +どうか;douka +どうかく;doukaku +どうぐ;dougu +どうさ;dousa +どうし;doushi +どうして;doushite +どうしても;doushitemo +どうじ;douji +どうせ;douse +どうぞ;douzo +どうぞよろしく;douzoyoroshiku +どうとく;doutoku +どうぶつ;doubutsu +どうも;doumo +どうよう;douyou +どうよう;douyou +どうりょう;douryou +どうろ;douro +どうわ;douwa +どきどき;dokidoki +どく;doku +どくしょ;dokusho +どくしん;dokushin +どくとく;dokutoku +どくりつ;dokuritsu +どこ;doko +どこか;dokoka +どさん;dosan +どちら;dochira +どっと;dotto +どなた;donata +どなる;donaru +どの;dono +どよう;doyou +どりょく;doryoku +どれ;dore +どれどれ;doredore +どろ;doro +どろぼう;dorobou +どんどん;dondon +どんな;donna +どんなに;donnani +どんぶり;donburi +な;na +ない;nai +ないか;naika +ないせん;naisen +ないよう;naiyou +なお;nao +なおす;naosu +なおす;naosu +なおる;naoru +なおる;naoru +なか;naka +なかなおり;nakanaori +なかなか;nakanaka +なかば;nakaba +なかみ;nakami +なかみ;nakami +なかよし;nakayoshi +ながい;nagai +ながい;nagai +ながす;nagasu +ながびく;nagabiku +ながめ;nagame +ながめる;nagameru +ながれ;nagare +ながれる;nagareru +なく;naku +なく;naku +なくす;nakusu +なくす;nakusu +なくなる;nakunaru +なぐさめる;nagusameru +なぐる;naguru +なげる;nageru +なさる;nasaru +なし;nashi +なす;nasu +なぜ;naze +なぜなら;nazenara +なぞ;nazo +なぞなぞ;nazonazo +なっとく;nattoku +なつ;natsu +なつかしい;natsukashii +なでる;naderu +ななつ;nanatsu +ななめ;naname +なに;nani +なにしろ;nanishiro +なにぶん;nanibun +なにも;nanimo +なぬか;nanuka +なべ;nabe +なまいき;namaiki +なまえ;namae +なまける;namakeru +なみ;nami +なみき;namiki +なみだ;namida +なやむ;nayamu +ならう;narau +ならう;narau +ならし;narashi +ならす;narasu +ならぶ;narabu +ならべる;naraberu +なる;naru +なる;naru +なる;naru +なるべく;narubeku +なるほど;naruhodo +なれる;nareru +なれる;nareru +なわ;nawa +なん;nan +なんきょく;nankyoku +なんて;nante +なんで;nande +なんでも;nandemo +なんとか;nantoka +なんとなく;nantonaku +なんとも;nantomo +なんべい;nanbei +なんぼく;nanboku +に;ni +に;ni +にあう;niau +におい;nioi +におう;niou +にがい;nigai +にがす;nigasu +にがて;nigate +にぎやか;nigiyaka +にぎる;nigiru +にく;niku +にくい;nikui +にくい;nikui +にくむ;nikumu +にくらしい;nikurashii +にげる;nigeru +にごる;nigoru +にし;nishi +にじ;niji +にちじ;nichiji +にちじょう;nichijou +にちや;nichiya +にちようひん;nichiyouhin +にっか;nikka +にっき;nikki +にっこう;nikkou +にっこり;nikkori +にっちゅう;nicchuu +にってい;nittei +にっとう;nittou +にっぽん;nippon +ににん;ninin +にぶい;nibui +にもつ;nimotsu +にゅういん;nyuuin +にゅうがく;nyuugaku +にゅうしゃ;nyuusha +にゅうじょう;nyuujou +にょうぼう;nyoubou +にらむ;niramu +にる;niru +にる;niru +にわ;niwa +にわか;niwaka +ねんれい;nenrei +の;no +のう;nou +のうか;nouka +のうぎょう;nougyou +のうさんぶつ;nousanbutsu +のうそん;nouson +のうど;noudo +のうみん;noumin +のうやく;nouyaku +のうりつ;nouritsu +のうりょく;nouryoku +のき;noki +のこぎり;nokogiri +のこす;nokosu +のこらず;nokorazu +のこり;nokori +のこる;nokoru +のせる;noseru +のせる;noseru +のぞく;nozoku +のぞく;nozoku +のぞみ;nozomi +のぞむ;nozomu +のど;nodo +のばす;nobasu +のばす;nobasu +のびる;nobiru +のびる;nobiru +のべる;noberu +のぼり;nobori +のぼる;noboru +のぼる;noboru +のぼる;noboru +のむ;nomu +のり;nori +のりかえ;norikae +のりかえる;norikaeru +のりこし;norikoshi +のる;noru +のる;noru +のろのろ;noronoro +のんき;nonki +のんびり;nonbiri +は;ha +は;ha +はい;hai +はいいろ;haiiro +はいく;haiku +はいけん;haiken +はいさら;haisara +はいたつ;haitatsu +はいゆう;haiyuu +はう;hau +はえる;haeru +はか;haka +はかせ;hakase +はかり;hakari +はかる;hakaru +はかる;hakaru +はかる;hakaru +はがき;hagaki +はがす;hagasu +はきけ;hakike +はきはき;hakihaki +はく;haku +はく;haku +はく;haku +はくしゅ;hakushu +はくぶつかん;hakubutsukan +はぐるま;haguruma +はげしい;hageshii +はこ;hako +はこぶ;hakobu +はさまる;hasamaru +はさみ;hasami +はさん;hasan +はし;hashi +はし;hashi +はし;hashi +はしら;hashira +はしる;hashiru +はじく;hajiku +はじまり;hajimari +はじまる;hajimaru +はじめ;hajime +はじめて;hajimete +はじめまして;hajimemashite +はじめる;hajimeru +はす;hasu +はず;hazu +はずかしい;hazukashii +はずす;hazusu +はずれる;hazureru +はた;hata +はた;hata +はたけ;hatake +はたして;hatashite +はたち;hatachi +はたらき;hataraki +はたらく;hataraku +はだ;hada +はだか;hadaka +はだぎ;hadagi +はち;hachi +はち;hachi +はっき;hakki +はっきり;hakkiri +はっけん;hakken +はっこう;hakkou +はっしゃ;hassha +はっしゃ;hassha +はっそう;hassou +はったつ;hattatsu +はってん;hatten +はっぴょう;happyou +はつ;hatsu +はつ;hatsu +はついく;hatsuiku +はつおん;hatsuon +はつか;hatsuka +はつでん;hatsuden +はつばい;hatsubai +はつめい;hatsumei +はで;hade +はな;hana +はな;hana +はなし;hanashi +はなしあい;hanashiai +はなしあう;hanashiau +はなしかける;hanashikakeru +はなしちゅう;hanashichuu +はなす;hanasu +はなす;hanasu +はなす;hanasu +はなはだしい;hanahadashii +はなばなしい;hanabanashii +はなび;hanabi +はなみ;hanami +はなやか;hanayaka +はなよめ;hanayome +はなれる;hanareru +はなれる;hanareru +はね;hane +はねる;haneru +はは;haha +ははおや;hahaoya +はば;haba +はぶく;habuku +はへん;hahen +はみがき;hamigaki +はめる;hameru +はやい;hayai +はやい;hayai +はやくち;hayakuchi +はやし;hayashi +はやり;hayari +はやる;hayaru +はら;hara +はらいこむ;haraikomu +はらいもどす;haraimodosu +はらう;harau +はり;hari +はりがね;harigane +はりきる;harikiru +はる;haru +はる;haru +はる;haru +はれ;hare +はれる;hareru +はん;han +はんい;han_i +はんえい;han_ei +はんけい;hankei +はんこ;hanko +はんこう;hankou +はんざい;hanzai +はんじ;hanji +はんせい;hansei +はんたい;hantai +はんだん;handan +はんとう;hantou +はんにん;hannin +はんばい;hanbai +はんぶん;hanbun +ば;ba +ばあい;baai +ばい;bai +ばいてん;baiten +ばいばい;baibai +ばか;baka +ばからしい;bakarashii +ばくだい;bakudai +ばくはつ;bakuhatsu +ばしょ;basho +ばち;bachi +ばっする;bassuru +ばったり;battari +ばね;bane +ばめん;bamen +ばん;ban +ばん;ban +ばん;ban +ばんぐみ;bangumi +ばんごう;bangou +ばんざい;banzai +ばんち;banchi +ばんめ;banme +ひ;hi +ひ;hi +ひ;hi +ひ;hi +ひえる;hieru +ひかく;hikaku +ひかくてき;hikakuteki +ひかげ;hikage +ひかり;hikari +ひかる;hikaru +ひがい;higai +ひがえり;higaeri +ひき;hiki +ひきうける;hikiukeru +ひきかえす;hikikaesu +ひきざん;hikizan +ひきだし;hikidashi +ひきだす;hikidasu +ひきとめる;hikitomeru +ひきょう;hikyou +ひきわけ;hikiwake +ひく;hiku +ひく;hiku +ひくい;hikui +ひけつ;hiketsu +ひげ;hige +ひげき;higeki +ひこう;hikou +ひこうじょう;hikoujou +ひさしぶり;hisashiburi +ひざ;hiza +ひざし;hizashi +ひじ;hiji +ひじょう;hijou +ひだり;hidari +ひっかかる;hikkakaru +ひっかける;hikkakeru +ひっき;hikki +ひっくりかえす;hikkurikaesu +ひっくりかえる;hikkurikaeru +ひっこし;hikkoshi +ひっこす;hikkosu +ひっこむ;hikkomu +ひっし;hisshi +ひっしゃ;hissha +ひっぱる;hipparu +ひつじ;hitsuji +ひつじゅひん;hitsujuhin +ひつよう;hitsuyou +ひてい;hitei +ひとごみ;hitogomi +ひとさしゆび;hitosashiyubi +ひとしい;hitoshii +ひとすき;hitosuki +ひとつ;hitotsu +ひととおり;hitotoori +ひとどおり;hitodoori +ひとまず;hitomazu +ひとみ;hitomi +ひとやすみ;hitoyasumi +ひとり;hitori +ひとりごと;hitorigoto +ひとりでに;hitorideni +ひとりひとり;hitorihitori +ひどい;hidoi +ひにく;hiniku +ひにち;hinichi +ひねる;hineru +ひのいり;hinoiri +ひので;hinode +ひはん;hihan +ひひょう;hihyou +ひび;hibi +ひびき;hibiki +ひびく;hibiku +ひふ;hifu +ひみつ;himitsu +ひも;himo +ひゃく;hyaku +ひゃっかじてん;hyakkajiten +ひゃっかじてん;hyakkajiten +ひやす;hiyasu +ひょうか;hyouka +ひょうげん;hyougen +ひょうご;hyougo +ひょうし;hyoushi +ひょうしき;hyoushiki +ひょうじゅん;hyoujun +ひょうじょう;hyoujou +ひょうばん;hyouban +ひょうほん;hyouhon +ひょうめん;hyoumen +ひょうろん;hyouron +ひよう;hiyou +ひらがな;hiragana +ひらく;hiraku +ひる;hiru +ひるね;hirune +ひろい;hiroi +ひろう;hirou +ひろがる;hirogaru +ひろげる;hirogeru +ひろさ;hirosa +ひろば;hiroba +ひろびろ;hirobiro +ひろめる;hiromeru +びじん;bijin +びっくり;bikkuri +びみょう;bimyou +びょう;byou +びょういん;byouin +びょうき;byouki +びょうどう;byoudou +びよう;biyou +びん;bin +びんせん;binsen +びんづめ;bindume +ぴかぴか;pikapika +ぴったり;pittari +ふ;fu +ふあん;fuan +ふうけい;fuukei +ふうせん;fuusen +ふうぞく;fuuzoku +ふうとう;fuutou +ふうふ;fuufu +ふうん;fuun +ふえ;fue +ふえる;fueru +ふえる;fueru +ふか;fuka +ふかい;fukai +ふかまる;fukamaru +ふきそく;fukisoku +ふきゅう;fukyuu +ふきん;fukin +ふく;fuku +ふく;fuku +ふく;fuku +ふくざつ;fukuzatsu +ふくし;fukushi +ふくしゃ;fukusha +ふくしゅう;fukushuu +ふくすう;fukusuu +ふくそう;fukusou +ふくむ;fukumu +ふくめる;fukumeru +ふくらます;fukuramasu +ふくらむ;fukuramu +ふくろ;fukuro +ふけつ;fuketsu +ふける;fukeru +ふける;fukeru +ふこう;fukou +ふごう;fugou +ふさい;fusai +ふさがる;fusagaru +ふさぐ;fusagu +ふざける;fuzakeru +ふしぎ;fushigi +ふじゆう;fujiyuu +ふじん;fujin +ふじん;fujin +ふすま;fusuma +ふせい;fusei +ふせぐ;fusegu +ふそく;fusoku +ふぞく;fuzoku +ふたご;futago +ふたたび;futatabi +ふたつ;futatsu +ふだん;fudan +ふつ;futsu +ふつう;futsuu +ふつう;futsuu +ふつか;futsuka +ふで;fude +ふと;futo +ふとい;futoi +ふとう;futou +ふとる;futoru +ふとん;futon +ふなびん;funabin +ふね;fune +ふね;fune +ふびん;fubin +ふぶき;fubuki +ふへい;fuhei +ふまん;fuman +ふみ;fumi +ふみきり;fumikiri +ふむ;fumu +ふもと;fumoto +ふやす;fuyasu +ふやす;fuyasu +ふゆ;fuyu +ふり;furi +ふり;furi +ふりがな;furigana +ふりむく;furimuku +ふりょう;furyou +ふる;furu +ふる;furu +ふるい;furui +ふるえる;furueru +ふるまう;furumau +ふれる;fureru +ふろ;furo +ふろしき;furoshiki +ふん;fun +ふんいき;fun_iki +ふんか;funka +ふんすい;funsui +ぶ;bu +ぶき;buki +ぶさた;busata +ぶし;bushi +ぶしゅ;bushu +ぶじ;buji +ぶたい;butai +ぶっか;bukka +ぶっしつ;busshitsu +ぶっそう;bussou +ぶつ;butsu +ぶつかる;butsukaru +ぶつける;butsukeru +ぶつぶつ;butsubutsu +ぶつり;butsuri +ぶひん;buhin +ぶぶん;bubun +ぶらさげる;burasageru +ぶんか;bunka +ぶんかい;bunkai +ぶんがく;bungaku +ぶんけん;bunken +ぶんげい;bungei +ぶんしょう;bunshou +ぶんすう;bunsuu +ぶんせき;bunseki +ぶんたい;buntai +ぶんたん;buntan +ぶんぷ;bunpu +ぶんぼうぐ;bunbougu +ぶんぽう;bunpou +ぶんみゃく;bunmyaku +ぶんめい;bunmei +ぶんや;bun_ya +ぶんりょう;bunryou +ぶんるい;bunrui +へい;hei +へいかい;heikai +へいき;heiki +へいこう;heikou +へいじつ;heijitsu +へいたい;heitai +へいぼん;heibon +へいや;heiya +へいわ;heiwa +へこむ;hekomu +へそ;heso +へた;heta +へだたる;hedataru +へだてる;hedateru +へや;heya +へらす;herasu +へる;heru +へる;heru +へん;hen +へん;hen +へん;hen +へん;hen +へんか;henka +へんこう;henkou +へんしゅう;henshuu +へんじ;henji +べっそう;bessou +べつ;betsu +べつに;betsuni +べつべつ;betsubetsu +べんきょう;benkyou +べんじょ;benjo +べんとう;bentou +べんり;benri +ほう;hou +ほう;hou +ほうがく;hougaku +ほうき;houki +ほうげん;hougen +ほうこう;houkou +ほうこく;houkoku +ほうしん;houshin +ほうせき;houseki +ほうそう;housou +ほうそう;housou +ほんとう;hontou +ほんにん;honnin +ほんの;honno +ほんぶ;honbu +ほんもの;honmono +ほんやく;hon_yaku +ほんらい;honrai +ぼう;bou +ぼう;bou +ぼうえんきょう;bouenkyou +ぼうけん;bouken +ぼうさん;bousan +ぼうし;boushi +ぼうし;boushi +ぼうだい;boudai +ぼうはん;bouhan +ぼうや;bouya +ぼうりょく;bouryoku +ぼくじょう;bokujou +ぼくちく;bokuchiku +ぼしゅう;boshuu +ぼっちゃん;bocchan +ぼろ;boro +ぼん;bon +ぼんち;bonchi +まあ;maa +まあまあ;maamaa +まい;mai +まいご;maigo +まいすう;maisuu +まいる;mairu +まう;mau +まかせる;makaseru +まかなう;makanau +まがる;magaru +まき;maki +まく;maku +まく;maku +まく;maku +まくら;makura +まけ;make +まける;makeru +まげる;mageru +まご;mago +まごまご;magomago +まさか;masaka +まさつ;masatsu +まさに;masani +まざる;mazaru +まざる;mazaru +まし;mashi +まじる;majiru +まじる;majiru +ます;masu +ますます;masumasu +まず;mazu +まずい;mazui +まずしい;mazushii +まぜる;mazeru +まぜる;mazeru +また;mata +またぐ;matagu +または;mataha +まだ;mada +まち;machi +まちあいしつ;machiaishitsu +まちあわせる;machiawaseru +まちかど;machikado +まちがい;machigai +まちがう;machigau +まちがえる;machigaeru +まっか;makka +まっくら;makkura +まっくろ;makkuro +まっさお;massao +まっさき;massaki +まっしろ;masshiro +まっすぐ;massugu +まったく;mattaku +まつ;matsu +まつ;matsu +まつり;matsuri +まつる;matsuru +まとまる;matomaru +まとめる;matomeru +まど;mado +まどぐち;madoguchi +まなぶ;manabu +まにあう;maniau +まね;mane +まねく;maneku +まねる;maneru +まぶしい;mabushii +まぶた;mabuta +まま;mama +まめ;mame +まもなく;mamonaku +まもる;mamoru +まよう;mayou +まる;maru +まるい;marui +まるで;marude +まれ;mare +まわす;mawasu +まわり;mawari +まわりみち;mawarimichi +まわる;mawaru +まんいん;man_in +まんが;manga +まんぞく;manzoku +まんてん;manten +まんなか;mannaka +まんねんひつ;mannenhitsu +まんまえ;manmae +まんまるい;manmarui +み;mi +み;mi +みあげる;miageru +みえる;mieru +みおくり;miokuri +みおくる;miokuru +みおろす;miorosu +みかけ;mikake +みかずき;mikazuki +みかた;mikata +みかた;mikata +みがく;migaku +みぎ;migi +みごと;migoto +みさき;misaki +みじかい;mijikai +みじめ;mijime +みず;mizu +みずうみ;mizuumi +みずから;mizukara +みずぎ;mizugi +みせや;miseya +みせる;miseru +みそ;miso +みだし;midashi +みち;michi +みちじゅん;michijun +みちる;michiru +みっか;mikka +みっつ;mittsu +みっともない;mittomonai +みつ;mitsu +みつかる;mitsukaru +みつける;mitsukeru +みつめる;mitsumeru +みどり;midori +みな;mina +みなおす;minaosu +みなと;minato +みなれる;minareru +みにくい;minikui +みのる;minoru +みぶん;mibun +みほん;mihon +みまい;mimai +みまう;mimau +みまん;miman +みみ;mimi +みょう;myou +みょうじ;myouji +みらい;mirai +みりょく;miryoku +みる;miru +みる;miru +みんかん;minkan +みんしゅ;minshu +みんよう;min_you +む;mu +むいか;muika +むかい;mukai +むかう;mukau +むかえ;mukae +むかえる;mukaeru +むかし;mukashi +むき;muki +むく;muku +むく;muku +むけ;muke +むける;mukeru +むげん;mugen +むこう;mukou +むし;mushi +むし;mushi +むしあつい;mushiatsui +むしば;mushiba +むしろ;mushiro +むじ;muji +むじゅん;mujun +むす;musu +むすう;musuu +むすこ;musuko +むすぶ;musubu +むすめ;musume +むずかしい;muzukashii +むだ;muda +むちゅう;muchuu +むっつ;muttsu +むね;mune +むら;mura +むらさき;murasaki +むり;muri +むりょう;muryou +め;me +め;me +めい;mei +めいかく;meikaku +めいさく;meisaku +めいし;meishi +めいし;meishi +めいしょ;meisho +めいしん;meishin +めいじる;meijiru +めいじん;meijin +めいずる;meizuru +めいぶつ;meibutsu +めいめい;meimei +めいれい;meirei +めいわく;meiwaku +めうえ;meue +めぐまれる;megumareru +めぐる;meguru +めざす;mezasu +めざまし;mezamashi +めし;meshi +めしあがる;meshiagaru +めした;meshita +めじるし;mejirushi +めずらしい;mezurashii +めだつ;medatsu +めちゃくちゃ;mechakucha +めっきり;mekkiri +めったに;mettani +めでたい;medetai +めまい;memai +めやす;meyasu +めん;men +めんきょ;menkyo +めんせき;menseki +めんせつ;mensetsu +めんぜい;menzei +めんどう;mendou +めんどうくさい;mendoukusai +もう;mou +もうかる;moukaru +もうける;moukeru +もうける;moukeru +もうしあげる;moushiageru +もうしこむ;moushikomu +もうしわけ;moushiwake +もうしわけない;moushiwakenai +もうす;mousu +もうふ;moufu +もえる;moeru +もくざい;mokuzai +もくじ;mokuji +もくてき;mokuteki +もくひょう;mokuhyou +もくよう;mokuyou +もし;moshi +もしかしたら;moshikashitara +もしかすると;moshikasuruto +もしも;moshimo +もしもし;moshimoshi +もじ;moji +もたれる;motareru +もち;mochi +もちあげる;mochiageru +もちいる;mochiiru +もちろん;mochiron +もったいない;mottainai +もって;motte +もっと;motto +もっとも;mottomo +もっとも;mottomo +もつ;motsu +もと;moto +もとい;motoi +もとづく;motoduku +もとめる;motomeru +もともと;motomoto +もどす;modosu +もどる;modoru +もの;mono +もの;mono +ものおき;monooki +ものおと;monooto +ものがたり;monogatari +ものがたる;monogataru +ものごと;monogoto +ものさし;monosashi +ものすごい;monosugoi +もむ;momu +もも;momo +もやす;moyasu +もよう;moyou +もよおし;moyooshi +もらう;morau +もり;mori +もん;mon +もんく;monku +もんだい;mondai +もんどう;mondou +や;ya +やおや;yaoya +やかましい;yakamashii +やかん;yakan +やがて;yagate +やぎょう;yagyou +やく;yaku +やく;yaku +やくしゃ;yakusha +やくしょ;yakusho +やくす;yakusu +やくそく;yakusoku +やくだつ;yakudatsu +やくにん;yakunin +やくひん;yakuhin +やくめ;yakume +やくわり;yakuwari +やける;yakeru +やさい;yasai +やさしい;yasashii +やさしい;yasashii +やしろ;yashiro +やじるし;yajirushi +やすい;yasui +やすい;yasui +やすみ;yasumi +やすむ;yasumu +やせる;yaseru +やたらに;yatarani +やちゅう;yachuu +やちん;yachin +やっかい;yakkai +やっきょく;yakkyoku +やっつ;yattsu +やっつける;yattsukeru +やっと;yatto +やっぱり;yappari +やとう;yatou +やど;yado +やね;yane +やぶる;yaburu +やぶれる;yabureru +やま;yama +やまい;yamai +やむ;yamu +やむ;yamu +やむをえない;yamuwoenai +やめる;yameru +やや;yaya +やる;yaru +やわらかい;yawarakai +やわらかい;yawarakai +ゆ;yu +ゆいいつ;yuiitsu +ゆうえんち;yuuenchi +ゆうかん;yuukan +ゆうがた;yuugata +ゆうき;yuuki +ゆうこう;yuukou +ゆうこう;yuukou +ゆうしゅう;yuushuu +ゆうしょう;yuushou +ゆうじょう;yuujou +ゆうじん;yuujin +ゆうそう;yuusou +ゆうだち;yuudachi +ゆうのう;yuunou +ゆうひ;yuuhi +ゆうびん;yuubin +ゆうべ;yuube +ゆうめい;yuumei +ゆうゆう;yuuyuu +ゆうり;yuuri +ゆうりょう;yuuryou +ゆかい;yukai +ゆかた;yukata +ゆき;yuki +ゆくえ;yukue +ゆけつ;yuketsu +ゆげ;yuge +ゆしゅつ;yushutsu +ゆずる;yuzuru +ゆそう;yusou +ゆたか;yutaka +ゆだん;yudan +ゆっくり;yukkuri +ゆでる;yuderu +ゆにゅう;yunyuu +ゆのみ;yunomi +ゆび;yubi +ゆびわ;yubiwa +ゆめ;yume +ゆるい;yurui +ゆるす;yurusu +ゆれる;yureru +よあけ;yoake +よい;yoi +よう;you +よう;you +ようい;youi +ようい;youi +ようか;youka +ようがん;yougan +ようき;youki +ようき;youki +ようきゅう;youkyuu +ようご;yougo +ようし;youshi +ようじ;youji +ようじ;youji +ようじん;youjin +ようす;yousu +ようする;yousuru +ようするに;yousuruni +ようせき;youseki +ようそ;youso +ようち;youchi +ようちえん;youchien +ようてん;youten +ようと;youto +ようひんてん;youhinten +ようび;youbi +ようふく;youfuku +ようぶん;youbun +ようもう;youmou +ようやく;youyaku +ようりょう;youryou +よき;yoki +よく;yoku +よくばり;yokubari +よけい;yokei +よこ;yoko +よこぎる;yokogiru +よこす;yokosu +よさん;yosan +よしゅう;yoshuu +よす;yosu +よせる;yoseru +よそ;yoso +よそく;yosoku +よっか;yokka +よっつ;yottsu +よっぱらい;yopparai +よつかど;yotsukado +よてい;yotei +よのなか;yononaka +よび;yobi +よびかける;yobikakeru +よびだす;yobidasu +よぶ;yobu +よぶん;yobun +よほう;yohou +よぼう;yobou +よみ;yomi +よみがえる;yomigaeru +よむ;yomu +よめ;yome +よやく;yoyaku +よゆう;yoyuu +より;yori +よる;yoru +よる;yoru +よる;yoru +よると;yoruto +よろこび;yorokobi +よろこぶ;yorokobu +よろしい;yoroshii +よろしく;yoroshiku +よわい;yowai +らい;rai +らいにち;rainichi +らく;raku +らくだい;rakudai +らん;ran +らんぼう;ranbou +りえき;rieki +りか;rika +りかい;rikai +りがい;rigai +りく;riku +りこう;rikou +りこん;rikon +りそう;risou +りっぱ;rippa +りつ;ritsu +りゃくす;ryakusu +りゅう;ryuu +りゅういき;ryuuiki +りゅうがく;ryuugaku +りゆう;riyuu +りょう;ryou +りょう;ryou +りょう;ryou +りょうがえ;ryougae +りょうがわ;ryougawa +りょうきん;ryoukin +りょうし;ryoushi +りょうしゅう;ryoushuu +りょうじ;ryouji +りょうり;ryouri +りょかん;ryokan +りょこう;ryokou +りよう;riyou +りん;rin +りんじ;rinji +るす;rusu +るすばん;rusuban +れい;rei +れい;rei +れいがい;reigai +れいぎ;reigi +れいせい;reisei +れいぞうこ;reizouko +れいてん;reiten +れいとう;reitou +れいぼう;reibou +れきし;rekishi +れっしゃ;ressha +れっとう;rettou +れつ;retsu +れんが;renga +れんごう;rengou +れんしゅう;renshuu +れんそう;rensou +れんぞく;renzoku +れんらく;renraku +ろうか;rouka +ろうじん;roujin +ろうそく;rousoku +ろうどう;roudou +ろくおん;rokuon +ろんじる;ronjiru +ろんずる;ronzuru +ろんそう;ronsou +ろんぶん;ronbun +わ;wa +わえい;waei +わかい;wakai +わかす;wakasu +わかる;wakaru +わかれ;wakare +わかれる;wakareru +わかれる;wakareru +わかわかしい;wakawakashii +わが;waga +わがまま;wagamama +わき;waki +わく;waku +わく;waku +わけ;wake +わける;wakeru +わざと;wazato +わすれもの;wasuremono +わすれる;wasureru +わずか;wazuka +わたす;watasu +わたる;wataru +わだい;wadai +わびる;wabiru +わふく;wafuku +わらい;warai +わらう;warau +わりあい;wariai +わりあいに;wariaini +わりあて;wariate +わりこむ;warikomu +わりざん;warizan +わりびき;waribiki +わる;waru +われる;wareru +われわれ;wareware +わん;wan +わん;wan +わん;wan +アイスクリーム;aisukuriimu +アイデア;aidea +アイロン;airon +アウト;auto +アクセサリー;akusesarii +アクセント;akusento +アジア;ajia +アナウンサー;anaunsaa +アパート;apaato +アフリカ;afurika +アメリカ;amerika +アルバイト;arubaito +アルバム;arubamu +アンテナ;antena +イコール;ikooru +イメージ;imeeji +インク;inku +インタビュー;intabyuu +ウーマン;uuman +ウール;uuru +ウイスキー;uisukii +ウェートレス;weetoresu +エスカレーター;esukareetaa +エチケット;echiketto +エネルギー;enerugii +エプロン;epuron +エレベーター;erebeetaa +エンジン;enjin +オーケストラ;ookesutora +オートバイ;ootobai +オートメーション;ootomeeshon +オイル;oiru +オフィス;ofisu +オルガン;orugan +オレンジ;orenji +カー;kaa +カーテン;kaaten +カード;kaado +カーブ;kaabu +カセット;kasetto +カバー;kabaa +カメラ;kamera +カラー;karaa +カレンダー;karendaa +カロリー;karorii +ガス;gasu +ガソリン;gasorin +ガソリンスタンド;gasorinsutando +ガム;gamu +ガラス;garasu +キャプテン;kyaputen +キャンパス;kyanpasu +キャンプ;kyanpu +キロ;kiro +ギター;gitaa +ギャング;gyangu +クーラー;kuuraa +クラス;kurasu +クラブ;kurabu +クリーニング;kuriiningu +クリーム;kuriimu +クリスマス;kurisumasu +グラス;gurasu +グラフ;gurafu +グラム;guramu +グランド;gurando +グループ;guruupu +ケーキ;keeki +ケース;keesu +ゲーム;geemu +コース;koosu +コーチ;koochi +コート;kooto +コード;koodo +コーヒー;koohii +コーラス;koorasu +コック;kokku +コップ;koppu +コピー;kopii +コミュニケーション;komyunikeeshon +コレクション;korekushon +コンクール;konkuuru +コンクリート;konkuriito +コンサート;konsaato +コンセント;konsento +コンピューター;konpyuutaa +ゴム;gomu +サークル;saakuru +サービス;saabisu +サイレン;sairen +サイン;sain +サラダ;sarada +サラリーマン;sarariiman +サンダル;sandaru +サンドイッチ;sandoicchi +サンプル;sanpuru +シーズン;shiizun +シーツ;shiitsu +シャッター;shattaa +シャツ;shatsu +シャワー;shawaa +ショップ;shoppu +シリーズ;shiriizu +ジーンズ;jiinzu +ジェットき;jettoki +ジャーナリスト;jaanarisuto +ジャム;jamu +ジュース;juusu +スーツ;suutsu +スーツケース;suutsukeesu +スーパー;suupaa +スープ;suupu +スイッチ;suicchi +スカート;sukaato +スカーフ;sukaafu +スキー;sukii +スクール;sukuuru +スケート;sukeeto +スケジュール;sukejuuru +スター;sutaa +スタート;sutaato +スタイル;sutairu +スタンド;sutando +スチュワーデス;suchuwaadesu +ステージ;suteeji +ステレオ;sutereo +ストーブ;sutoobu +ストッキング;sutokkingu +ストップ;sutoppu +スピーカー;supiikaa +スピーチ;supiichi +スピード;supiido +スプーン;supuun +スポーツ;supootsu +スマート;sumaato +スライド;suraido +スリッパ;surippa +ズボン;zubon +セーター;seetaa +セット;setto +セメント;semento +センター;sentaa +センチ;senchi +ゼミ;zemi +ゼロ;zero +ソファー;sofaa +タイプ;taipu +タイプライター;taipuraitaa +タイヤ;taiya +タオル;taoru +タクシー;takushii +ダイヤグラム;daiyaguramu +ダイヤモンド;daiyamondo +ダイヤル;daiyaru +ダブる;daburu +ダム;damu +ダンス;dansu +チーズ;chiizu +チーム;chiimu +チップ;chippu +チャンス;chansu +チョーク;chooku +テーブル;teeburu +テープ;teepu +テープレコーダー;teepurekoodaa +テーマ;teema +テキスト;tekisuto +テスト;tesuto +テニス;tenisu +テニスコート;tenisukooto +テレビ;terebi +テント;tento +テンポ;tenpo +デート;deeto +デッサン;dessan +デパート;depaato +デモ;demo +トイレ;toire +トップ;toppu +トラック;torakku +トランプ;toranpu +トレーニング;toreeningu +トンネル;tonneru +ドア;doa +ドライブ;doraibu +ドラマ;dorama +ドレス;doresu +ナイフ;naifu +ナイロン;nairon +ナンバー;nanbaa +ニュース;nyuusu +ネクタイ;nekutai +ネックレス;nekkuresu +ノート;nooto +ノック;nokku +ハイキング;haikingu +ハンサム;hansamu +ハンドバッグ;handobaggu +ハンドル;handoru +バイオリン;baiorin +バケツ;baketsu +バス;basu +バター;bataa +バック;bakku +バッグ;baggu +バランス;baransu +バン;ban +バンド;bando +パーセント;paasento +パーティー;paatii +パイプ;paipu +パイロット;pairotto +パス;pasu +パスポート;pasupooto +パターン;pataan +パンツ;pantsu +ビール;biiru +ビタミン;bitamin +ビデオ;bideo +ビニール;biniiru +ビル;biru +ピアノ;piano +ピクニック;pikunikku +ピストル;pisutoru +ピン;pin +ピンク;pinku +ファスナー;fasunaa +フィルム;firumu +フォーク;fooku +フライパン;furaipan +フリー;furii +ブラウス;burausu +ブラシ;burashi +ブレーキ;bureeki +ブローチ;buroochi +プール;puuru +プラス;purasu +プラスチック;purasuchikku +プラットホーム;purattohoomu +プラン;puran +プリント;purinto +プレゼント;purezento +プロ;puro +プログラム;puroguramu +ヘリコプター;herikoputaa +ベッド;beddo +ベテラン;beteran +ベル;beru +ベルト;beruto +ページ;peeji +ペン;pen +ペンキ;penki +ペンチ;penchi +ホーム;hoomu +ホテル;hoteru +ボーイ;booi +ボート;booto +ボーナス;boonasu +ボール;booru +ボールペン;boorupen +ボタン;botan +ポケット;poketto +ポスター;posutaa +ポスト;posuto +マーケット;maaketto +マイク;maiku +マイナス;mainasu +マスク;masuku +マスター;masutaa +マッチ;macchi +マフラー;mafuraa +ママ;mama +マラソン;marason +ミシン;mishin +ミス;misu +ミリ;miri +ミルク;miruku +メーター;meetaa +メートル;meetoru +メニュー;menyuu +メモ;memo +メンバー;menbaa +モーター;mootaa +モダン;modan +モデル;moderu +モノレール;monoreeru +ユーモア;yuumoa +ヨーロッパ;yooroppa +ヨット;yotto +ライター;raitaa +ラケット;raketto +ラジオ;rajio +ラッシュアワー;rasshuawaa +ランチ;ranchi +リズム;rizumu +リットル;rittoru +リボン;ribon +レインコート;reinkooto +レクリエーション;rekurieeshon +レコード;rekoodo +レジャー;rejaa +レストラン;resutoran +レベル;reberu +レポート;repooto +レンズ;renzu +ローマじ;roomaji +ロケット;roketto +ロッカー;rokkaa +ロビー;robii +ワイシャツ;waishatsu +ワイン;wain +ワンピース;wanpiisu +だい;dai +か;ka +はやく;hayaku +いく;iku +わかる;wakaru +へ(え);he(e) +あつい;atsui +ね;ne +そう;sou +れんしゅう;renshuu +てん;ten +か;ka +みる;miru +なん;nan +を(お);wo(o) +まだない;madanai +いい;ii +よ;yo +ちょうしょく;choushoku +おはようございます;ohayougozaimasu +たべる;taberu +パン;pan +コーヒー;koohii +のむ;nomu +ビール;biiru +りんご;ringo +それでは(それでわ);soredeha(soredewa) +たまご;tamago +ぜいかん;zeikan +カメラ;kamera +もつ;motsu +はい;hai +ある;aru +トランク;toranku +なか;naka +が;ga +と;to +ほん;hon +ようふく;youfuku +それ;sore +だけ;dake +さけ;sake +けっこう;kekkou +かいもの;kaimono +デパート;depaato +いっしょに;isshoni +かう;kau +くつした;kutsushita +はいる;hairu +ここ;koko +でも;demo +やめる;yameru +しる;shiru +タワー;tawaa +から;kara +どう;dou +あるく;aruku +えき;eki +まで;made +めぐろ;meguro +しぶや;shibuya +そこ;soko +で;de +とうきょう;toukyou +それから;sorekara +バス;basu +すいぞくかん;suizokukan +みせ;mise +みやげ;miyage +も;mo +えいが;eiga +きのう;kinou +する;suru +くる;kuru +ともだち;tomodachi +アメリカ;amerika +めがね;megane +わすれる;wasureru +よく;yoku +ちゅうかりょうり;chuukaryouri +こんばん;konban +だいすき;daisuki +わたし;watashi +さかな;sakana +スープ;suupu +とる;toru +にく;niku +はし;hashi +いいえ;iie +フォーク;fooku +おねがいします;onegaishimasu +ください;kudasai +ありがとうございます;arigatougozaimasu +とても;totemo +テレビ;terebi +すもう;sumou +シーズン;shiizun +よく;yoku +ときどき;tokidoki +ニュース;nyuusu +ホーム・ドラマ;hoomu_dorama +どちらも;dochiramo +あさ;asa +おきる;okiru +じ;ji +いち;ichi +じゅう;juu +おそい;osoi +ねる;neru +よる;yoru +さん;san +よなか;yonaka +きょう;kyou +それでも;soredemo +バー;baa +はたらく;hataraku +たいへん;taihen +こんにちは;konnichiha +きっさてん;kissaten +やまだ;yamada +さん;san +おかし;okashi +ほんとう;hontou +いま;ima +ええ;ee +ダイエット;daietto +やくそく;yakusoku +けさ;kesa +フランス;furansu +まえ;mae +まつ;matsu +どうしたのでしょう;doushitanodeshou +こまる;komaru +ドイツ;doitsu +しょうかい;shoukai +こばやし;kobayashi +みちこ;michiko +と;to +すむ;sumu +けっこん;kekkon +ねん;nen +いる;iru +こども;kodomo +ふたり;futari +おとこのこ;otokonoko +おんなのこ;onnanoko +は(わ);ha(wa) +ご;go +さい;sai +さいこん;saikon +じつは(わ);jitsuha(wa) +おぼっちゃん;obocchan +にちようび;nichiyoubi +ピクニック;pikunikku +たなか;tanaka +やまもと;yamamoto +さそう;sasou +かんがえ;kangae +えのしま;enoshima +サンドウイッチ;sandouicchi +すし;sushi +に;ni +みかん;mikan +ジュース;juusu +ため;tame +でんわをかける;denwawokakeru +すぐ;sugu +のみのいち;nominoichi +その;sono +はこ;hako +みぎ;migi +ひだり;hidari +えん;en +まん;man +ごめんなさい;gomennasai +ちょっと;chotto +みせる;miseru +ふるい;furui +えど;edo +もの;mono +うら;ura +ほんや;hon_ya +せんそう;sensou +へいわ;heiwa +しょうしょう;shoushou +にほん;nihon +るす;rusu +じぶん;jibun +この;kono +すすめる;susumeru +つくる;tsukuru +かんたん;kantan +まいどありがとうございます;maidoarigatougozaimasu +コンサート;konsaato +だれ;dare +ひと;hito +しゃしん;shashin +やまぐち;yamaguchi +ふみこ;fumiko +じょゆう;joyuu +でわありません;dewaarimasen +かしゅ;kashu +うた;uta +うたう;utau +どんな;donna +ジャズ;jazu +こんど;kondo +どようび;doyoubi +が;ga +つごう;tsugou +わるい;warui +もっと;motto +より;yori +むり;muri +な;na +つぎ;tsugi +きかい;kikai +きんえん;kin_en +たばこや;tabakoya +へん;hen +とおい;tooi +そんなに;sonnani +みち;michi +まがる;magaru +おおきい;ookii +かわ;kawa +たすかる;tasukaru +みっか;mikka +すう;suu +タバコ;tabako +つらい;tsurai +ぼく;boku +ゆうびんきょく;yuubinkyoku +うしろ;ushiro +こうくう;koukuu +はがき;hagaki +ゆうびん;yuubin +りょうきん;ryoukin +イギリス;igirisu +ギリシャ;girisha +しらべる;shiraberu +ひゃく;hyaku +まい;mai +しごと;shigoto +うえ;ue +げんき;genki +むすこさん;musukosan +ことし;kotoshi +だいがく;daigaku +そつぎょう;sotsugyou +とうだい;toudai +おめでとうございます;omedetougozaimasu +つとめ;tsutome +かいしゃ;kaisha +かんけい;kankei +しがつ;shigatsu +じどうしゃ;jidousha +にゅういんする;nyuuinsuru +あう;au +ごがつ;gogatsu +おきのどくに;okinodokuni +そのご;sonogo +たいいんする;taiinsuru +らいしゅう;raishuu +あんしん;anshin +アパート;apaato +みつかる;mitsukaru +せまい;semai +けれども;keredomo +ふん;fun +おと;oto +きこえる;kikoeru +ぜんぜんない;zenzennai +ようちえん;youchien +かい;kai +よん;yon +ながめ;nagame +から;kara +ちょうど;choudo +なにもない;nanimonai +に;ni +ビル;biru +むかい;mukai +きにいる;kiniiru +やちん;yachin +しょうせつ;shousetsu +すいりしょうせつ;suirishousetsu +しゅっぱん;shuppan +はなし;hanashi +しゅじんこう;shujinkou +ファッション・モデル;fasshon_moderu +スパイ;supai +ページ;peeji +おもう;omou +ながい;nagai +どのぐらい;donogurai +もう;mou +ちゅうごく;chuugoku +らいねん;rainen +ご;go +むすこ;musuko +かんこう;kankou +おともする;otomosuru +すこし;sukoshi +それに;soreni +ひま;hima +げつようび;getsuyoubi +しょくじ;shokuji +ばん;ban +まさこ;masako +ひこうき;hikouki +くうこう;kuukou +ごぜん;gozen +しあさって;shiasatte +しち;shichi +なりた;narita +にっこう;nikkou +びん;bin +ひこうじょう;hikoujou +むかえる;mukaeru +エア・ターミナル;ea_taaminaru +はこざき;hakozaki +はやい;hayai +リムジン・バス;rimujin_basu +だいじょうぶ;daijoubu +かならず;kanarazu +わ;wa +にもつ;nimotsu +ちいさい;chiisai +バッグ;baggu +ふたつ;futatsu +しんぱい;shinpai +あに;ani +でる;deru +ところ;tokoro +えいご;eigo +あなた;anata +かようび;kayoubi +たんじょうび;tanjoubi +どこか;dokoka +おんがっかい;ongakkai +しばい;shibai +てんぷら;tenpura +うえはら;uehara +おしえる;oshieru +ピアノ;piano +きく;kiku +なら;nara +かぶき;kabuki +それとも;soretomo +ごさぶろう;gosaburou +よつや;yotsuya +かいだん;kaidan +どっち;docchi +の;no +えんそう;ensou +あたし;atashi +きっぷ;kippu +おく;oku +たのむ;tanomu +せんしゅう;senshuu +なつ;natsu +いろ;iro +おひさしぶりです;ohisashiburidesu +きれい;kirei +こむぎ;komugi +やける;yakeru +おおしま;ooshima +しま;shima +せとないかい;setonaikai +にし;nishi +めいぶつ;meibutsu +たいよう;taiyou +つよい;tsuyoi +ひかり;hikari +いちにちじゅう;ichinichijuu +しかない;shikanai +ですから;desukara +ひるね;hirune +うみ;umi +そして;soshite +はん;han +まいあさ;maiasa +ろく;roku +かいがん;kaigan +だれもない;daremonai +あさひ;asahi +すいへいせん;suiheisen +にっちゅう;nicchuu +むら;mura +かいるい;kairui +しんせん;shinsen +つる;tsuru +うらやましい;urayamashii +バーゲン;baagen +てさげかばん;tesagekaban +こうすい;kousui +じん;jin +タオル;taoru +りょこう;ryokou +みつこし;mitsukoshi +がてら;gatera +かね;kane +あめ;ame +ちかてつ;chikatetsu +あおい;aoi +あかい;akai +かかる;kakaru +ペア;pea +しろい;shiroi +め;me +よこ;yoko +やすい;yasui +あね;ane +しゅじん;shujin +ガウン;gaun +ご;go +ふち;fuchi +みず;mizu +ぎんこう;ginkou +よる;yoru +ぜんぶ;zenbu +ので;node +おじ;oji +かす;kasu +かんさい;kansai +しゅうまつ;shuumatsu +しゅっぱつ;shuppatsu +どうりょう;douryou +こうそくどうろ;kousokudouro +こくどう;kokudou +はしる;hashiru +キロ;kiro +すすむ;susumu +スピード;supiido +せいげん;seigen +はち;hachi +トラック;torakku +おいこす;oikosu +いはん;ihan +かかる;kakaru +とき;toki +はやい;hayai +ほう;hou +ゆうりょう;yuuryou +あたり;atari +しずおか;shizuoka +つかまる;tsukamaru +ばっきん;bakkin +パト・カー;pato_kaa +はらう;harau +そのまま;sonomama +たりる;tariru +もどる;modoru +よさん;yosan +はちこう;hachikou +いぬ;inu +どうぞう;douzou +いう;iu +など;nado +はなす;hanasu +かんしん;kanshin +うえの;ueno +えいさぶろう;eisaburou +かう;kau +おくる;okuru +ふどうさんや;fudousan_ya +あおやま;aoyama +さがす;sagasu +なにか;nanika +けん;ken +にわ;niwa +ダイニング;dainingu +リビング;ribingu +わかれる;wakareru +いけばな;ikebana +じょう;jou +ちゃ;cha +つま;tsuma +ほしい;hoshii +わしつ;washitsu +ガレージ;gareeji +くるま;kuruma +だい;dai +ひつよう;hitsuyou +おおい;ooi +きゃく;kyaku +げつ;getsu +しききん;shikikin +ぶん;bun +れいきん;reikin +にゅうきょする;nyuukyosuru +あきらめる;akirameru +みょうじ;myouji +しぜん;shizen +あらわす;arawasu +おなじ;onaji +でんわちょう;denwachou +すずき;suzuki +しんせき;shinseki +みんな;minna +パンダ;panda +えはがき;ehagaki +かわり;kawari +こんなに;konnani +ずつ;zutsu +いちにち;ichinichi +たのしい;tanoshii +むこう;mukou +けんがく;kengaku +こうじょう;koujou +うごかす;ugokasu +ようこそいらっしゃいました;youkosoirasshaimashita +あんないする;annaisuru +これから;korekara +わたくしども;watakushidomo +おもに;omoni +せいひん;seihin +でんき;denki +あし;ashi +きをつける;kiwotsukeru +もと;moto +そうこ;souko +できあがる;dekiagaru +できる;dekiru +ねんだい;nendai +じむしょ;jimusho +せいぞう;seizou +たてもの;tatemono +しつもん;shitsumon +すみません;sumimasen +こういん;kouin +ロボット;robotto +コンピューター;konpyuutaa +しつぎょうしゃ;shitsugyousha +くみたてる;kumitateru +アルゼンチン;aruzenchin +おんな;onna +さっきょくか;sakkyokuka +オペラ;opera +いそがしい;isogashii +ことわる;kotowaru +のに;noni +ほか;hoka +マージャン;maajan +たのしみにする;tanoshiminisuru +しょくご;shokugo +びょうき;byouki +あたたかい;atatakai +ちょうし;choushi +エス・エフ;esu_efu +うちゅう;uchuu +ちきゅう;chikyuu +ぼうけん;bouken +おこる;okoru +ものがたり;monogatari +てん;ten +ロケット;roketto +ほし;hoshi +わくせい;wakusei +しんりゃく;shinryaku +はて;hate +わるもの;warumono +あんぜん;anzen +かなた;kanata +ヒーロー;hiiroo +まもる;mamoru +こい;koi +さいご;saigo +てきこく;tekikoku +ハッピ・エンド;happi_endo +きがする;kigasuru +きょうみ;kyoumi +ないよう;naiyou +なんて;nante +ホテル;hoteru +でございます;degozaimasu +よやく;yoyaku +さま;sama +ひとり;hitori +おとな;otona +めい;mei +らいげつ;raigetsu +はなれる;hanareru +しょうご;shougo +チェック・イン;chekku_in +けど;kedo +だって;datte +フロア;furoa +しかたがない;shikataganai +こうざ;kouza +たびたび;tabitabi +ひらく;hiraku +ふつう;futsuu +カナダ;kanada +ふつか;futsuka +あずける;azukeru +きこく;kikoku +あそぶ;asobu +ふえる;fueru +ふゆ;fuyu +りし;rishi +よくじつ;yokujitsu +からっぽ;karappo +さいふ;saifu +よてい;yotei +しようりょう;shiyouryou +がいこくじん;gaikokujin +ねがい;negai +い;i +いかいよう;ikaiyou +ちりょう;chiryou +すいようび;suiyoubi +おかけください;okakekudasai +びょういん;byouin +じんと;jinto +だす;dasu +ベッド;beddo +おす;osu +と;to +ただ;tada +たべすぎ;tabesugi +たべもの;tabemono +ひかえる;hikaeru +いわい;iwai +しょうしん;shoushin +レストラン;resutoran +カクテル・パーティー;kakuteru_paatii +シャンペン;shanpen +クラシック;kurashikku +とくに;tokuni +がっき;gakki +オーボエ;ooboe +しゅみ;shumi +かつどう;katsudou +きっかけ;kikkake +こうとうがっこう;koutougakkou +はじめる;hajimeru +なかなかない;nakanakanai +ふく;fuku +カセット;kasetto +さいきん;saikin +もっぱら;moppara +ラジオ;rajio +つけっぱなし;tsukeppanashi +あつまる;atsumaru +かくしゅう;kakushuu +なかま;nakama +にん;nin +いれる;ireru +ひとりで;hitoride +あき;aki +おわる;owaru +あしおと;ashioto +みたい;mitai +いわしぐも;iwashigumo +うかぶ;ukabu +そら;sora +むなしい;munashii +ゆうやけ;yuuyake +よ;yo +おちる;ochiru +かなしい;kanashii +かれは;kareha +し;shi +ためいき;tameiki +ビオロン;bioron +まったく;mattaku +よう;you +おわり;owari +かがやく;kagayaku +かき;kaki +は;ha +ひぐれ;higure +あまりにも;amarinimo +きもち;kimochi +さびしい;sabishii +いのち;inochi +はかない;hakanai +ロマンチック;romanchikku +ふう;fuu +よっぱらう;yopparau +うる;uru +しょうばい;shoubai +しょくひん;shokuhin +れいとう;reitou +かとう;katou +げんじつてき;genjitsuteki +びじゅつかん;bijutsukan +げんだい;gendai +ところで;tokorode +さっそく;sassoku +え;e +みどりいろ;midoriiro +ひじょうに;hijouni +ふしぎ;fushigi +かお;kao +あ;a +ねこ;neko +あたま;atama +はな;hana +だい;dai +もり;mori +ゆめ;yume +タクシー;takushii +どの;dono +サントリー;santorii +そば;soba +く;ku +みなと;minato +くわしい;kuwashii +こうしゅうでんわ;koushuudenwa +こまかい;komakai +たま;tama +おりる;oriru +あの;ano +あみ;ami +きょだい;kyodai +ああ;aa +ゴルフ;gorufu +れんしゅうじょう;renshuujou +サラリーマン;sarariiman +ばしょ;basho +おくじょう;okujou +ひろい;hiroi +スポーツ;supootsu +やきゅう;yakyuu +みまい;mimai +にっせき;nisseki +なんようび;nan_youbi +きんようび;kin_youbi +みょうごにち;myougonichi +くだもの;kudamono +はな;hana +しゅじゅつ;shujutsu +ちょう;chou +きいろい;kiiroi +ほん;hon +うち;uchi +おだいじに;odaijini +わざわざ;wazawaza +チュウリップ;chuurippu +きがえる;kigaeru +さあ;saa +みずぎ;mizugi +すいちゅうめがね;suichuumegane +ぼうし;boushi +つめたい;tsumetai +わあ;waa +いわ;iwa +きょうそう;kyousou +かつ;katsu +あぶない;abunai +おとなしい;otonashii +アイス・クリーム;aisu_kuriimu +あら;ara +じゃ;ja +すな;suna +すわる;suwaru +せなか;senaka +たまらない;tamaranai +ひやけ;hiyake +きる;kiru +バカンス;bakansu +きょねん;kyonen +まいとし;maitoshi +けいゆ;keiyu +シベリア;shiberia +パリ;pari +モスクワ;mosukuwa +ウラジオストック;urajiosutokku +のりかえる;norikaeru +ふね;fune +かんかく;kankaku +たいくつ;taikutsu +きめる;kimeru +ごろ;goro +しちがつ;shichigatsu +はじめ;hajime +れきし;rekishi +なら;nara +とおる;tooru +まわり;mawari +そう;sou +てら;tera +はたけ;hatake +とうしょうだいじ;toushoudaiji +ほうりゅうじ;houryuuji +やくしじ;yakushiji +しずか;shizuka +とまる;tomaru +いぜん;izen +そのあと;sonoato +かきとり;kakitori +ひらがな;hiragana +せんきょ;senkyo +へん;hen +ええと;eeto +はた;hata +スピーカー;supiikaa +くりかえす;kurikaesu +おおどおり;oodoori +ど;do +ながら;nagara +りっこうほしゃ;rikkouhosha +しかた;shikata +やりかた;yarikata +ちかづく;chikaduku +でも;demo +こんかい;konkai +とちじ;tochiji +こしょう;koshou +でんきやさん;denkiyasan +せんたくき;sentakuki +いつつ;itsutsu +とれる;toreru +ねじ;neji +そうじき;soujiki +ついでに;tsuideni +みっつ;mittsu +かしら;kashira +れいぞうこ;reizouko +いったい;ittai +ぬける;nukeru +いらい;irai +きぐ;kigu +じゅう;juu +たいしょく;taishoku +ぶんかい;bunkai +しんかんせん;shinkansen +きゅうしゅう;kyuushuu +まご;mago +くらべる;kuraberu +しゃない;shanai +まど;mado +おかげで;okagede +さむい;samui +すずしい;suzushii +たしか;tashika +むしあつい;mushiatsui +れいぼう;reibou +きょうと;kyouto +ごこち;gokochi +ねむる;nemuru +よこはま;yokohama +たら;tara +おおさか;oosaka +まいしゅう;maishuu +へんじ;henji +うけとる;uketoru +ゆうべ;yuube +ポスト;posuto +とお;too +とおか;tooka +ところが;tokoroga +ふうとう;fuutou +きたく;kitaku +ちゃんと;chanto +はら;hara +ばんち;banchi +サービス;saabisu +はいたつ;haitatsu +せいかく;seikaku +そくたつ;sokutatsu +せんとう;sentou +げしゅく;geshuku +シャワー;shawaa +ふべん;fuben +まいばん;maiban +ひろびろとする;hirobirotosuru +ふかい;fukai +ゆぶね;yubune +すぎ;sugi +すく;suku +つかる;tsukaru +まんいん;man_in +せつび;setsubi +あいだに;aidani +げんかん;genkan +だんじょ;danjo +ても;temo +はだか;hadaka +べつべつ;betsubetsu +はずかしい;hazukashii +へいき;heiki +きになる;kininaru +ならう;narau +こじん;kojin +レッスン;ressun +よむ;yomu +じき;jiki +それじゃ;soreja +きじ;kiji +こうぎょう;kougyou +へえ;hee +まじめ;majime +ちち;chichi +のうぎょう;nougyou +ほうめん;houmen +どんどん;dondon +て;te +あれ;are +ロック;rokku +えらぶ;erabu +しんこんりょこう;shinkonryokou +ひとつ;hitotsu +しんじゅく;shinjuku +ついたち;tsuitachi +よろしく;yoroshiku +いくらか;ikuraka +カメラやさん;kamerayasan +こがた;kogata +ごらん;goran +モデル;moderu +ぜんじどう;zenjidou +メーカー;meekaa +ボディー;bodii +かるい;karui +えらびかた;erabikata +について;nitsuite +はなしあう;hanashiau +ふさい;fusai +コンクリート;konkuriito +じしん;jishin +おれ;ore +じゅん;jun +しき;shiki +ていねん;teinen +ぼんさい;bonsai +すう;suu +おうせつま;ousetsuma +かんがえる;kangaeru +しき;shiki +しょくどう;shokudou +しんしつ;shinshitsu +ふろば;furoba +モダン;modan +じゅんび;junbi +たち;tachi +のる;noru +ふじさん;fujisan +って;tte +くさる;kusaru +じつぶつ;jitsubutsu +ほど;hodo +へん;hen +いず;izu +でかける;dekakeru +はんとう;hantou +くも;kumo +ほうこう;houkou +かぞく;kazoku +そうしき;soushiki +ちじん;chijin +れいえん;reien +はか;haka +ぶんがくしゃ;bungakusha +ぼち;bochi +こそ;koso +やはり;yahari +いっしょう;isshou +じゅういちがつ;juuichigatsu +こうしつ;koushitsu +とまる;tomaru +はらじゅく;harajuku +やまのてせん;yamanotesen +よよぎ;yoyogi +とくべつ;tokubetsu +ばあい;baai +てんのう;tennou +へいか;heika +おすまい;osumai +こうきょ;koukyo +ちよだく;chiyodaku +れっしゃ;ressha +こうごう;kougou +なす;nasu +おめにかかる;omenikakaru +こくみん;kokumin +りょう;ryou +きゅうちゅうさんが;kyuuchuusanga +しょうがつ;shougatsu +すがた;sugata +しょうぐん;shougun +しろ;shiro +まんなか;mannaka +ジョギング;jogingu +そんな;sonna +おみあい;omiai +おい;oi +きしゃ;kisha +けいざい;keizai +だれか;dareka +おいごさん;oigosan +てんきん;tenkin +ブラジル;burajiru +しゃこうせい;shakousei +じょうず;jouzu +せったい;settai +りそう;risou +じょうけん;jouken +こっかいぎいん;kokkaigiin +ゆうじん;yuujin +いたす;itasu +のちほど;nochihodo +れんらく;renraku +かんじ;kanji +しゃこうてき;shakouteki +はきはき;hakihaki +あう;au +ごがく;gogaku +し;shi +ポルトガル;porutogaru +かのじょ;kanojo +せ;se +にあう;niau +ふとい;futoi +ふりそで;furisode +がまん;gaman +スキー;sukii +ウィーク・エンド;wiiku_endo +あいつ;aitsu +ひどいめにあう;hidoimeniau +くん;kun +じまん;jiman +リフト;rifuto +ふもと;fumoto +べそをかく;besowokaku +カーブ;kaabu +ころぶ;korobu +おきあがる;okiagaru +おこす;okosu +そのうえ;sonoue +そのたんびに;sonotanbini +はんにち;hannichi +やまごや;yamagoya +ゆき;yuki +せっかく;sekkaku +だいなし;dainashi +ただいま;tadaima +あっ;aっ +おかえりなさい;okaerinasai +おとす;otosu +したく;shitaku +つかれ;tsukare +ゆうしょく;yuushoku +うん;un +いつでも;itsudemo +かん;kan +おまえ;omae +ゆ;yu +わかす;wakasu +ひさしぶりに;hisashiburini +からだ;karada +じゅうぶん;juubun +すいみん;suimin +こんばんわ;konbanwa +せんげつ;sengetsu +ヨーロッパ;yooroppa +しゃべり;shaberi +ますます;masumasu +うわさ;uwasa +おもいちがい;omoichigai +いっちょうら;icchoura +じゅうにがつ;juunigatsu +せびろ;sebiro +ドア;doa +ならす;narasu +ベル;beru +すてき;suteki +ひやす;hiyasu +おおそうじ;oosouji +せちりょうり;sechiryouri +ととのう;totonou +おがむ;ogamu +としこしそば;toshikoshisoba +ねんし;nenshi +ひので;hinode +おおみそか;oomisoka +すっかり;sukkari +レヴェイヨン;reveiyon +カンパイ;kanpai +ごくろうさま;gokurousama +キャンプ;kyanpu +テント;tento +すむ;sumu +ばんめし;banmeshi +まくら;makura +かい;kai +しにん;shinin +つまり;tsumari +ねかせる;nekaseru +きらう;kirau +むける;mukeru +みなみ;minami +しゃめん;shamen +けんり;kenri +ごんげん;gongen +みち;michi +やくみ;yakumi +みりょく;miryoku +ぎまい;gimai +かじゅう;kajuu +かちょう;kachou +らしん;rashin +せきぜん;sekizen +せいせき;seiseki +こうさい;kousai +れっしゃ;ressha +そうれつ;souretsu +ぶんれつ;bunretsu +れいがい;reigai +とうほん;touhon +ふっとう;futtou +かっとう;kattou +しょうり;shouri +ぐうぞう;guuzou +そうぐう;souguu +いちぐう;ichiguu +ぐち;guchi +ぎょえん;gyoen +えんせい;ensei +えんてん;enten +わんりょく;wanryoku +がじょう;gajou +はつが;hatsuga +ゆうが;yuuga +かくう;kakuu +しゅくがかい;shukugakai +がんこ;ganko +こじん;kojin +いっかげつ;ikkagetsu +こうりょう;kouryou +こうてつ;koutetsu +ごうけんな;goukenna +ほうし;houshi +ねんぽう;nenpou +てつぼう;tetsubou +いっぱん;ippan +うんぱん;unpan +えんばん;enban +しょうもう;shoumou +びこう;bikou +ぼうし;boushi +いんぼう;inbou +ばいかい;baikai +がいねん;gainen +ふんがい;fungai +きせい;kisei +こうげん;kougen +げんせん;gensen +しがんする;shigansuru +ようぎ;yougi +もぎ;mogi +ぎょうこする;gyoukosuru +きょうふ;kyoufu +きぼう;kibou +えんせん;ensen +えんかん;enkan +せんちょう;senchou +ふじん;fujin +ふよう;fuyou +きそく;kisoku +えいご;eigo +えいが;eiga +ちゅうおう;chuuou +うまい;umai +あじ;aji +かもしれない;kamoshirenai +マッチ;macchi +みあたる;miataru +え;e +こんや;kon_ya +とちゅう;tochuu +みんしゅく;minshuku +すきま;sukima +セントラリ・ヒーティング;sentorari_hiitingu +だて;date +げんこう;genkou +ひしょ;hisho +べっそう;bessou +もし;moshi +やまなかこ;yamanakako +コート;kooto +ダイヤモンド;daiyamondo +ハンド・バッグ;hando_baggu +ミンク;minku +ゆびわ;yubiwa +わに;wani +おがたこうりん;ogatakourin +しゅう;shuu +けんぶつ;kenbutsu +しゅと;shuto +すべて;subete +すうねん;suunen +ぜん;zen +タヒチ;tahichi +むすめ;musume +かえす;kaesu +しゃっきん;shakkin +せんけつ;senketsu +しんねんあけましておめでとうございます;shinnen_akemashiteomedetougozaimasu +おせわになりました;osewaninarimashita +さくねん;sakunen +せわ;sewa +ちゅう;chuu +ほんねん;honnen +いや;iya +きもの;kimono +じぎ;jigi +けんきゅう;kenkyuu +せいふ;seifu +として;toshite +りゅうがくせい;ryuugakusei +がくせい;gakusei +ウィーン;wiin +オーストリア;oosutoria +おもいだす;omoidasu +ころ;koro +なつかしい;natsukashii +みおくる;miokuru +かたかな;katakana +おくれる;okureru +こりごりです;korigoridesu +めいろ;meiro +ちか;chika +つうろ;tsuuro +ホーム;hoomu +おおぜい;oozei +エスカレーター;esukareetaa +かいさつぐち;kaisatsuguchi +でぐち;deguchi +わたす;watasu +いりぐち;iriguchi +やっとのおもいで;yattonoomoide +ひがし;higashi +ひょうじばん;hyoujiban +しきもう;shikimou +おふくろ;ofukuro +かたづける;katadukeru +こんしゅう;konshuu +たたむ;tatamu +ふとん;futon +いっぱい;ippai +たたみ;tatami +なんか;nanka +さとう;satou +したぎ;shitagi +やさい;yasai +ワイシャツ;waishatsu +きたない;kitanai +ナイフ;naifu +ひからびる;hikarabiru +アルバイト;arubaito +くたくた;kutakuta +さ;sa +よゆう;yoyuu +このまえ;konomae +じょうきょう;joukyou +きっきょう;kikkyou +かぜ;kaze +ひく;hiku +くすり;kusuri +きらい;kirai +じゃあ;jaa +いっさい;issai +かんぽうやく;kanpouyaku +こうせいぶっしつ;kouseibusshitsu +しあつ;shiatsu +はり;hari +やくひん;yakuhin +せっかき;sekkaki +きがつく;kigatsuku +ペット;petto +がっこう;gakkou +ビデオ;bideo +ぶんか;bunka +きんし;kinshi +きんぺん;kinpen +つうこう;tsuukou +てんごく;tengoku +ほこうしゃ;hokousha +シーソー;shiisoo +テーブル;teeburu +ならべる;naraberu +ブランコ;buranko +づれ;dure +くつ;kutsu +はかす;hakasu +あさくさ;asakusa +ずっと;zutto +まさか;masaka +よう;you +きちがい;kichigai +きんじょ;kinjo +くびわ;kubiwa +にせ;nise +びよういん;biyouin +ほうせき;houseki +おたく;otaku +ぶんがく;bungaku +わかい;wakai +いっしょうけんめい;isshoukenmei +げんじものがたり;genjimonogatari +こてん;koten +まくらのそうし;makuranosoushi +まんが;manga +かよう;kayou +としょかん;toshokan +おも;omo +さくひん;sakuhin +はたち;hatachi +へいあん;heian +ほぼ;hobo +あんきする;ankisuru +せいしょうなごん;seishounagon +さっか;sakka +じょりゅう;joryuu +むらさきしきぶ;murasakishikibu +ちょうてい;choutei +だいひょうてき;daihyouteki +おじゃましました;ojamashimashita +ごちそうさまでした;gochisousamadeshita +ばんごはん;bangohan +どういたしまして;douitashimashite +ごめんくださいませ;gomenkudasaimase +きんかくじ;kinkakuji +ひょうし;hyoushi +いけ;ike +きんいろ;kin_iro +こころ;kokoro +しずまる;shizumaru +ふくげん;fukugen +うつくしさ;utsukushisa +おぼうさん;obousan +かんぺき;kanpeki +たえる;taeru +ひ;hi +もとめる;motomeru +かじ;kaji +もえる;moeru +もくぞう;mokuzou +び;bi +みしまゆきお;mishimayukio +あじわう;ajiwau +かんこうきゃく;kankoukyaku +じっさい;jissai +ふうけい;fuukei +ふんいき;fun_iki +いんしょう;inshou +がっかりする;gakkarisuru +ごめんください;gomenkudasai +あがる;agaru +えんりょ;enryo +おあがりください;oagarikudasai +とつぎさき;totsugisaki +はく;haku +まいる;mairu +よめ;yome +こす;kosu +ごぶさたしたおります;gobusatashitaorimasu +さようでございます;sayoudegozaimasu +ござる;gozaru +たずねる;tazuneru +とつぜん;totsuzen +もうしわけありません;moushiwakearimasen +きらく;kiraku +じょうたい;joutai +とこ;toko +かねもち;kanemochi +きげん;kigen +ごらんのとおり;gorannotoori +かへい;kahei +かみ;kami +さつ;satsu +じょうぶ;joubu +やぶれる;yabureru +えがく;egaku +じんぶつ;jinbutsu +まちがえる;machigaeru +けんぽう;kenpou +しょうとくたいし;shoutokutaishi +せいき;seiki +なな;nana +せいじか;seijika +いとうひろぶみ;itouhirobumi +いわくらともみ;iwakuratomomi +めいじ;meiji +ぶんかじん;bunkajin +しそうか;shisouka +ふくざわゆきち;fukuzawayukichi +いしん;ishin +おうべい;oubei +せいよう;seiyou +きょういくか;kyouikuka +しょうわ;shouwa +たいしょう;taishou +にとべいなぞう;nitobeinazou +きんだい;kindai +なつめそうせき;natsumesouseki +しつれい;shitsurei +わがはい;wagahai +しゃかい;shakai +にんげん;ningen +たいせん;taisen +あつめる;atsumeru +はなみ;hanami +さくら;sakura +まんかい;mankai +ことわざ;kotowaza +ちる;chiru +しゅっちょう;shucchou +ぜん;zen +ござ;goza +しく;shiku +しんしゅう;shinshuu +そふ;sofu +すみ;sumi +たんか;tanka +よむ;yomu +ままごと;mamagoto +そぼ;sobo +だんご;dango +わらう;warau +なみ;nami +こくりつ;kokuritsu +がくひ;gakuhi +しゅうしょく;shuushoku +らく;raku +あずかる;azukaru +ねえさん;neesan +ちゅうがっこう;chuugakkou +ねんせい;nensei +み;mi +きょうじゅ;kyouju +だいがくせい;daigakusei +たっしゃ;tassha +こくさいてき;kokusaiteki +こくご;kokugo +さんすう;sansuu +よほど;yohodo +しょうがっこう;shougakkou +しりつ;shiritsu +ここのつ;kokonotsu +みほん;mihon +エヌ・エッチ・ケー;enu_ecchi_kee +こうきょう;koukyou +しゅるい;shurui +チャンネル;channeru +ばんぐみ;bangumi +ほうそう;housou +ほうふ;houfu +みんかん;minkan +げき;geki +ほうえい;houei +クイズ;kuizu +なんでも;nandemo +ごらく;goraku +がいこくご;gaikokugo +ギター;gitaa +こうざ;kouza +さいほう;saihou +しゃみせん;shamisen +はじまる;hajimaru +フルート;furuuto +しゃかいがく;shakaigaku +すうがく;suugaku +きょういく;kyouiku +きぎょう;kigyou +スポンサー;suponsaa +いらいらする;irairasuru +こうこく;koukoku +ちゅうだん;chuudan +トイレ;toire +りよう;riyou +おげんきで;ogenkide +みじかい;mijikai +とくしゅ;tokushu +りかい;rikai +こくさいれんごう;kokusairengou +えんそく;ensoku +べんとう;bentou +おかず;okazu +おにしめ;onishime +とり;tori +ゆでたまご;yudetamago +くもり;kumori +よほう;yohou +おっしゃる;ossharu +むすび;musubi +いや;iya +おもい;omoi +リュック・サック;ryukku_sakku +おやつ;oyatsu +デザート;dezaato +せんべい;senbei +あまい;amai +クッキー;kukkii +チョコレート;chokoreeto +おやすみなさい;oyasuminasai +かいわ;kaiwa +にちじょう;nichijou +げいひんかん;geihinkan +ひとごみ;hitogomi +オランダ;oranda +けいさつかん;keisatsukan +じょおう;joou +そうりだいじん;souridaijin +こっかいぎじどう;kokkaigijidou +むかう;mukau +こんげつ;kongetsu +ふけいかい;fukeikai +しゅっせき;shusseki +あかるい;akarui +きびしい;kibishii +りか;rika +びだんし;bidanshi +ファン;fan +やさしい;yasashii +きゅうに;kyuuni +けい;kei +しょうらい;shourai +ねんごう;nengou +こせきしょうほん;kosekishouhon +せいれき;seireki +たいしかん;taishikan +ちゅういがき;chuuigaki +めんどうくさい;mendoukusai +やくする;yakusuru +あたる;ataru +がんねん;gannen +たす;tasu +とし;toshi +ごぞんじです;gozonjidesu +どなたか;donataka +アップライト・ピアノ;appuraito_piano +グランド・ピアノ;gurando_piano +がいこくせい;gaikokusei +こくさん;kokusan +くろい;kuroi +ちゃいろ;chairo +がいかん;gaikan +ひく;hiku +ふかみ;fukami +カタログ;katarogu +おまわりさん;omawarisan +ショッピングセンター;shoppingusentaa +しんせつ;shinsetsu +はは;haha +まいご;maigo +うんてんしゅ;untenshu +こうば;kouba +のうじょう;noujou +ほっかいどう;hokkaidou +うし;ushi +うんてんする;untensuru +くらす;kurasu +すごす;sugosu +トラクター;torakutaa +ひゃくしょう;hyakushou +オリンピック;orinpikku +かたち;katachi +けんちくか;kenchikuka +しゅうがくりょこう;shuugakuryokou +スタジアム;sutajiamu +ちゅうがくせい;chuugakusei +しょうしゃマン;shoushaman +ついに;tsuini +つうやく;tsuuyaku +はいゆう;haiyuu +かい;kai +これら;korera +しょうじき;shoujiki +アシミル;ashimiru +きそく;kisoku +さつ;satsu +ただしい;tadashii +テキスト;tekisuto +かんじ;kanji +じ;ji +かたあし;kataashi +ぬき;nuki +えとく;etoku +り;ri +ほ;ho +つづける;tsudukeru +こうはんりょ;kouhanryo +さようなら;sayounara +かまいません;kamaimasen +あ;a +ああ;aa +あいだ;aida +あう;au +あがる;agaru +あかんぼう;akanbou +あさねぼう;asanebou +あじ;aji +あす;asu +あそび;asobi +あつまる;atsumaru +あつめる;atsumeru +あやまる;ayamaru +アルバイト;arubaito +あんしん;anshin +あんぜん;anzen +あんない;annai +いか;ika +いがい;igai +いがく;igaku +いきる;ikiru +いくらても;ikuratemo +いけん;iken +いし;ishi +いじょう;ijou +いたす;itasu +いちど;ichido +いっしょうけんめい;isshoukenmei +いと;ito +いなか;inaka +いのる;inoru +いん;in +うえる;ueru +うけつけ;uketsuke +うける;ukeru +うごく;ugoku +うつ;utsu +うつす;utsusu +うつる;utsuru +うら;ura +うりば;uriba +うん;un +うんてんしゅ;untenshu +うんてん;unten +エスカレーター;esukareetaa +えだ;eda +えらぶ;erabu +えんりょ;enryo +おいでになる;oideninaru +おいわい;oiwai +おうせつま;ousetsuma +おおい;ooi +おおきな;ookina +オートバイ;ootobai +オーバー;oobaa +おき;oki +おくじょう;okujou +おくりもの;okurimono +おくる;okuru +おくれる;okureru +おこす;okosu +おこる;okoru +おしいれ;oshiire +おちる;ochiru +おっしゃる;ossharu +おと;oto +おとす;otosu +おどり;odori +おどろく;odoroku +おまつり;omatsuri +おみまい;omimai +おみやげ;omiyage +おもいだす;omoidasu +おもう;omou +おもて;omote +おりる;oriru +おる;oru +おれい;orei +おれる;oreru +おわり;owari +か;ka +カーテン;kaaten +かい;kai +かいがん;kaigan +かいぎ;kaigi +かいじょう;kaijou +かいわ;kaiwa +かえり;kaeri +かがみ;kagami +がくぶ;gakubu +かざる;kazaru +かじ;kaji +ガソリン;gasorin +ガソリンスタンド;gasorinsutando +かたち;katachi +かたづける;katadukeru +かつ;katsu +かなしい;kanashii +かならず;kanarazu +かねもち;kanemochi +かのじょ;kanojo +かべ;kabe +かまう;kamau +かみ;kami +かむ;kamu +かよう;kayou +ガラス;garasu +かれ;kare +かれら;karera +かわく;kawaku +かわり;kawari +かんがえる;kangaeru +かんけい;kankei +かんごふ;kangofu +かんたん;kantan +きかい;kikai +きかい;kikai +きけん;kiken +きこえる;kikoeru +ぎじゅつ;gijutsu +きせつ;kisetsu +きそく;kisoku +きぬ;kinu +きびしい;kibishii +きまる;kimaru +きめる;kimeru +きもち;kimochi +きもの;kimono +きゃく;kyaku +きゅう;kyuu +きゅうこう;kyuukou +きょういく;kyouiku +きょうかい;kyoukai +きょうそう;kyousou +きょうみ;kyoumi +きんじょ;kinjo +ぐあい;guai +くうこう;kuukou +くさ;kusa +くび;kubi +くも;kumo +くらべる;kuraberu +くん;kun +けいかん;keikan +けいけん;keiken +けいざい;keizai +けいさつ;keisatsu +げしゅく;geshuku +けっして;kesshite +けん;ken +げんいん;gen_in +けんきゅう;kenkyuu +けんきゅうしつ;kenkyuushitsu +けんぶつ;kenbutsu +こ;ko +ご;go +こうがい;kougai +こうぎ;kougi +こうぎょう;kougyou +こうとうがっこう;koutougakkou +こうこうせい;koukousei +こうじょう;koujou +こうちょう;kouchou +こうむいん;koumuin +こころ;kokoro +ございます;gozaimasu +こしょう;koshou +ごぞんじ;gozonji +こたえ;kotae +こっち;kocchi +ことり;kotori +こまかい;komakai +こめ;kome +ごらんになる;goranninaru +こわす;kowasu +こわれる;kowareru +コンサート;konsaato +こんど;kondo +こんや;kon_ya +さいきん;saikin +さいご;saigo +さいふ;saifu +さがす;sagasu +さがる;sagaru +さしあげる;sashiageru +さびしい;sabishii +さま;sama +さわぐ;sawagu +さわる;sawaru +サンダル;sandaru +サンドイッチ;sandoicchi +じ;ji +しあい;shiai +しかた;shikata +しき;shiki +しけん;shiken +じしん;jishin +したぎ;shitagi +したく;shitaku +しっぱい;shippai +しつれい;shitsurei +じてん;jiten +しなもの;shinamono +しま;shima +じむしょ;jimusho +しゃかい;shakai +しゃちょう;shachou +ジャム;jamu +じゆう;jiyuu +じゅうしょ;juusho +じゅうどう;juudou +しゅっせき;shusseki +しゅっぱつ;shuppatsu +しゅみ;shumi +じゅんび;junbi +しょうかい;shoukai +しょうがつ;shougatsu +しょうがっこう;shougakkou +しょうせつ;shousetsu +しょうたい;shoutai +しょうち;shouchi +しょうらい;shourai +しょくじ;shokuji +しょくりょうひん;shokuryouhin +じょせい;josei +しらせる;shiraseru +しらべる;shiraberu +じんじゃ;jinja +しんせつ;shinsetsu +しんぱい;shinpai +しんぶんしゃ;shinbunsha +すいえい;suiei +すいどう;suidou +すうがく;suugaku +スーツケース;suutsukeesu +すぎる;sugiru +すっかり;sukkari +ステレオ;sutereo +すてる;suteru +すな;suna +すみ;sumi +すむ;sumu +すると;suruto +せい;sei +せいじ;seiji +せいよう;seiyou +せき;seki +せつめい;setsumei +せなか;senaka +せわ;sewa +せんそう;sensou +せんぱい;senpai +せんもん;senmon +そう;sou +そうだん;soudan +そだてる;sodateru +そつぎょう;sotsugyou +そふ;sofu +そぼ;sobo +それに;soreni +そんな;sonna +だい;dai +たいいん;taiin +だいがくせい;daigakusei +だいじ;daiji +タイプ;taipu +たいふう;taifuu +たおれる;taoreru +たしか;tashika +たす;tasu +だす;dasu +たずねる;tazuneru +ただしい;tadashii +たたみ;tatami +たてる;tateru +たてる;tateru +たとえば;tatoeba +たな;tana +たのしむ;tanoshimu +たりる;tariru +だんせい;dansei +だんぼう;danbou +ち;chi +ちいさな;chiisana +ちから;chikara +ちゃん;chan +ちゅうがっこう;chuugakkou +ちゅうしゃ;chuusha +ちゅうしゃじょう;chuushajou +ちり;chiri +ついて;tsuite +つかまえる;tsukamaeru +つき;tsuki +つごう;tsugou +つたえる;tsutaeru +つづける;tsudukeru +つつむ;tsutsumu +つま;tsuma +つる;tsuru +ていねい;teinei +テキスト;tekisuto +てきとう;tekitou +テニスコート;tenisukooto +てぶくろ;tebukuro +てら;tera +てん;ten +てんいん;ten_in +てんきよほう;tenkiyohou +でんとう;dentou +でんぽう;denpou +てんらんかい;tenrankai +どうぐ;dougu +とうとう;toutou +どうぶつえん;doubutsuen +とおく;tooku +とおり;toori +とおる;tooru +とき;toki +とくに;tokuni +とくべつ;tokubetsu +とし;toshi +とちゅう;tochuu +とっきゅう;tokkyuu +どっち;docchi +とどける;todokeru +とまる;tomaru +とめる;tomeru +とりかえる;torikaeru +どろぼう;dorobou +ながら;nagara +なく;naku +なくす;nakusu +なげる;nageru +なるほど;naruhodo +なれる;nareru +にがい;nigai +にくい;nikui +にっき;nikki +にゅういん;nyuuin +にゅうがく;nyuugaku +ぬすむ;nusumu +ねむい;nemui +ねむる;nemuru +のりかえる;norikaeru +のりもの;norimono +は;ha +ばあい;baai +ばい;bai +はいしゃ;haisha +ばかり;bakari +はこぶ;hakobu +はじめる;hajimeru +はずかしい;hazukashii +はなみ;hanami +はらう;harau +ばんぐみ;bangumi +ひ;hi +ひえる;hieru +ひきだし;hikidashi +ひこうじょう;hikoujou +ひさしぶり;hisashiburi +びじゅつかん;bijutsukan +びっくりする;bikkurisuru +ひっこす;hikkosu +ひつよう;hitsuyou +ひらく;hiraku +ビル;biru +ひるま;hiruma +ひるやすみ;hiruyasumi +ひろう;hirou +ふえる;fueru +ふかい;fukai +ふつう;futsuu +ぶどう;budou +ふとる;futoru +ふとん;futon +ふね;fune +ふね;fune +ふべん;fuben +ふむ;fumu +プレゼント;purezento +ぶんか;bunka +ぶんがく;bungaku +ベル;beru +へん;hen +へんじ;henji +ぼうえき;boueki +ほうそう;housou +ほし;hoshi +ほんやく;hon_yaku +まいる;mairu +まける;makeru +まちがえる;machigaeru +まにあう;maniau +まま;mama +まわり;mawari +まわる;mawaru +まんが;manga +まんなか;mannaka +みずうみ;mizuumi +みつかる;mitsukaru +みつける;mitsukeru +みどり;midori +みな;mina +みなと;minato +むかえる;mukaeru +むし;mushi +むすこ;musuko +むすめ;musume +むら;mura +むり;muri +め;me +めしあがる;meshiagaru +もうしあげる;moushiageru +もうすぐ;mousugu +もし;moshi +もどる;modoru +もめん;momen +やく;yaku +やくにたつ;yakunitatsu +やくそく;yakusoku +やける;yakeru +やさしい;yasashii +やすい;yasui +やはり;yahari +やわらかい;yawarakai +ゆ;yu +ゆうはん;yuuhan +ゆしゅつ;yushutsu +ゆび;yubi +ゆびわ;yubiwa +ゆめ;yume +ゆれる;yureru +よう;you +ようい;youi +よごれる;yogoreru +よしゅう;yoshuu +よてい;yotei +よやく;yoyaku +よる;yoru +によると;niyoruto +よろこぶ;yorokobu +よわい;yowai +りゆう;riyuu +りよう;riyou +りょうほう;ryouhou +りょかん;ryokan +るす;rusu +れきし;rekishi +れんらく;renraku +わかす;wakasu +わかれる;wakareru +わく;waku +わけ;wake +わらう;warau +わりあい;wariai +われる;wareru +ああ;aa +あう;au +あおい;aoi +あかい;akai +あかるい;akarui +あき;aki +あける;akeru +あさ;asa +あさごはん;asagohan +あし;ashi +あそぶ;asobu +あたたかい;atatakai +あたま;atama +あつい;atsui +あつい;atsui +あつい;atsui +あに;ani +あね;ane +あの;ano +あのう;anou +アパート;apaato +あぶない;abunai +あまい;amai +あまり;amari +あめ;ame +あらう;arau +ある;aru +あるく;aruku +あれ;are +いい;ii +よい;yoi +いいえ;iie +いう;iu +いく;iku +ゆく;yuku +いけ;ike +いそがしい;isogashii +いち;ichi +いちにち;ichinichi +いつか;itsuka +いつつ;itsutsu +いま;ima +いみ;imi +いもうと;imouto +いや;iya +いりぐち;iriguchi +いる;iru +いる;iru +いれる;ireru +いろ;iro +うえ;ue +うしろ;ushiro +うすい;usui +うた;uta +うたう;utau +うまれる;umareru +うみ;umi +うる;uru +うわぎ;uwagi +え;e +えいが;eiga +えいがかん;eigakan +えいご;eigo +ええ;ee +えき;eki +エレベーター;erebeetaa +えん;en +えんぴつ;enpitsu +お;o +おおきい;ookii +おおぜい;oozei +おかし;okashi +おかね;okane +おきる;okiru +おさけ;osake +おさら;osara +おじ;oji +おじ;oji +おしえる;oshieru +おす;osu +おそい;osoi +おちゃ;ocha +おてあらい;otearai +おとうと;otouto +おとこ;otoko +おとこのこ;otokonoko +おとな;otona +おなじ;onaji +おば;oba +おば;oba +おべんとう;obentou +おもい;omoi +おりる;oriru +おわる;owaru +おんな;onna +おんなのこ;onnanoko +かい;kai +かい;kai +がいこくじん;gaikokujin +かいしゃ;kaisha +かいだん;kaidan +かいもの;kaimono +かう;kau +かえす;kaesu +かお;kao +かかる;kakaru +がくせい;gakusei +かげつ;kagetsu +かける;kakeru +かける;kakeru +かす;kasu +かぜ;kaze +かぞく;kazoku +かたかな;katakana +がつ;gatsu +がっこう;gakkou +かど;kado +かばん;kaban +かびん;kabin +かみ;kami +カメラ;kamera +かようび;kayoubi +からい;karai +からだ;karada +がる;garu +かるい;karui +カレンダー;karendaa +かわ;kawa +かわ;kawa +がわ;gawa +かんじ;kanji +きいろい;kiiroi +きく;kiku +ギター;gitaa +きたない;kitanai +きって;kitte +きっぷ;kippu +きのう;kinou +ぎゅうにく;gyuuniku +きょう;kyou +きょうしつ;kyoushitsu +きょうだい;kyoudai +きょねん;kyonen +きらい;kirai +きる;kiru +きる;kiru +キロ;kiro +キロ;kiro +ぎんこう;ginkou +きんようび;kin_youbi +く;ku +くすり;kusuri +くだもの;kudamono +くつ;kutsu +くつした;kutsushita +くもる;kumoru +くらい;kurai +くらい;kurai +ぐらい;gurai +クラス;kurasu +グラム;guramu +くる;kuru +くるま;kuruma +くろい;kuroi +けさ;kesa +けす;kesu +けっこん;kekkon +げつようび;getsuyoubi +げんかん;genkan +げんき;genki +こ;ko +ご;go +ご;go +こえ;koe +コート;kooto +ここ;koko +ここのつ;kokonotsu +ごしゅじん;goshujin +ごぜん;gozen +こたえる;kotaeru +コップ;koppu +ことし;kotoshi +こども;kodomo +この;kono +こまる;komaru +ころ;koro +ごろ;goro +こんげつ;kongetsu +こんしゅう;konshuu +こんばん;konban +さあ;saa +さい;sai +さかな;sakana +さく;saku +さくぶん;sakubun +さす;sasu +さつ;satsu +さとう;satou +さむい;samui +さらいねん;sarainen +さん;san +さん;san +し;shi +じ;ji +しお;shio +じかん;jikan +しごと;shigoto +じしょ;jisho +しずか;shizuka +しち;shichi +しつもん;shitsumon +じどうしゃ;jidousha +しぬ;shinu +じびき;jibiki +じぶん;jibun +しまる;shimaru +しめる;shimeru +しめる;shimeru +じゃ;ja +じゃあ;jaa +しゃしん;shashin +シャツ;shatsu +じゅう;juu +しゅうかん;shuukan +じゅぎょう;jugyou +じょうず;jouzu +しょくどう;shokudou +しる;shiru +しろい;shiroi +じん;jin +すいようび;suiyoubi +すう;suu +スカート;sukaato +すぎ;sugi +すぐに;suguni +すこし;sukoshi +すずしい;suzushii +ずつ;zutsu +ストーブ;sutoobu +スプーン;supuun +スポーツ;supootsu +ズボン;zubon +すむ;sumu +スリッパ;surippa +する;suru +すわる;suwaru +セーター;seetaa +せびろ;sebiro +せまい;semai +ゼロ;zero +せんげつ;sengetsu +せんしゅう;senshuu +ぜんぶ;zenbu +そう;sou +そうじ;souji +そして;soshite +そこ;soko +その;sono +そば;soba +そら;sora +それ;sore +それから;sorekara +だい;dai +だいがく;daigaku +たいしかん;taishikan +だいじょうぶ;daijoubu +たいへん;taihen +たいへん;taihen +たかい;takai +タクシー;takushii +だす;dasu +たち;tachi +たてもの;tatemono +たのしい;tanoshii +たのむ;tanomu +たばこ;tabako +たべもの;tabemono +たべる;taberu +たまご;tamago +たんじょうび;tanjoubi +ちいさい;chiisai +ちがう;chigau +ちかてつ;chikatetsu +ちず;chizu +ちち;chichi +ちゃいろ;chairo +ちゅう;chuu +ついたち;tsuitachi +つぎ;tsugi +つくる;tsukuru +つめたい;tsumetai +つよい;tsuyoi +て;te +テープ;teepu +テープレコーダー;teepurekoodaa +テーブル;teeburu +でかける;dekakeru +てがみ;tegami +でぐち;deguchi +テスト;tesuto +デパート;depaato +でも;demo +でる;deru +テレビ;terebi +でんき;denki +と;to +ど;do +ドア;doa +トイレ;toire +どう;dou +とお;too +とおい;tooi +とおか;tooka +ときどき;tokidoki +ところ;tokoro +としょかん;toshokan +とても;totemo +どの;dono +とぶ;tobu +とまる;tomaru +ともだち;tomodachi +どようび;doyoubi +とり;tori +とりにく;toriniku +とる;toru +とる;toru +どんな;donna +ない;nai +ナイフ;naifu +ながい;nagai +なく;naku +なつ;natsu +なつやすみ;natsuyasumi +など;nado +なのか;nanoka +ならう;narau +ならぶ;narabu +ならべる;naraberu +に;ni +にく;niku +にし;nishi +にち;nichi +にちようび;nichiyoubi +にもつ;nimotsu +ニュース;nyuusu +にわ;niwa +にん;nin +ぬぐ;nugu +ネクタイ;nekutai +ねる;neru +ねん;nen +ノート;nooto +のみもの;nomimono +のむ;nomu +は;ha +パーティー;paatii +はい;hai +はい;hai +はいざら;haizara +はいる;hairu +はがき;hagaki +はく;haku +はこ;hako +はし;hashi +はし;hashi +はじまる;hajimaru +はじめに;hajimeni +はじめて;hajimete +はしる;hashiru +バス;basu +バター;bataa +はたち;hatachi +はたらく;hataraku +はち;hachi +はつか;hatsuka +はな;hana +はな;hana +はなし;hanashi +はなす;hanasu +はは;haha +はやい;hayai +はやい;hayai +はる;haru +はん;han +ばん;ban +ばん;ban +パン;pan +ハンカチ;hankachi +ばんごう;bangou +ばんごはん;bangohan +ひがし;higashi +ひき;hiki +ひく;hiku +ひく;hiku +ひこうき;hikouki +ひだり;hidari +ひと;hito +ひとつ;hitotsu +ひとつき;hitotsuki +ひゃく;hyaku +びょういん;byouin +びょうき;byouki +ひらがな;hiragana +ひる;hiru +ひるごはん;hirugohan +ひろい;hiroi +フィルム;firumu +ふうとう;fuutou +プール;puuru +フォーク;fooku +ふく;fuku +ふく;fuku +ふたつ;futatsu +ぶたにく;butaniku +ふたり;futari +ふつか;futsuka +ふとい;futoi +ふゆ;fuyu +ふるい;furui +ふん;fun +パージ;paaji +ベッド;beddo +へん;hen +ペン;pen +ほう;hou +ぼうし;boushi +ボールペン;boorupen +ほか;hoka +ポケット;poketto +ほしい;hoshii +ほそい;hosoi +ボタン;botan +ホテル;hoteru +ほん;hon +ほん;hon +ほんだな;hondana +まい;mai +まいあさ;maiasa +まいげつ;maigetsu +まいつき;maitsuki +まいしゅう;maishuu +まいにち;mainichi +まいねん;mainen +まいばん;maiban +まえ;mae +まがる;magaru +まち;machi +まつ;matsu +マッチ;macchi +まど;mado +まるい;marui +まるい;marui +まん;man +まんねんひつ;mannenhitsu +みぎ;migi +みじかい;mijikai +みず;mizu +みせ;mise +みせる;miseru +みち;michi +みっか;mikka +みっつ;mittsu +みなさん;minasan +みなみ;minami +みみ;mimi +みる;miru +むいか;muika +むこう;mukou +むっつ;muttsu +め;me +メートル;meetoru +めがね;megane +もう;mou +もう;mou +もくようび;mokuyoubi +もつ;motsu +もっと;motto +もの;mono +もん;mon +や;ya +やおや;yaoya +やさい;yasai +やさしい;yasashii +やすい;yasui +やっつ;yattsu +やま;yama +ゆうびんきょく;yuubinkyoku +ゆうべ;yuube +ゆうめい;yuumei +ゆき;yuki +ゆっくり;yukkuri +ようか;youka +ようふく;youfuku +よく;yoku +よく;yoku +よこ;yoko +よっか;yokka +よっつ;yottsu +よぶ;yobu +よむ;yomu +よる;yoru +らいしゅう;raishuu +らいねん;rainen +ラジオ;rajio +りょこう;ryokou +れい;rei +れいぞうこ;reizouko +レストラン;resutoran +れんしゅう;renshuu +ろく;roku +ワイシャツ;waishatsu +わかい;wakai +わかる;wakaru +わすれる;wasureru +わたくし;watakushi +わたる;wataru +にせい;nisei +みつご;mitsugo +めがみ;megami +ちしま;chishima +さゆう;sayuu +ふあん;fuan +たしょう;tashou +ちじん;chijin +りようする;riyousuru +いじょう;ijou +へいわ;heiwa +ゆらい;yurai +るてん;ruten +ほあん;hoan +るす;rusu +でんぱ;denpa +まるた;maruta +とまる;tomaru +ひかく;hikaku +むしゃ;musha +えもん;emon +じこ;jiko +かにゅう;kanyuu +こうい;koui +よとう;yotou +えど;edo +うちゅう;uchuu +ちえ;chie +におうもん;nioumon +いたり;itari +しじけい;shijikei +きゅうす;kyuusu +のぎざか;nogizaka +やすし;yasushi +おける;okeru +むた;muta +ねぎ;negi +くめ;kume +いど;ido +にいみ;niimi +なら;nara +ぬだ;nuda +もうふ;moufu +しつれい;shitsurei +すんぽう;sunpou +てんごく;tengoku +おんち;onchi +ちゅうごく;chuugoku +ちゅうこく;chuukoku +ちゅうてん;chuuten +ちゅうかい;chuukai +てんぽ;tenpo +ほじょきん;hojokin +ほき;hoki +たいほ;taiho +しゃちょう;shachou +しゅちょう;shuchou +つうちょう;tsuuchou +ぼうちょう;bouchou +ふよ;fuyo +ふごう;fugou +ふきん;fukin +ぎり;giri +かいぎ;kaigi +れいぎ;reigi +せいねん;seinen +せいけつ;seiketsu +せいし;seishi +しんせい;shinsei +ふぜい;fuzei +ごにん;gonin +ごじん;gojin +かくご;kakugo +にほんご;nihongo +はくじん;hakujin +いっぱく;ippaku +せっぱく;seppaku +はくしゅ;hakushu +はくらいひん;hakuraihin +はくちゅう;hakuchuu +ほうちょう;houchou +てっぽう;teppou +すいほう;suihou +かいほう;kaihou +どうほう;douhou +ほうしょく;houshoku +じょうほ;jouho +どじょう;dojou +じょうぞう;jouzou +かのう;kanou +きかがく;kikagaku +しゅっか;shukka +こうか;kouka +かせん;kasen +かだん;kadan +かもつ;kamotsu +せいか;seika +じんこう;jinkou +せいこう;seikou +せんこう;senkou +こうこ;kouko +こうちゃ;koucha +こうもく;koumoku +こうけん;kouken +ぎこう;gikou +しかいしゃ;shikaisha +かし;kashi +しいく;shiiku +しこう;shikou +しし;shishi +きょうかん;kyoukan +かんり;kanri +かんしゃ;kansha +かんちょう;kanchou +けんやくする;ken_yakusuru +ぼうけん;bouken +けんさ;kensa +けんどう;kendou +まやく;mayaku +けんま;kenma +まじょ;majo +しかん;shikan +しゅっし;shusshi +すんし;sunshi +せいしん;seishin +しんちょう;shinchou +しんし;shinshi +そせん;sosen +そぜい;sozei +そまつ;somatsu +そし;soshi +ていきゅう;teikyuu +かいてい;kaitei +してい;shitei +てきせつ;tekisetsu +てきち;tekichi +せいてき;seiteki +してき;shiteki +いってき;itteki +さんばい;sanbai +ばいよう;baiyou +ばいしょくする;baishokusuru +ばいしょう;baishou +はんてい;hantei +どうはん;douhan +こうぎ;kougi +きこう;kikou +こうにゅう;kounyuu +はいすいこう;haisuikou +ほうそうかい;housoukai +すいそう;suisou +かいそう;kaisou +ゆしゅつ;yushutsu +ゆらく;yuraku +きょうゆ;kyouyu +ゆちゃく;yuchaku +しゅひつ;shuhitsu +とくしゅ;tokushu +しんじゅ;shinju +きゅうしゅう;kyuushuu +こうきゅう;koukyuu +ちかん;chikan +じょうち;jouchi +どき;doki +どりょく;doryoku +えいえんの;eienno +すいえい;suiei +えいか;eika +ふんすい;funsui +ぎふん;gifun +こふん;kofun +ごふく;gofuku +ごらく;goraku +ごかい;gokai +へんしゅう;henshuu +へんけん;henken +ふへん;fuhen +ひょうはく;hyouhaku +もくひょう;mokuhyou +じあい;jiai +じき;jiki +じよう;jiyou +しゅってい;shuttei +かんてい;kantei +こうてい;koutei +つうか;tsuuka +かちゅう;kachuu +かふく;kafuku +きすう;kisuu +きふ;kifu +きし;kishi +こうどう;koudou +こうかい;koukai +ていこうする;teikousuru +きょじん;kyojin +きょひ;kyohi +きょり;kyori +かんそう;kansou +かいそう;kaisou +ようきゅう;youkyuu +きゅうきゅうしゃ;kyuukyuusha +やきゅう;yakyuu +じゅうに;juuni +にまんえん;niman_en +りよう;riyou +りえん;rien +げり;geri +かんりょう;kanryou +りょうちょう;ryouchou +りょうよう;ryouyou +さいくつ;saikutsu +やさい;yasai +さいしょくする;saishokusuru +せんしゃ;sensha +せんてつ;sentetsu +しんすい;shinsui +しんせつな;shinsetsuna +しんにゅう;shinnyuu +しんすい;shinsui +しんしつ;shinshitsu +ぶんしょう;bunshou +ひょうしょう;hyoushou +しょうじ;shouji +ほんしゅう;honshuu +ろくだいしゅう;rokudaishuu +おうしゅう;oushuu +そうだい;soudai +ふくそう;fukusou +そうだん;soudan +そうがい;sougai +はんそく;hansoku +そくりょう;sokuryou +そくめん;sokumen +こうたい;koutai +たいよ;taiyo +ゆうたい;yuutai +おうへい;ouhei +しっぺい;shippei +ていえん;teien +やえん;yaen +しゅびょう;shubyou +てんびょう;tenbyou +あいびょう;aibyou +かてい;katei +てんかする;tenkasuru +かどう;kadou +そまつな;somatsuna +ほうまつ;houmatsu +まっさつ;massatsu +ようし;youshi +しどう;shidou +しぼう;shibou +かいきょう;kaikyou +へんきょう;henkyou +きょうげき;kyougeki +てっきょう;tekkyou +きょうせい;kyousei +あいきょう;aikyou +きろく;kiroku +がんじつ;ganjitsu +きかい;kikai +たいくつ;taikutsu +きょうりょく;kyouryoku +きょうはくする;kyouhakusuru +そうけい;soukei +どうそう;dousou +しょうか;shouka +すいしょう;suishou +にんじゃ;ninja +ひにん;hinin +ていそう;teisou +ないてい;naitei +あんしん;anshin +あんない;annai +ばっさい;bassai +はばつ;habatsu +ばくろ;bakuro +ばくはつ;bakuhatsu +ぼうし;boushi +ぼくさつ;bokusatsu +ぶれい;burei +ぶたい;butai +かちく;kachiku +ちくでんち;chikudenchi +しょうちょう;shouchou +ちょうばつ;choubatsu +ちょうしょく;choushoku +まんちょう;manchou +じどうしゃ;jidousha +ろうどう;roudou +かどう;kadou +しどうする;shidousuru +ふそく;fusoku +そくしんする;sokushinsuru +じが;jiga +きが;kiga +ふきゅう;fukyuu +がくふ;gakufu +はんれい;hanrei +はんせん;hansen +かへい;kahei +へいがい;heigai +ひはん;hihan +ひくつな;hikutsuna +ひめい;himei +ほうごう;hougou +こうほう;kouhou +ほうゆう;houyuu +ひょうそうする;hyousousuru +どひょう;dohyou +いかん;ikan +いあん;ian +じょうもん;joumon +じょう;jou +じょうしゃする;joushasuru +かじょう;kajou +じゅけんする;jukensuru +じゅがく;jugaku +じゅうじする;juujisuru +そうじゅうする;soujuusuru +じゅくちょう;jukuchou +せいじゅく;seijuku +ちゅうじゅん;chuujun +じゅんし;junshi +むじゅん;mujun +じょじゅつ;jojutsu +ぎじゅつ;gijutsu +かいむ;kaimu +かいきゅう;kaikyuu +かいけい;kaikei +かいが;kaiga +えしゃく;eshaku +えほん;ehon +かいしん;kaishin +きかい;kikai +ほうかい;houkai +じゅっかい;jukkai +かんつうする;kantsuusuru +こうかん;koukan +しょうかんする;shoukansuru +かんげんする;kangensuru +じゅんかん;junkan +しゅのう;shunou +くのう;kunou +のうずい;nouzui +おうごん;ougon +おうだんする;oudansuru +けいこく;keikoku +けいらん;keiran +けんぎする;kengisuru +ほけん;hoken +けんちょう;kenchou +けんしょう;kenshou +しゅっきん;shukkin +きんがしんねん;kingashinnen +げんこう;genkou +おうこう;oukou +こうほ;kouho +こうや;kouya +きょうこう;kyoukou +こんしんかい;konshinkai +かいこん;kaikon +こっし;kosshi +こっけい;kokkei +しんろう;shinrou +がろう;garou +くんこう;kunkou +くんぷう;kunpuu +へんきゃくする;henkyakusuru +きゃくほん;kyakuhon +こきょう;kokyou +えいきょう;eikyou +きょうかい;kyoukai +きょうだい;kyoudai +がまん;gaman +まんが;manga +せつめい;setsumei +どうめい;doumei +こくみん;kokumin +あんみん;anmin +てんねん;tennen +かねんせい;kanensei +かんれき;kanreki +れきし;rekishi +のうがっこう;nougakkou +のうこう;noukou +きんし;kinshi +きんど;kindo +かっそうろ;kassouro +ろこつ;rokotsu +しけい;shikei +げんけい;genkei +まさつ;masatsu +そうほう;souhou +そうえん;souen +ちたい;chitai +たいか;taika +じたく;jitaku +いたくする;itakusuru +そうていする;souteisuru +ていど;teido +ていこく;teikoku +ていけつする;teiketsusuru +りょうてい;ryoutei +ていし;teishi +てっていする;tetteisuru +てっかい;tekkai +とこう;tokou +とうとつな;toutotsuna +さとう;satou +そうこ;souko +そうぞう;souzou +みんよう;min_you +どうようする;douyousuru +じゅよう;juyou +ようぶ;youbu +ないよう;naiyou +ようかい;youkai +ゆうしゅう;yuushuu +はいゆう;haiyuu +しゅうき;shuuki +かき;kaki +たか;taka +じぜん;jizen +しゅうぜんする;shuuzensuru +ぞう;zou +そうぞう;souzou +ぞうしょ;zousho +しんぞう;shinzou +しゅくはく;shukuhaku +しゅくしょうする;shukushousuru +りょうしょく;ryoushoku +りゅうどう;ryuudou +りゅうあん;ryuuan +さんか;sanka +ひさん;hisan +せいど;seido +せんすい;sensui +せんろ;senro +しんせつ;shinsetsu +せっしゅ;sesshu +しゃれい;sharei +ほうしゃ;housha +もほうする;mohousuru +いっしょう;isshou +じょうしょう;joushou +しょうそう;shousou +がんしょう;ganshou +しょうぐん;shougun +しょうがくきん;shougakukin +ほしゅ;hoshu +かんしゃ;kansha +いかん;ikan +こよう;koyou +こもん;komon +しがいせん;shigaisen +しゆう;shiyuu +そつぎょう;sotsugyou +そっせん;sossen +とうてい;toutei +そっとうする;sottousuru +せいげん;seigen +きじょう;kijou +しさい;shisai +みつぼう;mitsubou +きんじとう;kinjitou +とうじょう;toujou +あっぱく;appaku +べいこく;beikoku +べっそう;bessou +しゅつぼつする;shutsubotsusuru +こくびゃく;kokubyaku +さんがつ;sangatsu +さんかげつ;sankagetsu +ほうぎょく;hougyoku +にひゃく;nihyaku +きょういき;kyouiki +しゃじく;shajiku +きちじつ;kichijitsu +きく;kiku +しょくもつ;shokumotsu +どうみゃく;doumyaku +ていねい;teinei +ねったい;nettai +いちにち;ichinichi +にくしん;nikushin +ろうにゃく;rounyaku +とうにょうびょう;tounyoubyou +こうおつへい;kouotsuhei +りちぎ;richigi +ばりき;bariki +りくじょう;rikujou +しゅっきんする;shukkinsuru +たつじん;tatsujin +しゅうわいする;shuuwaisuru +ざせき;zaseki +ぜいきん;zeikin +ほぞん;hozon +めつぼう;metsubou +しだいに;shidaini +しせい;shisei +しほん;shihon +しもん;shimon +せっとう;settou +しゃこう;shakou +こうりょく;kouryoku +こうがい;kougai +こうさつ;kousatsu +しょうかん;shoukan +しょうわ;shouwa +しょうめい;shoumei +しょうせいする;shouseisuru +しょうかいする;shoukaisuru +こしょう;koshou +しょうしょ;shousho +ちょうか;chouka +れいじょう;reijou +れいきゃく;reikyaku +れいじ;reiji +でんれい;denrei +こうれい;kourei +りょうど;ryoudo +さくぶん;sakubun +さくねん;sakunen +さくさん;sakusan +さくしゅ;sakushu +さぎ;sagi +ぼち;bochi +きぼ;kibo +しぼ;shibo +まくじょう;makujou +ばくふ;bakufu +かいまく;kaimaku +ばくぜん;bakuzen +ぎせい;gisei +ふどうさん;fudousan +くうふく;kuufuku +ふくめん;fukumen +りれき;rireki +がんたん;gantan +だいたん;daitan +たんか;tanka +どたんば;dotanba +ちゅうしょく;chuushoku +けいけん;keiken +けいしょく;keishoku +かけい;kakei +けいろ;keiro +きかいな;kikaina +しょうぞうが;shouzouga +しょうか;shouka +しょうえん;shouen +てっしょう;tesshou +しんしゅく;shinshuku +しんどう;shindou +さんしん;sanshin +こうしん;koushin +くつじょく;kutsujoku +けんすい;kensui +すいみん;suimin +ぼうすい;bousui +こうくうゆうびん;koukuuyuubin +さいほう;saihou +きさい;kisai +さいばいする;saibaisuru +せんい;sen_i +ふくし;fukushi +ふくし;fukushi +ぜんぷく;zenpuku +そうかん;soukan +かんちょう;kanchou +ねんかん;nenkan +らんようする;ran_yousuru +かんさつ;kansatsu +かんしょう;kanshou +こうかん;koukan +こうぎ;kougi +こうざん;kouzan +かくだい;kakudai +せいじょう;seijou +じょうみゃく;joumyaku +そうぎ;sougi +こどく;kodoku +えんこ;enko +すいか;suika +せんいん;sen_in +おんいん;on_in +そんしつ;sonshitsu +かんじょう;kanjou +かんにん;kannin +じんだい;jindai +たいぐん;taigun +ぐんかい;gunkai +くんしゅ;kunshu +しちょう;shichou +しまい;shimai +はいびょう;haibyou +へきが;hekiga +びょうへき;byouheki +ふかひ;fukahi +いちおくえん;ichiokuen +きおく;kioku +ようい;youi +ほかくする;hokakusuru +しゅうかく;shuukaku +ほご;hogo +もんぶだいじん;monbudaijin +しもん;shimon +いっつい;ittsui +こうせい;kousei +こうか;kouka +ゆうびん;yuubin +きょうあく;kyouaku +どきょう;dokyou +りりく;ririku +こうこう;koukou +こうぼ;koubo +きょうじゅ;kyouju +けいれつ;keiretsu +けいそう;keisou +しそん;shison +ちゅうけん;chuuken +けんめい;kenmei +きんちょう;kinchou +ふきつ;fukitsu +きつもん;kitsumon +けつろん;ketsuron +かつれい;katsurei +かんかつ;kankatsu +そんがい;songai +けいい;keii +けいさつ;keisatsu +きょうい;kyoui +すいじん;suijin +でいすい;deisui +さいせき;saiseki +ろうどく;roudoku +るろう;rurou +りょうしん;ryoushin +えんりょ;enryo +ほりょ;horyo +ひふ;hifu +ほさ;hosa +だき;daki +りんりがく;rinrigaku +ごりん;gorin +せきにん;sekinin +にんしん;ninshin +うんちん;unchin +げんいん;gen_in +こんいん;kon_in +しゃおん;shaon +たいし;taishi +かんり;kanri +しゅくしゃ;shukusha +しめい;shimei +しへい;shihei +ほじゅう;hojuu +じゅうほう;juuhou +だいとうりょう;daitouryou +ふくつう;fukutsuu +ぶよう;buyou +しんじつ;shinjitsu +きんしんする;kinshinsuru +ちんあつ;chin_atsu +ざんこく;zankoku +こうぞう;kouzou +へいよう;heiyou +へい;hei +かびん;kabin +ちしき;chishiki +しょくいん;shokuin +そしき;soshiki +しょっき;shokki +いりょう;iryou +とうほく;touhoku +とうきょう;toukyou +けんがく;kengaku +けんきゅう;kenkyuu +かいしゃ;kaisha +あんないする;annaisuru +でんわばんごう;denwabangou +ばんごはん;bangohan +だんせい;dansei +じょせい;josei +べんとう;bentou +ちず;chizu +だんち;danchi +ちかてつ;chikatetsu +としょかん;toshokan +だいがく;daigaku +だいじょうぶ;daijoubu +がいこくじん;gaikokujin +しぜん;shizen +しがつ;shigatsu +しちがつ;shichigatsu +きゅうにん;kyuunin +くじ;kuji +じゅうろく;juuroku +せんえん;sen_en +いちまんえん;ichiman_en +りょこう;ryokou +かようび;kayoubi +ぎゅうにゅう;gyuunyuu +ぼんさい;bonsai +すいようび;suiyoubi +もくようび;mokuyoubi +いっしょうけんめい;isshoukenmei +ひじょう;hijou +きんようび;kin_youbi +ふじさん;fujisan +にほん;nihon +どようび;doyoubi +えいわじてん;eiwajiten +かんぜん;kanzen +でんぽう;denpou +げんき;genki +かんじ;kanji +じょうだん;joudan +げんかん;genkan +ひみつ;himitsu +かいだん;kaidan +じしん;jishin +ひこうき;hikouki +じしん;jishin +きょねん;kyonen +しょうてん;shouten +けいおうだいがく;keioudaigaku +ごぜん;gozen +けんぶつ;kenbutsu +ふきん;fukin +きんえん;kin_en +こんしゅう;konshuu +こんど;kondo +こうじょう;koujou +こうこく;koukoku +こうそくどうろ;kousokudouro +きょうしつ;kyoushitsu +えいぎょうちゅう;eigyouchuu +しゃしん;shashin +きゅうこう;kyuukou +きゅうりょう;kyuuryou +まいにち;mainichi +らいねん;rainen +しょうがっこう;shougakkou +しょうばい;shoubai +しつもん;shitsumon +しょっけん;shokken +せいしょ;seisho +れいぞうこ;reizouko +れんしゅう;renshuu +らんぼう;ranbou +さいふ;saifu +せいよう;seiyou +げきじょう;gekijou +せいふ;seifu +せんもんか;senmonka +せんしゅ;senshu +しゅうてん;shuuten +せんきょ;senkyo +せんそう;sensou +しけん;shiken +しっぱい;shippai +たんじょうび;tanjoubi +とくべつ;tokubetsu +ゆうめい;yuumei +やくそく;yakusoku +ほんやく;hon_yaku +たいふう;taifuu +えきちょう;ekichou +たいへん;taihen +つごう;tsugou +げいしゃ;geisha +ようふく;youfuku +やっきょく;yakkyoku +ふとん;futon +ぜんぶ;zenbu +だいぶつ;daibutsu +さんがく;sangaku +いっかい;ikkai +さんだい;sandai +にまい;nimai +にさつ;nisatsu +せんだい;sendai +じゅうにさい;juunisai +かわいそう;kawaisou +おきゃくさん;okyakusan +めんどうな;mendouna +めいじじだい;meijijidai +にっこう;nikkou +ほっかいどう;hokkaidou +たいわん;taiwan +えんぴつ;enpitsu +とくほん;tokuhon +かじ;kaji +そふ;sofu +そぼ;sobo +じんじゃ;jinja +びじん;bijin +くろう;kurou +おうじ;ouji +だいいち;daiichi +ごめん;gomen +ざぜん;zazen +ごらん;goran +ほうそう;housou +おんせん;onsen +むり;muri +かぐ;kagu +もんぶしょう;monbushou +おきのどく;okinodoku +ほどう;hodou +ちゅういする;chuuisuru +もくてき;mokuteki +いご;igo +たにん;tanin +てんきよほう;tenkiyohou +げんざい;genzai +ぼうえきかいしゃ;bouekikaisha +かぞく;kazoku +ごふんごびょう;gofungobyou +していせき;shiteiseki +きょういく;kyouiku +はいけんする;haikensuru +ぞくご;zokugo +ぶし;bushi +ろうじん;roujin +けんこう;kenkou +ちゅうかりょうり;chuukaryouri +めいし;meishi +きけん;kiken +かんぱい;kanpai +じゅっぽん;juppon +びょういん;byouin +しゃくはち;shakuhachi +しちり;shichiri +いちりん;ichirin +どうじ;douji +せいどう;seidou +どうたい;doutai +どうさつ;dousatsu +すいとう;suitou +とうゆ;touyu +ちょうこう;choukou +ちょうやくばん;chouyakuban +ちょうせん;chousen +ちょうぼう;choubou +とうげんきょう;tougenkyou +とうそう;tousou +じょうぶつ;joubutsu +ぜんせい;zensei +はんじょう;hanjou +ちゅうせい;chuusei +じょうない;jounai +さいばん;saiban +しぼう;shibou +もうじゃ;mouja +ほんもう;honmou +ぼうねんかい;bounenkai +たぼう;tabou +ほうそうもう;housoumou +もうもく;moumoku +ちしきそう;chishikisou +ぜんそう;zensou +なかそね;nakasone +ぞうか;zouka +ぞうしん;zoushin +きそうする;kisousuru +ぞうてい;zoutei +きょうさんしゅぎ;kyousanshugi +きょうけい;kyoukei +きょうきゅうする;kyoukyuusuru +くよう;kuyou +くうこう;kuukou +こうずい;kouzui +けんにん;kennin +けんじょう;kenjou +けんぎ;kengi +きげん;kigen +れんばい;renbai +れんぷ;renpu +しょうがつ;shougatsu +せいぎ;seigi +せっしょう;sesshou +せいばつ;seibatsu +ほしょう;hoshou +びょうしょう;byoushou +いっかつする;ikkatsusuru +かっしょく;kasshoku +かっすい;kassui +えっけん;ekken +こご;kogo +こはん;kohan +こたん;kotan +きょじゅう;kyojuu +そうい;soui +いだい;idai +けいい;keii +かんこく;kankoku +きしゃ;kisha +ちき;chiki +きげん;kigen +せいき;seiki +きちゅう;kichuu +おうひ;ouhi +しんぱいする;shinpaisuru +きゅうはん;kyuuhan +はんかん;hankan +たんもの;tanmono +てっぱん;teppan +けいじばん;keijiban +はんばい;hanbai +しゅっぱんしゃ;shuppansha +はんしん;hanshin +へんじ;henji +かめん;kamen +じむ;jimu +むさん;musan +じゅうどう;juudou +にゅうわ;nyuuwa +ごふん;gofun +じぶん;jibun +ふんまつ;funmatsu +ふんぎ;fungi +ふんいき;fun_iki +びんぼう;binbou +ひんぷ;hinpu +はんぷ;hanpu +こっき;kokki +しょうぎ;shougi +きほん;kihon +がっき;gakki +せんがく;sengaku +きんせん;kinsen +じっせん;jissen +さんばし;sanbashi +たいぎょう;taigyou +ぼたい;botai +ちあん;chian +げんしてき;genshiteki +しんかんせん;shinkansen +かんちょう;kanchou +しゅうかん;shuukan +かんがん;kangan +かんよう;kan_you +ごけん;goken +ふけい;fukei +けいば;keiba +きょうそう;kyousou +がいきょう;gaikyou +しゅくふく;shukufuku +しゅうぎ;shuugi +こっき;kokki +せいめい;seimei +ひゃくしょう;hyakushou +しょうぶん;shoubun +せいざ;seiza +みょうじょう;myoujou +でんち;denchi +しこうする;shikousuru +ふせ;fuse +ひにょう;hinyou +ぶんぴつ;bunpitsu +ひつよう;hitsuyou +しゅくふ;shukufu +ていしゅく;teishuku +かんとく;kantoku +せいじゃく;seijaku +せきせい;sekisei +ふくいん;fukuin +あんき;anki +かいがん;kaigan +こうかい;koukai +ばいか;baika +ぶじょく;bujoku +びんそくな;binsokuna +はんえい;han_ei +ぼうえい;bouei +ぼうせき;bouseki +ぼうず;bouzu +ぼっちゃん;bocchan +ぼうがい;bougai +ぼうせん;bousen +かんぼうちょう;kanbouchou +ほうめん;houmen +ほうし;houshi +ほうもんする;houmonsuru +かんげき;kangeki +ふせつ;fusetsu +かち;kachi +ほうちする;houchisuru +せいしょく;seishoku +しょくぶつえん;shokubutsuen +ちょくめん;chokumen +しょうじき;shoujiki +とうけつ;touketsu +れんきんじゅつ;renkinjutsu +ちんれつ;chinretsu +ちゅうしゃ;chuusha +でんちゅう;denchuu +ちゅうしゃじょう;chuushajou +ちゅうきする;chuukisuru +しゅじん;shujin +じゅうしょ;juusho +おうふく;oufuku +いしょう;ishou +しゃしょう;shashou +しょくどう;shokudou +じゆう;jiyuu +せきゆ;sekiyu +ちゅうしょう;chuushou +しゅうしゅ;shuushu +かくじ;kakuji +せいかく;seikaku +ないかく;naikaku +おきゃくさん;okyakusan +りょかく;ryokaku +みゃくらく;myakuraku +らくご;rakugo +らくのう;rakunou +りゃくご;ryakugo +ぜんがく;zengaku +しゃふつ;shafutsu +けいさつしょ;keisatsusho +ざんしょ;zansho +しょこく;shokoku +ちょしゃ;chosha +ちょゆう;choyuu +じょうちょ;joucho +きょうと;kyouto +たいよう;taiyou +けいよう;keiyou +だいちょう;daichou +ねっとう;nettou +しょうがい;shougai +こうてつ;koutetsu +ちつじょ;chitsujo +はくぶつかん;hakubutsukan +とばく;tobaku +はっか;hakka +そくばく;sokubaku +ぼき;boki +しょうてんがい;shoutengai +かいどう;kaidou +しょうがい;shougai +けいひ;keihi +けいこ;keiko +かさく;kasaku +ふうとう;fuutou +ほうけん;houken +えつらんしつ;etsuranshitsu +まんえつ;man_etsu +えいびん;eibin +だつぜい;datsuzei +だいこん;daikon +かいこん;kaikon +むげん;mugen +がんきゅう;gankyuu +かいげん;kaigen +ぎんこう;ginkou +てったい;tettai +してん;shiten +しよう;shiyou +したい;shitai +ぎのう;ginou +きろ;kiro +しょうねん;shounen +こうしょう;koushou +しょうろく;shouroku +はんせい;hansei +ごびょう;gobyou +きみょう;kimyou +ぶあい;buai +ふ;fu +れっとうかん;rettoukan +でし;deshi +きょうだい;kyoudai +ひにく;hiniku +ひがい;higai +ひがん;higan +ひろう;hirou +はさん;hasan +ろうば;rouba +はいく;haiku +せんぱい;senpai +はいすいかん;haisuikan +ひかん;hikan +もんぴ;monpi +ゆうざい;yuuzai +じない;jinai +しじ;shiji +じじゅう;jijuu +しじん;shijin +しょうたい;shoutai +れっとう;rettou +とうふ;toufu +だいず;daizu +てんねんとう;tennentou +せんとう;sentou +とうろく;touroku +とざん;tozan +せんとう;sentou +おんど;ondo +ずつう;zutsuu +ほうねん;hounen +せいちょうな;seichouna +たんき;tanki +ようもう;youmou +ようそう;yousou +きゅうよう;kyuuyou +ようぎょう;yougyou +はっしょうち;hasshouchi +しょうさい;shousai +しんせん;shinsen +にちょうめ;nichoume +ちょうにん;chounin +ちょうてん;chouten +ちょきん;chokin +でんとう;dentou +ていせい;teisei +だとうする;datousuru +しゅしゃ;shusha +しゅみ;shumi +さいしん;saishin +さつえい;satsuei +ちく;chiku +せんく;senku +おうしゅう;oushuu +おうだ;ouda +すうじく;suujiku +ちょうせいする;chouseisuru +しょうちょく;shouchoku +そがい;sogai +しんらい;shinrai +しょうちくばい;shouchikubai +そしょう;soshou +ろうおう;rouou +ていあん;teian +ていぼう;teibou +よくぼう;yokubou +よくしつ;yokushitsu +ゆうこく;yuukoku +よゆう;yoyuu +せきじつ;sekijitsu +こんじゃく;konjaku +こせき;koseki +せきはい;sekihai +さくご;sakugo +しゃっきん;shakkin +そち;sochi +ほうかつ;houkatsu +べんぜつ;benzetsu +じてん;jiten +きゅうけい;kyuukei +よやく;yoyaku +よきん;yokin +じょぶん;jobun +じょがい;jogai +そうじ;souji +じょじし;jojishi +じょこう;jokou +とそう;tosou +とちゅう;tochuu +よはく;yohaku +しゅざいする;shuzaisuru +ざいさん;zaisan +てんさい;tensai +へいてん;heiten +しきしゃ;shikisha +こうき;kouki +かいぐん;kaigun +ろくしょう;rokushou +ぶしょう;bushou +しょうじょう;shoujou +ふしん;fushin +せいてん;seiten +かんじょう;kanjou +ちょうし;choushi +ちょうぞう;chouzou +えんしゅう;enshuu +がいとうしゃ;gaitousha +だんがい;dangai +かくしん;kakushin +じこくひょう;jikokuhyou +けいざい;keizai +しょさい;shosai +せいしょう;seishou +せんざい;senzai +だいく;daiku +ばいう;baiu +こうあん;kouan +けんぽう;kenpou +かんさい;kansai +とんカツ;tonkatsu +めいわく;meiwaku +ばいしん;baishin +ばいしゅう;baishuu +どくりつ;dokuritsu +はいし;haishi +とち;tochi +てんのう;tennou +えんじょ;enjo +ごけい;gokei +はけん;haken +にゅういん;nyuuin +みょうにち;myounichi +けしょうしつ;keshoushitsu +ふうふ;fuufu +しゅしょう;shushou +いるい;irui +ばんざい;banzai +しそう;shisou +じんそく;jinsoku +へいきん;heikin +じどう;jidou +かいしゃく;kaishaku +もんく;monku +きゅうじつ;kyuujitsu +しやくしょ;shiyakusho +ぼしゅう;boshuu +ばっきん;bakkin +ちい;chii +ちょくせつ;chokusetsu +せけん;seken +はんだん;handan +じむようひん;jimuyouhin +はんとう;hantou +しゅんかん;shunkan +しんこうする;shinkousuru +けいしき;keishiki +しゅうきょう;shuukyou +ちょうさ;chousa +こうちょうかい;kouchoukai +ちょうそん;chouson +ちゅうけい;chuukei +だいじん;daijin +だかい;dakai +えんき;enki +えんぜつ;enzetsu +ふっこう;fukkou +げんめい;genmei +はんい;han_i +しゅうりょう;shuuryou +けっしょう;kesshou +こくばん;kokuban +きょうみ;kyoumi +ふっきゅう;fukkyuu +ふたん;futan +さくげん;sakugen +ごうとう;goutou +じさつ;jisatsu +ぎょぎょう;gyogyou +しゅうのう;shuunou +じゅりつ;juritsu +ぎょうせい;gyousei +はんにん;hannin +けんせつ;kensetsu +けんちく;kenchiku +ひりょう;hiryou +じげん;jigen +じしん;jishin +はってん;hatten +げか;geka +しょとく;shotoku +けいき;keiki +じゅうよう;juuyou +ひょうろんか;hyouronka +いらい;irai +ひてい;hitei +じじつ;jijitsu +めいじいしん;meijiishin +かいかく;kaikaku +こうきょ;koukyo +せっしょう;sesshou +きそ;kiso +せんでん;senden +まんかい;mankai +ようちえん;youchien +こうきゅう;koukyuu +しょくたくえん;shokutakuen +こうげき;kougeki +りえき;rieki +ついきゅう;tsuikyuu +ひよう;hiyou +かいたく;kaitaku +けいたい;keitai +きしょう;kishou +こんらん;konran +じょうやく;jouyaku +じけん;jiken +いこう;ikou +かいとう;kaitou +けいやく;keiyaku +きそ;kiso +きょか;kyoka +とうぎ;tougi +しんさつ;shinsatsu +しゅるい;shurui +きけん;kiken +せんぷうき;senpuuki +にほんしゅ;nihonshu +しりつ;shiritsu +すうがく;suugaku +しゅさい;shusai +ていか;teika +きんゆう;kin_yuu +しき;shiki +ようさん;yousan +よさん;yosan +そうさく;sousaku +とうちゃく;touchaku +れんぽう;renpou +こんなん;konnan +しんりん;shinrin +とっぱ;toppa +おせん;osen +るいぞう;ruizou +とうひょう;touhyou +のうりつ;nouritsu +ぜんしょう;zenshou +さいがい;saigai +さいかい;saikai +あいけん;aiken +きんぎょばち;kingyobachi +せっきょく;sekkyoku +ぜったい;zettai +しゅうしょく;shuushoku +たいど;taido +りゅうがく;ryuugaku +おうしゅう;oushuu +きせつ;kisetsu +ベース;beesu +へきえき;hekieki +ぺこぺこ;pekopeko +ベスト;besuto +ベストセラー;besutoseraa +へだたる;hedataru +へり;heri +へりくだる;herikudaru +へる;heru +べんかい;benkai +へんかく;henkaku +へんかん;henkan +べんぎ;bengi +へんけん;henken +べんご;bengo +へんさい;hensai +べんしょう;benshou +へんせん;hensen +へんとう;hentou +へんどう;hendou +べんろん;benron +ほ;ho +ほいく;hoiku +ボイコット;boikotto +ポイント;pointo +ほうあん;houan +ぼうえい;bouei +ぼうか;bouka +ほうかい;houkai +ぼうがい;bougai +ほうがく;hougaku +ほうけん;houken +ほうさく;housaku +ほうさく;housaku +ほうし;houshi +ほうしき;houshiki +ほうしゃ;housha +ほうしゃのう;houshanou +ほうしゅう;houshuu +ほうしゅつ;houshutsu +ほうじる;houjiru +ほうずる;houzuru +ぼうせき;bouseki +ぼうぜん;bouzen +ほうち;houchi +ぼうちょう;bouchou +ほうてい;houtei +ほうどう;houdou +ぼうとう;boutou +いもうと;imouto +さんにん;sannin +けいざい;keizai +がくぶ;gakubu +けいざいがくぶ;keizaigakubu +さんねんせい;sannensei +せんもん;senmon +し;shi +ろしあご;roshiago +アジア;ajia +いちねんせい;ichinensei +こうこうせい;koukousei +らいねん;rainen +にゅうがく;nyuugaku +にゅうがくする;nyuugakusuru +あさごはん;asagohan +たべる;taberu +コーヒー;koohii +すきだ;sukida +きらいだ;kiraida +こうちゃ;koucha +ひるごはん;hirugohan +しょくどう;shokudou +ばんごはん;bangohan +どようび;doyoubi +よる;yoru +ときどき;tokidoki +くる;kuru +はなしあう;hanashiau +にちようび;nichiyoubi +テレビ;terebi +みる;miru +ラジオ;rajio +きく;kiku +しゅうまつ;shuumatsu +くがつ;kugatsu +あさ;asa +ばん;ban +いちじはん;ichijihan +だいさんか;daisanka +まいあさ;maiasa +そんな;sonna +いかなる;ikanaru +おおきな;ookina +ちいさな;chiisana +おえる;oeru +おみやげ;omiyage +にほんてきだ;nihontekida +ほしい;hoshii +とくちょう;tokuchou +みんげい;mingei +ほうふだ;houfuda +ちかどう;chikadou +そのまま;sonomama +ちか;chika +よう;you +かていようひん;kateiyouhin +ふじん;fujin +いっぱいだ;ippaida +そこ;soko +とおりぬける;toorinukeru +エスカレーター;esukareetaa +アクセサリー;akusesarii +ハンドバッグ;handobaggu +ハンカチ;hankachi +ベルト;beruto +そうしんぐ;soushingu +やくひん;yakuhin +けしょうひん;keshouhin +うりば;uriba +しんじゅ;shinju +ネックレス;nekkuresu +そのかわりに;sonokawarini +じょうひんだ;jouhinda +すてきだ;sutekida +きぬ;kinu +スカーフ;sukaafu +あか;aka +きいろ;kiiro +みどりいろ;midoriiro +デザイン;dezain +つつむ;tsutsumu +に、さんぷん;ni_sanpun +ブルー;buruu +おれんじいろ;orenjiiro +リボン;ribon +むすぶ;musubu +はこ;hako +スカート;sukaato +ブラウス;burausu +スーツ;suutsu +コート;kooto +パンタロン;pantaron +サイズ;saizu +ようふく;youfuku +きじ;kiji +さんかい;sankai +しんし;shinshi +したぎ;shitagi +きもの;kimono +おび;obi +め;me +うつる;utsuru +えんぴつ;enpitsu +けしごむ;keshigomu +がくようひん;gakuyouhin +まんねんひつ;mannenhitsu +ボールペン;boorupen +じむようひん;jimuyouhin +カメラ;kamera +ちゅうがくせい;chuugakusei +こんざつ;konzatsu +こんざつする;konzatsusuru +ほうせき;houseki +ききんぞく;kikinzoku +かく;kaku +しんるい;shinrui +おおよろこびだ;ooyorokobida +とうほく;touhoku +とうほくちほう;touhokuchihou +こけしにんぎょう;kokeshiningyou +かわいらしい;kawairashii +にする;nisuru +しょさい;shosai +かざる;kazaru +もってくる;mottekuru +こけし;kokeshi +でございます;degozaimasu +ございません;gozaimasen +すこしおまちください;sukoshiomachikudasai +コーヒースタンド;koohiisutando +ひとつ;hitotsu +ふたつ;futatsu +みっつ;mittsu +よっつ;yottsu +いつつ;itsutsu +むっつ;muttsu +やっつ;yattsu +ここのつ;kokonotsu +とお;too +ひき;hiki +ほん;hon +けん;ken +だい;dai +き;ki +はい;hai +つう;tsuu +こ;ko +わ;wa +とう;tou +そう;sou +せき;seki +りょう;ryou +ちゃく;chaku +そく;soku +いつか;itsuka +にじゅうくにち;nijuukunichi +てんのう;tennou +みっか;mikka +けんぽう;kenpou +きねん;kinen +きねんする;kinensuru +きねんび;kinenbi +こうきゅうび;koukyuubi +いのうえ;inoue +やくしょ;yakusho +はなや;hanaya +よる;yoru +しろ;shiro +カーネーション;kaaneeshon +おかしや;okashiya +チョコレート;chokoreeto +ひとはこ;hitohako +とうよこせん;touyokosen +でんえんちょうふ;den_enchoufu +みちじゅん;michijun +みせる;miseru +みち;michi +たずねる;tazuneru +でぐち;deguchi +みつける;mitsukeru +あまり;amari +あし;ashi +まつ;matsu +みごとだ;migotoda +うわる;uwaru +いりぐち;iriguchi +もん;mon +こえ;koe +こえをかける;koewokakeru +とつぜん;totsuzen +いぬ;inu +げんかん;genkan +ほえる;hoeru +とびら;tobira +あんしん;anshin +あんしんする;anshinsuru +ねこ;neko +とり;tori +ことり;kotori +かう;kau +わらう;warau +しょくぶつ;shokubutsu +うえる;ueru +そだてる;sodateru +くつ;kutsu +ぬぐ;nugu +むすこ;musuko +むすめ;musume +おじょうさん;ojousan +とし;toshi +うえの;ueno +どうぶつえん;doubutsuen +パンダ;panda +ちょうきてきだ;choukitekida +こっかけいかくけいざい;kokkakeikakukeizai +すすめる;susumeru +きき;kiki +インフレ;infure +じつげん;jitsugen +じつげんする;jitsugensuru +おいでになる;oideninaru +こうさくきかい;kousakukikai +ぼうせききかい;bousekikikai +ちんぎん;chingin +おはなしをうかがう;ohanashiwoukagau +おたずねする;otazunesuru +つごう;tsugou +つごうをつける;tsugouwotsukeru +けいひんちたい;keihinchitai +じそく;jisoku +はやさ;hayasa +げしゃ;gesha +げしゃする;geshasuru +おんなのこ;onnanoko +ひとりむすめ;hitorimusume +だいきらいだ;daikiraida +おとこのこ;otokonoko +あきらめる;akirameru +こぼす;kobosu +おば;oba +けんきゅうじょ;kenkyuujo +けんきゅういん;kenkyuuin +ばかりする;bakarisuru +わ;wa +の;no +すると;suruto +しんゆう;shin_yuu +だいじ;daiji +だいじだ;daijida +ふこう;fukou +ふこうだ;fukouda +み;mi +むらかみ;murakami +やまがたけん;yamagataken +まずしい;mazushii +ちょうなん;chounan +ぶっしつてきだ;busshitsutekida +せいさく;seisaku +こうふく;koufuku +けってん;ketten +こうせいしょう;kouseishou +こうえい;kouei +りんじ;rinji +ぎゃくてん;gyakuten +しさつ;shisatsu +ぼくし;bokushi +あくま;akuma +よういな;youina +いいんかい;iinkai +てんじょう;tenjou +はちじょう;hachijou +どくせん;dokusen +かいさつぐち;kaisatsuguchi +しつれん;shitsuren +かんごふ;kangofu +せんこう;senkou +てつがく;tetsugaku +かんげい;kangei +いっせき;isseki +はいけい;haikei +かんじゃ;kanja +そんちょう;sonchou +じごく;jigoku +せいれい;seirei +えんかい;enkai +こうし;koushi +ほうしん;houshin +はくぼく;hakuboku +ちんもく;chinmoku +しゅりょう;shuryou +どれい;dorei +もうけん;mouken +いんさつ;insatsu +がんせき;ganseki +だんぼう;danbou +かんぷう;kanpuu +せきたん;sekitan +しっけ;shikke +しんとう;shintou +かくじつ;kakujitsu +きぎょう;kigyou +さんせい;sansei +せいめい;seimei +しゃっかん;shakkan +しじ;shiji +しっこう;shikkou +しょぶん;shobun +しょうにん;shounin +しょぞく;shozoku +たいしゅう;taishuu +はんちょう;hanchou +すいせん;suisen +ゆうかい;yuukai +うよく;uyoku +れんぞく;renzoku +けいこう;keikou +はけん;haken +しょうかせん;shoukasen +しょうだく;shoudaku +はいせき;haiseki +すてき;suteki +しゅうげき;shuugeki +ゆいごん;yuigon +たんてい;tantei +こうてい;koutei +じゅんび;junbi +しゅうり;shuuri +さらいねん;sarainen +くんれん;kunren +きこく;kikoku +へいたい;heitai +ゆうじん;yuujin +いみん;imin +だとう;datou +しんこう;shinkou +しゅうじん;shuujin +げいのうかい;geinoukai +げた;geta +むだ;muda +えきたい;ekitai +じゃくにくきょうしょく;jakunikukyoushoku +びしょう;bishou +こくじ;kokuji +べいこく;beikoku +ばくしゅ;bakushu +げんきん;genkin +りゅうさん;ryuusan +ひょうざん;hyouzan +ゆうき;yuuki +だいいっかん;daiikkan +こうたんさい;koutansai +とくがわじだい;tokugawajidai +ばいしゅん;baishun +ゆうじょ;yuujo +しんそう;shinsou +ごくひ;gokuhi +きぞく;kizoku +けっぱく;keppaku +びおん;bion +きゅうそく;kyuusoku +じんけん;jinken +とうみん;toumin +どうがん;dougan +けっきょじん;kekkyojin +いんりょく;inryoku +かんこんそうさい;kankonsousai +こうふん;koufun +いちょう;ichou +かいかつ;kaikatsu +ひめい;himei +きょくせつ;kyokusetsu +しゅうい;shuui +いじょう;ijou +さべつ;sabetsu +こうひょう;kouhyou +よか;yoka +たいこく;taikoku +とうあ;toua +ししょう;shishou +おくじょうおくをかする;okujouokuwokasuru +へん;hen +けいひんせん;keihinsen +せいかん;seikan +とにかく;tonikaku +せきはん;sekihan +こうはん;kouhan +らっかんしゅぎ;rakkanshugi +べんぎしゅぎ;bengishugi +きょうらくしゅぎ;kyourakushugi +ゆいぶつろん;yuibutsuron +つや;tsuya +にほんとう;nihontou +せんじょうのたん;senjounotan +どくしょきょう;dokushokyou +じもく;jimoku +さっそく;sassoku +そうそう;sousou +そうそう;sousou +げこ;geko +じょうご;jougo +はくちょう;hakuchou +こうよう;kouyou +ばか;baka +いんしょく;inshoku +なんぼく;nanboku +うんすい;unsui +じすい;jisui +じょさいない;josainai +こうけつあつ;kouketsuatsu +ぎし;gishi +じじょうじばく;jijoujibaku +かくせいざい;kakuseizai +ほうおう;houou +じゅんぽうすと;junpousuto +ひぎょう;higyou +ふくだけ;fukudake +きどうにのる;kidouninoru +かいぞくばん;kaizokuban +そんざいりゆう;sonzairiyuu +こうごうへいか;kougouheika +がじょう;gajou +きじゅ;kiju +はいけい;haikei +だんがんれっしゃ;danganressha +すいでん;suiden +きょうみしんしんする;kyoumishinshinsuru +せっしょく;sesshoku +きしょう;kishou +てんこ;tenko +ふりょく;furyoku +しゅういつな;shuuitsuna +ほうせき;houseki +いあつてきな;iatsutekina +めんか;menka +たいこばん;taikoban +あくしゅ;akushu +あくしゅう;akushuu +ちょうでん;chouden +はんしょう;hanshou +まてんろう;matenrou +めいよきょうじゅ;meiyokyouju +けっさく;kessaku +じゅうい;juui +たんれん;tanren +じさつみすい;jisatsumisui +かいはくしょく;kaihakushoku +ごうゆうする;gouyuusuru +ふうりん;fuurin +ちょうちょうふじん;chouchoufujin +ちち;chichi +たんたん;tantan +りゅうりゅう;ryuuryuu +だくおん;dakuon +せんりゅう;senryuu +しつるい;shitsurui +ろうきゅう;roukyuu +とろ;toro +さっきん;sakkin +しこん;shikon +らくらい;rakurai +こうおつへいてい;kouotsuheitei +いちもうだじん;ichimoudajin +きんにくろうどう;kinnikuroudou +いっしょくそくはつ;isshokusokuhatsu +ひけん;hiken +けつるい;ketsurui +きょうさいか;kyousaika +しちや;shichiya +たいすい;taisui +かんこつだったいする;kankotsudattaisuru +しっこく;shikkoku +すいとう;suitou +かんさんしんくかん;kansanshinkukan +よくよう;yokuyou +ろうでん;rouden +ほくとしちせい;hokutoshichisei +かっこう;kakkou +こんたん;kontan +らんそう;ransou +えん;en +げいいんばしょく;geiinbashoku +しゆうをけっする;shiyuuwokessuru +とうき;touki +とうすい;tousui +かんとうしょう;kantoushou +ぎしんあんき;gishin_anki +ここう;kokou +しっぷうじんらいてき;shippuujinraiteki +りゅうず;ryuuzu +ばいしゃくけっこん;baishakukekkon +とうほんせいそう;touhonseisou +きかん;kikan +けいこうでんとう;keikoudentou +ウーロンちゃ;uuroncha +めんぼく;menboku +ようき;youki +いんき;inki +やくどし;yakudoshi +かん;kan +らんがい;rangai +ひょうり;hyouri +ゆうよ;yuuyo +へいこう;heikou +けんしん;kenshin +ちんみ;chinmi +きょぎ;kyogi +さこく;sakoku +だんぺん;danpen +ひんど;hindo +そうにゅう;sounyuu +りょうぼ;ryoubo +しとう;shitou +じゅんかい;junkai +そうしょく;soushoku +せいぎょ;seigyo +ゆせい;yusei +もうそう;mousou +もうらする;mourasuru +ふにん;funin +のうこう;noukou +こうそく;kousoku +こんきょ;konkyo +とくしょく;tokushoku +ゆうぜん;yuuzen +びょうとう;byoutou +ひじゅん;hijun +じゃっかん;jakkan +しゃだん;shadan +じょうはつ;jouhatsu +へいぼん;heibon +きょくたん;kyokutan +ねんど;nendo +せんかい;senkai +おんわ;onwa +きんこう;kinkou +ひんかく;hinkaku +ちょうえつ;chouetsu +しっそ;shisso +じゅうたい;juutai +びしゅう;bishuu +こちょう;kochou +しゅつじん;shutsujin +すうはい;suuhai +りんじん;rinjin +せんせい;sensei +とうすい;tousui +ほうよう;houyou +かくねん;kakunen +がっしゅく;gasshuku +けんびきょう;kenbikyou +かいじょう;kaijou +こうそ;kouso +てんぷ;tenpu +ばんそう;bansou +じゅんきん;junkin +きょうかん;kyoukan +そうどう;soudou +ごうもん;goumon +まいぼつ;maibotsu +せんたく;sentaku +いっち;icchi +きがん;kigan +とうめい;toumei +けんない;kennai +かんよう;kan_you +もはん;mohan +じゅんしょく;junshoku +しゃめん;shamen +ちじょく;chijoku +しょうこ;shouko +けいだい;keidai +きんぱつ;kinpatsu +ついらく;tsuiraku +ざんてい;zantei +ぎゃくさつ;gyakusatsu +ぶんせき;bunseki +げっぷ;geppu +きゅうだん;kyuudan +せいぼ;seibo +ついとう;tsuitou +じしゃく;jishaku +そぞう;sozou +なっとう;nattou +しんまい;shinmai +こんちゅう;konchuu +しさ;shisa +じんぐう;jinguu +さんがく;sangaku +ていそう;teisou +げんしろ;genshiro +かえん;kaen +ついせき;tsuiseki +だらく;daraku +ようす;yousu +にょうぼう;nyoubou +ちょうなん;chounan +ちくら;chikura +ぶようじん;buyoujin +びょうどう;byoudou +さぎょう;sagyou +すいとう;suitou +しょうに;shouni +ぞうに;zouni +うもう;umou +ひょうし;hyoushi +だんじき;danjiki +きゅうでん;kyuuden +かいぼう;kaibou +いしょく;ishoku +こんきゅう;konkyuu +へんせん;hensen +よくじつ;yokujitsu +むちゅう;muchuu +きゅうどう;kyuudou +ばつぐん;batsugun +じんぎ;jingi +ぜんじ;zenji +じんもん;jinmon +そうしつ;soushitsu +かし;kashi +げんそう;gensou +かんわ;kanwa +えきびょう;ekibyou +なんか;nanka +ちっそく;chissoku +しゃめん;shamen +しょうれいきん;shoureikin +かんぼつ;kanbotsu +ちくいち;chikuichi +きとく;kitoku +どんぶつ;donbutsu +やばん;yaban +ちゅうてつ;chuutetsu +しゅんさい;shunsai +がんちく;ganchiku +ひやく;hiyaku +ゆうげん;yuugen +かっせん;kassen +ひろうえん;hirouen +あいしょう;aishou +じゅうまんえん;juuman_en +ゆうぎ;yuugi +はあく;haaku +ざんこく;zankoku +じしゅく;jishuku +じょうじゅ;jouju +むほん;muhon +さいしょう;saishou +おせちりょうり;osechiryouri +あいそ;aiso +しゅじゅう;shujuu +たんざく;tanzaku +せんぼう;senbou +ねんぐ;nengu +きょうしゃ;kyousha +いっさい;issai +すき;suki +くでん;kuden +きんじょう;kinjou +ちょうもん;choumon +だいみょう;daimyou +げし;geshi +ていさい;teisai +こんりゅう;konryuu +ひょうろう;hyourou +くないちょう;kunaichou +ゆさん;yusan +ぞうお;zouo +だいおんじょう;daionjou +そうしょう;soushou +したく;shitaku +うむ;umu +しゃくどう;shakudou +らいさん;raisan +じゅみょう;jumyou +そうさい;sousai +りょうし;ryoushi +ふってい;futtei +ばちあたり;bachiatari +ぶぎょう;bugyou +けねん;kenen +やくびょうがみ;yakubyougami +こんせき;konseki +かんおうかい;kan_oukai +かんきゅう;kankyuu +いっし;isshi +さきゅう;sakyuu +すいじょう;suijou +かんぱん;kanpan +すいそう;suisou +しゅうじゃく;shuujaku +しんおう;shin_ou +ごうしゃ;gousha +はっと;hatto +しりょう;shiryou +ちん;chin +こうたい;koutai +しょうぞく;shouzoku +じょせい;josei +しんぼく;shinboku +きんけい;kinkei +こうかく;koukaku +はんざつ;hanzatsu +こくう;kokuu +ごてん;goten +かんきゃく;kankyaku +けいてき;keiteki +ぎょうてんする;gyoutensuru +すいじゃく;suijaku +きんせん;kinsen +はいはん;haihan +どしゃほうかい;doshahoukai +さんか;sanka +れいげん;reigen +ちょうえき;choueki +くおん;kuon +さいご;saigo +こうし;koushi +けびょう;kebyou +いんきょ;inkyo +てんにょ;tennyo +ゆいしょ;yuisho +いいだくだく;iidakudaku +しんしんこうじゃく;shinshinkoujaku +ばっし;basshi +いっこん;ikkon +なや;naya +たいぼく;taiboku +なんど;nando +ひってき;hitteki +とつめんきょう;totsumenkyou +おうめんきょう;oumenkyou +けんし;kenshi +とうは;touha +りゅうき;ryuuki +せいりょうざい;seiryouzai +どんてん;donten +ぎょうてん;gyouten +はいちゃく;haichaku +じゅんぽう;junpou +せんぷくする;senpukusuru +えんぶん;enbun +かほう;kahou +しゅうてい;shuutei +ぼうげん;bougen +へんれいする;henreisuru +ちゅうとんする;chuutonsuru +ちょうてい;choutei +いんとく;intoku +しんりょく;shinryoku +ふうき;fuuki +くどく;kudoku +せいきょ;seikyo +しぎん;shigin +いっこく;ikkoku +いっしゃく;isshaku +いっきん;ikkin +じじん;jijin +しんく;shinku +せきせつ;sekisetsu +きゅうじ;kyuuji +こうずか;kouzuka +げんち;genchi +くとうてん;kutouten +しんか;shinka +しょうよう;shouyou +いちないしじゅう;ichinaishijuu +じゅんぼく;junboku +せつれつ;setsuretsu +はんも;hanmo +らくいんきょ;rakuinkyo +ちゅうしん;chuushin +いかく;ikaku +たんせい;tansei +しょみん;shomin +だんしゃく;danshaku +ちゅうよう;chuuyou +しょうにん;shounin +えま;ema +くり;kuri +ごりやく;goriyaku +ごんぎょう;gongyou +せっしょうかい;sesshoukai +きえ;kie +ぼんのう;bonnou +しゅくごう;shukugou +ろくやおん;rokuyaon +けごんぎょう;kegongyou +げだつ;gedatsu +えしん;eshin +にそう;nisou +しゅぎょう;shugyou +なむあみだぶつ;namuamidabutsu +おしょう;oshou +にょらい;nyorai +あんぎゃ;angya +しゅじょう;shujou +えはつ;ehatsu +ほっしん;hosshin +せっしゅ;sesshu +こうぼうだいし;kouboudaishi +かくりつ;kakuritsu +がくれき;gakureki +かけ;kake +かけ;kake +かけ;kake +がけ;gake +かけあし;kakeashi +かけい;kakei +かけっこ;kakekko +かける;kakeru +かける;kakeru +かこう;kakou +かごう;kagou +かさばる;kasabaru +かさむ;kasamu +かじょうがき;kajougaki +かしら;kashira +かすか;kasuka +かすむ;kasumu +かする;kasuru +かせい;kasei +かせき;kaseki +かせん;kasen +かせん;kasen +かそ;kaso +かた;kata +かだい;kadai +がたい;gatai +かたこと;katakoto +かたづけ;kataduke +かたむける;katamukeru +かためる;katameru +かたわら;katawara +かだん;kadan +かちく;kachiku +かつ;katsu +かっき;kakki +がっくり;gakkuri +がっしょう;gasshou +がっしり;gasshiri +がっち;gacchi +がっちり;gacchiri +かつて;katsute +かって;katte +カット;katto +かっぱつ;kappatsu +カップ;kappu +がっぺい;gappei +カテゴリー;kategorii +かなう;kanau +かなえる;kanaeru +かなづち;kanaduchi +かなわない;kanawanai +かにゅう;kanyuu +かねて;kanete +かばう;kabau +かぶしき;kabushiki +かぶれる;kabureru +かふん;kafun +かへい;kahei +かまえる;kamaeru +かみ;kami +かみつ;kamitsu +かみきる;kamikiru +カムバック;kamubakku +カメラマン;kameraman +かゆ;kayu +からだつき;karadatsuki +からむ;karamu +かり;kari +かり;kari +かりに;karini +カルテ;karute +カレー;karee +ガレージ;gareeji +かろう;karou +かろうじて;karoujite +かわす;kawasu +かわるがわる;kawarugawaru +かん;kan +かん;kan +かん;kan +がん;gan +かんい;kan_i +かんがい;kangai +がんか;ganka +がんきゅう;gankyuu +がんぐ;gangu +かんけつ;kanketsu +かんげん;kangen +かんご;kango +かんご;kango +がんこ;ganko +かんこう;kankou +かんこう;kankou +かんこく;kankoku +かんさん;kansan +かんし;kanshi +かんしゅう;kanshuu +かんしゅう;kanshuu +がんしょ;gansho +かんしょう;kanshou +がんじょう;ganjou +かんしょく;kanshoku +かんじん;kanjin +かんじん;kanjin +かんせい;kansei +かんぜい;kanzei +がんせき;ganseki +かんせん;kansen +かんせん;kansen +かんそ;kanso +かんてん;kanten +かんど;kando +カンニング;kanningu +がんねん;gannen +かんぶ;kanbu +かんぺき;kanpeki +かんべん;kanben +かんむりょう;kanmuryou +かんゆう;kan_yuu +かんよ;kan_yo +かんよう;kan_you +がんらい;ganrai +かんらん;kanran +かんりょう;kanryou +かんれい;kanrei +かんれき;kanreki +かんろく;kanroku +かんわ;kanwa +ぎあん;gian +きがい;kigai +きかく;kikaku +きかく;kikaku +きかざる;kikazaru +きがね;kigane +きがる;kigaru +きかん;kikan +きかん;kikan +きき;kiki +ききとり;kikitori +ききめ;kikime +ききょう;kikyou +ぎきょく;gikyoku +ききん;kikin +きげき;kigeki +ぎけつ;giketsu +きけん;kiken +きげん;kigen +きこう;kikou +きこん;kikon +きざ;kiza +きさい;kisai +きざし;kizashi +きしつ;kishitsu +きじつ;kijitsu +きしむ;kishimu +ぎじどう;gijidou +きじゅつ;kijutsu +きしょう;kishou +きずく;kizuku +きずつく;kizutsuku +きずつける;kizutsukeru +きせい;kisei +ぎせい;gisei +きせん;kisen +きぞう;kizou +ぎぞう;gizou +きぞく;kizoku +ぎだい;gidai +きたえる;kitaeru +きだて;kidate +あ;a +あいそう;aisou +あいだがら;aidagara +あいま;aima +あえて;aete +あおぐ;aogu +あか;aka +あかじ;akaji +あかす;akasu +あからむ;akaramu +あがり;agari +あきらめ;akirame +あく;aku +アクセル;akuseru +あくどい;akudoi +あご;ago +あこがれ;akogare +あさ;asa +あざ;aza +あさましい;asamashii +あざむく;azamuku +あざやか;azayaka +あざわらう;azawarau +あしからず;ashikarazu +あじわい;ajiwai +あせる;aseru +あせる;aseru +あたい;atai +あたいする;ataisuru +あたり;atari +あっか;akka +あつかい;atsukai +あっけない;akkenai +あっさり;assari +あっせん;assen +あっとう;attou +あっぱく;appaku +アップ;appu +あつらえる;atsuraeru +あつりょく;atsuryoku +あて;ate +あて;ate +あてじ;ateji +あてる;ateru +あとつぎ;atotsugi +あとまわし;atomawashi +あぶらえ;aburae +アプローチ;apuroochi +あべこべ;abekobe +あまえる;amaeru +あまぐ;amagu +あまくち;amakuchi +アマチュア;amachua +あみ;ami +あやつる;ayatsuru +あやぶむ;ayabumu +あやふや;ayafuya +あやまち;ayamachi +あやまる;ayamaru +あゆみ;ayumi +あゆむ;ayumu +あらかじめ;arakajime +あらす;arasu +あらそい;arasoi +あらたまる;aratamaru +あらっぽい;arappoi +アラブ;arabu +あられ;arare +ありさま;arisama +ありのまま;arinomama +ありふれる;arifureru +アルカリ;arukari +アルコール;arukooru +アルミ;arumi +アワー;awaa +あわす;awasu +あわせ;awase +アンケート;ankeeto +アンコール;ankooru +あんさつ;ansatsu +あんざん;anzan +あんじ;anji +あんじる;anjiru +あんせい;ansei +あんのじょう;annojou +い;i +い;i +いいかげん;iikagen +いいわけ;iiwake +いいん;iin +イェス;yesu +いえで;iede +いかす;ikasu +いかに;ikani +いかにも;ikanimo +いかり;ikari +いき;iki +いぎ;igi +いきがい;ikigai +いきちがい;ikichigai +いきごむ;ikigomu +いくせい;ikusei +いくた;ikuta +いける;ikeru +いけん;iken +いこう;ikou +いこう;ikou +いざ;iza +いじ;iji +いじゅう;ijuu +いしょう;ishou +いじる;ijiru +いせい;isei +いせき;iseki +いぜん;izen +いぞん;izon +いたく;itaku +いただき;itadaki +いたって;itatte +いためる;itameru +いためる;itameru +いたわる;itawaru +いち;ichi +いちがいに;ichigaini +いちじるしい;ichijirushii +いちどう;ichidou +いちぶぶん;ichibubun +いちべつ;ichibetsu +いちめん;ichimen +いちもく;ichimoku +いちよう;ichiyou +いちりつ;ichiritsu +いちれん;ichiren +いっかつ;ikkatsu +いっき;ikki +いっきょに;ikkyoni +いっけん;ikken +いっさい;issai +いっしん;isshin +いっそ;isso +いったい;ittai +いっぺん;ippen +いと;ito +いどう;idou +いとなむ;itonamu +いどむ;idomu +いなびかり;inabikari +いのり;inori +いびき;ibiki +いまさら;imasara +いまだ;imada +いみん;imin +いやいや;iyaiya +いやしい;iyashii +いやに;iyani +いやらしい;iyarashii +いよく;iyoku +いりょう;iryou +いりょく;iryoku +いるい;irui +いろん;iron +いんかん;inkan +いんき;inki +いんきょ;inkyo +インターチェンジ;intaachenji +インターナショナル;intaanashonaru +インターフォン;intaafon +インテリ;interi +インフォメーション;infomeeshon +インフレ;infure +うかる;ukaru +うけいれ;ukeire +うけいれる;ukeireru +うけつぐ;uketsugu +うけつける;uketsukeru +うけとめる;uketomeru +うけみ;ukemi +うけもち;ukemochi +うごき;ugoki +うず;uzu +うずめる;uzumeru +うそつき;usotsuki +うたたね;utatane +うちあける;uchiakeru +うちきる;uchikiru +うちけし;uchikeshi +うちこむ;uchikomu +うちわ;uchiwa +うちわけ;uchiwake +うつし;utsushi +うったえ;uttae +うっとうしい;uttoushii +うつむく;utsumuku +うつろ;utsuro +うつわ;utsuwa +うでまえ;udemae +うてん;uten +うながす;unagasu +うぬぼれ;unubore +うまれつき;umaretsuki +うまる;umaru +うむ;umu +うめこむ;umekomu +うめぼし;umeboshi +うらがえし;uragaeshi +うりだし;uridashi +うりだす;uridasu +うるおう;uruou +うわき;uwaki +うわまわる;uwamawaru +うわる;uwaru +うんえい;un_ei +うんざり;unzari +うんそう;unsou +うんちん;unchin +うんぬん;unnun +うんぱん;unpan +うんめい;unmei +うんゆ;un_yu +うんよう;un_you +え;e +エアメール;eameeru +えい;ei +えいじ;eiji +えいしゃ;eisha +えいせい;eisei +えいぞう;eizou +えいゆう;eiyuu +えき;eki +えつらん;etsuran +えもの;emono +えり;eri +エレガント;ereganto +えん;en +えんかつ;enkatsu +えんがわ;engawa +えんがん;engan +えんきょく;enkyoku +えんしゅつ;enshutsu +エンジニア;enjinia +えんじる;enjiru +えんずる;enzuru +えんせん;ensen +えんだん;endan +えんぽう;enpou +えんまん;enman +お;o +おいこむ;oikomu +おいだす;oidasu +おいて;oite +おいる;oiru +おう;ou +おうきゅう;oukyuu +おうごん;ougon +おうしん;oushin +おうぼ;oubo +おおい;ooi +おおかた;ookata +おおがら;oogara +オーケー;ookee +おおげさ;oogesa +おおすじ;oosuji +おおぞら;oozora +オートマチック;ootomachikku +オープン;oopun +オーバー;oobaa +おおはば;oohaba +おおまかな;oomakana +おおみず;oomizu +おおやけ;ooyake +おかす;okasu +おかす;okasu +おくびょう;okubyou +おくらす;okurasu +おくれ;okure +おごそか;ogosoka +おこない;okonai +おごる;ogoru +おさまる;osamaru +おさまる;osamaru +おさまる;osamaru +おさん;osan +おしえ;oshie +おしきる;oshikiru +おしこむ;oshikomu +おしむ;oshimu +おしよせる;oshiyoseru +おす;osu +おせじ;oseji +おそう;osou +おそくとも;osokutomo +おそれ;osore +おそれいる;osoreiru +おだてる;odateru +おちこむ;ochikomu +おちつき;ochitsuki +おちば;ochiba +おつ;otsu +おつかい;otsukai +おっかない;okkanai +おてあげ;oteage +おどおど;odoodo +おどす;odosu +おとずれる;otozureru +おとも;otomo +おとろえる;otoroeru +おどろき;odoroki +おないどし;onaidoshi +おのずから;onozukara +おびえる;obieru +おびただしい;obitadashii +おびやかす;obiyakasu +おびる;obiru +おふくろ;ofukuro +おぼえ;oboe +おまけ;omake +おみや;omiya +おむつ;omutsu +おもいつき;omoitsuki +おもむき;omomuki +おもむく;omomuku +おもんじる;omonjiru +おもんずる;omonzuru +おやじ;oyaji +および;oyobi +およぶ;oyobu +おり;ori +おり;ori +オリエンテーション;orienteeshon +おりかえす;orikaesu +おりもの;orimono +おる;oru +おれ;ore +おろか;oroka +おろそか;orosoka +おんぶ;onbu +オンライン;onrain +おんわ;onwa +が;ga +が;ga +カーペット;kaapetto +かい;kai +かい;kai +がい;gai +かいあく;kaiaku +かいうん;kaiun +がいか;gaika +かいかく;kaikaku +かいがら;kaigara +がいかん;gaikan +かいきゅう;kaikyuu +かいきょう;kaikyou +かいけん;kaiken +かいご;kaigo +かいさい;kaisai +かいしゅう;kaishuu +かいしゅう;kaishuu +かいじゅう;kaijuu +かいじょ;kaijo +がいしょう;gaishou +がいする;gaisuru +がいせつ;gaisetsu +かいそう;kaisou +かいそう;kaisou +かいたく;kaitaku +かいだん;kaidan +かいてい;kaitei +かいてい;kaitei +ガイド;gaido +かいどう;kaidou +がいとう;gaitou +がいとう;gaitou +ガイドブック;gaidobukku +かいにゅう;kainyuu +がいねん;gainen +かいはつ;kaihatsu +かいばつ;kaibatsu +かいほう;kaihou +かいぼう;kaibou +がいらい;gairai +かいらん;kairan +がいりゃく;gairyaku +かいりゅう;kairyuu +かいりょう;kairyou +かいろ;kairo +かいろ;kairo +かえりみる;kaerimiru +かえりみる;kaerimiru +かおつき;kaotsuki +かがい;kagai +かかげる;kakageru +かかと;kakato +かきとる;kakitoru +かきまわす;kakimawasu +かく;kaku +かく;kaku +かく;kaku +かく;kaku +かく;kaku +かく;kaku +がくげい;gakugei +かくさ;kakusa +かくさん;kakusan +がくし;gakushi +かくしゅ;kakushu +かくしゅう;kakushuu +かくしん;kakushin +かくしん;kakushin +がくせつ;gakusetsu +かくてい;kakutei +カクテル;kakuteru +かくとく;kakutoku +がくふ;gakufu +かくほ;kakuho +かくめい;kakumei +きたる;kitaru +きちっと;kichitto +きちょうめん;kichoumen +きっかり;kikkari +きっちり;kicchiri +きっぱり;kippari +きてい;kitei +きてん;kiten +きどう;kidou +ぎのう;ginou +きはん;kihan +きひん;kihin +きふう;kifuu +きふく;kifuku +きぼ;kibo +きまぐれ;kimagure +きまじめ;kimajime +きまつ;kimatsu +きまりわるい;kimariwarui +きめい;kimei +きやく;kiyaku +きゃくしょく;kyakushoku +ぎゃくてん;gyakuten +きゃくほん;kyakuhon +きゃしゃ;kyasha +きゃっかん;kyakkan +キャッチ;kyacchi +キャリア;kyaria +きゅうえん;kyuuen +きゅうがく;kyuugaku +きゅうきょく;kyuukyoku +きゅうくつ;kyuukutsu +きゅうこん;kyuukon +きゅうさい;kyuusai +きゅうじ;kyuuji +きゅうしょく;kyuushoku +きゅうせん;kyuusen +きゅうでん;kyuuden +きゅうち;kyuuchi +きゅうぼう;kyuubou +きゅうりょう;kyuuryou +きよ;kiyo +きょう;kyou +きょう;kyou +きょうい;kyoui +きょうか;kyouka +きょうかい;kyoukai +きょうがく;kyougaku +きょうかん;kyoukan +きょうぎ;kyougi +きょうぐう;kyouguu +きょうくん;kyoukun +きょうこう;kyoukou +きょうこう;kyoukou +きょうざい;kyouzai +きょうさく;kyousaku +ぎょうしゃ;gyousha +きょうじゅ;kyouju +きょうしゅう;kyoushuu +きょうしゅう;kyoushuu +きょうしょく;kyoushoku +きょうじる;kyoujiru +きょうせい;kyousei +ぎょうせい;gyousei +ぎょうせき;gyouseki +きょうぞん;kyouzon +きょうちょう;kyouchou +きょうてい;kyoutei +きょうど;kyoudo +きょうはく;kyouhaku +ぎょうむ;gyoumu +きょうめい;kyoumei +きょうり;kyouri +きょうれつ;kyouretsu +きょうわ;kyouwa +きょくげん;kyokugen +きょくたん;kyokutan +きょじゅう;kyojuu +きょぜつ;kyozetsu +ぎょせん;gyosen +ぎょそん;gyoson +きょひ;kyohi +きょよう;kyoyou +きよらか;kiyoraka +きらびやか;kirabiyaka +きり;kiri +きり;kiri +ぎり;giri +きりかえ;kirikae +きりゅう;kiryuu +きれめ;kireme +ぎわく;giwaku +きわめて;kiwamete +きん;kin +きんがん;kingan +きんきゅう;kinkyuu +きんこう;kinkou +きんこう;kinkou +きんし;kinshi +きんじる;kinjiru +きんべん;kinben +ぎんみ;ginmi +きんむ;kinmu +きんもつ;kinmotsu +きんろう;kinrou +く;ku +く;ku +クイズ;kuizu +くいちがう;kuichigau +くうかん;kuukan +くうふく;kuufuku +くかく;kukaku +くかん;kukan +くき;kuki +くぎり;kugiri +くぐる;kuguru +くじ;kuji +くじびき;kujibiki +くすぐったい;kusuguttai +ぐち;guchi +くちずさむ;kuchizusamu +くちばし;kuchibashi +くちる;kuchiru +くつがえす;kutsugaesu +くっきり;kukkiri +くっせつ;kussetsu +ぐっと;gutto +くびかざり;kubikazari +くびわ;kubiwa +くみこむ;kumikomu +くみあわせる;kumiawaseru +くら;kura +グレー;guree +クレーン;kureen +くろうと;kurouto +くろじ;kuroji +ぐん;gun +ぐんかん;gunkan +ぐんじ;gunji +くんしゅ;kunshu +ぐんしゅう;gunshuu +ぐんしゅう;gunshuu +ぐんび;gunbi +ぐんぷく;gunpuku +けい;kei +けい;kei +げい;gei +けいい;keii +けいか;keika +けいかい;keikai +けいかい;keikai +けいき;keiki +けいき;keiki +けいぐ;keigu +けいげん;keigen +けいさい;keisai +けいしゃ;keisha +けいせい;keisei +けいせい;keisei +けいそつ;keisotsu +けいたい;keitai +けいたい;keitai +けいばつ;keibatsu +けいひ;keihi +けいぶ;keibu +けいべつ;keibetsu +けいれき;keireki +けいろ;keiro +ケース;keesu +けがらわしい;kegarawashii +げきだん;gekidan +げきれい;gekirei +ゲスト;gesuto +けだもの;kedamono +けつ;ketsu +けつい;ketsui +けっかく;kekkaku +けっかん;kekkan +けつぎ;ketsugi +けっこう;kekkou +けつごう;ketsugou +けっさん;kessan +げっしゃ;gessha +けっしょう;kesshou +けっしょう;kesshou +けっせい;kessei +けっそく;kessoku +げっそり;gessori +けつだん;ketsudan +げっぷ;geppu +けつぼう;ketsubou +けとばす;ketobasu +けなす;kenasu +けむたい;kemutai +けむる;kemuru +けもの;kemono +けらい;kerai +げり;geri +けん;ken +けん;ken +けんい;ken_i +けんぎょう;kengyou +げんけい;genkei +げんけい;genkei +けんげん;kengen +げんこう;genkou +けんざい;kenzai +げんさく;gensaku +けんじ;kenji +げんし;genshi +げんしゅ;genshu +げんしょ;gensho +けんしょう;kenshou +げんしょう;genshou +けんぜん;kenzen +げんそ;genso +げんぞう;genzou +げんそく;gensoku +けんち;kenchi +げんち;genchi +げんてい;gentei +げんてん;genten +げんてん;genten +げんばく;genbaku +げんぶん;genbun +げんみつ;genmitsu +けんめい;kenmei +けんやく;ken_yaku +げんゆ;gen_yu +けんよう;ken_you +けんりょく;kenryoku +げんろん;genron +こ;ko +ごい;goi +こいする;koisuru +こう;kou +こう;kou +こうい;koui +こうい;koui +ごうい;goui +こうえん;kouen +こうかい;koukai +こうかい;koukai +こうがく;kougaku +こうぎ;kougi +ごうぎ;gougi +こうきょ;koukyo +こうきょう;koukyou +こうぎょう;kougyou +こうぎょう;kougyou +こうげん;kougen +こうご;kougo +こうこうと;koukouto +こうこがく;koukogaku +こうさく;kousaku +こうさく;kousaku +こうざん;kouzan +こうしゅう;koushuu +こうじゅつ;koujutsu +こうじょ;koujo +こうしょう;koushou +こうしょう;koushou +こうじょう;koujou +こうしん;koushin +こうしんりょう;koushinryou +こうすい;kousui +こうずい;kouzui +ごうせい;gousei +こうぜん;kouzen +こうそう;kousou +こうそう;kousou +こうそく;kousoku +こうたい;koutai +こうたく;koutaku +こうだん;koudan +こうちょう;kouchou +こうとう;koutou +こうどく;koudoku +こうどく;koudoku +こうにゅう;kounyuu +こうにん;kounin +こうねつひ;kounetsuhi +こうはい;kouhai +こうばい;koubai +こうひょう;kouhyou +こうふ;koufu +こうふく;koufuku +こうふん;koufun +こうぼ;koubo +こうみょう;koumyou +こうよう;kouyou +こうり;kouri +こうりつ;kouritsu +こうりつ;kouritsu +ごえい;goei +コーナー;koonaa +こがら;kogara +こぎって;kogitte +ごく;goku +こくさん;kokusan +こくてい;kokutei +こくはく;kokuhaku +こくぼう;kokubou +こくゆう;kokuyuu +ごくらく;gokuraku +こくれん;kokuren +こげちゃ;kogecha +ごげん;gogen +ここ;koko +ここち;kokochi +こころえ;kokoroe +こころがけ;kokorogake +こころがける;kokorogakeru +こころざし;kokorozashi +こころざす;kokorozasu +こころづよい;kokoroduyoi +こころぼそい;kokorobosoi +こころみ;kokoromi +こころみる;kokoromiru +こころよい;kokoroyoi +ごさ;gosa +ございます;gozaimasu +こじ;koji +こじれる;kojireru +こじん;kojin +こす;kosu +こずえ;kozue +こせい;kosei +こせき;koseki +こぜに;kozeni +こだい;kodai +こたつ;kotatsu +こだわる;kodawaru +こちょう;kochou +こつ;kotsu +こっけい;kokkei +こっこう;kokkou +こっとうひん;kottouhin +こてい;kotei +ことがら;kotogara +こどく;kodoku +ことごとく;kotogotoku +ことづけ;kotoduke +ことに;kotoni +ことによると;kotoniyoruto +こなごな;konagona +このましい;konomashii +ごばん;goban +こべつ;kobetsu +ごまかす;gomakasu +こまやか;komayaka +コマーシャル;komaasharu +こめる;komeru +コメント;komento +こもる;komoru +こゆう;koyuu +こよみ;koyomi +こらす;korasu +ごらんなさい;gorannasai +こりつ;koritsu +こりる;koriru +こる;koru +こんき;konki +こんきょ;konkyo +こんけつ;konketsu +コンタクト;kontakuto +こんちゅう;konchuu +こんてい;kontei +コンテスト;kontesuto +こんどう;kondou +コントラスト;kontorasuto +コントロール;kontorooru +コンパス;konpasu +こんぽん;konpon +さ;sa +ざい;zai +さいかい;saikai +さいがい;saigai +さいきん;saikin +さいく;saiku +さいくつ;saikutsu +サイクル;saikuru +さいけつ;saiketsu +さいけん;saiken +さいげん;saigen +ざいげん;zaigen +ざいこ;zaiko +さいさん;saisan +さいしゅう;saishuu +サイズ;saizu +さいせい;saisei +ざいせい;zaisei +さいぜん;saizen +さいたく;saitaku +さいばい;saibai +さいはつ;saihatsu +さいぼう;saibou +さいよう;saiyou +さえぎる;saegiru +さえずる;saezuru +さえる;saeru +さお;sao +さかえる;sakaeru +さがく;sagaku +さかずき;sakazuki +さかだち;sakadachi +さきに;sakini +さぎ;sagi +さく;saku +さく;saku +さく;saku +さくげん;sakugen +さくご;sakugo +さくせん;sakusen +さけび;sakebi +さける;sakeru +ささげる;sasageru +さしかかる;sashikakaru +さしず;sashizu +さしだす;sashidasu +さしつかえる;sashitsukaeru +さしひき;sashihiki +さずける;sazukeru +さする;sasuru +さぞ;sazo +さだまる;sadamaru +さだめる;sadameru +ざだんかい;zadankai +ざつ;zatsu +ざっか;zakka +さつじん;satsujin +さっする;sassuru +ざつだん;zatsudan +さっと;satto +さっぱりする;sapparisuru +さとる;satoru +さなか;sanaka +さばく;sabaku +ざひょう;zahyou +さほど;sahodo +サボる;saboru +さま;sama +さむけ;samuke +さむらい;samurai +さも;samo +さよう;sayou +さらう;sarau +さわる;sawaru +さん;san +さんか;sanka +さんがく;sangaku +さんぎいん;sangiin +さんきゅう;sankyuu +サンキュー;sankyuu +ざんきん;zankin +さんご;sango +ざんこく;zankoku +さんしゅつ;sanshutsu +さんしょう;sanshou +さんじょう;sanjou +ざんだか;zandaka +サンタクロース;santakuroosu +さんばし;sanbashi +さんび;sanbi +さんぷく;sanpuku +さんふじんか;sanfujinka +さんぶつ;sanbutsu +さんみゃく;sanmyaku +し;shi +し;shi +し;shi +じ;ji +しあがり;shiagari +しあげ;shiage +しあげる;shiageru +しいく;shiiku +しいて;shiite +シート;shiito +ジーパン;jiipan +しいれる;shiireru +しいる;shiiru +しお;shio +しか;shika +じが;jiga +しかく;shikaku +しかく;shikaku +じかく;jikaku +しかけ;shikake +しかける;shikakeru +しかしながら;shikashinagara +しき;shiki +じき;jiki +じき;jiki +しきさい;shikisai +しきじょう;shikijou +しきたり;shikitari +じぎょう;jigyou +しきる;shikiru +しきん;shikin +じく;jiku +しくじる;shikujiru +しくみ;shikumi +しけい;shikei +しける;shikeru +じこ;jiko +しこう;shikou +しこう;shikou +しこう;shikou +しこう;shikou +じこう;jikou +じこくひょう;jikokuhyou +じごく;jigoku +じさ;jisa +じざい;jizai +しさつ;shisatsu +しさん;shisan +しじ;shiji +じしゅ;jishu +じしゅ;jishu +ししゅう;shishuu +しじょう;shijou +じしょく;jishoku +しずく;shizuku +システム;shisutemu +しずめる;shizumeru +しせつ;shisetsu +じぜん;jizen +しそく;shisoku +じぞく;jizoku +じそんしん;jisonshin +じたい;jitai +じたい;jitai +したう;shitau +したごころ;shitagokoro +したじ;shitaji +したしむ;shitashimu +したしらべ;shitashirabe +したてる;shitateru +したどり;shitadori +したび;shitabi +じつ;jitsu +じっか;jikka +しっかく;shikkaku +しつぎ;shitsugi +しっきゃく;shikkyaku +じつぎょうか;jitsugyouka +シック;shikku +じっくり;jikkuri +しつけ;shitsuke +しつける;shitsukeru +じっせん;jissen +しっそ;shisso +じったい;jittai +しっちょう;shicchou +しっと;shitto +じっぴ;jippi +してき;shiteki +してん;shiten +じてん;jiten +しとやか;shitoyaka +しなびる;shinabiru +シナリオ;shinario +しなやか;shinayaka +しにょう;shinyou +じぬし;jinushi +しのぐ;shinogu +しば;shiba +しはつ;shihatsu +じびか;jibika +しぶつ;shibutsu +しぶとい;shibutoi +しほう;shihou +しぼう;shibou +しぼう;shibou +しまつ;shimatsu +しみる;shimiru +しめい;shimei +じもと;jimoto +しや;shiya +じゃく;jaku +しゃこう;shakou +ジャズ;jazu +しゃぜつ;shazetsu +しゃたく;shataku +じゃっかん;jakkan +しゃみせん;shamisen +しゃめん;shamen +じゃり;jari +しゃれる;shareru +ジャンパー;janpaa +ジャンプ;janpu +ジャンボ;janbo +ジャンル;janru +しゅ;shu +しゅ;shu +しゆう;shiyuu +しゅう;shuu +しゅう;shuu +じゅう;juu +しゅうえき;shuueki +しゅうがく;shuugaku +しゅうき;shuuki +しゅうぎいん;shuugiin +しゅうぎょう;shuugyou +じゅうぎょういん;juugyouin +しゅうけい;shuukei +しゅうげき;shuugeki +しゅうし;shuushi +しゅうし;shuushi +しゅうし;shuushi +じゅうじ;juuji +しゅうじつ;shuujitsu +じゅうじつ;juujitsu +しゅうしゅう;shuushuu +しゅうしょく;shuushoku +じゅうじろ;juujiro +しゅうじゃく;shuujaku +しゅうちゃく;shuuchaku +じゅうなん;juunan +じゅうふく;juufuku +しゅうよう;shuuyou +じゅうらい;juurai +しゅうりょう;shuuryou +しゅえい;shuei +しゅえん;shuen +しゅかん;shukan +しゅぎょう;shugyou +じゅく;juku +しゅくが;shukuga +しゅくめい;shukumei +しゅげい;shugei +しゅけん;shuken +しゅさい;shusai +しゅざい;shuzai +しゅし;shushi +しゅじゅ;shuju +しゅしょく;shushoku +しゅじんこう;shujinkou +しゅたい;shutai +しゅだい;shudai +しゅつえん;shutsuen +しゅっけつ;shukketsu +しゅつげん;shutsugen +しゅっさん;shussan +しゅっしゃ;shussha +しゅっしょう;shusshou +しゅっせい;shussei +しゅっせ;shusse +しゅつだい;shutsudai +しゅつどう;shutsudou +しゅっぴ;shuppi +しゅっぴん;shuppin +しゅどう;shudou +しゅにん;shunin +しゅのう;shunou +しゅび;shubi +じんかく;jinkaku +しんぎ;shingi +しんこう;shinkou +しんこう;shinkou +しんこう;shinkou +しんこく;shinkoku +しんこん;shinkon +しんさ;shinsa +じんざい;jinzai +しんし;shinshi +しんじつ;shinjitsu +しんじゃ;shinja +しんじゅ;shinju +しんしゅつ;shinshutsu +しんじん;shinjin +しんせい;shinsei +しんぜん;shinzen +しんそう;shinsou +じんそく;jinsoku +じんたい;jintai +しんちく;shinchiku +しんじゅう;shinjuu +しんてい;shintei +しんてん;shinten +しんでん;shinden +しんど;shindo +しんどう;shindou +しんにゅうせい;shinnyuusei +しんにん;shinnin +しんぴ;shinpi +しんぼう;shinbou +じんみん;jinmin +しんり;shinri +しんりゃく;shinryaku +しんりょう;shinryou +すい;sui +すいげん;suigen +すいしん;suishin +すいせん;suisen +すいそう;suisou +すいそく;suisoku +すいでん;suiden +すいり;suiri +すうし;suushi +すうはい;suuhai +すえつける;suetsukeru +すえる;sueru +すがすがしい;sugasugashii +すくい;sukui +すくう;sukuu +すこやか;sukoyaka +すすぐ;susugu +すすみ;susumi +すそ;suso +スタジオ;sutajio +スチーム;suchiimu +ストライキ;sutoraiki +スト;suto +ストレス;sutoresu +ストロー;sutoroo +ストロボ;sutorobo +すばしこい;subashikoi +すばやい;subayai +ずばり;zubari +スプリング;supuringu +スペース;supeesu +ずぶぬれ;zubunure +スポーツカー;supootsukaa +すます;sumasu +すます;sumasu +すます;sumasu +すみやか;sumiyaka +スラックス;surakkusu +ずらっと;zuratto +する;suru +ずるずる;zuruzuru +ずれ;zure +すれちがい;surechigai +すれる;sureru +すんなり;sunnari +せい;sei +せいいく;seiiku +せいいく;seiiku +せいか;seika +せいかい;seikai +せいき;seiki +せいぎ;seigi +せいけい;seikei +せいけん;seiken +せいこう;seikou +せいざ;seiza +せいさい;seisai +せいさく;seisaku +せいさん;seisan +せいし;seishi +せいし;seishi +せいじつ;seijitsu +せいじゅく;seijuku +せいしゅん;seishun +せいじゅん;seijun +せいしょ;seisho +せいじょう;seijou +せいする;seisuru +せいぜん;seizen +せいそう;seisou +せいだい;seidai +せいだく;seidaku +せいてい;seitei +せいてき;seiteki +せいてつ;seitetsu +せいてん;seiten +せいとう;seitou +せいねん;seinen +せいふく;seifuku +せいふく;seifuku +せいほう;seihou +せいみつ;seimitsu +ぜいむしょ;zeimusho +せいめい;seimei +せいめい;seimei +せいやく;seiyaku +せいり;seiri +せいりょく;seiryoku +せいれつ;seiretsu +セール;seeru +せかす;sekasu +せがれ;segare +せきむ;sekimu +セクション;sekushon +せじ;seji +せたい;setai +ぜせい;zesei +せだい;sedai +せつ;setsu +せっかい;sekkai +セックス;sekkusu +せつじつ;setsujitsu +せっしょく;sesshoku +せつぞくし;setsuzokushi +せっち;secchi +せっちゅう;secchuu +せってい;settei +せっとく;settoku +せつない;setsunai +ぜっぱん;zeppan +せつりつ;setsuritsu +せめ;seme +ゼリー;zerii +セレモニー;seremonii +せん;sen +ぜん;zen +ぜん;zen +せんい;sen_i +ぜんかい;zenkai +せんきょ;senkyo +せんきょう;senkyou +せんげん;sengen +せんこう;senkou +せんこう;senkou +せんさい;sensai +せんしゅう;senshuu +せんじゅつ;senjutsu +センス;sensu +せんすい;sensui +ぜんせい;zensei +せんだい;sendai +せんだって;sendatte +せんちゃく;senchaku +ぜんてい;zentei +せんてんてき;sententeki +ぜんと;zento +せんとう;sentou +せんにゅう;sennyuu +せんぱく;senpaku +ぜんめつ;zenmetsu +せんよう;sen_you +せんりょう;senryou +ぜんりょう;zenryou +せんりょく;senryoku +ぜんれい;zenrei +そう;sou +そう;sou +そう;sou +そう;sou +ぞう;zou +そうおう;souou +そうかい;soukai +そうかん;soukan +ぞうき;zouki +そうきゅう;soukyuu +さっきゅう;sakkyuu +ぞうきょう;zoukyou +そうきん;soukin +そうこう;soukou +そうごう;sougou +そうさ;sousa +そうさく;sousaku +そうじゅう;soujuu +ぞうしょう;zoushou +そうしょく;soushoku +ぞうしん;zoushin +そうぞう;souzou +そうたい;soutai +そうだい;soudai +そうどう;soudou +そうなん;sounan +そうば;souba +そうび;soubi +そうりつ;souritsu +そえる;soeru +ソース;soosu +そくざに;sokuzani +そくしん;sokushin +そくする;sokusuru +そくばく;sokubaku +そくめん;sokumen +そこなう;sokonau +そこら;sokora +そざい;sozai +そし;soshi +そしょう;soshou +そだち;sodachi +そち;sochi +ソックス;sokkusu +そっけない;sokkenai +そっぽ;soppo +そなえつける;sonaetsukeru +そなわる;sonawaru +そなわる;sonawaru +そびえる;sobieru +ソフト;sofuto +そぼく;soboku +そむく;somuku +そまる;somaru +そめる;someru +そらす;sorasu +そり;sori +そる;soru +それゆえ;soreyue +ソロ;soro +そろい;soroi +ぞんざい;zonzai +そんしつ;sonshitsu +そんぞく;sonzoku +ダース;daasu +たい;tai +たい;tai +たいおう;taiou +たいか;taika +たいか;taika +たいがい;taigai +たいかく;taikaku +たいがく;taigaku +たいきん;taikin +たいぐう;taiguu +たいけつ;taiketsu +たいけん;taiken +たいこう;taikou +たいじ;taiji +たいしゅう;taishuu +たいしょ;taisho +たいしょく;taishoku +だいする;daisuru +たいせい;taisei +たいだん;taidan +だいたん;daitan +たいとう;taitou +タイトル;taitoru +だいなし;dainashi +たいのう;tainou +たいひ;taihi +タイピスト;taipisuto +たいぶ;taibu +だいべん;daiben +だいべん;daiben +たいぼう;taibou +だいほん;daihon +タイマー;taimaa +たいまん;taiman +タイミング;taimingu +タイム;taimu +タイムリー;taimurii +たいめん;taimen +だいよう;daiyou +たいりょく;tairyoku +タイル;tairu +たいわ;taiwa +ダウン;daun +たえる;taeru +たえる;taeru +たえる;taeru +たえる;taeru +だかい;dakai +たかまる;takamaru +たきび;takibi +だきょう;dakyou +たくましい;takumashii +たくみ;takumi +たけ;take +だけ;dake +だげき;dageki +だけつ;daketsu +ださく;dasaku +たしざん;tashizan +たすうけつ;tasuuketsu +たすけ;tasuke +たずさわる;tazusawaru +ただよう;tadayou +たちさる;tachisaru +たちよる;tachiyoru +たつ;tatsu +だっこ;dakko +たっしゃ;tassha +だっしゅつ;dasshutsu +だっする;dassuru +たっせい;tassei +だったい;dattai +だったら;dattara +たて;tate +たてかえる;tatekaeru +たてまえ;tatemae +たてまつる;tatematsuru +だと;dato +たどうし;tadoushi +たとえ;tatoe +たどりつく;tadoritsuku +たどる;tadoru +たばねる;tabaneru +だぶだぶ;dabudabu +ダブル;daburu +たほう;tahou +たぼう;tabou +たまう;tamau +たましい;tamashii +たまり;tamari +たまわる;tamawaru +たもつ;tamotsu +たやすい;tayasui +たよう;tayou +だるい;darui +たるみ;tarumi +たるむ;tarumu +たれる;tareru +タレント;tarento +タワー;tawaa +たん;tan +たんいつ;tan_itsu +たんか;tanka +たんか;tanka +たんき;tanki +だんけつ;danketsu +たんけん;tanken +だんげん;dangen +たんしゅく;tanshuku +だんぜん;danzen +たんそ;tanso +たんだい;tandai +たんちょう;tanchou +たんどく;tandoku +だんな;danna +たんぱ;tanpa +たんぱくしつ;tanpakushitsu +ダンプ;danpu +だんめん;danmen +だんりょく;danryoku +ちあん;chian +チームワーク;chiimuwaaku +チェンジ;chenji +ちがえる;chigaeru +ちくさん;chikusan +ちくしょう;chikushou +ちくせき;chikuseki +ちけい;chikei +ちせい;chisei +ちち;chichi +ちぢまる;chidimaru +ちつじょ;chitsujo +ちっそく;chissoku +ちてき;chiteki +チャイム;chaimu +ちゃくしゅ;chakushu +ちゃくしょく;chakushoku +ちゃくせき;chakuseki +ちゃくもく;chakumoku +ちゃくりく;chakuriku +ちゃっこう;chakkou +ちゃのま;chanoma +ちゃのゆ;chanoyu +ちやほや;chiyahoya +チャンネル;channeru +ちゅうがえり;chuugaeri +ちゅうけい;chuukei +ちゅうこく;chuukoku +ちゅうしょう;chuushou +ちゅうすう;chuusuu +ちゅうせん;chuusen +ちゅうだん;chuudan +ちゅうどく;chuudoku +ちゅうふく;chuufuku +ちゅうりつ;chuuritsu +ちゅうわ;chuuwa +ちょ;cho +ちょう;chou +ちょう;chou +ちょう;chou +ちょういん;chouin +ちょうかく;choukaku +ちょうかん;choukan +ちょうこう;choukou +ちょうしゅう;choushuu +しゅほう;shuhou +じゅもく;jumoku +じゅりつ;juritsu +じゅんきゅう;junkyuu +じゅんじる;junjiru +しょ;sho +しよう;shiyou +しよう;shiyou +しょう;shou +しょう;shou +じょう;jou +じょう;jou +じょう;jou +じょうい;joui +じょうえん;jouen +じょうか;jouka +しょうがい;shougai +しょうきょ;shoukyo +じょうくう;joukuu +しょうげき;shougeki +しょうげん;shougen +しょうこ;shouko +しょうごう;shougou +しょうさい;shousai +じょうし;joushi +じょうしょう;joushou +しょうしん;shoushin +しょうする;shousuru +じょうせい;jousei +しょうそく;shousoku +しょうたい;shoutai +しょうだく;shoudaku +じょうちょ;joucho +じょうしょ;jousho +しょうちょう;shouchou +しょうにか;shounika +しようにん;shiyounin +じょうねつ;jounetsu +じょうほ;jouho +しょうめい;shoumei +じょうやく;jouyaku +しょうり;shouri +じょうりく;jouriku +じょうりゅう;jouryuu +しょうれい;shourei +ショー;shoo +じょがい;jogai +しょくいん;shokuin +しょくみんち;shokuminchi +しょくむ;shokumu +しょくん;shokun +じょげん;jogen +じょこう;jokou +しょざい;shozai +しょじ;shoji +じょし;joshi +じょし;joshi +しょぞく;shozoku +しょち;shochi +ショック;shokku +しょっちゅう;shocchuu +しょてい;shotei +じょどうし;jodoushi +しょとく;shotoku +しょばつ;shobatsu +しょはん;shohan +しょひょう;shohyou +しょぶん;shobun +しょみん;shomin +しょむ;shomu +しょゆう;shoyuu +しらべ;shirabe +じりつ;jiritsu +しるす;shirusu +しれい;shirei +しん;shin +じん;jin +しんか;shinka +はたす;hatasu +はちみつ;hachimitsu +パチンコ;pachinko +ばつ;batsu +はついく;hatsuiku +はつが;hatsuga +はっくつ;hakkutsu +はつげん;hatsugen +バッジ;bajji +はっせい;hassei +バッテリー;batterii +バット;batto +はつびょう;hatsubyou +はつみみ;hatsumimi +はて;hate +はてる;hateru +ばてる;bateru +パトカー;patokaa +はなはだ;hanahada +はなばなしい;hanabanashii +はなびら;hanabira +はなやか;hanayaka +パパ;papa +はばむ;habamu +はま;hama +はまべ;hamabe +はまる;hamaru +はやす;hayasu +はやめる;hayameru +はらだち;haradachi +はらっぱ;harappa +はらはら;harahara +ばらまく;baramaku +はりがみ;harigami +はるか;haruka +はれつ;haretsu +はれる;hareru +はん;han +はん;han +はん;han +はんえい;han_ei +はんが;hanga +ハンガー;hangaa +はんかん;hankan +はんきょう;hankyou +パンク;panku +はんげき;hangeki +はんけつ;hanketsu +はんしゃ;hansha +はんじょう;hanjou +はんしょく;hanshoku +はんする;hansuru +はんてい;hantei +ばんにん;bannin +ばんねん;bannen +はんのう;hannou +ばんのう;bannou +はんぱ;hanpa +はんぱつ;hanpatsu +はんらん;hanran +はんらん;hanran +ひ;hi +ひ;hi +び;bi +ひいては;hiiteha +ビールス;biirusu +ひかえしつ;hikaeshitsu +ひかえる;hikaeru +ひかん;hikan +ひきあげる;hikiageru +ひきいる;hikiiru +ひきおこす;hikiokosu +ひきさげる;hikisageru +ひきずる;hikizuru +ひきとる;hikitoru +ひけつ;hiketsu +ひこう;hikou +ひごろ;higoro +ひさしい;hisashii +ひさん;hisan +ビジネス;bijinesu +ひじゅう;hijuu +びじゅつ;bijutsu +ひしょ;hisho +びしょう;bishou +ちょうしんき;choushinki +ちょうせん;chousen +ちょうてい;choutei +ちょうふく;choufuku +ちょうへん;chouhen +ちょうほう;chouhou +ちょうり;chouri +ちょうわ;chouwa +ちょくちょく;chokuchoku +ちょくめん;chokumen +ちょしょ;chosho +ちょちく;chochiku +ちょっかん;chokkan +ちょめい;chomei +ちらっと;chiratto +ちり;chiri +ちりとり;chiritori +ちりょう;chiryou +ちんぎん;chingin +ちんでん;chinden +ちんぼつ;chinbotsu +ちんもく;chinmoku +ちんれつ;chinretsu +つい;tsui +ついきゅう;tsuikyuu +ついせき;tsuiseki +ついほう;tsuihou +ついやす;tsuiyasu +ついらく;tsuiraku +つうかん;tsuukan +つうじょう;tsuujou +つうせつ;tsuusetsu +つえ;tsue +つかいみち;tsukaimichi +つかえる;tsukaeru +つかさどる;tsukasadoru +つかのま;tsukanoma +つきなみ;tsukinami +つぎめ;tsugime +つきる;tsukiru +つぐ;tsugu +つぐ;tsugu +つくす;tsukusu +つくづく;tsukuduku +つくり;tsukuri +つくり;tsukuri +つくろう;tsukurou +つけくわえる;tsukekuwaeru +つげる;tsugeru +つじつま;tsujitsuma +つつ;tsutsu +つつく;tsutsuku +つっつく;tsuttsuku +つつしむ;tsutsushimu +つっぱる;tsupparu +つとまる;tsutomaru +つとめさき;tsutomesaki +つとめて;tsutomete +つなみ;tsunami +つねる;tsuneru +つの;tsuno +つのる;tsunoru +つば;tsuba +つぶやく;tsubuyaku +つぶら;tsubura +つぶる;tsuburu +つぼ;tsubo +つぼみ;tsubomi +つむ;tsumu +つゆ;tsuyu +つよまる;tsuyomaru +つよめる;tsuyomeru +つらなる;tsuranaru +つらぬく;tsuranuku +つらねる;tsuraneru +つりがね;tsurigane +つりかわ;tsurikawa +てあて;teate +ていぎ;teigi +ていきょう;teikyou +ていけい;teikei +ていさい;teisai +ていじ;teiji +ティシュペーパー;tishupeepaa +ていしょく;teishoku +ていせい;teisei +ていたい;teitai +ていたく;teitaku +ていねん;teinen +ていぼう;teibou +データ;deeta +ておくれ;teokure +でかい;dekai +てがかり;tegakari +てがける;tegakeru +てかず;tekazu +てがる;tegaru +てきおう;tekiou +てきぎ;tekigi +てきせい;tekisei +できもの;dekimono +てぎわ;tegiwa +でくわす;dekuwasu +デザイン;dezain +てじゅん;tejun +てじょう;tejou +てすう;tesuu +デコレーション;dekoreeshon +デザート;dezaato +てぢか;tedika +てっきり;tekkiri +てっこう;tekkou +デッサン;dessan +てっする;tessuru +てっぺん;teppen +てつぼう;tetsubou +でなおし;denaoshi +てのひら;tenohira +てはい;tehai +てはず;tehazu +てびき;tebiki +てほん;tehon +てまわし;temawashi +てもと;temoto +デモンストレーション;demonsutoreeshon +てりかえす;terikaesu +テレックス;terekkusu +てわけ;tewake +てん;ten +でんえん;den_en +てんか;tenka +てんかい;tenkai +てんかん;tenkan +てんきょ;tenkyo +てんきん;tenkin +てんけん;tenken +でんげん;dengen +てんこう;tenkou +てんごく;tengoku +でんごん;dengon +てんさい;tensai +てんさい;tensai +てんじ;tenji +でんせつ;densetsu +てんせん;tensen +てんじる;tenjiru +てんずる;tenzuru +てんたい;tentai +でんたつ;dentatsu +てんち;tenchi +てんで;tende +てんにん;tennin +てんぼう;tenbou +でんらい;denrai +てんらく;tenraku +と;to +ど;do +といあわせる;toiawaseru +とう;tou +とう;tou +とう;tou +どう;dou +どうい;doui +どういん;douin +どうかん;doukan +とうき;touki +とうぎ;tougi +どうき;douki +とうきゅう;toukyuu +どうきゅう;doukyuu +どうきょ;doukyo +とうこう;toukou +とうごう;tougou +どうこう;doukou +とうさん;tousan +とうし;toushi +どうし;doushi +どうし;doushi +どうじょう;doujou +どうじょう;doujou +とうせい;tousei +とうせん;tousen +とうぜん;touzen +とうそう;tousou +とうそつ;tousotsu +とうたつ;toutatsu +とうち;touchi +どうちょう;douchou +とうてい;toutei +どうてき;douteki +とうとい;toutoi +とうとい;toutoi +どうとう;doutou +どうどう;doudou +とうとぶ;toutobu +どうにか;dounika +とうにゅう;tounyuu +どうにゅう;dounyuu +とうにん;tounin +どうふう;doufuu +とうぼう;toubou +とうみん;toumin +どうめい;doumei +どうやら;douyara +どうよう;douyou +どうりょく;douryoku +とうろく;touroku +とうろん;touron +とおざかる;toozakaru +とおまわり;toomawari +トーン;toon +とかく;tokaku +とがめる;togameru +ときおり;tokiori +とぎれる;togireru +とく;toku +とぐ;togu +とくぎ;tokugi +どくさい;dokusai +とくさん;tokusan +どくじ;dokuji +とくしゅう;tokushuu +どくせん;dokusen +どくそう;dokusou +とくてん;tokuten +とくは;tokuha +とくゆう;tokuyuu +とげ;toge +とげる;togeru +どころか;dokoroka +としごろ;toshigoro +とじまり;tojimari +とじょう;tojou +とじる;tojiru +どだい;dodai +とだえる;todaeru +とっきょ;tokkyo +とっけん;tokken +とっさに;tossani +とつじょ;totsujo +とって;totte +とっぱ;toppa +どて;dote +とどけ;todoke +とどこおる;todokooru +ととのえる;totonoeru +とどめる;todomeru +となえる;tonaeru +とのさま;tonosama +どひょう;dohyou +とびら;tobira +どぶ;dobu +とほ;toho +どぼく;doboku +とぼける;tobokeru +とぼしい;toboshii +とみ;tomi +とむ;tomu +とも;tomo +ともかせぎ;tomokasegi +ともなう;tomonau +ともばたらき;tomobataraki +ドライ;dorai +ドライクリーニング;doraikuriiningu +ドライバー;doraibaa +ドライブイン;doraibuin +トラブル;toraburu +トランジスター;toranjisutaa +とりあえず;toriaezu +とりあつかい;toriatsukai +とりあつかう;toriatsukau +とりい;torii +とりかえ;torikae +とりくむ;torikumu +とりしまり;torishimari +とりしまる;torishimaru +とりしらべる;torishiraberu +とりたてる;toritateru +とりつぐ;toritsugu +とりつける;toritsukeru +とりのぞく;torinozoku +とりひき;torihiki +とりまく;torimaku +とりまぜる;torimazeru +とりもどす;torimodosu +とりよせる;toriyoseru +ドリル;doriru +とりわけ;toriwake +とろける;torokeru +どんかん;donkan +とんだ;tonda +どわすれ;dowasure +とんや;ton_ya +ないかく;naikaku +ないし;naishi +ないしょ;naisho +ないしん;naishin +ないぞう;naizou +ナイター;naitaa +ないぶ;naibu +ないらん;nairan +ないりく;nairiku +なえ;nae +なおさら;naosara +ながし;nagashi +ながなが;naganaga +なかほど;nakahodo +なぎさ;nagisa +なげく;nageku +なげだす;nagedasu +なこうど;nakoudo +なごやか;nagoyaka +なごり;nagori +なさけ;nasake +なさけない;nasakenai +なさけぶかい;nasakebukai +なじる;najiru +なだかい;nadakai +なだれ;nadare +なつく;natsuku +なづける;nadukeru +なにげない;nanigenai +なにとぞ;nanitozo +なにより;naniyori +ナプキン;napukin +なふだ;nafuda +なまぐさい;namagusai +なまぬるい;namanurui +なまみ;namami +なまり;namari +なみ;nami +なめらか;nameraka +なめる;nameru +なやましい;nayamashii +なやます;nayamasu +なやみ;nayami +ならす;narasu +ならす;narasu +ならびに;narabini +なりたつ;naritatsu +なるたけ;narutake +なれ;nare +なれなれしい;narenareshii +なん;nan +なんか;nanka +ナンセンス;nansensu +なんだか;nandaka +なんだかんだ;nandakanda +なんなり;nannari +に;ni +にかよう;nikayou +にきび;nikibi +にぎわう;nigiwau +にくしみ;nikushimi +にくしん;nikushin +にくたい;nikutai +にげだす;nigedasu +にしび;nishibi +にじむ;nijimu +にせもの;nisemono +にちや;nichiya +にづくり;nidukuri +になう;ninau +にぶる;niburu +にもかかわらず;nimokakawarazu +ニュアンス;nyuansu +ニュー;nyuu +にゅうしゅ;nyuushu +にゅうしょう;nyuushou +にゅうよく;nyuuyoku +にょう;nyou +にんしき;ninshiki +しんじょう;shinjou +にんしん;ninshin +にんむ;ninmu +にんめい;ninmei +ぬかす;nukasu +ぬけだす;nukedasu +ぬし;nushi +ぬま;numa +ね;ne +ねいろ;neiro +ねうち;neuchi +ネガ;nega +ねかせる;nekaseru +ねじまわし;nejimawashi +ねじれる;nejireru +ねたむ;netamu +ねだる;nedaru +ねつい;netsui +ねっとう;nettou +ねつりょう;netsuryou +ねばり;nebari +ねばる;nebaru +ねびき;nebiki +ねまわし;nemawashi +ねむたい;nemutai +ねる;neru +ねん;nen +ねんが;nenga +ねんかん;nenkan +ねんがん;nengan +ねんごう;nengou +ねんしょう;nenshou +ねんちょう;nenchou +ねんりょう;nenryou +ねんりん;nenrin +ノイローゼ;noirooze +のう;nou +のうこう;noukou +のうじょう;noujou +のうち;nouchi +のうにゅう;nounyuu +のがす;nogasu +のがれる;nogareru +のきなみ;nokinami +のぞましい;nozomashii +のぞむ;nozomu +のっとる;nottoru +のどか;nodoka +ののしる;nonoshiru +のべ;nobe +のみこむ;nomikomu +のりこむ;norikomu +は;ha +は;ha +バー;baa +はあく;haaku +パート;paato +はい;hai +はい;hai +はいき;haiki +はいきゅう;haikyuu +ばいきん;baikin +はいぐうしゃ;haiguusha +はいけい;haikei +はいけい;haikei +はいご;haigo +はいし;haishi +はいしゃく;haishaku +はいじょ;haijo +ばいしょう;baishou +はいすい;haisui +はいせん;haisen +はいち;haichi +はいふ;haifu +はいぶん;haibun +はいぼく;haiboku +ばいりつ;bairitsu +はいりょ;hairyo +はいれつ;hairetsu +はえる;haeru +はかい;hakai +はかどる;hakadoru +はかない;hakanai +ばかばかしい;bakabakashii +はかる;hakaru +はかる;hakaru +はき;haki +はぐ;hagu +はくがい;hakugai +はくじゃく;hakujaku +はくじょう;hakujou +ばくぜん;bakuzen +ばくだん;bakudan +ばくは;bakuha +ばくろ;bakuro +はげます;hagemasu +はげむ;hagemu +はげる;hageru +ばける;bakeru +はけん;haken +はじ;haji +はじく;hajiku +パジャマ;pajama +はじらう;hajirau +はじる;hajiru +はしわたし;hashiwatashi +バス;basu +はずむ;hazumu +はそん;hason +はたく;hataku +はだし;hadashi +ひずむ;hizumu +ひそか;hisoka +ひたす;hitasu +ひたすら;hitasura +ひだりきき;hidarikiki +ひっかく;hikkaku +ひっしゅう;hisshuu +びっしょり;bisshori +ひつぜん;hitsuzen +ひってき;hitteki +ひといき;hitoiki +ひとかげ;hitokage +ひとがら;hitogara +ひとけ;hitoke +ひところ;hitokoro +ひとじち;hitojichi +ひとすじ;hitosuji +ひとめ;hitome +ひどり;hidori +ひな;hina +ひなまつり;hinamatsuri +ひなた;hinata +ひなん;hinan +ひなん;hinan +ひのまる;hinomaru +ひばな;hibana +ひび;hibi +ひめい;himei +ひやかす;hiyakasu +ひやけ;hiyake +ひょう;hyou +ひょうご;hyougo +びょうしゃ;byousha +ひょっと;hyotto +びら;bira +ひらたい;hiratai +びり;biri +ひりつ;hiritsu +びりょう;biryou +ひるめし;hirumeshi +ひれい;hirei +ひろう;hirou +ひろまる;hiromaru +びんかん;binkan +ひんこん;hinkon +ひんしつ;hinshitsu +ひんじゃく;hinjaku +ひんしゅ;hinshu +ヒント;hinto +ひんぱん;hinpan +びんぼう;binbou +ファイト;faito +ファイル;fairu +ファン;fan +ふい;fui +フィルタ;firuta +ふう;fuu +ふうさ;fuusa +ふうしゃ;fuusha +ふうしゅう;fuushuu +ふうぞく;fuuzoku +ブーツ;buutsu +ふうど;fuudo +ブーム;buumu +フォーム;foomu +ぶか;buka +ふかけつ;fukaketsu +ぶかぶか;bukabuka +ふかめる;fukameru +ふきつ;fukitsu +ふきょう;fukyou +ふきん;fukin +ふく;fuku +ふくごう;fukugou +ふくし;fukushi +ふくめん;fukumen +ふくれる;fukureru +ふけいき;fukeiki +ふける;fukeru +ふける;fukeru +ふごう;fugou +ふこく;fukoku +ブザー;buzaa +ふさい;fusai +ふざい;fuzai +ふさわしい;fusawashii +ふじゅん;fujun +ふしょう;fushou +ぶじょく;bujoku +ふしん;fushin +ふしん;fushin +ぶそう;busou +ふだ;fuda +ふたん;futan +ふちょう;fuchou +ふっかつ;fukkatsu +ぶつぎ;butsugi +ふっきゅう;fukkyuu +ふっこう;fukkou +ぶっし;busshi +ぶつぞう;butsuzou +ぶったい;buttai +ふっとう;futtou +ふとう;futou +ふどうさん;fudousan +ぶなん;bunan +ふにん;funin +ふはい;fuhai +ふひょう;fuhyou +ふふく;fufuku +ふへん;fuhen +ふまえる;fumaeru +ふみこむ;fumikomu +ふめい;fumei +ぶもん;bumon +ふよう;fuyou +ふらふら;furafura +ぶらぶら;burabura +ふり;furi +ふりかえる;furikaeru +ふりだし;furidashi +ふりょう;furyou +ふりょく;furyoku +ぶりょく;buryoku +ブル;buru +ふるわせる;furuwaseru +ぶれい;burei +ふろく;furoku +フロント;furonto +ふんがい;fungai +ぶんかざい;bunkazai +ぶんぎょう;bungyou +ぶんご;bungo +ぶんさん;bunsan +ぶんし;bunshi +ふんしつ;funshitsu +ふんしゅつ;funshutsu +ぶんしょ;bunsho +ふんそう;funsou +ふんだん;fundan +ぶんたん;buntan +ふんとう;funtou +ぶんぱい;bunpai +ぶんぼ;bunbo +ふんまつ;funmatsu +ぶんり;bunri +ぶんれつ;bunretsu +ペア;pea +へいき;heiki +へいこう;heikou +へいこう;heikou +へいさ;heisa +へいし;heishi +へいじょう;heijou +へいほう;heihou +へいれつ;heiretsu +ぼうどう;boudou +ほうび;houbi +ぼうふう;boufuu +ほうむる;houmuru +ほうりこむ;hourikomu +ほうりだす;houridasu +ぼうりょく;bouryoku +ほうわ;houwa +ホース;hoosu +ポーズ;poozu +ホール;hooru +ほおん;hoon +ほかく;hokaku +ほかん;hokan +ほきゅう;hokyuu +ほきょう;hokyou +ぼきん;bokin +ぼくし;bokushi +ほげい;hogei +ぼける;bokeru +ほけん;hoken +ほご;hogo +ぼこう;bokou +ぼこく;bokoku +ほこる;hokoru +ほころびる;hokorobiru +ほし;hoshi +ポジション;pojishon +ほしもの;hoshimono +ほしゅ;hoshu +ほじゅう;hojuu +ほじょ;hojo +ほしょう;hoshou +ほしょう;hoshou +ほそう;hosou +ほそく;hosoku +ぼち;bochi +ほっさ;hossa +ぼっしゅう;bosshuu +ほっそく;hossoku +ほっと;hotto +ポット;potto +ほっぺた;hoppeta +ぼつぼつ;botsubotsu +ぼつらく;botsuraku +ほどける;hodokeru +ほどこす;hodokosu +ほとり;hotori +ぼやく;boyaku +ぼやける;boyakeru +ほよう;hoyou +ほりょ;horyo +ボルト;boruto +ほろびる;horobiru +ほろぼす;horobosu +ほんかく;honkaku +ほんかん;honkan +ほんき;honki +ほんごく;hongoku +ほんしつ;honshitsu +ほんたい;hontai +ほんね;honne +ほんのう;honnou +ほんば;honba +ポンプ;ponpu +ほんぶん;honbun +ほんみょう;honmyou +マーク;maaku +マイ;mai +マイクロフォン;maikurofon +まいぞう;maizou +まう;mau +まうえ;maue +まえうり;maeuri +まえおき;maeoki +まえもって;maemotte +まかす;makasu +まかす;makasu +まかなう;makanau +まぎらわしい;magirawashii +まぎれる;magireru +まく;maku +まごころ;magokoro +まごつく;magotsuku +まこと;makoto +まことに;makotoni +まさしく;masashiku +まさる;masaru +まし;mashi +まじえる;majieru +ました;mashita +まして;mashite +まじわる;majiwaru +ますい;masui +マスコミ;masukomi +また;mata +またがる;matagaru +まちあわせ;machiawase +まちどおしい;machidooshii +まちのぞむ;machinozomu +まちまち;machimachi +まつ;matsu +まっき;makki +マッサージ;massaaji +まっぷたつ;mapputatsu +まと;mato +まとまり;matomari +まとめ;matome +まぬがれる;manugareru +まねき;maneki +まばたき;mabataki +まひ;mahi +まみれ;mamire +まゆ;mayu +まり;mari +まるごと;marugoto +まるっきり;marukkiri +まるまる;marumaru +まるめる;marumeru +まんげつ;mangetsu +まんじょう;manjou +まんまえ;manmae +まんまるい;manmarui +まんまるい;manmarui +み;mi +みあい;miai +みあわせる;miawaseru +みおとす;miotosu +みかい;mikai +みかく;mikaku +みかける;mikakeru +みき;miki +みぐるしい;migurushii +みこみ;mikomi +みこん;mikon +みじゅく;mijuku +みじん;mijin +ミス;misu +みずけ;mizuke +ミスプリント;misupurinto +みすぼらしい;misuborashii +ミセス;misesu +みせびらかす;misebirakasu +みせもの;misemono +みぞ;mizo +みたす;mitasu +みだす;midasu +みだれる;midareru +みち;michi +みぢか;midika +みちびく;michibiku +みっしゅう;misshuu +みっせつ;missetsu +みつど;mitsudo +みつもり;mitsumori +みてい;mitei +みとおし;mitooshi +みなす;minasu +みなもと;minamoto +みならう;minarau +みなり;minari +みね;mine +みのうえ;minoue +みのがす;minogasu +みのまわり;minomawari +みはからう;mihakarau +みはらし;miharashi +みぶり;miburi +みゃく;myaku +ミュージック;myuujikku +みれん;miren +みわたす;miwatasu +みんしゅく;minshuku +みんぞく;minzoku +みんぞく;minzoku +むいみ;muimi +ムード;muudo +むくち;mukuchi +むこ;muko +むこう;mukou +むごん;mugon +むじゃき;mujaki +むしる;mushiru +むすび;musubi +むすびつき;musubitsuki +むすびつく;musubitsuku +むすびつける;musubitsukeru +むせん;musen +むだづかい;mudadukai +むだん;mudan +むち;muchi +むちゃ;mucha +むちゃくちゃ;muchakucha +むなしい;munashii +むねん;munen +むのう;munou +むやみに;muyamini +むよう;muyou +むら;mura +むらがる;muragaru +むろん;muron +めいさん;meisan +めいしょう;meishou +めいちゅう;meichuu +めいはく;meihaku +めいぼ;meibo +めいよ;meiyo +めいりょう;meiryou +めいろう;meirou +メーカー;meekaa +めかた;mekata +めぐみ;megumi +めぐむ;megumu +めくる;mekuru +めざましい;mezamashii +めざめる;mezameru +めす;mesu +めす;mesu +めつき;metsuki +メッセージ;messeeji +めつぼう;metsubou +メディア;media +めど;medo +めもり;memori +メロディー;merodii +めんかい;menkai +めんじょ;menjo +めんする;mensuru +めんぼく;menboku +めんもく;menmoku +もう;mou +もうける;moukeru +もうしいれる;moushiireru +もうしこみ;moushikomi +もうしで;moushide +もうしでる;moushideru +もうしぶん;moushibun +もうてん;mouten +もうれつ;mouretsu +モーテル;mooteru +もがく;mogaku +もくろく;mokuroku +もくろみ;mokuromi +もけい;mokei +もさく;mosaku +もしかして;moshikashite +もしくは;moshikuha +もたらす;motarasu +もちきり;mochikiri +もっか;mokka +もっぱら;moppara +もてなす;motenasu +もてる;moteru +モニター;monitaa +もの;mono +ものずき;monozuki +ものたりない;monotarinai +もはや;mohaya +もはん;mohan +もほう;mohou +もめる;momeru +もも;momo +もも;momo +もよおす;moyoosu +もらす;morasu +もりあがる;moriagaru +もる;moru +もれる;moreru +もろい;moroi +もろに;moroni +や;ya +やがい;yagai +やく;yaku +やぐ;yagu +やくしょく;yakushoku +やくば;yakuba +やけに;yakeni +やしき;yashiki +やしなう;yashinau +やしん;yashin +やすっぽい;yasuppoi +やすめる;yasumeru +やせい;yasei +やつ;yatsu +やとう;yatou +やみ;yami +やむ;yamu +ややこしい;yayakoshii +やりとおす;yaritoosu +やりとげる;yaritogeru +やわらげる;yawarageru +ヤング;yangu +ゆ;yu +ゆう;yuu +ゆうい;yuui +ゆううつ;yuuutsu +ゆうえき;yuueki +ゆうえつ;yuuetsu +ゆうかん;yuukan +ゆうき;yuuki +ゆうぐれ;yuugure +ゆうし;yuushi +ゆうする;yuusuru +ゆうせい;yuusei +ゆうせん;yuusen +ゆうどう;yuudou +ゆうずう;yuuzuu +ゆうび;yuubi +ゆうぼう;yuubou +ゆうぼく;yuuboku +ゆうやけ;yuuyake +ゆうりょく;yuuryoku +ゆうれい;yuurei +ゆうわく;yuuwaku +ゆえ;yue +ゆがむ;yugamu +ゆさぶる;yusaburu +ゆすぐ;yusugu +ゆとり;yutori +ユニーク;yuniiku +ユニフォーム;yunifoomu +ゆびさす;yubisasu +ゆみ;yumi +ゆらぐ;yuragu +ゆるむ;yurumu +ゆるめる;yurumeru +ゆるやか;yuruyaka +よ;yo +よう;you +よういん;youin +ようえき;youeki +ようけん;youken +ようご;yougo +ようし;youshi +ようしき;youshiki +ようする;yousuru +ようせい;yousei +ようそう;yousou +ようひん;youhin +ようふう;youfuu +ようほう;youhou +ようぼう;youbou +よか;yoka +よかん;yokan +よきょう;yokyou +よきん;yokin +よく;yoku +よくあつ;yokuatsu +よくしつ;yokushitsu +よくせい;yokusei +よくふかい;yokufukai +よくぼう;yokubou +よける;yokeru +よげん;yogen +よこづな;yokoduna +よごれ;yogore +よし;yoshi +よし;yoshi +よしあし;yoshiashi +よそう;yosou +よそみ;yosomi +よち;yochi +よって;yotte +よとう;yotou +よびとめる;yobitomeru +よふかし;yofukashi +よふけ;yofuke +よほど;yohodo +よみあげる;yomiageru +より;yori +よりかかる;yorikakaru +よろん;yoron +せろん;seron +よわまる;yowamaru +よわめる;yowameru +よわる;yowaru +らいじょう;raijou +ライス;raisu +らくのう;rakunou +らっか;rakka +らっかん;rakkan +ラベル;raberu +ランプ;ranpu +らんよう;ran_you +リード;riido +りくつ;rikutsu +りし;rishi +りじゅん;rijun +りせい;risei +りそく;risoku +りったい;rittai +りっぽう;rippou +りっぽう;rippou +りてん;riten +りゃくだつ;ryakudatsu +りゃくご;ryakugo +りゅうつう;ryuutsuu +りょういき;ryouiki +りょうかい;ryoukai +りょうかい;ryoukai +りょうきょく;ryoukyoku +りょうこう;ryoukou +りょうしき;ryoushiki +りょうしつ;ryoushitsu +りょうしょう;ryoushou +りょうしん;ryoushin +りょうち;ryouchi +りょうど;ryoudo +りょうりつ;ryouritsu +りょかく;ryokaku +りょけん;ryoken +りれき;rireki +りろん;riron +りんぎょう;ringyou +るい;rui +るいすい;ruisui +るいじ;ruiji +ルーズ;ruuzu +ルール;ruuru +れいこく;reikoku +れいぞう;reizou +れいたん;reitan +レース;reesu +レギュラー;regyuraa +レッスン;ressun +レディー;redii +レバー;rebaa +れんあい;ren_ai +れんきゅう;renkyuu +レンジ;renji +れんじつ;renjitsu +れんたい;rentai +レンタカー;rentakaa +れんちゅう;renchuu +レントゲン;rentogen +れんぽう;renpou +れんめい;renmei +ろうすい;rousui +ろうどく;roudoku +ろうひ;rouhi +ろうりょく;rouryoku +ロープウエイ;roopuuei +ロープ;roopu +ろくな;rokuna +ろこつ;rokotsu +ロマンチック;romanchikku +ろんぎ;rongi +ろんり;ronri +わく;waku +わくせい;wakusei +わざ;waza +わざわざ;wazawaza +わずらわしい;wazurawashii +わたりどり;wataridori +ワット;watto +わび;wabi +わぶん;wabun +わら;wara +わり;wari +わりあて;wariate +わりこむ;warikomu +わるもの;warumono +われ;ware +いない;inai +けいかくです;keikakudesu +たがる;tagaru +とちがう;tochigau +として;toshite +やをない;yawonai +あがる;agaru +あいだ;aida +あじ;aji +あかりがきえている;akarigakieteiru +あきる;akiru +あまい;amai +あんぜん;anzen +あらゆる;arayuru +あさい;asai +あつい;atsui +あつまり;atsumari +あつまる;atsumaru +あつめる;atsumeru +あやまる;ayamaru +AよりBのほうがわかいです;AyoriBnohougawakaidesu +ばんぐみ;bangumi +バター;bataa +ベル;beru +びっくり;bikkuri +びしょうじょ;bishoujo +ボタン;botan +ぶどうしゅ;budoushu +ぶん;bun +ぶんれい;bunrei +ちゃんと;chanto +ち;chi +ちかぢか;chikadika +ちから;chikara +ちょうし;choushi +ちゅうがっこう;chuugakkou +ちゅういする;chuuisuru +だけど;dakedo +だんぼう;danbou +だれにでも;darenidemo +だろう;darou +だす;dasu +だす;dasu +でんとう;dentou +でている;deteiru +どんなでも;donnademo +どんなに;donnani +どのくらい;donokurai +どりょく;doryoku +どうぶつえん;doubutsuen +どうどう;doudou +どうしたの;doushitano +どうやって;douyatte +えだ;eda +えいがかん;eigakan +えらぶ;erabu +ふで;fude +ふえる;fueru +ふかい;fukai +ふく;fuku +ふね;fune +ふとい;futoi +ふつか;futsuka +ふつう;futsuu +ふつうの;futsuuno +ふうとう;fuutou +がいこくじん;gaikokujin +ガソリンスタンド;gasorinsutando +ごい;goi +ごめんください;gomenkudasai +はく;haku +はなし;hanashi +はらい;harai +はしる;hashiru +はたらく;hataraku +はつか;hatsuka +へる;heru +ひえる;hieru +ひがし;higashi +ひきだし;hikidashi +ひろば;hiroba +ひろい;hiroi +ひるま;hiruma +ひるすぎ;hirusugi +ひつよう;hitsuyou +ほか;hoka +ほしい;hoshii +ほそい;hosoi +いちじかんご;ichijikango +いがい;igai +いいんだけど;iindakedo +いまでも;imademo +いみ;imi +いのり;inori +いれる;ireru +いろいろあるね;iroiroarune +いし;ishi +いそいで;isoide +いっしょう;isshou +いっしゅうかん;isshuukan +いたむ;itamu +いたす;itasu +いつか;itsuka +いつか;itsuka +いやでも;iyademo +じゃ、このつぎ;ja_konotsugi +じしん;jishin +じしん;jishin +じしょをひく;jishowohiku +じゆう;jiyuu +じゆうじかん;jiyuujikan +じょうず;jouzu +じょうずに;jouzuni +じゅんばん;junban +じゅんび;junbi +じゅうよっか;juuyokka +カーテン;kaaten +かどうか;kadouka +かがみ;kagami +かい;kai +かいわ;kaiwa +かっこ;kakko +かまいません;kamaimasen +かまわない;kamawanai +かならず;kanarazu +かんがえる;kangaeru +かんごふ;kangofu +かんじる;kanjiru +からだ;karada +からい;karai +かす;kasu +かたち;katachi +かつ;katsu +かうことにする;kaukotonisuru +かわく;kawaku +かわる;kawaru +かよう;kayou +かざる;kazaru +かぜ;kaze +かぜ;kaze +けんきゅう;kenkyuu +けんきゅうしつ;kenkyuushitsu +けんめい;kenmei +けしごむ;keshigomu +けっして;kesshite +きびしい;kibishii +きけん;kiken +きんえん;kin_en +きたない;kitanai +きわめる;kiwameru +コギャル;kogyaru +こくでん;kokuden +こくご;kokugo +こまる;komaru +ころぶ;korobu +こし;koshi +こしょう;koshou +こたえ;kotae +こうちょう;kouchou +こうえい;kouei +こうぎ;kougi +こういう;kouiu +こうとうがっこう;koutougakkou +くらべる;kuraberu +くらい;kurai +きょく;kyoku +きょう;kyou +きょうかしょ;kyoukasho +きょうしつ;kyoushitsu +きゅうに;kyuuni +まちあわせ;machiawase +まちがい;machigai +まいる;mairu +まなぶ;manabu +まねき;maneki +まにあう;maniau +まるい;marui +めがねをかける;meganewokakeru +めがさめる;megasameru +めいれい;meirei +めざめる;mezameru +みにいく;miniiku +みたい;mitai +もじ;moji +もつ;motsu +もうすぐです;mousugudesu +むかい;mukai +むこう;mukou +むり;muri +むりに;murini +なのか;nanoka +ならべる;naraberu +ならぶ;narabu +ならう;narau +ねむれない;nemurenai +にがい;nigai +にじゅうよっか;nijuuyokka +にかい;nikai +にんじん;ninjin +にし;nishi +ので;node +のに;noni +にゅうがく;nyuugaku +おこす;okosu +おくれる;okureru +おくりもの;okurimono +おくりさき;okurisaki +おくる;okuru +おみやげ;omiyage +おもい;omoi +おもいだす;omoidasu +おもいで;omoide +おもう;omou +おなじ;onaji +おおい;ooi +オートバイ;ootobai +おれい;orei +おさきにしつれいします;osakinishitsureishimasu +おしいれ;oshiire +パソコン;pasokon +らくな;rakuna +らしい;rashii +れい;rei +れいぼう;reibou +りゆう;riyuu +りょう;ryou +さびしい;sabishii +さがる;sagaru +さがす;sagasu +さがす;sagasu +さいご;saigo +さいきん;saikin +さいてい;saitei +さいやく;saiyaku +さく;saku +さくぶん;sakubun +さんかく;sankaku +さしあげる;sashiageru +せいかい;seikai +せいかく;seikaku +せいせき;seiseki +せき;seki +せなか;senaka +しゃしんか;shashinka +しゃしんをとる;shashinwotoru +しあい;shiai +しばふ;shibafu +しばらくです;shibarakudesu +しか;shika +しま;shima +しまる;shimaru +しも;shimo +しなもの;shinamono +しんぱい;shinpai +しらべる;shiraberu +しる;shiru +したく;shitaku +しつもん;shitsumon +しょくどう;shokudou +しょうがっこう;shougakkou +しょうじょ;shoujo +しょうじょう;shoujou +しょうたい;shoutai +しゅっきん;shukkin +しゅくだいをだす;shukudaiwodasu +しゅみ;shumi +しゅうり;shuuri +それに;soreni +そつぎょうしき;sotsugyoushiki +そうじ;souji +すべりやすい;suberiyasui +すぐ;sugu +すいどう;suidou +すいえい;suiei +すいか;suika +すっかり;sukkari +すむ;sumu +すわる;suwaru +すずしい;suzushii +たちいりきんし;tachiirikinshi +たいふう;taifuu +たいいん;taiin +たてる;tateru +たとえば;tatoeba +たずねる;tazuneru +たずねる;tazuneru +てまえ;temae +てんらんかい;tenrankai +てつだい;tetsudai +とぶ;tobu +という;toiu +といわれた;toiwareta +ところ;tokoro +ところで;tokorode +ところです;tokorodesu +とく;toku +とくに;tokuni +とまる;tomaru +とにかく;tonikaku +とおか;tooka +とおる;tooru +とりあえず;toriaezu +とうとう;toutou +ついたち;tsuitachi +つくる;tsukuru +つまらない;tsumaranai +つめたい;tsumetai +つれてくる;tsuretekuru +つよい;tsuyoi +うける;ukeru +うる;uru +うすい;usui +うつす;utsusu +うつす;utsusu +わかれる;wakareru +わけ;wake +われる;wareru +わる;waru +わたる;wataru +やりかた;yarikata +やせている;yaseteiru +よごれる;yogoreru +よほう;yohou +よこ;yoko +よく;yoku +よく;yoku +よくじつ;yokujitsu +よんかい;yonkai +よる;yoru +よしゅう;yoshuu +よてい;yotei +よう;you +ようだ;youda +ようふく;youfuku +ようか;youka +ようになりました;youninarimashita +ようす;yousu +よわい;yowai +ゆれる;yureru +ゆうえんち;yuuenchi +ユーロー;yuuroo +ぜんぶ;zenbu +ぜんぶで;zenbude +ずっと;zutto +だいいっか;daiikka +にほんご;nihongo +べんきょうする;benkyousuru +だいがく;daigaku +ある;aru +たてもの;tatemono +おおきい;ookii +そして;soshite +りっぱだ;rippada +がくせい;gakusei +かず;kazu +おおい;ooi +なかむら;nakamura +にほんじん;nihonjin +たち;tachi +まいにち;mainichi +おしえる;oshieru +きょうしつ;kyoushitsu +はなす;hanasu +にほんにっぽん;nihonnippon +がっか;gakka +にほんがっか;nihongakka +ちいさい;chiisai +きれいだ;kireida +いく;iku +バス;basu +きょう;kyou +ごぜん;gozen +ごぜんちゅう;gozenchuu +じゅぎょう;jugyou +しゅっせき;shusseki +しゅっせきする;shussekisuru +としょかん;toshokan +ほん;hon +よむ;yomu +しずかだ;shizukada +こんばん;konban +たんご;tango +それから;sorekara +さくぶん;sakubun +そのあと;sonoato +ともだち;tomodachi +てがみ;tegami +たのしい;tanoshii +さん;san +おがわ;ogawa +だいにか;dainika +かぞく;kazoku +ごにん;gonin +ちち;chichi +がいむしょう;gaimushou +はは;haha +えいご;eigo +とても;totemo +いそがしい;isogashii +にわ;niwa +ひろい;hiroi +ばら;bara +など;nado +はな;hana +さく;saku +きょうだい;kyoudai +あに;ani +おきる;okiru +パン;pan +をでる;woderu +こうぎ;kougi +はじまる;hajimaru +ぶんがく;bungaku +ぜんぜんない;zenzennai +たいくつ;taikutsu +たいくつする;taikutsusuru +れきし;rekishi +げつようび;getsuyoubi +すいようび;suiyoubi +やさしい;yasashii +どいつご;doitsugo +じょうずだ;jouzuda +わかる;wakaru +しつもん;shitsumon +しつもんする;shitsumonsuru +こたえる;kotaeru +しんせつだ;shinsetsuda +おわる;owaru +ほかのひ;hokanohi +こうがい;kougai +あまりない;amarinai +べんりだ;benrida +へいじつ;heijitsu +かじ;kaji +かいもの;kaimono +りょうりする;ryourisuru +つくる;tsukuru +さら;sara +あらう;arau +そうじ;souji +そうじする;soujisuru +ねる;neru +そうです;soudesu +かようび;kayoubi +もくようび;mokuyoubi +きんようび;kin_youbi +だいよんか;daiyonka +けんぶつ;kenbutsu +けんぶつする;kenbutsusuru +どいつみんしゅきょうわこく;doitsuminshukyouwakoku +しゅと;shuto +かんこうきゃく;kankoukyaku +ここ;koko +ひろば;hiroba +ひらた;hirata +つうやく;tsuuyaku +つうやくする;tsuuyakusuru +あたり;atari +あるく;aruku +あれ;are +ホテル;hoteru +ね;ne +それに;soreni +ひゃくめえてる;hyakumeeteru +さあ;saa +しる;shiru +ひだり;hidari +デパート;depaato +みぎ;migi +しちょうしゃ;shichousha +この;kono +だいぶぶん;daibubun +てれびとう;terebitou +うえ;ue +のぼる;noboru +エレベーター;erebeetaa +めいしょ;meisho +はいる;hairu +こくでん;kokuden +えき;eki +ふたり;futari +どいつじん;doitsujin +おちゃ;ocha +ちゃ;cha +だいすきだ;daisukida +ご;go +しょくぎょう;shokugyou +ぎし;gishi +よく;yoku +はたらく;hataraku +あね;ane +おとうと;otouto +ほんとうに;hontouni +たいへんだ;taihenda +かんしん;kanshin +かんしんする;kanshinsuru +どおり;doori +おりる;oriru +おとうとさん;otoutosan +おいしゃさん;oishasan +だいごか;daigoka +ほんや;hon_ya +たなか;tanaka +がくしゃ;gakusha +ことし;kotoshi +しがつ;shigatsu +ヨーロッパ;yooroppa +けんきゅう;kenkyuu +けんきゅうする;kenkyuusuru +すごす;sugosu +でかける;dekakeru +かう;kau +さがす;sagasu +その;sono +とき;toki +そのとき;sonotoki +しりあい;shiriai +あう;au +こんにちは;konnichiha +ひさしぶりです;hisashiburidesu +このまえから;konomaekara +みせ;mise +うる;uru +よ;yo +ぶんか;bunka +かんけい;kankei +びじゅつ;bijutsu +じしょ;jisho +もつ;motsu +ああ;aa +いっさつ;issatsu +でも;demo +ないよう;naiyou +いいよい;iiyoi +へん;hen +すこし;sukoshi +さんぽする;sanposuru +ありがとう;arigatou +ありがとうございます;arigatougozaimasu +おうち;ouchi +とおい;tooi +かよう;kayou +やく;yaku +いちじかん;ichijikan +かかる;kakaru +おうふく;oufuku +おうふくする;oufukusuru +ふべんだ;fubenda +りょう;ryou +すむ;sumu +げしゅく;geshuku +げしゅくする;geshukusuru +しゅじん;shujin +たいがいぼうえきしょう;taigaibouekishou +しごと;shigoto +する;suru +ひと;hito +きのう;kinou +についての;nitsuiteno +ゆっくり;yukkuri +さようなら;sayounara +せいかつする;seikatsusuru +といっしょに;toisshoni +だいろっか;dairokka +とうきょう;toukyou +だいい;daii +めんせき;menseki +せまい;semai +とち;tochi +ひとびと;hitobito +しんじゅく;shinjuku +としん;toshin +こうそう;kousou +けんちく;kenchiku +きんだいてきだ;kindaitekida +さいきん;saikin +たつ;tatsu +かい;kai +にかいだて;nikaidate +ふるい;furui +あさくさ;asakusa +せんそうじ;sensouji +でんとうてきだ;dentoutekida +じいん;jiin +とくに;tokuni +ゆうめいだ;yuumeida +こうきょ;koukyo +いちぶ;ichibu +れきしてきだ;rekishitekida +とかい;tokai +ぎんざ;ginza +にぎやかだ;nigiyakada +ところ;tokoro +せんもんてん;senmonten +つぎつぎに;tsugitsugini +ならぶ;narabu +じゅうたく;juutaku +がい;gai +じゅうたくがい;juutakugai +ふえる;fueru +せいかくだ;seikakuda +ちほう;chihou +しゅうへん;shuuhen +でていく;deteiku +へる;heru +ひるま;hiruma +けん;ken +かいしゃ;kaisha +つとめにん;tsutomenin +つうきん;tsuukin +つうがく;tsuugaku +ながい;nagai +らっしゅのじかん;rasshunojikan +こうつうきかん;koutsuukikan +こうそくどうろ;kousokudouro +てん;ten +かいけつ;kaiketsu +かいけつする;kaiketsusuru +こんご;kongo +はってん;hatten +はってんする;hattensuru +のために;notameni +じゅうようだ;juuyouda +へいほう;heihou +キロ;kiro +おしえました;oshiemashita +いろいろだ;iroiroda +じゅっかいだて;jukkaidate +いっかい;ikkai +おおく;ooku +になっている;ninatteiru +いちがつ;ichigatsu +にがつ;nigatsu +さんがつ;sangatsu +ごがつ;gogatsu +ろくがつ;rokugatsu +しちがつ;shichigatsu +はちがつ;hachigatsu +じゅうがつ;juugatsu +じゅういちがつ;juuichigatsu +じゅうにがつ;juunigatsu +れい;rei +ひゃく;hyaku +まん;man +しき;shiki +いちねん;ichinen +なつ;natsu +あき;aki +ふゆ;fuyu +へんか;henka +へんかする;henkasuru +はっきりする;hakkirisuru +かんしん;kanshin +よほう;yohou +てんきよほう;tenkiyohou +はじめ;hajime +あいさつする;aisatsusuru +えいきょう;eikyou +あたえる;ataeru +つよい;tsuyoi +かぜ;kaze +ふく;fuku +おだやかだ;odayakada +あたたかい;atatakai +いろ;iro +さくら;sakura +によって;niyotte +ちがう;chigau +じょうじゅん;joujun +ばいう;baiu +きせつ;kisetsu +ちゅうじゅん;chuujun +あめ;ame +きおん;kion +さがる;sagaru +かなり;kanari +すずしい;suzushii +あつい;atsui +あがる;agaru +しっけ;shikke +よわい;yowai +むしあつい;mushiatsui +うみ;umi +やま;yama +ほっかいどう;hokkaidou +しんしゅう;shinshuu +りょこう;ryokou +りょこうする;ryokousuru +おわり;owari +たいふう;taifuu +はげしい;hageshii +さる;saru +ほんかくてきだ;honkakutekida +いちねんちゅう;ichinenchuu +さわやかだ;sawayakada +あおい;aoi +そら;sora +げじゅん;gejun +ひえる;hieru +つめたい;tsumetai +さむい;samui +にほんかい;nihonkai +がわ;gawa +ゆき;yuki +きゅうしゅう;kyuushuu +かごしま;kagoshima +テキスト;tekisuto +らいしゅう;raishuu +テスト;tesuto +くらい;kurai +なんねん;nannen +なんじ;nanji +なんにん;nannin +なんにち;nannichi +なんようび;nan_youbi +なんど;nando +なんかい;nankai +なんさつ;nansatsu +なんまい;nanmai +なんばん;nanban +どの;dono +どんな;donna +どう;dou +よてい;yotei +よていする;yoteisuru +おげんきですか;ogenkidesuka +げんきだ;genkida +ところで;tokorode +べつにありません;betsuniarimasen +きょうと;kyouto +つれていく;tsureteiku +くわしい;kuwashii +しんかんせん;shinkansen +はくぶつかん;hakubutsukan +けんがく;kengaku +けんがくする;kengakusuru +おおさか;oosaka +ぶんらく;bunraku +しゅっぱつ;shuppatsu +しゅっぱつする;shuppatsusuru +ふん;fun +ごう;gou +ひかり;hikari +はやい;hayai +おじ;oji +とまる;tomaru +おもう;omou +そう;sou +ねがう;negau +おねがいします;onegaishimasu +もどる;modoru +くるま;kuruma +ひえいざん;hieizan +うんてん;unten +うんてんする;untensuru +へただ;hetada +けっこうだ;kekkouda +まだない;madanai +ちず;chizu +でる;deru +かいさつぐち;kaisatsuguchi +まちがえる;machigaeru +すみませんが;sumimasenga +きっぷ;kippu +あんない;annai +あんないする;annaisuru +かす;kasu +ちゅうしん;chuushin +きょうみぶかい;kyoumibukai +こんど;kondo +きたい;kitai +きたいする;kitaisuru +おくれる;okureru +ほか;hoka +いちにちじゅう;ichinichijuu +うまれる;umareru +びじゅつかん;bijutsukan +げいじゅつ;geijutsu +がくもん;gakumon +まち;machi +として;toshite +がわ;gawa +ながれる;nagareru +かん;kan +きょういく;kyouiku +ぎむきょういく;gimukyouiku +うける;ukeru +かもく;kamoku +すうがく;suugaku +がいこくご;gaikokugo +いまりやき;imariyaki +ひん;hin +びじゅつひん;bijutsuhin +ふかい;fukai +げんだい;gendai +せいじ;seiji +きょうみ;kyoumi +きじ;kiji +かならず;kanarazu +えいが;eiga +えいがかん;eigakan +とうろん;touron +とうろんする;touronsuru +そつぎょう;sotsugyou +そつぎょうする;sotsugyousuru +ご;go +きぼう;kibou +きぼうする;kibousuru +いがい;igai +はじめる;hajimeru +ねっしんだ;nesshinda +みじかい;mijikai +きかん;kikan +じょうたつする;joutatsusuru +やくす;yakusu +りゅうがく;ryuugaku +りゅうがくする;ryuugakusuru +きかい;kikai +まもなく;mamonaku +なれる;nareru +なら;nara +のう;nou +かぶき;kabuki +かんがえる;kangaeru +こまる;komaru +はんとし;hantoshi +たいざい;taizai +たいざいする;taizaisuru +けいけん;keiken +けいけんする;keikensuru +きこく;kikoku +きこくする;kikokusuru +すずき;suzuki +ふらんすご;furansugo +ふらんすじん;furansujin +すいすじん;suisujin +たんじょうび;tanjoubi +パーティー;paatii +さい;sai +になる;ninaru +ふつう;futsuu +かてい;katei +おさない;osanai +こども;kodomo +いわう;iwau +おとな;otona +ばあい;baai +とくべつだ;tokubetsuda +きょねん;kyonen +はんがりいじん;hangariijin +ふんいき;fun_iki +ちょくせつ;chokusetsu +ふれる;fureru +じぶん;jibun +しょうたい;shoutai +しょうたいする;shoutaisuru +プレゼント;purezento +じょうとうだ;joutouda +ネクタイ;nekutai +えらぶ;erabu +よそう;yosou +よそうする;yosousuru +いじょう;ijou +おどろく;odoroku +それ;sore +きにいる;kiniiru +まよう;mayou +てんいん;ten_in +そうだん;soudan +そうだんする;soudansuru +さいご;saigo +まい;mai +さとう;satou +きゅうだ;kyuuda +やくそく;yakusoku +やくそくする;yakusokusuru +おそい;osoi +それぞれ;sorezore +おいわい;oiwai +おいわいをのべる;oiwaiwonoberu +のべる;noberu +くわわる;kuwawaru +にほんしゅ;nihonshu +さかな;sakana +やさい;yasai +たまご;tamago +さまざまだ;samazamada +えんげき;engeki +ゆかいだ;yukaida +いけん;iken +かならずしもない;kanarazushimonai +しょくご;shokugo +いもうとさん;imoutosan +かずこ;kazuko +ピアノ;piano +ひく;hiku +みんよう;min_you +うたう;utau +うた;uta +てんけいてきだ;tenkeitekida +きょく;kyoku +いっきょく;ikkyoku +ならう;narau +ひとりで;hitoride +ハンガリー;hangarii +よろこぶ;yorokobu +そのころ;sonokoro +ころ;koro +おもいがけない;omoigakenai +こばやし;kobayashi +ぐうぜんだ;guuzenda +ほうもん;houmon +ほうもんする;houmonsuru +よなか;yonaka +すぎ;sugi +かえってくる;kaettekuru +にとって;nitotte +わすれがたい;wasuregatai +ひとばん;hitoban +まさお;masao +お;o +にさつ;nisatsu +そう、そう;sou_sou +さがし;sagashi +やすい;yasui +なかなかない;nakanakanai +みつかる;mitsukaru +いま;ima +たがい;tagai +たがいに;tagaini +かわだ;kawada +よつや;yotsuya +かわり;kawari +そのかわり;sonokawari +さかなや;sakanaya +やおや;yaoya +むかい;mukai +おすしや;osushiya +くだもの;kudamono +くさい;kusai +におい;nioi +にがてだ;nigateda +だめだ;dameda +ことわる;kotowaru +つぎ;tsugi +あおやま;aoyama +ちかてつ;chikatetsu +ばんごう;bangou +ええと;eeto +まつ;matsu +ばん;ban +かとう;katou +こうしゅうでんわ;koushuudenwa +でんわをかける;denwawokakeru +ばしょ;basho +すぐだ;suguda +じゅっぷん;juppun +かんじ;kanji +かんじがいい;kanjigaii +へやだい;heyadai +こうきゅう;koukyuu +これより;koreyori +まずない;mazunai +えん;en +つらい;tsurai +くるしい;kurushii +かぐ;kagu +りそうてきだ;risoutekida +あの;ano +きめる;kimeru +かおいろ;kaoiro +かおいろがわるい;kaoirogawarui +あたま;atama +きぶんがよい;kibungayoi +きぶんがいい;kibungaii +かぜ;kaze +いけませんね;ikemasenne +たいしたことはない;taishitakotohanai +おだいじに;odaijini +どういしまして;douishimashite +りょうりや;ryouriya +や;ya +にほんりょうりや;nihonryouriya +そのまえ;sonomae +いちど;ichido +おはなしする;ohanashisuru +フランス;furansu +びょうき;byouki +かんきょう;kankyou +あう;au +ずつう;zutsuu +きぶんがわるい;kibungawarui +すぐ;sugu +ぶ;bu +いぎりすじん;igirisujin +しんぱい;shinpai +しんぱいする;shinpaisuru +のみもの;nomimono +かってくる;kattekuru +かえり;kaeri +とちゅう;tochuu +オレンジ;orenji +ジュース;juusu +オレンジジュース;orenjijuusu +えんりょ;enryo +えんりょする;enryosuru +りんご;ringo +なし;nashi +かわく;kawaku +のどがかわく;nodogakawaku +みず;mizu +すっかり;sukkari +こおり;koori +まど;mado +あける;akeru +ほう;hou +もうしわけありませんもうしわけありません;moushiwakearimasenmoushiwakearimasen +ちっともない;chittomonai +かまいません;kamaimasen +どうせ;douse +コンサート;konsaato +おばさん;obasan +げしゅくのおばさん;geshukunoobasan +ゆうごはん;yuugohan +たのむ;tanomu +ていねいだ;teineida +しんさつ;shinsatsu +しんさつする;shinsatsusuru +りゅうかん;ryuukan +はやる;hayaru +ちゅうしゃ;chuusha +ちゅうしゃする;chuushasuru +あんせい;ansei +もういちど;mouichido +ようす;yousu +くすり;kusuri +いちにち;ichinichi +かい;kai +のむ;nomu +ひとばんじゅう;hitobanjuu +あせ;ase +あせをかく;asewokaku +けさ;kesa +もう;mou +ずっと;zutto +ひる;hiru +かんだ;kanda +じつに;jitsuni +いっそう;issou +もっとも;mottomo +より;yori +せんしゅう;senshuu +あそぶ;asobu +あそびにいく;asobiniiku +たずねる;tazuneru +さいふ;saifu +わすれる;wasureru +おかね;okane +とる;toru +でんわがかかる;denwagakakaru +おそくなってしまった;osokunatteshimatta +かえって;kaette +ひつようだ;hitsuyouda +しんぱいだ;shinpaida +かんたんだ;kantanda +ふくざつだ;fukuzatsuda +わかりにくい;wakarinikui +しらべる;shiraberu +わりあい;wariai +わりあいに;wariaini +このまえ;konomae +なかやま;nakayama +しょくじ;shokuji +じゅうきょ;juukyo +やはり;yahari +こんなんだ;konnanda +わかい;wakai +どくとくだ;dokutokuda +いっぱんてきだ;ippantekida +したしい;shitashii +あいだ;aida +さんかげつ;sankagetsu +しぜんだ;shizenda +ひょうげん;hyougen +ひょうげんする;hyougensuru +しかた;shikata +しかたがない;shikataganai +いっしょうけんめい;isshoukenmei +どりょく;doryoku +どりょくする;doryokusuru +たとえば;tatoeba +けいとうてきだ;keitoutekida +あつめる;atsumeru +ノート;nooto +ノートする;nootosuru +ほうほう;houhou +こまかい;komakai +そっちょくだ;socchokuda +ざんねんだ;zannenda +じょし;joshi +クラス;kurasu +がっこう;gakkou +よにん;yonin +さらに;sarani +かんじ;kanji +きょうじゅ;kyouju +しゃかいがくしゃ;shakaigakusha +いっしゅうかん;isshuukan +ちしきじん;chishikijin +きんろうしゃ;kinrousha +はば;haba +はばひろい;habahiroi +かいそう;kaisou +こうかん;koukan +こうかんする;koukansuru +こんしゅう;konshuu +おとずれる;otozureru +せいねん;seinen +よか;yoka +スポーツ;supootsu +けんこう;kenkou +まいしゅう;maishuu +バドミントン;badominton +たっきゅう;takkyuu +すいえい;suiei +すいえいぷうる;suieipuuru +こてん;koten +ジャズ;jazu +ビート;biito +ギター;gitaa +つけくわえる;tsukekuwaeru +ねっちゅうする;necchuusuru +いう;iu +ふそく;fusoku +ふそくする;fusokusuru +うんどうふそく;undoufusoku +なりやすい;nariyasui +うんどうじょう;undoujou +トラック;torakku +いち、にかい;ichi_nikai +はしる;hashiru +こうか;kouka +しゅちょう;shuchou +しゅちょうする;shuchousuru +いっぱんのひとびと;ippannohitobito +しせつ;shisetsu +りょうきん;ryoukin +りよう;riyou +りようする;riyousuru +りようできる;riyoudekiru +じつじょう;jitsujou +せつめい;setsumei +せつめいする;setsumeisuru +に、さんにん;ni_sannin +ウインタースポーツ;uintaasupootsu +やすみ;yasumi +ふゆやすみ;fuyuyasumi +スキー;sukii +スケート;sukeeto +にたいして;nitaishite +はんたいする;hantaisuru +しょうせつ;shousetsu +し;shi +しんじる;shinjiru +あかるい;akarui +けんこうだ;kenkouda +くらい;kurai +かなしい;kanashii +さびしい;sabishii +しじん;shijin +とよぶ;toyobu +どくしょ;dokusho +テニス;tenisu +じゆうだ;jiyuuda +ぜいたくだ;zeitakuda +むりだ;murida +ふさわしい;fusawashii +さいこう;saikou +しゅうとく;shuutoku +しゅうとくする;shuutokusuru +しょうらい;shourai +じつようてきだ;jitsuyoutekida +かいわ;kaiwa +やくにたつ;yakunitatsu +さんせい;sansei +さんせいする;sanseisuru +たいせつだ;taisetsuda +ちゅういする;chuuisuru +ちゅういぶかい;chuuibukai +ポーランド;poorando +はじめて;hajimete +もう(+Mengenangabe);mou(+Mengenangabe) +いっかげつ;ikkagetsu +べつの;betsuno +ぶるがりあじん;burugariajin +ドイツ;doitsu +ながされる;nagasareru +しゅうしょく;shuushoku +しゅうしょくする;shuushokusuru +ひさしぶりだ;hisashiburida +よねんせい;yonensei +とうじ;touji +なかの;nakano +ほうそうきょく;housoukyoku +しけん;shiken +しけんをうける;shikenwoukeru +けっか;kekka +おちる;ochiru +とおり;toori +しんぶんしゃ;shinbunsha +ジャーナリスト;jaanarisuto +とくはいん;tokuhain +かつやく;katsuyaku +かつやくする;katsuyakusuru +りかい;rikai +りかいする;rikaisuru +たすける;tasukeru +ぎんこう;ginkou +ぎんこういん;ginkouin +かくじつだ;kakujitsuda +がいこうかん;gaikoukan +たいしかん;taishikan +きょうそう;kyousou +きょうそうする;kyousousuru +りつ;ritsu +かいがい;kaigai +ちゅうざい;chuuzai +ちゅうざいする;chuuzaisuru +しょうしゃ;shousha +しょうしゃいん;shoushain +ながい;nagai +きょうし;kyoushi +かわる;kawaru +ぐたいてきだ;gutaitekida +のうみん;noumin +ふくしまけん;fukushimaken +のうそん;nouson +ろうどう;roudou +ろうどうする;roudousuru +くろう;kurou +くろうする;kurousuru +のうぎょう;nougyou +じゅうじする;juujisuru +いなか;inaka +にあい;niai +さわがしい;sawagashii +はなれる;hanareru +しぜん;shizen +おくる;okuru +きかい;kikai +きかいか;kikaika +すすむ;susumu +らくだ;rakuda +かいぜん;kaizen +かいぜんする;kaizensuru +けっしん;kesshin +けっしんする;kesshinsuru +やまだ;yamada +せいじか;seijika +かいしゃいん;kaishain +ろうどうくみあい;roudoukumiai +かつどう;katsudou +かつどうする;katsudousuru +しんぽてきだ;shinpotekida +ろうどうしゃ;roudousha +じょうけん;jouken +せいこう;seikou +せいこうする;seikousuru +かんこう;kankou +こくりつ;kokuritsu +こくりつとしょかん;kokuritsutoshokan +ひつよう;hitsuyou +こうかんできる;koukandekiru +アクセント;akusento +かわむら;kawamura +こうし;koushi +える;eru +ぶれひとげき;burehitogeki +かのじょ;kanojo +それん(=そびえとしゃかいしゅぎきょうわこくれんぽう);soren(=sobietoshakaishugikyouwakokurenpou) +ぎきょく;gikyoku +ブレヒトのぎきょく;burehitonogikyoku +さくひん;sakuhin +かんしょう;kanshou +かんしょうする;kanshousuru +しばい;shibai +いんしょう;inshou +しゃかい;shakai +しゃかいてきだ;shakaitekida +けいざいてきだ;keizaitekida +あらゆる;arayuru +ぶんや;bun_ya +だんせい;dansei +じょせい;josei +けんり;kenri +ぎむ;gimu +げきだん;gekidan +えんしゅつか;enshutsuka +はいゆう;haiyuu +かい;kai +じょゆう;joyuu +どうりょう;douryou +のもとに;nomotoni +さんか;sanka +さんかする;sankasuru +うらやましい;urayamashii +れい;rei +けっこん;kekkon +けっこんする;kekkonsuru +ふたん;futan +ふたんする;futansuru +おっと;otto +しゃかいしゅぎ;shakaishugi +しゃかいしゅぎこく;shakaishugikoku +つま;tsuma +つづける;tsudukeru +めぐまれる;megumareru +すてる;suteru +しゅふ;shufu +しきりに;shikirini +おもいだす;omoidasu +そうりつ;souritsu +そうりつする;souritsusuru +げきじょう;gekijou +レパートリー;repaatorii +にんき;ninki +にんきのある;ninkinoaru +すぐれる;sugureru +すぐれた;sugureta +えんぎ;engi +かんきゃく;kankyaku +さかんだ;sakanda +はくしゅ;hakushu +はくしゅする;hakushusuru +はんのう;hannou +はんのうする;hannousuru +かんげき;kangeki +かんげきする;kangekisuru +まんいん;man_in +てにいれる;teniireru +にゅうじょうりょう;nyuujouryou +ふくむ;fukumu +すべて;subete +こっか;kokka +オペラ;opera +しょうれい;shourei +しょうれいする;shoureisuru +ざいせいてきだ;zaiseitekida +えんじょ;enjo +えんじょする;enjosuru +おしむ;oshimu +ぶんかしょう;bunkashou +からい;karai +えいぶんがく;eibungaku +ただ;tada +いっぽう;ippou +とくいだ;tokuida +ところが;tokoroga +うしろ;ushiro +もと;moto +ほか;hoka +そと;soto +ところ;tokoro +てつだい;tetsudai +じゅんび;junbi +じゅんびする;junbisuru +ほとんどない;hotondonai +としうえ;toshiue +よゆう;yoyuu +ゆでたまご;yudetamago +ミルク;miruku +すます;sumasu +かたづけ;kataduke +コップ;koppu +ナイフ;naifu +フォーク;fooku +スプーン;supuun +おゆ;oyu +しょっき;shokki +とだな;todana +バター;bataa +れいぞうこ;reizouko +いれる;ireru +しょくたく;shokutaku +ふく;fuku +テーブルセンター;teeburusentaa +かける;kakeru +かびん;kabin +いま;ima +きもち;kimochi +きもちがいい;kimochigaii +たしょう;tashou +よくじつ;yokujitsu +ぜんぶ;zenbu +にちようひん;nichiyouhin +しょくりょうひん;shokuryouhin +スーパーマーケット;suupaamaaketto +きたく;kitaku +きたくする;kitakusuru +おもだ;omoda +こしらえる;koshiraeru +ひまだ;himada +ごちそうする;gochisousuru +たく;taku +しゅるい;shurui +おかず;okazu +みそしる;misoshiru +にく;niku +ジャガイモ;jagaimo +かわ;kawa +むく;muku +にんじん;ninjin +キャベツ;kyabetsu +きる;kiru +ほおれんそう;hoorensou +さとう;satou +しお;shio +こしょう;koshou +あぶら;abura +す;su +ちょうみりょう;choumiryou +おわん;owan +はし;hashi +ならべる;naraberu +そろう;sorou +ひととき;hitotoki +すむ;sumu +かたづける;katadukeru +いやがる;iyagaru +なべ;nabe +フライパン;furaipan +うえの;ueno +ひきうける;hikiukeru +でんき;denki +でんきそうじき;denkisoujiki +いえじゅう;iejuu +したの;shitano +せんたくする;sentakusuru +せんたくもの;sentakumono +ほす;hosu +とりいれる;toriireru +アイロン;airon +アイロンをかける;aironwokakeru +わける;wakeru +ぜんたい;zentai +かんげき;kangeki +つたえる;tsutaeru +タクシー;takushii +さんもんおぺら;sanmon_opera +じょうえん;jouen +じょうえんする;jouensuru +したがって;shitagatte +かさねて;kasanete +において;nioite +にかんして;nikanshite +にかんれんして;nikanrenshite +をもって;womotte +につれて;nitsurete +にしたがって;nishitagatte +におうじて;nioujite +にならんで;ninarande +たいした;taishita +いわゆる;iwayuru +さる;saru +ぞう;zou +くま;kuma +おもしろそうだ;omoshirosouda +いける;ikeru +かこむ;kakomu +おかし;okashi +れこおどてん;rekoodoten +クリスマス;kurisumasu +ひこうき;hikouki +か;ka +せきにん;sekinin +せきにんしゃ;sekininsha +けいゆ;keiyu +くうこう;kuukou +こうくう;koukuu +とぶ;tobu +ちょっこう;chokkou +ちょっこうする;chokkousuru +じどうしゃ;jidousha +むかえる;mukaeru +むかえにいく;mukaeniiku +むかえにくる;mukaenikuru +こうくうけん;koukuuken +りょけん;ryoken +しょるい;shorui +たしかめる;tashikameru +ながめる;nagameru +じさ;jisa +ふしぎだ;fushigida +しゅっこく;shukkoku +しゅっこくする;shukkokusuru +カウンター;kauntaa +かかり;kakari +かかりのひと;kakarinohito +にもつ;nimotsu +じゅうりょう;juuryou +はかる;hakaru +ちょうか;chouka +ちょうかする;choukasuru +はらう;harau +てつづき;tetsuduki +とうじょうけん;toujouken +ぜいかん;zeikan +てにもつ;tenimotsu +けんさ;kensa +けんさする;kensasuru +まちあいしつ;machiaishitsu +とおす;toosu +めをとおす;mewotoosu +きない;kinai +せいけつだ;seiketsuda +とうちゃく;touchaku +とうちゃくする;touchakusuru +のりかえる;norikaeru +スチュアデス;suchuadesu +たつ;tatsu +ゆううつだ;yuuutsuda +はっちゃく;hacchaku +はっちゃくする;hacchakusuru +おおがた;oogata +じぇっとき;jettoki +ら;ra +たいりく;tairiku +とびつづける;tobitsudukeru +こうだいだ;koudaida +こくど;kokudo +みおろす;miorosu +あらためる;aratameru +あらためて;aratamete +なりたくうこう;naritakuukou +ちゃくりく;chakuriku +ちゃくりくする;chakurikusuru +にゅうこく;nyuukoku +にゅうこくする;nyuukokusuru +さしょう;sashou +しらべ;shirabe +ホール;hooru +うけとる;uketoru +でんぽう;denpou +うつ;utsu +でんぽうをうつ;denpouwoutsu +かんけいしゃ;kankeisha +しらせる;shiraseru +しらせてある;shirasetearu +でむかえる;demukaeru +とない;tonai +むかう;mukau +ふりむく;furimuku +あつまる;atsumaru +なごや;nagoya +ほいくしょ;hoikusho +ようちえん;youchien +しょうがっこう;shougakkou +ちゅうがっこう;chuugakkou +こうとうがっこう;koutougakkou +しさつ;shisatsu +しさつする;shisatsusuru +まわる;mawaru +せんもんか;senmonka +きょういくしょう;kyouikushou +げんざい;genzai +はったつ;hattatsu +はったつする;hattatsusuru +はったつした;hattatsushita +しほんしゅぎ;shihonshugi +しょ;sho +ちょうさ;chousa +ちょうさする;chousasuru +くにぐに;kuniguni +くらべる;kuraberu +にかんする;nikansuru +こくみん;kokumin +いっぱん;ippan +しりつ;shiritsu +ちゅうしょく;chuushoku +ともに;tomoni +あんないしゃ;annaisha +おおの;oono +し;shi +りゆう;riyuu +じじつ;jijitsu +とくしゅだ;tokushuda +じじょう;jijou +せいど;seido +すでに;sudeni +ねんげつ;nengetsu +すう;suu +およぶ;oyobu +ほうけんてきだ;houkentekida +ほうけん;houken +でんとう;dentou +ねざす;nezasu +ねつ;netsu +にたいする;nitaisuru +せっきょくてきだ;sekkyokutekida +ひょうか;hyouka +ひょうかする;hyoukasuru +かたち;katachi +あらわれる;arawareru +せいき;seiki +しゅうがく;shuugaku +パーセント;paasento +はなし;hanashi +のぞく;nozoku +アメリカ;amerika +つぐ;tsugu +についで;nitsuide +こうとうきょういく;koutoukyouiku +こえる;koeru +とうけい;toukei +せんしんてきだ;senshintekida +しつ;shitsu +かんれん;kanren +かんれんする;kanrensuru +にかんれんして;nikanrenshite +かかえる;kakaeru +かたる;kataru +しみん;shimin +きほんてきだ;kihontekida +げんそく;gensoku +もとづく;motoduku +のうりょく;nouryoku +おうじる;oujiru +におうじて;nioujite +びょうどうだ;byoudouda +における;niokeru +よさん;yosan +だいがくせい;daigakusei +そう;sou +しゅっしん;shusshin +じょしがくせい;joshigakusei +むりょう;muryou +こうりつ;kouritsu +しゃ;sha +レストラン;resutoran +ちょうしょく;choushoku +ゆうしょく;yuushoku +えんそく;ensoku +なかじま;nakajima +しょぞく;shozoku +しょぞくする;shozokusuru +きょうしょくいん;kyoushokuin +をはじめ;wohajime +じむ;jimu +じむいん;jimuin +ひしょ;hisho +だいたすう;daitasuu +きょうこく;kyoukoku +くたびれる;kutabireru +きがつく;kigatsuku +は;ha +かお;kao +みのまわりひん;minomawarihin +かるい;karui +てさげぶくろ;tesagebukuro +くもる;kumoru +しゅうごう;shuugou +しゅうごうする;shuugousuru +ほぼ;hobo +ざせき;zaseki +すわる;suwaru +はっしゃ;hassha +はっしゃする;hasshasuru +いえなみ;ienami +たえる;taeru +さゆう;sayuu +りょうがわ;ryougawa +むぎ;mugi +はたけ;hatake +いちめん;ichimen +ひろがる;hirogaru +いちご;ichigo +いちごばたけ;ichigobatake +しゅうかく;shuukaku +しゅうかくする;shuukakusuru +じき;jiki +こい;koi +は;ha +きる;kiru +しゃがむ;shagamu +み;mi +つむ;tsumu +かご;kago +しゃべる;shaberu +ねむい;nemui +ねむる;nemuru +いねむりする;inemurisuru +だいにじせかいたいせん;dainijisekaitaisen +ちょくぜん;chokuzen +かいほう;kaihou +かいほうする;kaihousuru +ぐん;gun +ナチ;nachi +ぐんたい;guntai +せんとう;sentou +せんとうする;sentousuru +せんし;senshi +せんしする;senshisuru +へいし;heishi +とむらう;tomurau +ひ;hi +し;shi +こっきょう;kokkyou +こくせき;kokuseki +しゅつにゅうこく;shutsunyuukoku +いる;iru +はし;hashi +わたる;wataru +もり;mori +ほそい;hosoi +ロマンチックだ;romanchikkuda +ブルーベリー;buruuberii +つかり;tsukari +かんじる;kanjiru +みずうみ;mizuumi +かいすいぎ;kaisuigi +しゃしん;shashin +しゃしんする;shashinsuru +ボール;booru +なげる;nageru +みおくる;miokuru +そんなに;sonnani +こっかい;kokkai +ぎかい;gikai +ひらく;hiraku +いってい;ittei +がく;gaku +ぜいきん;zeikin +だけ;dake +せんきょ;senkyo +せんきょする;senkyosuru +せんきょけん;senkyoken +おとこ;otoko +おんな;onna +しゅうぎいん;shuugiin +さんぎいん;sangiin +こうせい;kousei +こうせいする;kouseisuru +じょうやく;jouyaku +みとめる;mitomeru +そうりだいじん;souridaijin +しめい;shimei +しめいする;shimeisuru +さいけつ;saiketsu +さいけつする;saiketsusuru +ぎいん;giin +はんすう;hansuu +さんぶんのに;sanbunnoni +ぶん;bun +けっせき;kesseki +けっせきする;kessekisuru +かいぎ;kaigi +ほんかいぎ;honkaigi +むこう;mukou +きんきゅうだ;kinkyuuda +りんじ;rinji +ぎけつ;giketsu +たすうけつ;tasuuketsu +ほうしき;houshiki +どうすう;dousuu +ぎちょう;gichou +けってい;kettei +けっていする;ketteisuru +による;niyoru +ちょくせつせんきょ;chokusetsusenkyo +ぎせき;giseki +にんき;ninki +ごとに;gotoni +かいせん;kaisen +かいせんする;kaisensuru +ぜんこく;zenkoku +せんきょく;senkyoku +ふ;fu +とうきょうと;toukyouto +く;ku +おおさかふ;oosakafu +じゆうみんしゅとうじみんとう;jiyuuminshutoujimintou +しゃかいとう;shakaitou +きょうさんとう;kyousantou +こうめいとう;koumeitou +みんしゃとう;minshatou +せいとう;seitou +だいひょう;daihyou +だいひょうする;daihyousuru +あわてる;awateru +ニュアンス;nyuansu +ぶん;bun +しゅうちゅうりょく;shuuchuuryoku +どうけん;douken +まえかわ;maekawa +ふじん;fujin +たのしみ;tanoshimi +ちちおや;chichioya +しぬ;shinu +わかれる;wakareru +しにわかれる;shiniwakareru +したがう;shitagau +かこ;kako +じっさい;jissai +そういう;souiu +いっしょう;isshou +がまん;gaman +がまんする;gamansuru +すみ;sumi +なく;naku +けっしてない;kesshitenai +じんせい;jinsei +どくりつ;dokuritsu +どくりつする;dokuritsusuru +にんげん;ningen +あつかう;atsukau +ぎのう;ginou +けつい;ketsui +けついする;ketsuisuru +こんなん;konnan +ほんやく;hon_yaku +ほんやくする;hon_yakusuru +アルバイト;arubaito +アルバイトする;arubaitosuru +もとめる;motomeru +いろんな;ironna +べんがく;bengaku +がか;gaka +ば;ba +しりあう;shiriau +はげます;hagemasu +たすけあう;tasukeau +くらす;kurasu +いらい;irai +しゅっぱん;shuppan +しゅっぱんする;shuppansuru +きょうりょく;kyouryoku +きょうりょくする;kyouryokusuru +おかげで;okagede +おかげです;okagedesu +ほしょう;hoshou +ほしょうする;hoshousuru +せんご;sengo +しんしゅつする;shinshutsusuru +けいこう;keikou +たしかだ;tashikada +めだつ;medatsu +だいじん;daijin +ぜんめんてきだ;zenmentekida +のこす;nokosu +れいがいてきだ;reigaitekida +いぜん;izen +いみ;imi +まいつき;maitsuki +おんがくかい;ongakukai +そうい;soui +めいじ;meiji +けんきゅうしゃ;kenkyuusha +あるいは;aruiha +ひょうろんか;hyouronka +さっか;sakka +ろんぶん;ronbun +きんべんだ;kinbenda +れいぎ;reigi +ただしい;tadashii +れいぎただしい;reigitadashii +ちつじょ;chitsujo +まもる;mamoru +かがくてきだ;kagakutekida +ごうりてきだ;gouritekida +しそう;shisou +せいしん;seishin +そんちょう;sonchou +そんちょうする;sonchousuru +しゅうきょうてきだ;shuukyoutekida +かんてん;kanten +かんさつ;kansatsu +かんさつする;kansatsusuru +たいしょう;taishou +ろんじる;ronjiru +いったい;ittai +まさに;masani +げんじつ;genjitsu +ちゅうもく;chuumoku +ちゅうもくする;chuumokusuru +たんじゅんだ;tanjunda +おうべいじん;oubeijin +ときとして;tokitoshite +きょくたんだ;kyokutanda +むじゅん;mujun +むじゅんする;mujunsuru +たいしょうてきだ;taishoutekida +めん;men +どうじ;douji +ルース・ベネディクト;ruusu_benedikuto +きく;kiku +かたな;katana +こうどうする;koudousuru +ぶんせき;bunseki +ぶんせきする;bunsekisuru +はあくする;haakusuru +せいかく;seikaku +ぶぶん;bubun +いんしょうてきだ;inshoutekida +すなわち;sunawachi +にすると;nisuruto +けんかする;kenkasuru +おとなしい;otonashii +いばる;ibaru +あいて;aite +ばかにする;bakanisuru +がんこだ;gankoda +じゅんのうせい;junnousei +じゅうじゅんだ;juujunda +たにん;tanin +かんしょう;kanshou +かんしょうする;kanshousuru +はら;hara +はらをたてる;harawotateru +ちゅうじつだ;chuujitsuda +かんようだ;kan_youda +ふちゅうじつだ;fuchuujitsuda +いじわるだ;ijiwaruda +ゆうき;yuuki +おくびょう;okubyou +ほしゅてきだ;hoshutekida +よろこんで;yorokonde +うけいれる;ukeireru +そうご;sougo +まったく;mattaku +はんする;hansuru +こじん;kojin +おおかれすくなかれ;ookaresukunakare +けいせい;keisei +けいせいする;keiseisuru +こんきょ;konkyo +いずれにしても;izurenishitemo +こうぞう;kouzou +きんだいか;kindaika +きんだいかする;kindaikasuru +かてい;katei +むすびつく;musubitsuku +ぜんじつ;zenjitsu +かさねる;kasaneru +かさねて;kasanete +じしん;jishin +ていあん;teian +ていあんする;teiansuru +がいらいご;gairaigo +みみ;mimi +みみにする;miminisuru +のりもの;norimono +こうこく;koukoku +くわえる;kuwaeru +とは;toha +せいしつ;seishitsu +もと;moto +ぼこくご;bokokugo +かんぜんだ;kanzenda +さす;sasu +なかば;nakaba +ぽるとがるじん;porutogarujin +おらんだじん;orandajin +せっしょく;sesshoku +せっしょくする;sesshokusuru +ぶんめい;bunmei +じぶつ;jibutsu +もたらす;motarasu +いご;igo +おうべい;oubei +かりいれる;kariireru +いふく;ifuku +いがく;igaku +イタリア;itaria +いたりあご;itariago +こうぎょう;kougyou +しょうぎょう;shougyou +しゅうきょう;shuukyou +はんい;han_i +ぶんぷ;bunpu +ぶんぷする;bunpusuru +きんだい;kindai +りょういき;ryouiki +むける;mukeru +いっち;icchi +いっちする;icchisuru +あめりかえいご;amerikaeigo +あっとうてきだ;attoutekida +びよういん;biyouin +かみ;kami +よごれる;yogoreru +シャンプー;shanpuu +ききかえす;kikikaesu +ヘアー;heaa +ほんらい;honrai +うしなう;ushinau +つうようする;tsuuyousuru +おうかがいする;oukagaisuru +しゅうにゅう;shuunyuu +ぞうか;zouka +ぞうかする;zoukasuru +かんげい;kangei +かんげいする;kangeisuru +ひかんする;hikansuru +たちば;tachiba +うたがう;utagau +きもちをわるくする;kimochiwowarukusuru +とか;toka +ですから;desukara +えんりょぶかい;enryobukai +じしん;jishin +そだつ;sodatsu +カーテン;kaaten +まっしろだ;masshiroda +つもる;tsumoru +ふりつづく;furitsuduku +に、さんねん;ni_sannen +セントラル・ヒーティング;sentoraru_hiitingu +だんぼう;danbou +しゅっきん;shukkin +しゅっきんする;shukkinsuru +ねぼう;nebou +ねぼうする;nebousuru +せんめんじょ;senmenjo +ひげをそる;higewosoru +おおいそぎ;ooisogi +ネクタイをしめる;nekutaiwoshimeru +めんどうだ;mendouda +ワイシャツ;waishatsu +セーター;seetaa +せびろ;sebiro +うわぎ;uwagi +ながぐつ;nagagutsu +はく;haku +まにあう;maniau +あわてて;awatete +おちつく;ochitsuku +いやだ;iyada +かみをとかす;kamiwotokasu +けしょう;keshou +けしょうする;keshousuru +みじたく;mijitaku +ととのえる;totonoeru +きこえる;kikoeru +ろうか;rouka +にがわらい;nigawarai +にがわらいする;nigawaraisuru +こし;koshi +て;te +あてる;ateru +いたそうだ;itasouda +であう;deau +よこぎる;yokogiru +ゆうびんきょく;yuubinkyoku +こおる;kooru +ころぶ;korobu +ズボン;zubon +ちこく;chikoku +ちこくする;chikokusuru +れんらく;renraku +れんらくする;renrakusuru +むり;muri +むりする;murisuru +ちゅうこく;chuukoku +ちゅうこくする;chuukokusuru +どんどん;dondon +いけない;ikenai +きをつける;kiwotsukeru +かさをさす;kasawosasu +ろうじん;roujin +すがた;sugata +いがいだ;igaida +いたむ;itamu +たばこ;tabako +すう;suu +たばこをすう;tabakowosuu +たいくつだ;taikutsuda +おもいで;omoide +しぜんかがく;shizenkagaku +はなしかける;hanashikakeru +ほうそう;housou +ほうそうする;housousuru +テレビほうそう;terebihousou +かいし;kaishi +かいしする;kaishisuru +しょうわ;shouwa +ばくはつてきだ;bakuhatsutekida +いきおい;ikioi +いいすぎ;iisugi +そくど;sokudo +ふきゅう;fukyuu +ふきゅうする;fukyuusuru +ばんめ;banme +カラーテレビ;karaaterebi +マスコミ;masukomi +しゅだん;shudan +はたす;hatasu +やくわり;yakuwari +やくわりをはたす;yakuwariwohatasu +かわる;kawaru +きゅうそくだ;kyuusokuda +たかまる;takamaru +こうしき;koushiki +はっぴょう;happyou +はっぴょうする;happyousuru +せたい;setai +ぶんかてきだ;bunkatekida +およぼす;oyobosu +むしする;mushisuru +にっぽんほうそうきょうかい;nipponhousoukyoukai +せんでん;senden +せんでんする;sendensuru +しゅうにゅうげん;shuunyuugen +みんかん;minkan +てれびきょく;terebikyoku +ばんぐみ;bangumi +とならんで;tonarande +しちょうりつ;shichouritsu +れんぞく;renzoku +れんぞくする;renzokusuru +ちゅうし;chuushi +ちゅうしする;chuushisuru +くりかえす;kurikaesu +まれだ;mareda +いち;ichi +しめる;shimeru +たいど;taido +ていど;teido +はんだん;handan +はんだんする;handansuru +うちのこ;uchinoko +ふまん;fuman +ごらく;goraku +むだだ;mudada +ついやす;tsuiyasu +なげく;nageku +ひなん;hinan +ひなんする;hinansuru +ねんれい;nenrei +せいべつ;seibetsu +ふだん;fudan +へいきん;heikin +へいきんする;heikinsuru +へいきんして;heikinshite +ひかく;hikaku +ひかくする;hikakusuru +ニュース;nyuusu +かいせつ;kaisetsu +かいせつする;kaisetsusuru +ほうどう;houdou +ほうどうする;houdousuru +ドラマ;dorama +けいおんがく;keiongaku +クイズ;kuizu +はなす;hanasu +つけはなす;tsukehanasu +けす;kesu +めをやる;mewoyaru +おきゃくさん;okyakusan +きにする;kinisuru +こうけい;koukei +こしょう;koshou +こしょうする;koshousuru +ものたりない;monotarinai +あつい;atsui +めいわく;meiwaku +めいわくをかける;meiwakuwokakeru +からだ;karada +からだじゅう;karadajuu +かぜをひく;kazewohiku +しない;shinai +だんち;danchi +ひっこす;hikkosu +きんじょ;kinjo +ごうかん;goukan +きのどくだ;kinodokuda +うわさ;uwasa +うわさする;uwasasuru +かおみしり;kaomishiri +ぎゃくだ;gyakuda +したしむ;shitashimu +したしみやすい;shitashimiyasui +かいだん;kaidan +おもい;omoi +かいものぶくろ;kaimonobukuro +おうだん;oudan +おうだんする;oudansuru +ほどう;hodou +おうだんほどう;oudanhodou +としより;toshiyori +あぶない;abunai +そのたびに;sonotabini +ありがたい;arigatai +かいかつだ;kaikatsuda +ちょうし;choushi +じたく;jitaku +まねく;maneku +こころ;kokoro +こころをうつ;kokorowoutsu +いきいきと;ikiikito +きがする;kigasuru +せんそうちゅう;sensouchuu +ひろしま;hiroshima +げんばく;genbaku +おとす;otosu +こうかふこうか;koukafukouka +さとがえり;satogaeri +ばくだん;bakudan +くさ;kusa +はかい;hakai +はかいする;hakaisuru +なんとか;nantoka +おそろしい;osoroshii +きおく;kioku +きおくする;kiokusuru +くろい;kuroi +やける;yakeru +こげる;kogeru +はだか;hadaka +したい;shitai +あちらこちら;achirakochira +ころがる;korogaru +よぶ;yobu +ははおや;hahaoya +さけぶ;sakebu +きみわるい;kimiwarui +ひびく;hibiku +のはら;nohara +やけのはら;yakenohara +しょうそく;shousoku +つかむ;tsukamu +いっしゅん;isshun +ざいさん;zaisan +なくす;nakusu +ひげき;higeki +にどとふたたびない;nidotofutatabinai +かたい;katai +いきのこる;ikinokoru +へいわ;heiwa +いきる;ikiru +いぎ;igi +かく;kaku +エネルギー;enerugii +かくえねるぎい;kakuenerugii +ころす;korosu +しよう;shiyou +しようする;shiyousuru +ゆたかだ;yutakada +しあわせだ;shiawaseda +へいき;heiki +せいぞう;seizou +せいぞうする;seizousuru +じっけん;jikken +じっけんする;jikkensuru +きんし;kinshi +きんしする;kinshisuru +もくてき;mokuteki +がい;gai +がいする;gaisuru +こうけん;kouken +こうけんする;koukensuru +えらい;erai +あさねぼう;asanebou +あさねぼうする;asanebousuru +めがさめる;megasameru +おこす;okosu +かぎる;kagiru +にかぎって;nikagitte +とまる;tomaru +ドア;doa +のせる;noseru +しつれいだ;shitsureida +おろす;orosu +せかいてきだ;sekaitekida +とどく;todoku +へんだ;henda +きがへんだ;kigahenda +ぶり;buri +あつさ;atsusa +うごく;ugoku +にっちゅう;nicchuu +たいよう;taiyou +ひかり;hikari +とぼしい;toboshii +てる;teru +にっこう;nikkou +にっこうよく;nikkouyoku +しょうご;shougo +よう;you +ようがある;yougaaru +ひとどおり;hitodoori +まるで;marude +きゅうか;kyuuka +みなみ;minami +ようい;youi +よういする;youisuru +ふるさと;furusato +しま;shima +とう;tou +みなと;minato +みなとまち;minatomachi +あさい;asai +およぎ;oyogi +すいちゅう;suichuu +ひっぱる;hipparu +はな;hana +しおからい;shiokarai +おこる;okoru +おおわらい;oowarai +おおわらいする;oowaraisuru +ゆめ;yume +すなはま;sunahama +すな;suna +ほる;horu +いし;ishi +バレーボール;bareebooru +かわらない;kawaranai +ひがし;higashi +もよう;moyou +そらもよう;soramoyou +あやしい;ayashii +まっくろだ;makkuroda +くも;kumo +かみなり;kaminari +おおつぶ;ootsubu +かんし;kanshi +かんしする;kanshisuru +きがえる;kigaeru +まとめる;matomeru +らいう;raiu +ふとい;futoi +にげこむ;nigekomu +かいがん;kaigan +とおる;tooru +とおりかかる;toorikakaru +きけんだ;kikenda +ますます;masumasu +にし;nishi +すこしずつ;sukoshizutsu +はれあげる;hareageru +すむ;sumu +むしあつさ;mushiatsusa +そうぞう;souzou +そうぞうする;souzousuru +てんこう;tenkou +わすれものをする;wasuremonowosuru +かばん;kaban +もくひょう;mokuhyou +とうぜんだ;touzenda +うっかりする;ukkarisuru +かねもち;kanemochi +あきれる;akireru +とにかく;tonikaku +ごじぶん;gojibun +じしん;jishin +ことわざ;kotowaza +よのなか;yononaka +かじ;kaji +おやじ;oyaji +むしろ;mushiro +どろぼう;dorobou +じょうだん;joudan +ともかく;tomokaku +それはともかく;sorehatomokaku +ぎじゅつ;gijutsu +よこく;yokoku +よこくする;yokokusuru +よぼう;yobou +よぼうする;yobousuru +かんとうだいしんさい;kantoudaishinsai +だいきぼだ;daikiboda +さいがい;saigai +たいけん;taiken +たいけんする;taikensuru +こわさ;kowasa +ちんぼつ;chinbotsu +ちんぼつする;chinbotsusuru +ほろぶ;horobu +テーマ;teema +ベストセラー;besutoseraa +ぽおらんどじん;poorandojin +いよくてきだ;iyokutekida +ゆれる;yureru +ねまき;nemaki +とびだす;tobidasu +りょかん;ryokan +あんぜんだ;anzenda +ぐらぐらと;guragurato +さすが;sasuga +とっさに;tossani +きんちょう;kinchou +きんちょうする;kinchousuru +ひなん;hinan +ひなんする;hinansuru +たちあがる;tachiagaru +へいきだ;heikida +だいじょうぶだ;daijoubuda +くらい;kurai +アパート;apaato +たおれる;taoreru +とうきょうじゅう;toukyoujuu +ひ;hi +たすかる;tasukaru +そこ;soko +はし;hashi +さんみゃく;sanmyaku +つらなる;tsuranaru +かざん;kazan +たえず;taezu +けむり;kemuri +げんいん;gen_in +ふじさん;fujisan +はこね;hakone +おんせん;onsen +うむ;umu +うみだす;umidasu +わけ;wake +わけです;wakedesu +あばれる;abareru +くるう;kuruu +あばれくるう;abarekuruu +たほう;tahou +おそれ;osore +かんかく;kankaku +あいじょう;aijou +いだく;idaku +しみじみと;shimijimito +ゆめをみる;yumewomiru +くろ;kuro +なんかこく;nankakoku +だいじしん;daijishin +まどう;madou +こわれる;kowareru +たすけ;tasuke +のむ;nomu +まっくらだ;makkurada +おく;oku +わらいごえ;waraigoe +さんぎょう;sangyou +めざましい;mezamashii +ほうめん;houmen +ぼうえき;boueki +ぼうえきかいしゃ;bouekikaisha +あおき;aoki +かわさき;kawasaki +れっしゃ;ressha +はやい;hayai +ここち;kokochi +のりごこちがいい;norigokochigaii +のりごこちがわるい;norigokochigawarui +ガラス;garasu +とくべつ;tokubetsu +しゃない;shanai +にほんじゅう;nihonjuu +かっき;kakki +みちる;michiru +しょうじきだ;shoujikida +てっこうぎょう;tekkougyou +ぞうせんぎょう;zousengyou +せいさん;seisan +せいさんする;seisansuru +のびる;nobiru +さん;san +しげん;shigen +せきゆ;sekiyu +げんりょう;genryou +ゆにゅう;yunyuu +ゆにゅうする;yunyuusuru +たよる;tayoru +かこう;kakou +かこうする;kakousuru +ゆしゅつ;yushutsu +ゆしゅつする;yushutsusuru +れいがい;reigai +ほら;hora +けんせつ;kensetsu +けんせつする;kensetsusuru +けんせつちゅう;kensetsuchuu +こうじょう;koujou +ひろげる;hirogeru +さっそく;sassoku +だいこうじょう;daikoujou +あんぜん;anzen +せいけつ;seiketsu +だいいちだ;daiichida +このむ;konomu +おくに;okuni +きかいこうぎょう;kikaikougyou +せんい;sen_i +せんいこうぎょう;sen_ikougyou +かがくこうぎょう;kagakukougyou +すいじゅん;suijun +りょう;ryou +こうじょう;koujou +こうじょうする;koujousuru +こくえい;kokuei +りえき;rieki +そんみん;sonmin +けんしんてきだ;kenshintekida +ほね;hone +ほねおる;honeoru +ひょうばん;hyouban +ひょうばんだ;hyoubanda +もはん;mohan +そんけい;sonkei +そんけいする;sonkeisuru +なかがよい;nakagayoi +なかがわるい;nakagawarui +かわ;kawa +つる;tsuru +らんぼうだ;ranbouda +びんぼう;binbou +びんぼうだ;binbouda +しゃかいがく;shakaigaku +とうほくだいがく;touhokudaigaku +いがくぶ;igakubu +ゆうじょう;yuujou +まなぶ;manabu +ちしき;chishiki +まじめだ;majimeda +しあわせ;shiawase +しんけんだ;shinkenda +ぎろん;giron +ぎろんする;gironsuru +げか;geka +せんだい;sendai +しゃかいか;shakaika +じょうぶだ;joubuda +ほえる;hoeru +ほえっておく;hoetteoku +けっかく;kekkaku +びょうじょう;byoujou +えいよう;eiyou +えいようがある;eiyougaaru +しょくもつ;shokumotsu +じゅうぶんだ;juubunda +せいよう;seiyou +せいようする;seiyousuru +しっそだ;shissoda +かけい;kakei +ふかのうだ;fukanouda +つきあい;tsukiai +びょういん;byouin +にゅういん;nyuuin +にゅういんする;nyuuinsuru +もともと;motomoto +げっきゅう;gekkyuu +しゃかいほしょう;shakaihoshou +ふじゅうぶんだ;fujuubunda +ちょくせつだ;chokusetsuda +だげき;dageki +ちょきん;chokin +ちょきんする;chokinsuru +なめる;nameru +ひよう;hiyou +たいいん;taiin +たいいんする;taiinsuru +まかせる;makaseru +のぞむ;nozomu +へんじ;henji +へんじする;henjisuru +とどける;todokeru +かんしゃ;kansha +かんしゃする;kanshasuru +おれい;orei +おれいをいう;oreiwoiu +さえ;sae +すなおだ;sunaoda +これこそ;korekoso +きたない;kitanai +そういうわけにはいかない;souiuwakenihaikanai +ぼんやりと;bon_yarito +おう;ou +ひさしぶり;hisashiburi +パートナー;paatonaa +じっこう;jikkou +じっこうする;jikkousuru +ちかいうちに;chikaiuchini +ゆいしょ;yuisho +ゆいしょある;yuishoaru +よやく;yoyaku +よやくする;yoyakusuru +おんなしゅじん;onnashujin +おじぎ;ojigi +おじぎする;ojigisuru +もうける(1-dan);moukeru(1-dan) +みょうごにち;myougonichi +まことに;makotoni +やけい;yakei +テーブル;teeburu +そつろん;sotsuron +どだい;dodai +さんこうしりょう;sankoushiryou +ぺえじ;peeji +みょうばん;myouban +すべて;subete +おしおきする;oshiokisuru +おしおき;oshioki +ゆるす;yurusu +どうしよう;doushiyou +なるほど;naruhodo +てんいん;ten_in +てんしゅ;tenshu +てんちょう;tenchou +かっこいい;kakkoii +すてき;suteki +だいじょうぶ;daijoubu +ちくしょう;chikushou +きさま;kisama +おのれ;onore +スケベ;sukebe +ごちそうさまでした;gochisousamadeshita +おじゃまします;ojamashimasu +いらっしゃい;irasshai +いらっしゃいませ;irasshaimase +どうぞ、こちらへ;douzo_kochirahe +どうぞおかけください;douzookakekudasai +なんで;nande +よく;yoku +おきて;okite +わかい;wakai +おおかみ;ookami +ずっと;zutto +れい;rei +かいとうようし;kaitouyoushi +そうこう;soukou +はしりがき;hashirigaki +ざっそう;zassou +そうしょ;sousho +くさち;kusachi +たすう;tasuu +ためん;tamen +おおすぎる;oosugiru +たいし;taishi +たいよう;taiyou +ふとじ;futoji +たいかく;taikaku +ふうてい;fuutei +からだつき;karadatsuki +どだい;dodai +たいふう;taifuu +ちほう;chihou +ちか;chika +きじ;kiji +ようすいち;yousuichi +でんち;denchi +ふるいけ;furuike +ちしき;chishiki +ちせい;chisei +しりあい;shiriai +ちくざい;chikuzai +たけだ;takeda +たけやぶ;takeyabu +ちゃちゃ;chacha +さか;saka +ちゅうしょく;chuushoku +ちゅうこうせい;chuukousei +ひるま;hiruma +せいちょう;seichou +かいちょう;kaichou +ながいき;nagaiki +はくちょう;hakuchou +やちょう;yachou +とりい;torii +ちょうしょく;choushoku +あさひ;asahi +ちょうてい;choutei +つうこう;tsuukou +つうきん;tsuukin +おおどおり;oodoori +してい;shitei +でし;deshi +きょうだい;kyoudai +てんいん;ten_in +よみせ;yomise +たなだて;tanadate +てんせん;tensen +とくてん;tokuten +じゅうてん;juuten +でんきゅう;denkyuu +でんりゅう;denryuu +だいとう;daitou +ぐんとう;guntou +こがたな;kogatana +とうみん;toumin +とうき;touki +ふゆしょうぐん;fuyushougun +そうとう;soutou +とうにん;tounin +てあて;teate +とうよう;touyou +ちゅうとう;chuutou +ひがしがわ;higashigawa +かいとう;kaitou +とうあん;touan +くちごたえ;kuchigotae +とうこつ;toukotsu +きち;kichi +きよ;kiyo +よせなみ;yosenami +たちよる;tachiyoru +きそく;kisoku +じょうぎ;jougi +だいきぼ;daikibo +ぎじゅつ;gijutsu +ぎし;gishi +えんぎ;engi +しゅぎ;shugi +ぎり;giri +いぎ;igi +ぎゃっこう;gyakkou +ぎゃくせつ;gyakusetsu +はんぎゃく;hangyaku +えいきゅう;eikyuu +くおん;kuon +ひさしぶり;hisashiburi +きゅうゆう;kyuuyuu +きゅうは;kyuuha +きゅうしき;kyuushiki +きょじゅう;kyojuu +じゅうきょ;juukyo +いどころ;idokoro +きょか;kyoka +とっきょ;tokkyo +てもと;temoto +こっきょう;kokkyou +けいだい;keidai +きょうかいせん;kyoukaisen +こうふん;koufun +ふっこう;fukkou +きょうみぶかい;kyoumibukai +へいきん;heikin +きんとう;kintou +ふきんこう;fukinkou +だんぼう;danbou +だんりゅう;danryuu +だんとう;dantou +かちかん;kachikan +ねびき;nebiki +ちゅうさい;chuusai +なこうど;nakoudo +なかよく;nakayoku +うちゅうせん;uchuusen +ちゅうがえり;chuugaeri +ちゅうのり;chuunori +ちゅうじつ;chuujitsu +ちゅうせい;chuusei +ちゅうこく;chuukoku +ちょしゃ;chosha +ちょめい;chomei +めいちょ;meicho +かんちょう;kanchou +ちょうれい;chourei +かんきょうちょう;kankyouchou +ちょうこう;choukou +ぜんちょう;zenchou +おくちょう;okuchou +ちょうてん;chouten +ちょうじょう;choujou +ちょうだい;choudai +ちょうりゅう;chouryuu +しおみず;shiomizu +しおどき;shiodoki +ちんぎん;chingin +うんちん;unchin +やちん;yachin +ずつう;zutsuu +いたで;itade +つうせつ;tsuusetsu +はってん;hatten +すいじょう;suijou +まるおもり;maruomori +ずいひつ;zuihitsu +ずいこういん;zuikouin +こつずい;kotsuzui +のうずい;nouzui +しんずい;shinzui +すうじく;suujiku +すうよう;suuyou +ちゅうすう;chuusuu +すうはい;suuhai +すうこう;suukou +すうけい;suukei +すえおく;sueoku +すえもの;suemono +すえつけ;suetsuke +すぎあや;sugiaya +すぎがき;sugigaki +すぎなみき;suginamiki +うねだて;unedate +にせ;nise +うねおり;uneori +あさせ;asase +せと;seto +せともの;setomono +せつれつ;setsuretsu +せっそく;sessoku +せっとう;settou +ひょうせつ;hyousetsu +せっしゅ;sesshu +せっしゅ;sesshu +せっしょう;sesshou +せっせい;sessei +せんにん;sennin +しゅせん;shusen +すいせん;suisen +さけ;sake +みほん;mihon +みほんいち;mihon_ichi +てんじ;tenji +てんじする;tenjisuru +かいじょう;kaijou +さいしん;saishin +でんきこうぎょう;denkikougyou +でんし;denshi +でんしこうぎょう;denshikougyou +せいひん;seihin +かがくぎじゅつ;kagakugijutsu +こうりゅう;kouryuu +ふかまる;fukamaru +ひとことでいえば;hitokotodeieba +いとなむ;itonamu +しょとく;shotoku +こくみんしょとく;kokuminshotoku +りんぎょう;ringyou +ちくさんぎょう;chikusangyou +すいさんぎょう;suisangyou +だいじ;daiji +こうぎょう;kougyou +せいぞうぎょう;seizougyou +けんせつぎょう;kensetsugyou +うんゆ;un_yu +つうしん;tsuushin +うんゆつうしんぎょう;un_yutsuushingyou +きんゆう;kin_yuu +ほけん;hoken +きんゆうほけんぎょう;kin_yuuhokengyou +こうむ;koumu +じゆうぎょう;jiyuugyou +さあびすぎょう;saabisugyou +ひじゅう;hijuu +とうぶん;toubun +よち;yochi +のうさんぶつ;nousanbutsu +いぞん;izon +いぞんする;izonsuru +けいこうぎょう;keikougyou +じゅうかがくこうぎょう;juukagakukougyou +じゅうしする;juushisuru +にともなう;nitomonau +ぶもん;bumon +こよう;koyou +せんぜん;senzen +かくしん;kakushin +ぎじゅつかくしん;gijutsukakushin +せいみつだ;seimitsuda +せいのう;seinou +きょうか;kyouka +きょうかする;kyoukasuru +たんちょうだ;tanchouda +にくたいてきだ;nikutaitekida +じゅうろうどう;juuroudou +つねに;tsuneni +じゅくれん;jukuren +じゅくれんする;jukurensuru +のうりつ;nouritsu +おもんじる;omonjiru +ちゅうねん;chuunen +くんれん;kunren +くんれんする;kunrensuru +せいふ;seifu +けいえい;keiei +けいえいする;keieisuru +けいえいしゃ;keieisha +ようきゅう;youkyuu +ようきゅうする;youkyuusuru +しつぎょう;shitsugyou +しつぎょうする;shitsugyousuru +ふきょう;fukyou +しりょう;shiryou +くせ;kuse +むちゅうだ;muchuuda +かぞえる;kazoeru +めいわくだ;meiwakuda +よう;you +センチメンタルだ;senchimentaruda +さわる;sawaru +くちにあう;kuchiniau +じゅんじょ;junjo +ぎょうぎ;gyougi +おと;oto +おとをたてる;otowotateru +とうなん;tounan +じけん;jiken +すじ;suji +すいせん;suisen +すいせんする;suisensuru +いちりゅう;ichiryuu +しゅうい;shuui +せつび;setsubi +サービス;saabisu +このつぎ;konotsugi +まんぞく;manzoku +まんぞくする;manzokusuru +うけつけ;uketsuke +がいじん;gaijin +くび;kubi +かしげる;kashigeru +じこく;jikoku +みぶん;mibun +あきらかだ;akirakada +ほんにん;honnin +しはい;shihai +しはいする;shihaisuru +しはいにん;shihainin +きそく;kisoku +おこる;okoru +しんよう;shin_you +しんようする;shin_yousuru +にかかわる;nikakawaru +まざまざと;mazamazato +あせる;aseru +ひきだし;hikidashi +ようふくだんす;youfukudansu +みあたる;miataru +いんさつ;insatsu +いんさつする;insatsusuru +いんさつぶつ;insatsubutsu +しなもの;shinamono +さいわい;saiwai +げんきん;genkin +みにつける;minitsukeru +さいなん;sainan +まぬがれる;manugareru +もうしわけない;moushiwakenai +げんどう;gendou +あやしい;ayashii +みかける;mikakeru +けいさつ;keisatsu +フロント;furonto +てはいする;tehaisuru +ぬすむ;nusumu +かち;kachi +けいかん;keikan +やってくる;yattekuru +ひがい;higai +じょうきょう;joukyou +はんにん;hannin +つかまえる;tsukamaeru +はっけん;hakken +はっけんする;hakkensuru +よくあさ;yokuasa +しんらい;shinrai +しんらいする;shinraisuru +きょうちょう;kyouchou +きょうちょうする;kyouchousuru +しょち;shochi +しゃ;sha +きんがく;kingaku +せいきゅう;seikyuu +せいきゅうする;seikyuusuru +かくにん;kakunin +かくにんする;kakuninsuru +かんじょう;kanjou +かんじょうする;kanjousuru +さしひく;sashihiku +さ;sa +さがく;sagaku +はらいもどす;haraimodosu +さわぐ;sawagu +あやまる;ayamaru +せっかく;sekkaku +ようやく;youyaku +じこにあう;jikoniau +ぶつかる;butsukaru +はこぶ;hakobu +はこびこむ;hakobikomu +ぶつける;butsukeru +みまう;mimau +うつる;utsuru +つい;tsui +べッド;beddo +ねかす;nekasu +つうしんしゃ;tsuushinsha +げんこう;genkou +しきゅう;shikyuu +そくたつ;sokutatsu +こうくうびん;koukuubin +めいれい;meirei +めいれいする;meireisuru +ほうしん;houshin +まとまる;matomaru +おもわす;omowasu +ひにち;hinichi +せわ;sewa +せわする;sewasuru +つきじ;tsukiji +いちば;ichiba +うおいちば;uoichiba +そうちょう;souchou +そうとう;soutou +ふるえる;furueru +しょうかい;shoukai +しょうかいする;shoukaisuru +いけだ;ikeda +ちかづく;chikaduku +いせい;isei +いせいのいい;iseinoii +かけごえ;kakegoe +ライトバン;raitoban +やかましい;yakamashii +そうおん;souon +まわり;mawari +ばめん;bamen +あっとうする;attousuru +ぎょこう;gyokou +りく;riku +りくにあげる;rikuniageru +たいりょう;tairyou +おろしぎょうしゃ;oroshigyousha +なま;nama +しんせんだ;shinsenda +あじ;aji +しょうひん;shouhin +しいれる;shiireru +はかり;hakari +めかた;mekata +はかる;hakaru +おおごえ;oogoe +どなる;donaru +おおぜい;oozei +ふむ;fumu +よこ;yoko +インタビュー;intabyuu +ちゅうおうせん;chuuousen +こうえんじ;kouenji +まがる;magaru +おおどおり;oodoori +まっすぐだ;massuguda +かど;kado +おれる;oreru +うおまる;uomaru +かんばん;kanban +おじさん;ojisan +ざしき;zashiki +あがる;agaru +さしみ;sashimi +ほがらかだ;hogarakada +ふうふ;fuufu +うちとける;uchitokeru +ゆずる;yuzuru +しょうばい;shoubai +くしん;kushin +くしんする;kushinsuru +くさる;kusaru +いじょうだ;ijouda +ぶっかだか;bukkadaka +せつやく;setsuyaku +せつやくする;setsuyakusuru +みつもる;mitsumoru +こめ;kome +しょくりょう;shokuryou +せいさんしゃ;seisansha +りょうし;ryoushi +さんち;sanchi +ねだんをつける;nedanwotsukeru +しょうひ;shouhi +しょうひする;shouhisuru +しょうひしゃ;shouhisha +ばい;bai +もうける;moukeru +わずかだ;wazukada +きびしい;kibishii +ちゅうもんする;chuumonsuru +ひとで;hitode +たりる;tariru +はいたつ;haitatsu +はいたつする;haitatsusuru +つぶれる;tsubureru +ふあん;fuan +ふあんだ;fuanda +なかま;nakama +いっか;ikka +もうしこむ;moushikomu +つうち;tsuuchi +つうちする;tsuuchisuru +ふさい;fusai +ちゃん;chan +こうふん;koufun +こうふんする;koufunsuru +きれ;kire +くん;kun +だまる;damaru +えどじだい;edojidai +ほうこく;houkoku +ほうこくする;houkokusuru +かべ;kabe +なやむ;nayamu +ゆるす;yurusu +こうかい;koukai +こうかいする;koukaisuru +ゆうじん;yuujin +げきれい;gekirei +げきれいする;gekireisuru +しどう;shidou +しどうする;shidousuru +こうふくだ;koufukuda +けんい;ken_i +はやし;hayashi +やくば;yakuba +てら;tera +きろく;kiroku +きろくする;kirokusuru +じかに;jikani +せっする;sessuru +すすめる;susumeru +ひょうじゅん;hyoujun +ひょうじゅんご;hyoujungo +ようじん;youjin +ようじんする;youjinsuru +ひょうめんてきだ;hyoumentekida +さっする;sassuru +こうさい;kousai +こうさいする;kousaisuru +ながのけん;naganoken +むら;mura +そんちょう;sonchou +いらい;irai +いらいする;iraisuru +くばる;kubaru +きをくばる;kiwokubaru +きょり;kyori +ほうげん;hougen +あっさり;assari +あいにく;ainiku +るす;rusu +さらいげつ;saraigetsu +したく;shitaku +したくする;shitakusuru +いし;ishi +しゅうしゅう;shuushuu +しゅうしゅうする;shuushuusuru +せいり;seiri +せいりする;seirisuru +しゅうちゅう;shuuchuu +しゅうちゅうする;shuuchuusuru +うえだ;ueda +だいり;dairi +あべ;abe +ちゃんと;chanto +おせじ;oseji +とめる;tomeru +じゅうしょく;juushoku +ぎもん;gimon +しじゅう;shijuu +きげん;kigen +きげんする;kigensuru +のうか;nouka +みこん;mikon +じしゅてきだ;jishutekida +だんたい;dantai +まつり;matsuri +しょうぼう;shoubou +ようすい;yousui +こうじ;kouji +こうきょう;koukyou +じぎょう;jigyou +きょうどう;kyoudou +そしき;soshiki +そしきする;soshikisuru +にんむ;ninmu +だんじょ;danjo +あい;ai +ちかう;chikau +しょうめい;shoumei +しょうめいする;shoumeisuru +しょうこ;shouko +あきまつり;akimatsuri +ほし;hoshi +ほしぞら;hoshizora +まぶしい;mabushii +かがやく;kagayaku +むし;mushi +なく;naku +あざやかだ;azayakada +え;e +じめん;jimen +かげ;kage +かんどう;kandou +かんどうする;kandousuru +おそう;osou +しげき;shigeki +しげきする;shigekisuru +ごかい;gokai +ごかいする;gokaisuru +だいひょうだん;daihyoudan +だんちょう;danchou +にちじょう;nichijou +ごうにいってはごうにしたがえ;gouniittehagounishitagae +じょうようしゃ;jouyousha +だんけつ;danketsu +だんけつする;danketsusuru +しんいち;shin_ichi +ごぶさたする;gobusatasuru +あいかわらず;aikawarazu +ぐあい;guai +ぐあいがわるい;guaigawarui +い;i +しんけい;shinkei +しょうか;shouka +しょうかする;shoukasuru +きかん;kikan +くれぐれも;kureguremo +くれぐれもきをつける;kureguremokiwotsukeru +そうごう;sougou +そうごうする;sougousuru +しんだん;shindan +しんだんする;shindansuru +たいかく;taikaku +しんぞう;shinzou +けつえき;ketsueki +ふとる;futoru +おそらく;osoraku +さいしゅうてきだ;saishuutekida +さて;sate +けっさく;kessaku +てあたり;teatari +しだい;shidai +てあたりしだい;teatarishidai +てつや;tetsuya +てつやする;tetsuyasuru +ちから;chikara +みにつく;minitsuku +せんこう;senkou +せんこうする;senkousuru +いとこ;itoko +ゲーテ;geete +ちゅうりゅう;chuuryuu +やしなう;yashinau +きじゅん;kijun +かだいだ;kadaida +きそ;kiso +しんじつ;shinjitsu +かい;kai +はがき;hagaki +がくしゅう;gakushuu +がくしゅうする;gakushuusuru +つまる;tsumaru +だす;dasu +しまだ;shimada +さいそく;saisoku +さいそくする;saisokusuru +スピード;supiido +せいげん;seigen +せいげんする;seigensuru +いはん;ihan +いはんする;ihansuru +ばっきん;bakkin +じまん;jiman +じまんする;jimansuru +かげん;kagen +かげんする;kagensuru +いいかげんにする;iikagennisuru +しまつ;shimatsu +しまつする;shimatsusuru +おう;ou +しまつにおえない;shimatsunioenai +きつい;kitsui +しきん;shikin +さそう;sasou +はりきる(5-dan);harikiru(5-dan) +たいしょう;taishou +よろしくつたえる(1-dan);yoroshikutsutaeru(1-dan) +はるお;haruo +たいようがぽかぽか(と)てる;taiyougapokapoka(to)teru +けはい;kehai +はだ;hada +ほっとする;hottosuru +つきひ;tsukihi +ぐったり;guttari +わた;wata +さらさら;sarasara +ぶるぶるふるえる;buruburufurueru +むかう;mukau +けろりとなおる;keroritonaoru +さむがり;samugari +のびのび(と)くらす;nobinobi(to)kurasu +きんきょう(M);kinkyou(M) +きぶんがさっぱりする;kibungasapparisuru +ちる;chiru +しゃっきり(と)する;shakkiri(to)suru +はくし;hakushi +いらいらする;irairasuru +あと;ato +やまなか;yamanaka +くふう;kufuu +くふうする;kufuusuru +ゆういぎだ;yuuigida +かさなる;kasanaru +ふらふら(と);furafura(to) +めまい;memai +めまいがする;memaigasuru +かんり;kanri +かんりする;kanrisuru +きそくてきだ;kisokutekida +きく;kiku +たいそう;taisou +ひごろ(M);higoro(M) +なまける(1-dan);namakeru(1-dan) +せい;sei +いき;iki +きれる(1-dan);kireru(1-dan) +いきがきれる;ikigakireru +ハーハー(と);haahaa(to) +こきゅう;kokyuu +こきゅうする;kokyuusuru +りくじょうきょうぎ;rikujoukyougi +きょうぎ;kyougi +せんしゅ;senshu +たけし;takeshi +クラブ;kurabu +いいん;iin +じなん;jinan +みつお;mitsuo +ちょうじょ;choujo +れいこ;reiko +おうえん;ouen +おうえんする;ouensuru +ゲーム;geemu +ほねやすめ;honeyasume +しあい;shiai +ぐるりと;gururito +まわす;mawasu +たかこ;takako +チーム;chiimu +くむ;kumu +まける;makeru +かつ;katsu +ケーキ;keeki +きゃあきゃあ(と);kyaakyaa(to) +はしゃぐ;hashagu +どっと;dotto +まあまあ;maamaa +せんしゅけん;senshuken +たいかい;taikai +せんしゅけんたいかい;senshukentaikai +けっしょう;kesshou +じゅん;jun +せん;sen +しょうぶ;shoubu +しょうぶする;shoubusuru +にこにこ;nikoniko +にこにこする;nikonikosuru +のぞく;nozoku +なあ;naa +かってだ;katteda +くじ;kuji +ひく;hiku +くじをひく;kujiwohiku +おろおろ(と);orooro(to) +おろおろ(と)する;orooro(to)suru +こうぎ;kougi +こうぎする;kougisuru +オリンピック;orinpikku +しゅつじょう;shutsujou +しゅつじょうする;shutsujousuru +きょうそう;kyousou +さっぱり;sappari +はめ;hame +おちいる(5-dan);ochiiru(5-dan) +はめにおちいる;hameniochiiru +どっしり;dosshiri +どうり(M);douri(M) +がやがや;gayagaya +けっきょく(M);kekkyoku(M) +けいひん;keihin +けいひんがつく;keihingatsuku +どうてん;douten +えんちょう;enchou +えんちょうする;enchousuru +ひきわける;hikiwakeru +ひきわけ;hikiwake +ぷんぷん;punpun +ずるい;zurui +くう;kuu +くってかかる;kuttekakaru +そうべつかい;soubetsukai +じょうきゅう;joukyuu +はずむ;hazumu +はなしがはずむ;hanashigahazumu +ふける(1-dan);fukeru(1-dan) +てをかす;tewokasu +ちかごろ(M);chikagoro(M) +けんとう;kentou +けんとうする;kentousuru +べん;ben +わかれ;wakare +わかれをおしむ;wakarewooshimu +せんげつ;sengetsu +すえ;sue +のうぎょうせいさんきょうどうくみあい;nougyouseisankyoudoukumiai +のうはんき;nouhanki +おす;osu +おしかける(1-dan);oshikakeru(1-dan) +きほん;kihon +こうえん;kouen +こうえんする;kouensuru +そう;sou +しゅうぎょう;shuugyou +しゅうぎょうする;shuugyousuru +わずか;wazuka +とどまる;todomaru +げきげんする;gekigensuru +そうねん;sounen +ちたい;chitai +しんしゅつ;shinshutsu +きぎょう;kigyou +だいきぎょう;daikigyou +さぎょう;sagyou +のうさぎょう;nousagyou +かたにかかる;katanikakaru +まめ;mame +こくもつ;kokumotsu +じきゅう;jikyuu +じきゅうする;jikyuusuru +こくない;kokunai +じゅよう;juyou +うわまわる;uwamawaru +あまる;amaru +だいず;daizu +けつぼう;ketsubou +けつぼうする;ketsubousuru +まかなう;makanau +じょうたい;joutai +しょくりょう;shokuryou +きょうきゅう;kyoukyuu +きょうきゅうする;kyoukyuusuru +ふくろ;fukuro +いぶくろ;ibukuro +あずける;azukeru +こうど;koudo +せいちょう;seichou +せいちょうする;seichousuru +トラクター;torakutaa +はいっている;haitteiru +しゅうやく;shuuyaku +しゅうやくする;shuuyakusuru +か;ka +こうにゅう;kounyuu +こうにゅうする;kounyuusuru +きかん;kikan +うったえる(1-dan);uttaeru(1-dan) +こうしょう;koushou +しゅうり;shuuri +しゅうりする;shuurisuru +ぶひん;buhin +とりかえる(1-dan);torikaeru(1-dan) +たいしゅう;taishuu +せいじてきだ;seijitekida +いしき;ishiki +いんしょうをうける;inshouwoukeru +こうがい;kougai +きょうつうする;kyoutsuusuru +じゅうだいだ;juudaida +ます;masu +ひりょう;hiryou +かがくひりょう;kagakuhiryou +かいはつ;kaihatsu +かいはつする;kaihatsusuru +のうやく;nouyaku +もちいる(1-dan);mochiiru(1-dan) +ちゅうどく;chuudoku +ちゅうどくする;chuudokusuru +しぼう;shibou +しぼうする;shibousuru +はっせい;hassei +はっせいする;hasseisuru +ぎせい;gisei +いっぽうてきだ;ippoutekida +かたよる;katayoru +かたよった;katayotta +ほご;hogo +ほごする;hogosuru +せいさく;seisaku +あんてい;antei +あんていする;anteisuru +さんぶつ;sanbutsu +かかく;kakaku +かくりつ;kakuritsu +かくりつする;kakuritsusuru +おかわりありませんか;okawariarimasenka +かけがえのない;kakegaenonai +こじんきょうじゅ;kojinkyouju +どうきゅう;doukyuu +たより;tayori +とも(Suffix);tomo(Suffix) +はなす;hanasu +みっせつだ;missetsuda +しゅし;shushi +はんきょう;hankyou +たにざきじゅんいちろう;tanizakijun_ichirou +かわばたやすなり;kawabatayasunari +び;bi +エキゾチシズム;ekizochishizumu +コピー;kopii +たずさわる;tazusawaru +すうじ;suuji +ことずける(1-dan);kotozukeru(1-dan) +まえもって;maemotte +ざんしょ;zansho +いのる;inoru +やまもと;yamamoto +ふみこ;fumiko +ただいま;tadaima +ませ;mase +つかまる;tsukamaru +ごめんなさい;gomennasai +ゼミ;zemi +れんちゅう;renchuu +かくめい;kakumei +てんらんかい;tenrankai +じゃ;ja +いってたろう;ittetarou +なにしろ;nanishiro +せんむ;senmu +えんかい;enkai +おうせつま;ousetsuma +わざわざ;wazawaza +おこしになる;okoshininaru +きょうしゅくだ;kyoushukuda +ぎょうむ;gyoumu +じゅんちょうだ;junchouda +らいねんど;rainendo +ゆうし;yuushi +ゆうしする;yuushisuru +たちいる(1-dan);tachiiru(1-dan) +ほんじつ;honjitsu +ようけん;youken +せき;seki +ぼうし;boushi +たとえば;tatoeba +しけん;shiken +おとめ;otome +めいれい;meirei +おい;oi +おいて;oite +しんか;shinka +しんうん;shin_un +すすむ;susumu +つい;tsui +そそぐ;sosogu +いっかげつ;ikkagetsu +さゆう;sayuu +みぎて;migite +あまぐも;amagumo +はるさめ;harusame +ごひゃくえん;gohyakuen +まるい;marui +おうじ;ouji +おうじょ;oujo +おとをだす;otowodasu +ほんね;honne +したごころ;shitagokoro +げひんな;gehinna +したごころ;shitagokoro +ください;kudasai +へたな;hetana +かざん;kazan +かようび;kayoubi +ひばな;hibana +はなび;hanabi +こっか;kokka +はなみ;hanami +かいぼたん;kaibotan +がくせい;gakusei +がっこう;gakkou +まなぶ;manabu +きたい;kitai +きゅうじつ;kyuujitsu +ひるやすみ;hiruyasumi +たまご;tamago +きんいろ;kin_iro +おかね;okane +きゅうかい;kyuukai +くうしゃ;kuusha +からて;karate +おおぞら;oozora +あける;akeru +しがつ;shigatsu +まいつき;maitsuki +つきろけっと;tsukiroketto +げつようび;getsuyoubi +ばんけん;banken +こいぬ;koinu +いぬごや;inugoya +いっけん;ikken +せんけん;senken +みほん;mihon +みる;miru +みせる;miseru +ごにん;gonin +いつか;itsuka +くちだし;kuchidashi +ちゅうがっこう;chuugakkou +ぼこう;bokou +こうちょう;kouchou +さほう;sahou +ひだりあし;hidariashi +さんにん;sannin +みっか;mikka +さんすい;sansui +かざん;kazan +こやま;koyama +しがつ;shigatsu +よっか;yokka +だんし;danshi +じょし;joshi +おんなのこ;onnanoko +いっしまとわね;isshimatowane +いとぐるま;itoguruma +きいと;kiito +こくじ;kokuji +ろおまじ;roomaji +じもく;jimoku +みみたぶ;mimitabu +しちにん;shichinin +なのか;nanoka +すいしゃ;suisha +じょうず;jouzu +てほん;tehon +じゅうにん;juunin +とおか;tooka +しゅっか;shukka +ひとで;hitode +だす;dasu +でる;deru +じょちゅう;jochuu +おんなのひと;onnanohito +こびと;kobito +こがね;kogane +じょうげ;jouge +しんりん;shinrin +あおもり;aomori +どいつじん;doitsujin +ひゃくにん;hyakunin +ひとびと;hitobito +すいようび;suiyoubi +みずがめ;mizugame +ただしい;tadashii +いけばな;ikebana +うまれる;umareru +せいねん;seinen +あおぞら;aozora +あおもの;aomono +ぼくせき;bokuseki +こいし;koishi +いしきり;ishikiri +せきどう;sekidou +あからめる;akarameru +せんじつ;senjitsu +せんせんげつ;sensengetsu +かんてん;kanten +ひぼしの;hiboshino +ほしくさ;hoshikusa +おがわ;ogawa +かわかみ;kawakami +そうそう;sousou +はやみみ;hayamimi +てばやい;tebayai +そうげん;sougen +くさき;kusaki +そうほん;souhon +いっそく;issoku +てあし;teashi +たりる;tariru +たす;tasu +そんかい;sonkai +そんちょう;sonchou +むらびと;murabito +たいきん;taikin +おおきさ;ookisa +だんせい;dansei +ちょうなん;chounan +おとこのひと;otokonohito +おおおとこ;oootoko +ちくりん;chikurin +しない;shinai +たけのつえ;takenotsue +にちゅう;nichuu +いちにちじゅう;ichinichijuu +がいちゅう;gaichuu +むしば;mushiba +ちょうない;chounai +したまち;shitamachi +てんもんがく;tenmongaku +あまのがわ;amanogawa +すいでん;suiden +ほんだ;honda +どぼく;doboku +どじん;dojin +ふたり;futari +ふつか;futsuka +いちじつ;ichijitsu +ついたち;tsuitachi +みっか;mikka +にゅうこく;nyuukoku +はいる;hairu +いれる;ireru +ねんきん;nenkin +はくし;hakushi +しろい;shiroi +はちにん;hachinin +ようか;youka +やっつ;yattsu +ひゃくにん;hyakunin +ぶんがく;bungaku +ふみ;fumi +ほんじつ;honjitsu +もと;moto +めいが;meiga +だいみょう;daimyou +もくようび;mokuyoubi +きぎ;kigi +いちもく;ichimoku +めうえ;meue +めした;meshita +いっせき;isseki +ゆうひ;yuuhi +たなばた;tanabata +じりつ;jiritsu +たてる;tateru +たいりょく;tairyoku +むりょく;muryoku +りんがく;ringaku +こばやし;kobayashi +ろくにん;rokunin +むいか;muika +いんりょく;inryoku +ひきだし;hikidashi +うもう;umou +しらは;shiraha +はねだ;haneda +ふううん;fuuun +あんうん;an_un +あまぐも;amagumo +らくえん;rakuen +はなぞの;hanazono +そくたつ;sokutatsu +そくど;sokudo +はやめる;hayameru +すみやか;sumiyaka +こうよう;kouyou +おうごん;ougon +きいろ;kiiro +なにごと;nanigoto +なんにち;nannichi +りっか;rikka +なつもの;natsumono +かじ;kaji +けらい;kerai +やぬし;yanushi +しりょう;shiryou +りょうきん;ryoukin +かしゅ;kashu +たんか;tanka +うたう;utau +がか;gaka +あう;au +かいぎ;kaigi +こんかい;konkai +ぜんかい;zenkai +いいまわし;iimawashi +まわす;mawasu +まわる;mawaru +たいかい;taikai +うちうみ;uchiumi +かいが;kaiga +えはがき;ehagaki +くちえ;kuchie +がいらいご;gairaigo +ほかに;hokani +はずす;hazusu +さんかく;sankaku +まちかど;machikado +たのしい;tanoshii +ぶんらく;bunraku +かつどう;katsudou +ちゅうかん;chuukan +にんげん;ningen +まもなく;mamonaku +がんやく;gan_yaku +まるい;marui +こばやしまる;kobayashimaru +がんせき;ganseki +いわや;iwaya +がんめん;ganmen +かおいろ;kaoiro +しらんかお;shirankao +きこく;kikoku +きせん;kisen +きゅうどう;kyuudou +ゆみや;yumiya +ぎゅうにく;gyuuniku +うしごや;ushigoya +きんぎょ;kingyo +うおいちば;uoichiba +さかなや;sakanaya +とうきょう;toukyou +ぺきん;pekin +つよい;tsuyoi +きょうかい;kyoukai +おしえかた;oshiekata +おそわる;osowaru +きんじょ;kinjo +ちかみち;chikamichi +きょうだい;kyoudai +ふけい;fukei +ずけい;zukei +がんじつ;ganjitsu +げんき;genki +もともと;motomoto +そうげん;sougen +げんりょう;genryou +うなばら;unabara +いう;iu +げんご;gengo +こご;kogo +ふるい;furui +とだな;todana +こがいで;kogaide +ごぜん;gozen +しょうご;shougo +あとで;atode +いご;igo +がいこくご;gaikokugo +ものがたり;monogatari +がいこう;gaikou +まぜる;mazeru +まじわる;majiwaru +にっこう;nikkou +ひかる;hikaru +こうりつ;kouritsu +こういん;kouin +だいく;daiku +こうがく;kougaku +ひろい;hiroi +こうだい;koudai +かんがえる;kangaeru +かんがえかた;kangaekata +こうあん;kouan +いく;iku +いっこう;ikkou +ぎょうかん;gyoukan +がっしょう;gasshou +あいきどう;aikidou +ぜんこく;zenkoku +くにぐに;kuniguni +こくじん;kokujin +くろい;kuroi +こんにち;konnichi +ただいま;tadaima +さいき;saiki +なんさい;nansai +さっか;sakka +つくる;tsukuru +さんしゅつする;sanshutsusuru +こうさん;kousan +ねえさん;neesan +しない;shinai +しがい;shigai +おもいだす;omoidasu +おもいあがった;omoiagatta +とめる;tomeru +きゅうし;kyuushi +しつもんようし;shitsumon_youshi +てがみ;tegami +しゃじ;shaji +おてら;otera +いちじ;ichiji +ときどき;tokidoki +じぶん;jibun +みずからのてで;mizukaranotede +ほんや;hon_ya +おくじょう;okujou +しゃいん;shain +しゃかい;shakai +よわい;yowai +きょうじゃく;kyoujaku +よわる;yowaru +しゅちょう;shuchou +しゅしょう;shushou +てくび;tekubi +しゅうき;shuuki +あきかぜ;akikaze +こんしゅう;konshuu +にしゅうかん;nishuukan +しゅんぶん;shunbun +はるさめ;harusame +しょどう;shodou +しょうじょ;shoujo +すこし;sukoshi +しじょう;shijou +たちば;tachiba +とくしょく;tokushoku +きいろ;kiiro +しょくじ;shokuji +たべもの;tabemono +しんぱい;shinpai +こころもち;kokoromochi +しんせつ;shinsetsu +おやがいしゃ;oyagaisha +ちず;chizu +としょかん;toshokan +はかる;hakaru +かいすう;kaisuu +かずかずの;kazukazuno +かせい;kasei +ほしうらない;hoshiuranai +せいてん;seiten +はれのひ;harenohi +めいせい;meisei +おおごえ;oogoe +とうざい;touzai +にしよおろっぱ;nishiyooroppa +たいせつな;taisetsuna +きって;kitte +しんせつ;shinsetsu +ゆきまつり;yukimatsuri +かせん;kasen +こうせん;kousen +ないせん;naisen +せんちょう;senchou +ふなたび;funatabi +ごぜん;gozen +ばんぐみ;bangumi +くむ;kumu +そせい;sosei +はしる;hashiru +そうこうじかん;soukoujikan +くちばしる;kuchibashiru +おおい;ooi +ふとい;futoi +こうたいし;koutaishi +たいへいよう;taiheiyou +じんたい;jintai +ごたい;gotai +たかだい;takadai +たにま;tanima +たにがわ;tanigawa +ちじん;chijin +しる;shiru +ちか;chika +きじ;kiji +でんち;denchi +ちゃいろ;chairo +ちゃのま;chanoma +ちゅうしょく;chuushoku +ひるやすみ;hiruyasumi +ちょうしょく;choushoku +あさひ;asahi +けさ;kesa +ぶちょう;buchou +ながねん;naganen +はくちょう;hakuchou +いっせきにちょう;issekinichou +ちょくぜん;chokuzen +ちょくご;chokugo +つやく;tsuyaku +かよう;kayou +でし;deshi +しょてん;shoten +でみせ;demise +てんがよい;tengayoi +がてん;gaten +でんりょく;denryoku +とうき;touki +ふゆもの;fuyumono +めいとう;meitou +こがたな;kogatana +しない;shinai +ちゅうとう;chuutou +ひがしあじあ;higashiajia +ほんとう;hontou +とうじ;touji +ひとりあたり;hitoriatari +あたる;ataru +こうとう;koutou +めいとう;meitou +こたえる;kotaeru +しゅっとう;shuttou +おなじ;onaji +どうこく;doukoku +どうじょう;doujou +かえりみちで;kaerimichide +どくしゃ;dokusha +よみかた;yomikata +たいない;tainai +なんせい;nansei +みなみかぜ;minamikaze +ぎゅうにく;gyuuniku +にくしん;nikushin +ばりき;bariki +うまごや;umagoya +ばいばい;baibai +かいもの;kaimono +ばいてん;baiten +とくばい;tokubai +うりきれる;urikireru +うりば;uriba +ばくしゅびいる;bakushubiiru +こむぎ;komugi +おおむぎ;oomugi +らいむぎ;raimugi +つきなかばに;tsukinakabani +ばんち;banchi +ばんにん;bannin +ふぼ;fubo +ふうりょく;fuuryoku +にほんふう;nihonfuu +ふろば;furoba +きたかぜ;kitakaze +ぶんけ;bunke +まいふん;maifun +ものわかりのよい;monowakarinoyoi +ふうぶん;fuubun +みちをきく;michiwokiku +べいこく;beikoku +こめや;komeya +ほこうしゃ;hokousha +あるく;aruku +ぼいん;boin +ぼこくご;bokokugo +ちほう;chihou +かんがえかた;kangaekata +ほっぽう;hoppou +きたぐち;kitaguchi +ていまい;teimai +まいかい;maikai +ふつかめごとに;futsukamegotoni +まんねん;mannen +ばんにん;bannin +めいげつ;meigetsu +みょうにち;myounichi +あかるい;akarui +なく;naku +うもう;umou +けいと;keito +あかげ;akage +せいもん;seimon +にゅうもん;nyuumon +かどぐち;kadoguchi +やはん;yahan +よあけ;yoake +よぞら;yozora +よるひる;yoruhiru +やがい;yagai +ののはな;nonohana +ゆみや;yumiya +やさき;yasaki +ゆうこう;yuukou +ともだち;tomodachi +しちよう;shichiyou +ようび;youbi +ようにん;younin +ようがある;yougaaru +ひろくもちいる;hirokumochiiru +らいしゅう;raishuu +かえってくる;kaettekuru +ぎりしゃごからきたことば;girishagokarakitakotoba +りか;rika +しんりがく;shinrigaku +むり;muri +りじん;rijin +やまざと;yamazato +かいり;kairi +わしゃ;washa +かいわ;kaiwa +はなしごえ;hanashigoe +いちがつ;ichigatsu +きんいつ;kin_itsu +うは;uha +うがん;ugan +みぎて;migite +うき;uki +おおあめ;ooame +あまぐも;amagumo +えんけい;enkei +えんだか;endaka +ひゃくえん;hyakuen +おうじ;ouji +じょおう;joou +おうさま;ousama +しいん;shiin +ていか;teika +げしゃ;gesha +かわしも;kawashimo +かようび;kayoubi +かざん;kazan +ひばな;hibana +かべん;kaben +はなび;hanabi +はなみ;hanami +がっこう;gakkou +がくしゃ;gakusha +でんき;denki +じゅうきゅう;juukyuu +くがつ;kugatsu +きゅうじつ;kyuujitsu +きゅうせん;kyuusen +なつやすみ;natsuyasumi +きんようび;kin_youbi +こんじき;konjiki +かねもち;kanemochi +そらいろ;sorairo +からばこ;karabako +こんげつ;kongetsu +げつようび;getsuyoubi +つきみ;tsukimi +りょうけん;ryouken +いぬごや;inugoya +こいぬ;koinu +はっけん;hakken +けんぶつ;kenbutsu +みもの;mimono +ごがつ;gogatsu +ごにん;gonin +いつか;itsuka +こうじつ;koujitsu +でぐち;deguchi +こうせい;kousei +こうちょう;kouchou +さは;saha +ひだりがわ;hidarigawa +ひだりて;hidarite +さんがつ;sangatsu +みっか;mikka +さんかく;sankaku +ひょうざん;hyouzan +やまば;yamaba +でんし;denshi +こども;kodomo +ようす;yousu +しがつ;shigatsu +よっか;yokka +よんかい;yonkai +せいし;seishi +けいと;keito +いとまき;itomaki +じびき;jibiki +あかじ;akaji +すうじ;suuji +じか;jika +みみなり;miminari +みみかざり;mimikazari +しちがつ;shichigatsu +なのか;nanoka +ななばん;nanaban +はっしゃ;hassha +くちぐるま;kuchiguruma +しゅだん;shudan +てほん;tehon +じょうず;jouzu +じゅうがつ;juugatsu +とおか;tooka +じゅうじ;juuji +しゅっぱつ;shuppatsu +おもいで;omoide +ひきだし;hikidashi +じょせい;josei +にょうぼう;nyoubou +おんなのこ;onnanoko +しょうじん;shoujin +こうし;koushi +おがわ;ogawa +いじょう;ijou +かわかみ;kawakami +ねあげ;neage +しんりん;shinrin +しんげん;shingen +しんかん;shinkan +にほんじん;nihonjin +にんげん;ningen +ひとで;hitode +すいようび;suiyoubi +すいそ;suiso +おおみず;oomizu +せいかい;seikai +しょうがつ;shougatsu +しょうじき;shoujiki +がくせい;gakusei +いっしょう;isshou +いきもの;ikimono +せいねん;seinen +あおぞら;aozora +あおもの;aomono +こんせき;konseki +ゆうしょく;yuushoku +ゆうひ;yuuhi +かせき;kaseki +こいし;koishi +せきゆ;sekiyu +せきどう;sekidou +せきめん;sekimen +あかんぼう;akanbou +せんえん;sen_en +ごせん;gosen +ちどり;chidori +かわぐち;kawaguchi +かわばた;kawabata +えどがわ;edogawa +せんげつ;sengetsu +ゆびさき;yubisaki +そうきゅう;soukyuu +はやくち;hayakuchi +はやじに;hayajini +ふそく;fusoku +あしくび;ashikubi +あしおと;ashioto +そんちょう;sonchou +のうそん;nouson +むらびと;murabito +たいかい;taikai +だいがく;daigaku +おおごえ;oogoe +だんし;danshi +ちょうなん;chounan +おとこぎ;otokogi +ちゅうりつ;chuuritsu +ちゅうごく;chuugoku +まんなか;mannaka +きせいちゅう;kiseichuu +がいちゅう;gaichuu +むしば;mushiba +ちょうみん;choumin +ちょうちょう;chouchou +したまち;shitamachi +てんし;tenshi +てんのう;tennou +あまくだり;amakudari +でんえん;den_en +たうえ;taue +いなか;inaka +どようび;doyoubi +とち;tochi +つちくさい;tsuchikusai +にがつ;nigatsu +にじゅう;nijuu +ふたり;futari +にちようび;nichiyoubi +ほんじつ;honjitsu +ふつか;futsuka +ゆにゅう;yunyuu +いりぐち;iriguchi +いれもの;iremono +らいねん;rainen +ごねんせい;gonensei +としより;toshiyori +はくしょ;hakusho +はくじん;hakujin +はちがつ;hachigatsu +やおや;yaoya +やつあたり;yatsuatari +ひゃくばい;hyakubai +ひゃくしょう;hyakushou +ひゃっかてん;hyakkaten +ぶんがく;bungaku +もんじ;monji +もんぶしょう;monbushou +もくようび;mokuyoubi +きめ;kime +こだち;kodachi +にほん;nihon +ほんや;hon_ya +ほんてん;honten +ゆうめい;yuumei +めいじん;meijin +ひとつめ;hitotsume +ちゅうもく;chuumoku +ひとめ;hitome +じりつ;jiritsu +たちば;tachiba +めだつ;medatsu +のうりょく;nouryoku +じんりきしゃ;jinrikisha +ちからだめし;chikaradameshi +りんがく;ringaku +こばやし;kobayashi +みつりん;mitsurin +ろくがつ;rokugatsu +むいか;muika +ろっかく;rokkaku +いんりょく;inryoku +じびき;jibiki +とりひき;torihiki +うんも;unmo +せいうん;seiun +うきぐも;ukigumo +えんそく;ensoku +とおまわり;toomawari +えんし;enshi +なんかい;nankai +なにもの;nanimono +なんにん;nannin +がっか;gakka +けんきゅうか;kenkyuuka +しょか;shoka +まなつ;manatsu +なつまつり;natsumatsuri +のうか;nouka +ぶけ;buke +さっか;sakka +かしゅ;kashu +たんか;tanka +かぞえうた;kazoeuta +えいが;eiga +がめん;gamen +かいてん;kaiten +かいすう;kaisuu +いいまわし;iimawashi +かいしゃ;kaisha +えしゃく;eshaku +こっかい;kokkai +かいぐん;kaigun +にほんかい;nihonkai +うみべ;umibe +かいが;kaiga +くちえ;kuchie +えほん;ehon +ほたてがい;hotategai +かいがら;kaigara +かいるい;kairui +がいじん;gaijin +げか;geka +そとがわ;sotogawa +にんげん;ningen +まちがい;machigai +がんめん;ganmen +かおいろ;kaoiro +かおつき;kaotsuki +きせん;kisen +きあつ;kiatsu +きしゃ;kisha +きじ;kiji +にっき;nikki +きか;kika +きせい;kisei +かえりみち;kaerimichi +ぎゅうにく;gyuuniku +ぎゅうにゅう;gyuunyuu +うしかい;ushikai +きんぎょ;kingyo +うおつり;uotsuri +さかなや;sakanaya +とうきょう;toukyou +じょうきょう;joukyou +けいひん;keihin +きょうか;kyouka +つよみ;tsuyomi +きょうかい;kyoukai +きょうしつ;kyoushitsu +おしえご;oshiego +ぎょくはい;gyokuhai +たまつき;tamatsuki +めだま;medama +きんじょ;kinjo +さいきん;saikin +ちかみち;chikamichi +けいしき;keishiki +かたちづくる;katachidukuru +ごうけい;goukei +けいさん;keisan +かんだんけい;kandankei +げんき;genki +がんらい;ganrai +もとどおり;motodoori +げんし;genshi +げんぶん;genbun +くさはら;kusahara +こがい;kogai +こしゅ;koshu +とぐち;toguchi +ふっこ;fukko +こうこがく;koukogaku +ふるほん;furuhon +ごぜん;gozen +しょうご;shougo +いご;igo +こうはん;kouhan +あとあじ;atoaji +ごちょう;gochou +ものがたり;monogatari +にほんご;nihongo +こうじょう;koujou +じんこう;jinkou +だいく;daiku +こうだい;koudai +ひろしま;hiroshima +こうこく;koukoku +がいこう;gaikou +こうかん;koukan +にっこう;nikkou +こうねん;kounen +こうがく;kougaku +こうあん;kouan +さんこう;sankou +かんがえごと;kangaegoto +じっこう;jikkou +ぎょうれつ;gyouretsu +ゆくえ;yukue +こうげん;kougen +さいこう;saikou +たかね;takane +こうよう;kouyou +おうごん;ougon +きいろ;kiiro +ごうり;gouri +かっせん;kassen +はなしあい;hanashiai +ゆうこく;yuukoku +たにぞこ;tanizoko +はせがわ;hasegawa +しこく;shikoku +こっか;kokka +こくじん;kokujin +くろじ;kuroji +こくしびょう;kokushibyou +こんしゅう;konshuu +こんど;kondo +ことし;kotoshi +てんさい;tensai +さいのう;sainou +ごさい;gosai +せいさく;seisaku +さくひん;sakuhin +どうさ;dousa +さんぷ;sanpu +よさん;yosan +さんすう;sansuu +ちゅうし;chuushi +とめど;tomedo +とまりぎ;tomarigi +すいたし;suitashi +しじょう;shijou +うおいち;uoichi +しそう;shisou +しこう;shikou +おもいだす;omoidasu +ひょうし;hyoushi +わし;washi +てがみ;tegami +りょうあんじ;ryouanji +じいん;jiin +やまでら;yamadera +じぶん;jibun +しぜん;shizen +じしん;jishin +にじ;niji +ときどき;tokidoki +しつない;shitsunai +きょしつ;kyoshitsu +むろつ;murotsu +しゃかい;shakai +じんじゃ;jinja +しゃいん;shain +じゃくてん;jakuten +じゃくしょう;jakushou +よわむし;yowamushi +しゅりょう;shuryou +くびわ;kubiwa +くびきり;kubikiri +ばんしゅう;banshuu +しゅうぶん;shuubun +あきぞら;akizora +せいしゅん;seishun +ばいしゅん;baishun +はるぎ;harugi +しょき;shoki +きょうかしょ;kyoukasho +はがき;hagaki +しょうねん;shounen +しょうすう;shousuu +たしょう;tashou +かいじょう;kaijou +にゅうじょう;nyuujou +ひろば;hiroba +こうしょく;koushoku +しきそ;shikiso +ぎんいろ;gin_iro +しょくじ;shokuji +たべもの;tabemono +くいもの;kuimono +ちゅうしん;chuushin +しんぞう;shinzou +まごころ;magokoro +しんねん;shinnen +しんぴん;shinpin +しんじん;shinjin +しんるい;shinrui +おやこ;oyako +ちず;chizu +ずが;zuga +としょかん;toshokan +すうがく;suugaku +じゅず;juzu +かずかず;kazukazu +せいよう;seiyou +かんさい;kansai +にしび;nishibi +せいえん;seien +だいおんじょう;daionjou +なきごえ;nakigoe +かせい;kasei +みょうじょう;myoujou +ながれぼし;nagareboshi +せいてん;seiten +はればれ;harebare +はれぎ;haregi +しんせつ;shinsetsu +いっさい;issai +はらきり;harakiri +こうせつ;kousetsu +おおゆき;ooyuki +じょせつしゃ;josetsusha +せんちょう;senchou +こぎぶね;kogibune +ふなびん;funabin +ぜんしゃ;zensha +くうぜん;kuuzen +まえばらい;maebarai +そしき;soshiki +くみあい;kumiai +くみたて;kumitate +きょうそう;kyousou +ずつう;zutsuu +あたまうち;atamauchi +どうよう;douyou +どうじ;douji +どうい;doui +てつどう;tetsudou +しんとう;shintou +みちばた;michibata +どくしゃ;dokusha +とくほん;tokuhon +よみかた;yomikata +とうなん;tounan +なんきょく;nankyoku +みなみがわ;minamigawa +ばじゅつ;bajutsu +ばしゃ;basha +うまのり;umanori +ばいばい;baibai +ばいてん;baiten +うりもの;urimono +ばいしゅう;baishuu +かいもの;kaimono +かいて;kaite +ばくが;bakuga +むぎちゃ;mugicha +こむぎ;komugi +はんとう;hantou +はんとし;hantoshi +じゅんばん;junban +ばんにん;bannin +ふぼ;fubo +おとうさま;otousama +ちちおや;chichioya +ふうせん;fuusen +かみかぜ;kamikaze +わふう;wafuu +ぶんし;bunshi +いっぷん;ippun +いちぶ;ichibu +ちょうもん;choumon +ききとる;kikitoru +べいか;beika +べいこく;beikoku +はくまい;hakumai +しんぽ;shinpo +ほこうしゃ;hokousha +あるきだす;arukidasu +ぼせい;bosei +おかあさま;okaasama +ははおや;hahaoya +ほうがく;hougaku +おやかた;oyakata +みかた;mikata +とうほく;touhoku +はいぼく;haiboku +きたかぜ;kitakaze +まいにち;mainichi +まいど;maido +ひごと;higoto +しまい;shimai +いもうとぶん;imoutobun +れいまい;reimai +めいはく;meihaku +みょうにち;myounichi +あけがた;akegata +めいどう;meidou +なきごえ;nakigoe +なりもの;narimono +ようもう;youmou +けがわ;kegawa +けむし;kemushi +せいもん;seimon +もんばん;monban +かどで;kadode +ほんや;hon_ya +よあけ;yoake +よるがお;yorugao +やせい;yasei +やきゅう;yakyuu +のはら;nohara +ゆうじん;yuujin +ゆうじょう;yuujou +ともだち;tomodachi +ようい;youi +あくよう;akuyou +ようび;youbi +かよう;kayou +しちよう;shichiyou +しんらいしゃ;shinraisha +きらく;kiraku +たのしみ;tanoshimi +がっき;gakki +いちり;ichiri +さとびと;satobito +ふるさと;furusato +りせい;risei +むり;muri +しんりがく;shinrigaku +かいわ;kaiwa +わだい;wadai +こばなし;kobanashi +あくい;akui +おかん;okan +わるもの;warumono +ふあん;fuan +あんしん;anshin +やすもの;yasumono +めいあん;meian +あんさつ;ansatsu +まっくら;makkura +げかい;gekai +いがく;igaku +けつい;ketsui +いけん;iken +きょういく;kyouiku +いくじ;ikuji +そだておや;sodateoya +かいいん;kaiin +ぜんいん;zen_in +どういん;douin +びょういん;byouin +じいん;jiin +ぎいん;giin +いんようすい;in_yousui +のみもの;nomimono +のみや;nomiya +ふうん;fuun +うんそう;unsou +すいえい;suiei +はいえい;haiei +ひらおよぎ;hiraoyogi +えきちょう;ekichou +えきべん;ekiben +とうきょうえき;toukyoueki +どうぶつえん;doubutsuen +はなぞの;hanazono +おうだん;oudan +おうこう;oukou +よこがお;yokogao +おくじょう;okujou +こや;koya +ぱんや;pan_ya +おんせん;onsen +おんじょう;onjou +おんしつ;onshitsu +へんか;henka +けしょう;keshou +ばけもの;bakemono +しゅっか;shukka +ふなに;funani +にもつ;nimotsu +きょうかい;kyoukai +せいかい;seikai +かいはつ;kaihatsu +かいし;kaishi +ひらきづな;hirakiduna +かいだん;kaidan +にかい;nikai +かいきゅう;kaikyuu +かくど;kakudo +つのぶえ;tsunobue +まちかど;machikado +かっき;kakki +かつどう;katsudou +かんぱ;kanpa +さむけ;samuke +かんだんけい;kandankei +かんしん;kanshin +かんかく;kankaku +かんじょう;kanjou +かいかん;kaikan +りょかん;ryokan +びじゅつかん;bijutsukan +かいがん;kaigan +たいがん;taigan +かわぎし;kawagishi +がんせき;ganseki +いわや;iwaya +じさ;jisa +さべつ;sabetsu +さしこむ;sashikomu +やさい;yasai +なたね;natane +さいしょくしゅぎ;saishokushugi +さいだい;saidai +さいご;saigo +さいしんしき;saishinshiki +ざいもく;zaimoku +ざいりょう;zairyou +じんざい;jinzai +さくじつ;sakujitsu +さくや;sakuya +さくねん;sakunen +いんさつしょ;insatsusho +さっしん;sasshin +こうせいずり;kouseizuri +さつじん;satsujin +じさつ;jisatsu +ころしや;koroshiya +けいさつ;keisatsu +さっち;sacchi +かんさつ;kansatsu +さんか;sanka +さんこう;sankou +さんぎ;sangi +せいさん;seisan +さんぶつ;sanbutsu +しゅっさん;shussan +さんぶん;sanbun +ちらし;chirashi +ざんきん;zankin +ざんにん;zannin +ぶし;bushi +しかん;shikan +しゅうし;shuushi +しめい;shimei +しぞく;shizoku +かとうし;katoushi +れきし;rekishi +じょし;joshi +しじょう;shijou +しほう;shihou +しれいぶ;shireibu +しかいしゃ;shikaisha +ねえさん;neesan +あねうえ;aneue +しまいとし;shimaitoshi +しあい;shiai +しけんかん;shikenkan +こころみ;kokoromi +しょうてんがい;shoutengai +かくだい;kakudai +かくさん;kakusan +かくせいき;kakuseiki +かくめい;kakumei +かくしん;kakushin +かわこうば;kawakouba +かっか;kakka +ないかく;naikaku +かくりょう;kakuryou +ぶんかつ;bunkatsu +わりびき;waribiki +わりあい;wariai +きりかぶ;kirikabu +かぶしき;kabushiki +かぶぬし;kabunushi +かんちょう;kanchou +かんじょう;kanjou +ほしにく;hoshiniku +だいいっかん;daiikkan +まきもの;makimono +いとまき;itomaki +かんごふ;kangofu +かんばん;kanban +かんしゅ;kanshu +かんこく;kankoku +かんしょう;kanshou +かんゆう;kan_yuu +かんたん;kantan +しょかん;shokan +かんりゃく;kanryaku +がんやく;gan_yaku +まるみ;marumi +にっぽんまる;nipponmaru +きき;kiki +きけん;kiken +きがい;kigai +きじょう;kijou +きへん;kihen +じむつくえ;jimutsukue +はっき;hakki +しき;shiki +きはつせい;kihatsusei +きぞく;kizoku +きちょう;kichou +しつぎ;shitsugi +ぎもん;gimon +ぎじ;giji +きゅうどう;kyuudou +きゅうじょう;kyuujou +ゆみとり;yumitori +きゅうしゅう;kyuushuu +ゆせい;yusei +てんじょう;tenjou +いど;ido +せいめい;seimei +かいせい;kaisei +ひゃくしょう;hyakushou +せいふく;seifuku +えんせい;ensei +せいい;seii +いっせい;issei +せいいつ;seiitsu +せいしょう;seishou +ぎせいしゃ;giseisha +いけにえ;ikenie +ぎせいてき;giseiteki +せいきょ;seikyo +きゅうせい;kyuusei +ちょうせい;chousei +ぜんせいき;zenseiki +おおもり;oomori +もえさかる;moesakaru +じょせい;josei +はなむこ;hanamuko +むこいり;mukoiri +せいやく;seiyaku +せんせい;sensei +ちかいごと;chikaigoto +せいきゅう;seikyuu +ふしん;fushin +うけおいにん;ukeoinin +はいせき;haiseki +せっこう;sekkou +せきりょく;sekiryoku +せきじつ;sekijitsu +むかしふう;mukashifuu +こんじゃく;konjaku +ぶんせき;bunseki +かいせき;kaiseki +せきしゅつ;sekishutsu +せきしゅ;sekishu +いっせき;isseki +いっせきがん;issekigan +つうせき;tsuuseki +おしげ;oshige +ほねおしみ;honeoshimi +ついせき;tsuiseki +あしあと;ashiato +いせき;iseki +しょせき;shoseki +こせき;koseki +こくせき;kokuseki +せっしゃ;sessha +ぼうしょう;boushou +がくぼう;gakubou +ぼうだい;boudai +ぼうまん;bouman +ぼうちょうべん;bouchouben +いんぼう;inbou +むほん;muhon +ぼうりゃく;bouryaku +じゅんぼく;junboku +そぼく;soboku +ほうのき;hounoki +こうぼく;kouboku +どぼく;doboku +ぼくら;bokura +ひつぼく;hitsuboku +はくぼく;hakuboku +すみえ;sumie +だぼく;daboku +すもう;sumou +ぼくさつ;bokusatsu +ぼっしゅう;bosshuu +にちぼつ;nichibotsu +ぼつご;botsugo +そとぼり;sotobori +つりぼり;tsuribori +ほりかわ;horikawa +ほんそう;honsou +ほんぽう;honpou +しゅっぽん;shuppon +ほんやくか;hon_yakuka +ほんい;hon_i +ひるがえって;hirugaette +へいぼん;heibon +ぼんせん;bonsen +はんれい;hanrei +ぼんち;bonchi +ぼんおどり;bon_odori +ぼんけい;bonkei +まふ;mafu +まやく;mayaku +あさづな;asaduna +まてんろう;matenrou +まさつ;masatsu +まさつおん;masatsuon +けんま;kenma +まめつ;mametsu +くつみがき;kutsumigaki +あくま;akuma +まほう;mahou +まら;mara +まいそう;maisou +うめたて;umetate +うもれぎ;umoregi +こまく;komaku +もうまく;moumaku +まくしつ;makushitsu +または;mataha +またとない;matatonai +またがし;matagashi +まっさつ;massatsu +まっちゃ;maccha +いちまつ;ichimatsu +たいまん;taiman +じまん;jiman +まんせい;mansei +まんが;manga +さんまん;sanman +そぞろごと;sozorogoto +みりょく;miryoku +みわく;miwaku +みりょう;miryou +こうかく;koukaku +こうわん;kouwan +コッドみさき;koddomisaki +みょうあん;myouan +びみょう;bimyou +きみょう;kimyou +ふみんしょう;fuminshou +ねむけ;nemuke +いねむり;inemuri +ぼうげき;bougeki +ほこさき;hokosaki +むじゅんした;mujunshita +むちゅう;muchuu +あくむ;akumu +ゆめみる;yumemiru +むてき;muteki +のうむ;noumu +あさぎり;asagiri +こむすめ;komusume +じょうしぐん;joushigun +むすめざかり;musumezakari +めいがら;meigara +めいき;meiki +めいめい;meimei +ぜつめつ;zetsumetsu +めつぼう;metsubou +はめつ;hametsu +めんじょ;menjo +めんぜい;menzei +ほうめん;houmen +はんも;hanmo +もりん;morin +しげみ;shigemi +ぼうげん;bougen +もうそう;mousou +かせいがん;kaseigan +きげん;kigen +はやおき;hayaoki +きどうりょく;kidouryoku +がっき;gakki +きたい;kitai +さいご;saigo +らいきゃく;raikyaku +じょうきゃく;joukyaku +かくいん;kakuin +けんきゅう;kenkyuu +きゅうめい;kyuumei +たんきゅう;tankyuu +きゅうし;kyuushi +きゅうそく;kyuusoku +おおいそぎ;ooisogi +しんきゅう;shinkyuu +どうきゅうせい;doukyuusei +じょうきゅう;joukyuu +じんぐう;jinguu +きゅうちゅう;kyuuchuu +みやさま;miyasama +きゅうぎ;kyuugi +ちきゅう;chikyuu +たまひろい;tamahiroi +きょねん;kyonen +かこ;kako +たちさる;tachisaru +てっきょう;tekkyou +りっきょう;rikkyou +いしばし;ishibashi +さんぎょう;sangyou +ざいごう;zaigou +しわざ;shiwaza +きょくせん;kyokusen +さっきょく;sakkyoku +まげもの;magemono +きょくめん;kyokumen +けっきょく;kekkyoku +ゆうびんきょく;yuubinkyoku +ぎんこう;ginkou +ぎんが;ginga +ぎんか;ginka +くしん;kushin +くつう;kutsuu +にがみ;nigami +ぐあい;guai +ようぐ;yougu +どうぐ;dougu +ぼうくん;boukun +さいくん;saikun +やまだくん;yamadakun +ふけい;fukei +にいさま;niisama +きょうだいあい;kyoudaiai +かんけい;kankei +けいそう;keisou +かかりいん;kakariin +けいしょく;keishoku +けいはく;keihaku +かるいし;karuishi +けつえき;ketsueki +はなぢ;hanadi +けっとう;kettou +かいけつ;kaiketsu +けっしん;kesshin +けつれつ;ketsuretsu +けんしゅう;kenshuu +とぎかわ;togikawa +けんきゅうしゃ;kenkyuusha +みえけん;mieken +けんりつ;kenritsu +けんちょう;kenchou +はつげん;hatsugen +むごん;mugon +しゃこ;shako +そうこ;souko +れいぞうこ;reizouko +とおわだこ;toowadako +こがん;kogan +こすい;kosui +こうきょう;koukyou +こうへい;kouhei +きしゅうこう;kishuukou +こうじょう;koujou +いこう;ikou +まえむき;maemuki +こううん;kouun +ふこう;fukou +こうふく;koufuku +くうこう;kuukou +にゅうこう;nyuukou +みなとまち;minatomachi +ばんごう;bangou +ごうれい;gourei +ごうきゅう;goukyuu +こんぽん;konpon +だいこん;daikon +やね;yane +さいじつ;saijitsu +さいだん;saidan +ゆきまつり;yukimatsuri +さいく;saiku +ほそながい;hosonagai +こまか;komaka +しごと;shigoto +しかた;shikata +しくみ;shikumi +したい;shitai +しきょ;shikyo +わかじに;wakajini +しよう;shiyou +たいし;taishi +こづかい;kodukai +しじゅう;shijuu +しどうき;shidouki +しはじめる;shihajimeru +しじ;shiji +おやゆび;oyayubi +さしず;sashizu +しこん;shikon +はいしゃ;haisha +はぐるま;haguruma +しじん;shijin +してき;shiteki +しじょう;shijou +さんじ;sanji +しだい;shidai +あいついで;aitsuide +だいじ;daiji +こうず;kouzu +できごと;dekigoto +じさん;jisan +もちぬし;mochinushi +ながもち;nagamochi +しんしき;shinshiki +ほうしき;houshiki +かいかいしき;kaikaishiki +じっこう;jikkou +じじつ;jijitsu +みいり;miiri +しゃしん;shashin +しゃじつ;shajitsu +ふくしゃき;fukushaki +さくしゃ;sakusha +こうしゃ;kousha +わかもの;wakamono +しゅじん;shujin +じぬし;jinushi +しゅよう;shuyou +ほしゅ;hoshu +るすばん;rusuban +こもり;komori +しゅとく;shutoku +とりだす;toridasu +ぎゅうじる;gyuujiru +いんしゅ;inshu +さかば;sakaba +さけのみ;sakenomi +じゅけんしゃ;jukensha +うけとり;uketori +うけつけ;uketsuke +ほんしゅう;honshuu +さす;sasu +しゅうぎかい;shuugikai +しゅうしゅう;shuushuu +ひろいもの;hiroimono +じゅういち;juuichi +しゅうてん;shuuten +しゅうし;shuushi +おわり;owari +れんしゅう;renshuu +しゅうじ;shuuji +みならい;minarai +せんしゅう;senshuu +にしゅうめ;nishuume +しゅうだん;shuudan +へんしゅう;henshuu +しゅうちゅう;shuuchuu +じゅうしょ;juusho +じゅうたく;juutaku +すみて;sumite +じゅうだい;juudai +おもさ;omosa +みえ;mie +ばしょ;basho +しょゆう;shoyuu +いどころ;idokoro +こくしょ;kokusho +ひしょち;hishochi +あつさ;atsusa +じょしゅ;joshu +じょりょく;joryoku +たすけあい;tasukeai +しょうわ;shouwa +しょうしょう;shoushou +しょうだい;shoudai +しょうひ;shouhi +けしゴム;keshigomu +しょうかき;shoukaki +しょうぎょう;shougyou +しょうにん;shounin +しょうばい;shoubai +きしょう;kishou +ぶんしょう;bunshou +しょうく;shouku +しょうり;shouri +しょうぶ;shoubu +かちき;kachiki +じょうせん;jousen +じょうすう;jousuu +のりもの;norimono +しょくぶつ;shokubutsu +たうえ;taue +しょくみんち;shokuminchi +しんこく;shinkoku +もうしこむ;moushikomu +もうしわけ;moushiwake +しんたい;shintai +じしん;jishin +みぶん;mibun +せいしん;seishin +しんぷ;shinpu +めがみ;megami +しんえん;shin_en +しんかい;shinkai +ふかいり;fukairi +ぜんしん;zenshin +しんか;shinka +しんげん;shingen +せいき;seiki +せわ;sewa +よのなか;yononaka +せいり;seiri +せいび;seibi +びちょうせい;bichousei +だっせん;dassen +こうせん;kousen +ちょくせん;chokusen +ぜんぶ;zenbu +ぜんしん;zenshin +あんぜん;anzen +ほうそう;housou +そうきん;soukin +みおくる;miokuru +きゅうそく;kyuusoku +ためいき;tameiki +むすこ;musuko +かぞく;kazoku +みんぞく;minzoku +しゅぞく;shuzoku +たにん;tanin +たこく;takoku +よそ;yoso +だしゃ;dasha +だげき;dageki +うちかえす;uchikaesu +たいしょう;taishou +ついく;tsuiku +たいき;taiki +しょうたい;shoutai +まちぶせ;machibuse +せだい;sedai +こうたい;koutai +へやだい;heyadai +だいにか;dainika +しだいしょ;shidaisho +きゅうだい;kyuudai +だいめい;daimei +わだい;wadai +せきたん;sekitan +たんそ;tanso +すみび;sumibi +たんしょ;tansho +たんき;tanki +てみじか;temijika +とうちゃく;touchaku +きもの;kimono +ふなつき;funatsuki +ちゅうもく;chuumoku +ちゅうしゃ;chuusha +ちゅうしゃく;chuushaku +ちゅうせき;chuuseki +でんちゅう;denchuu +つらら;tsurara +ていねい;teinei +ちょうめ;choume +てちょう;techou +ちょうば;chouba +かや;kaya +ちょうせい;chousei +ちょうさ;chousa +ちょうし;choushi +ちょくせつ;chokusetsu +しょうじき;shoujiki +ちょくりつ;chokuritsu +ついきゅう;tsuikyuu +ついほう;tsuihou +おいはらう;oiharau +ていき;teiki +ふてい;futei +けってい;kettei +かてい;katei +ていえん;teien +にわし;niwashi +てっぱん;teppan +ちかてつ;chikatetsu +こくてつ;kokutetsu +てんそう;tensou +うんてん;unten +とし;toshi +しゅと;shuto +つごう;tsugou +ていど;teido +おんど;ondo +いちど;ichido +とうしゅ;toushu +とうひょう;touhyou +なげだす;nagedasu +れっとう;rettou +とうみん;toumin +しまぐに;shimaguni +せんとう;sentou +ゆげ;yuge +ちゃのゆ;chanoyu +とうじょう;toujou +とざん;tozan +きのぼり;kinobori +いっとう;ittou +じょうとう;joutou +とうあつせん;touatsusen +じどうしゃ;jidousha +うごきだす;ugokidasu +どうわ;douwa +じどう;jidou +どうしん;doushin +ないぶ;naibu +うちき;uchiki +ばにく;baniku +にくや;nikuya +にくがん;nikugan +のうじょう;noujou +のうみん;noumin +のうぎょう;nougyou +しゅうは;shuuha +おんぱ;onpa +なみのり;naminori +しんぱい;shinpai +はいたつ;haitatsu +くばりて;kubarite +ちゃばたけ;chabatake +たはた;tahata +むぎばたけ;mugibatake +はっぴょう;happyou +ほっそく;hossoku +はつでんき;hatsudenki +はんおう;han_ou +はんかく;hankaku +たんもの;tanmono +きゅうはん;kyuuhan +さかみち;sakamichi +くだりざか;kudarizaka +こくばん;kokuban +いたがみ;itagami +いたまえ;itamae +ひふ;hifu +ひにく;hiniku +きのかわ;kinokawa +ひげき;higeki +ひめい;himei +かなしさ;kanashisa +びじん;bijin +びじゅつ;bijutsu +びがく;bigaku +びおん;bion +はなさき;hanasaki +はなぐすり;hanagusuri +ひょうげん;hyougen +ひょうてん;hyouten +こおりみず;koorimizu +ひょうめん;hyoumen +ひょうげん;hyougen +じこくひょう;jikokuhyou +にびょう;nibyou +びょうしん;byoushin +びょうそく;byousoku +びょうき;byouki +びょうにん;byounin +らいびょう;raibyou +しょうひん;shouhin +ひんしつ;hinshitsu +しなもの;shinamono +ふしょう;fushou +ふたん;futan +まけぎらい;makegirai +ぶぶん;bubun +ぶぞく;buzoku +ふくそう;fukusou +ふくじゅう;fukujuu +はっとり;hattori +こうふく;koufuku +ふくびき;fukubiki +ふくいんしょ;fukuinsho +じんぶつ;jinbutsu +しょくもつ;shokumotsu +たべもの;tabemono +へいき;heiki +びょうどう;byoudou +ひらて;hirate +へんじ;henji +へんさい;hensai +しかえし;shikaeshi +きんべん;kinben +べんがく;bengaku +かいほう;kaihou +ほうしゃ;housha +てばなす;tebanasu +ごまん;goman +ばんじ;banji +まんねんひつ;mannenhitsu +いみ;imi +きょうみ;kyoumi +あじみ;ajimi +めいれい;meirei +せいめい;seimei +いのちとり;inochitori +がいめん;gaimen +かめん;kamen +はなづら;hanadura +しつもん;shitsumon +がくもん;gakumon +とんや;ton_ya +やくしゃ;yakusha +へいえき;heieki +やっきょく;yakkyoku +かやく;kayaku +くすりゆび;kusuriyubi +ゆらい;yurai +りゆう;riyuu +じゆう;jiyuu +ゆでん;yuden +とうゆ;touyu +あぶらえ;aburae +しょゆうしゃ;shoyuusha +うむ;umu +ありがとう;arigatou +ゆうらん;yuuran +ゆさん;yusan +あそびば;asobiba +よやく;yoyaku +よそう;yosou +よてい;yotei +せいようじん;seiyoujin +たいせいよう;taiseiyou +ようしょく;youshoku +しんようじゅ;shin_youju +はまき;hamaki +はがき;hagaki +ようきょく;youkyoku +ようき;youki +たいようけい;taiyoukei +しよう;shiyou +ありさま;arisama +みなさま;minasama +らっか;rakka +おちば;ochiba +おとしもの;otoshimono +りゅうこう;ryuukou +るふ;rufu +ながれぎ;nagaregi +りょこう;ryokou +たびびと;tabibito +りょひ;ryohi +りょうほう;ryouhou +りょうて;ryoute +りょうがえ;ryougae +じょうりょくじゅ;jouryokuju +ろくしょう;rokushou +みどりいろ;midoriiro +しつれい;shitsurei +れいふく;reifuku +けいれい;keirei +れっしゃ;ressha +れつじ;retsuji +ぜんれつ;zenretsu +どうろ;douro +せんろ;senro +たびじ;tabiji +へいわ;heiwa +やまと;yamato +わしょく;washoku +あいじょう;aijou +ぼせいあい;boseiai +あいこくしゃ;aikokusha +ていあん;teian +あんがい;angai +あんじょう;anjou +いか;ika +いがい;igai +いふく;ifuku +いるい;irui +ころもがえ;koromogae +ちい;chii +がくい;gakui +じゅうにぐらい;juunigurai +しゅうい;shuui +はんい;han_i +かこいこむ;kakoikomu +いいんかい;iinkai +いにん;inin +いたくきん;itakukin +いえき;ieki +いぶくろ;ibukuro +いじゃく;ijaku +いんさつ;insatsu +いんばん;inban +めじるし;mejirushi +えいさい;eisai +えいこく;eikoku +えいご;eigo +こうえい;kouei +えいよう;eiyou +はんえい;han_ei +しょくえん;shokuen +しおみず;shiomizu +せいえんしょ;seiensho +ちゅうおう;chuuou +ちゅうおうぶ;chuuoubu +ちゅうおうぐち;chuuouguchi +におく;nioku +じゅうおく;juuoku +おくまんちょうじゃ;okumanchouja +ぞうか;zouka +さんか;sanka +くわえざん;kuwaezan +かもつせん;kamotsusen +こうか;kouka +ざっか;zakka +かぜい;kazei +かちょう;kachou +だいにか;dainika +はつが;hatsuga +しんめ;shinme +めばえる;mebaeru +かいかく;kaikaku +かいせい;kaisei +あらためて;aratamete +きかい;kikai +きかい;kikai +きかいか;kikaika +そんがい;songai +さつがい;satsugai +ぼうがい;bougai +かくえき;kakueki +かっこく;kakkoku +かくじ;kakuji +じかく;jikaku +めざめ;mezame +おぼえがき;oboegaki +かんせい;kansei +みかん;mikan +かんぜん;kanzen +けいかん;keikan +かんりょう;kanryou +かんちょう;kanchou +かんじ;kanji +あっかん;akkan +かんし;kanshi +かんり;kanri +きかん;kikan +かんがっき;kangakki +かんとう;kantou +かんしん;kanshin +せきのやま;sekinoyama +かんこう;kankou +かんさつ;kansatsu +かんきゃく;kankyaku +しがんしゃ;shigansha +がんぼうてき;ganbouteki +ねがいごと;negaigoto +きぼう;kibou +ききゅう;kikyuu +きはく;kihaku +きせつ;kisetsu +しき;shiki +きじょ;kijo +きげん;kigen +きこう;kikou +にじゅうせいき;nijuuseiki +きげき;kigeki +かんき;kanki +おおよろこび;ooyorokobi +こっき;kokki +はたもち;hatamochi +かじき;kajiki +きぐ;kigu +しょっき;shokki +きよう;kiyou +きのう;kinou +きかい;kikai +はたおり;hataori +ぎろん;giron +かいぎ;kaigi +ぎかい;gikai +ようきゅう;youkyuu +ついきゅう;tsuikyuu +きゅうしょく;kyuushoku +きゅうめいブイ;kyuumeibui +きゅうえん;kyuuen +すくいだす;sukuidasu +きょうきゅう;kyoukyuu +げっきゅう;gekkyuu +きたまえ;kitamae +きょしゅ;kyoshu +せんきょ;senkyo +いっきょ;ikkyo +ぎょせん;gyosen +りょうし;ryoushi +ぎょぎょう;gyogyou +きょうつう;kyoutsuu +ともぐい;tomogui +きょうさんしゅぎ;kyousanshugi +きょうてい;kyoutei +きょうりょく;kyouryoku +きょうかい;kyoukai +ぼうえんきょう;bouenkyou +きょうだい;kyoudai +てかがみ;tekagami +きょうそう;kyousou +けいば;keiba +せりうり;seriuri +ほっきょく;hokkyoku +しごく;shigoku +しょうきょく;shoukyoku +くべつ;kubetsu +ちく;chiku +きたく;kitaku +くうぐん;kuugun +ぐんじん;gunjin +べいこくぐん;beikokugun +ぐんぶ;gunbu +こおりやま;kooriyama +わけぐん;wakegun +げんけい;genkei +おおがた;oogata +てんけいてき;tenkeiteki +こうけい;koukei +けいき;keiki +げいじゅつ;geijutsu +しゅげい;shugei +げいしゃ;geisha +けっせきしゃ;kessekisha +けってん;ketten +かけめ;kakeme +けっこん;kekkon +けっか;kekka +むすびめ;musubime +けんせつ;kensetsu +こんりゅう;konryuu +たてもの;tatemono +けんこう;kenkou +けんぜん;kenzen +けんぴつか;kenpitsuka +しけん;shiken +じっけん;jikken +けいけん;keiken +こたい;kotai +きょうこ;kyouko +かたまり;katamari +せいこう;seikou +こうざい;kouzai +こうろう;kourou +きこう;kikou +こうほ;kouho +そうろうぶん;souroubun +こうくう;koukuu +こうかい;koukai +こうろ;kouro +しょうこう;shoukou +ふけんこう;fukenkou +けんこうたい;kenkoutai +こうこく;koukoku +こうこく;koukoku +こうこく;koukoku +じしょ;jisho +じしょく;jishoku +しゅうじがく;shuujigaku +しっぱい;shippai +しっけい;shikkei +しつぎょう;shitsugyou +しゃっきん;shakkin +しゃくや;shakuya +かりぬし;karinushi +いっしゅ;isshu +じんしゅ;jinshu +たねなし;tanenashi +しゅうへん;shuuhen +しゅうとう;shuutou +いっしゅう;isshuu +やどや;yadoya +げしゅくにん;geshukunin +じゅんじょ;junjo +じゅうじゅん;juujun +じゅんちょう;junchou +はじめて;hajimete +はつこい;hatsukoi +ていしょう;teishou +がっしょう;gasshou +となえね;tonaene +ねんしょう;nenshou +やけあと;yakeato +やきたて;yakitate +さんしょう;sanshou +たいしょう;taishou +しょうめい;shoumei +しょうひん;shouhin +しょうさん;shousan +いっとうしょう;ittoushou +しんか;shinka +しんみん;shinmin +だいじん;daijin +しんよう;shin_you +めいしん;meishin +かくしん;kakushin +しんじつ;shinjitsu +しゃしんき;shashinki +まっしろ;masshiro +せいぶん;seibun +せいじん;seijin +なりたち;naritachi +はんせい;hansei +しょうりゃく;shouryaku +こうせいしょう;kouseishou +せいけつ;seiketsu +せいじょう;seijou +しみず;shimizu +せいりょく;seiryoku +おおぜい;oozei +いきおいよく;ikioiyoku +せいし;seishi +しずけさ;shizukesa +じょうみゃく;joumyaku +しゅっせき;shusseki +けっせき;kesseki +くうせき;kuuseki +めんせき;menseki +せきせつ;sekisetsu +くっせつ;kussetsu +おりめ;orime +おりがみ;origami +ちょうせつ;chousetsu +かんせつ;kansetsu +ふしあな;fushiana +せつめい;setsumei +しょうせつ;shousetsu +がくせつ;gakusetsu +せんぱく;senpaku +あさせ;asase +あさぎ;asagi +たいせん;taisen +せんじょう;senjou +さくせん;sakusen +とうせん;tousen +せんしゅ;senshu +えらびだす;erabidasu +とうぜん;touzen +てんねん;tennen +しかるべく;shikarubeku +せんそう;sensou +いいあらそい;iiarasoi +きょうそうしゃ;kyousousha +そうだん;soudan +あいて;aite +しゅしょう;shushou +せんそう;sensou +そうこう;soukou +くらに;kurani +ちゃくそう;chakusou +りそう;risou +あいそう;aisou +ぞうげ;zouge +いんしょう;inshou +しょうちょうてき;shouchouteki +そっき;sokki +じそく;jisoku +こうそくどうろ;kousokudouro +そくめん;sokumen +みぎがわ;migigawa +そばづかえ;sobadukae +ぞくぞく;zokuzoku +れんぞく;renzoku +てつづき;tetsuduki +そつぎょう;sotsugyou +へいそつ;heisotsu +そっきょ;sokkyo +しそん;shison +まごびき;magobiki +まごむすめ;magomusume +ちたい;chitai +おびじ;obiji +ねったいぎょ;nettaigyo +へいたい;heitai +ぐんたい;guntai +ぶたい;butai +はったつ;hattatsu +たつじん;tatsujin +ひとたち;hitotachi +たんい;tan_i +たんじゅん;tanjun +たんどく;tandoku +そうだんやく;soudan_yaku +かいだん;kaidan +だんわ;danwa +せいじ;seiji +ちあん;chian +ちりょう;chiryou +ほうち;houchi +おきもの;okimono +おきば;okiba +ちょきん;chokin +ちょぞう;chozou +ちょすいち;chosuichi +ちょうせん;chousen +ちょうえん;chouen +だいちょう;daichou +さいてい;saitei +ていり;teiri +ていらく;teiraku +かいてい;kaitei +おくそこ;okusoko +ていりゅう;teiryuu +ていし;teishi +ていしゃじょ;teishajo +ていでん;teiden +もくてき;mokuteki +りそうてき;risouteki +まとはずれ;matohazure +じてん;jiten +てんきょ;tenkyo +てんけい;tenkei +でんせつ;densetsu +でんき;denki +でんせんびょう;densenbyou +とほしゃ;tohosha +あだばな;adabana +どりょく;doryoku +どりょくか;doryokuka +つとめて;tsutomete +とうだい;toudai +でんとう;dentou +とうせん;tousen +しょくどう;shokudou +どうどう;doudou +ろうどう;roudou +はたらきて;hatarakite +はたらきもの;hatarakimono +ゆうどく;yuudoku +きのどく;kinodoku +しょくちゅうどく;shokuchuudoku +ねったい;nettai +ねつりきがく;netsurikigaku +ねんりき;nenriki +ねんいり;nen_iri +ねんぶつ;nenbutsu +はいせん;haisen +はいそう;haisou +はいぼくしゅぎ;haibokushugi +ごばい;gobai +ばいか;baika +ばいすう;baisuu +はかせ;hakase +ばくと;bakuto +はくぶつかん;hakubutsukan +ひるめし;hirumeshi +いいだ;iida +ひこうき;hikouki +ひご;higo +とびだす;tobidasu +ひよう;hiyou +しょうひしゃ;shouhisha +せいかつひ;seikatsuhi +ひつよう;hitsuyou +ひっし;hisshi +ひつぜん;hitsuzen +えんぴつ;enpitsu +ひっしゃ;hissha +ふでづかい;fudedukai +ひょうけつ;hyouketsu +とうひょう;touhyou +でんぴょう;denpyou +ひょうじゅん;hyoujun +りていひょう;riteihyou +ひょうしき;hyoushiki +ふめい;fumei +ふへい;fuhei +ぶきみ;bukimi +にんぷ;ninpu +ふじん;fujin +ふうふ;fuufu +ふちゃく;fuchaku +つきあう;tsukiau +なづける;nadukeru +せいふ;seifu +ふけん;fuken +きょうとふ;kyoutofu +ふくぎょう;fukugyou +ふくし;fukushi +ふくりょうじ;fukuryouji +かふん;kafun +こなごな;konagona +むぎこ;mugiko +へいし;heishi +ほへい;hohei +へいき;heiki +べつめい;betsumei +とくべつ;tokubetsu +わかれ;wakare +へんきょう;henkyou +きんぺん;kinpen +かわべ;kawabe +へんせい;hensei +たいへん;taihen +かわりもの;kawarimono +べんじょ;benjo +ゆうびん;yuubin +こづつみ;kodutsumi +ほうい;houi +つつみがみ;tsutsumigami +ほうがく;hougaku +ふほう;fuhou +しつぼう;shitsubou +がんぼう;ganbou +ぼうけん;bouken +ぼくじょう;bokujou +ほうぼく;houboku +まきばとり;makibatori +しゅうまつ;shuumatsu +すえっこ;suekko +せいきまつ;seikimatsu +まんげつ;mangetsu +まんぞく;manzoku +まんちょう;manchou +みゃっかん;myakkan +こうみゃく;koumyaku +さんみゃく;sanmyaku +こくみん;kokumin +みんかん;minkan +みんしゅしゅぎ;minshushugi +やくそく;yakusoku +せつやく;setsuyaku +やくごじゅうにん;yakugojuunin +ゆうしゃ;yuusha +ゆうき;yuuki +いさみあし;isamiashi +ふひつよう;fuhitsuyou +ようてん;youten +じゅうよう;juuyou +ようせい;yousei +えいようし;eiyoushi +きょうよう;kyouyou +よくしつ;yokushitsu +にっこうよく;nikkouyoku +みずあび;mizuabi +りえき;rieki +りよう;riyou +ききめ;kikime +りくぐん;rikugun +じょうりく;jouriku +たいりく;tairiku +りょうしん;ryoushin +かいりょう;kairyou +よさ;yosa +げんりょう;genryou +りょうきん;ryoukin +じゅうりょう;juuryou +ぶんりょう;bunryou +たいりょうせいさん;tairyouseisan +しゃりん;sharin +さんりんしゃ;sanrinsha +わなげ;wanage +しゅるい;shurui +ぶんるい;bunrui +るいじ;ruiji +れいじょう;reijou +めいれいほう;meireihou +しれいかん;shireikan +れいぞう;reizou +れいせい;reisei +ひえしょう;hieshou +れいがい;reigai +れいねん;reinen +たとえば;tatoeba +れきしか;rekishika +けいれき;keireki +へんれき;henreki +れんらくせん;renrakusen +れんじゅう;renjuu +れんそう;rensou +くんれん;kunren +せんれん;senren +ねりこ;neriko +ろうじん;roujin +ろうれん;rouren +ろうれいねんきん;roureinenkin +ろうどうしゃ;roudousha +くろう;kurou +ろうどうかんけい;roudoukankei +きろく;kiroku +じつろく;jitsuroku +ろくおん;rokuon +あつりょく;atsuryoku +でんあつ;den_atsu +あっとうてき;attouteki +いじゅう;ijuu +いみん;imin +いどう;idou +げんいん;gen_in +しいん;shiin +いんがかんけい;ingakankei +えいぞく;eizoku +えいじゅうしゃ;eijuusha +けいえい;keiei +えいぎょう;eigyou +えいしょ;eisho +えいせい;eisei +しゅえい;shuei +じえい;jiei +ぼうえき;boueki +えきしゃ;ekisha +あんい;an_i +ゆうえき;yuueki +ますます;masumasu +りえきはいとう;riekihaitou +えきたい;ekitai +えきか;ekika +けつえきがた;ketsuekigata +えんしゅつ;enshutsu +しゅつえん;shutsuen +えんぜつ;enzetsu +おうとう;outou +はんのう;hannou +おうよう;ouyou +おうふく;oufuku +おうじ;ouji +おうらい;ourai +おんじん;onjin +おんしらず;onshirazu +おんがえし;ongaeshi +かせつ;kasetsu +かりに;karini +けびょう;kebyou +かち;kachi +かかく;kakaku +ぶっか;bukka +せいか;seika +くだもの;kudamono +はたして;hatashite +かこう;kakou +ふぐ;fugu +かば;kaba +つうか;tsuuka +かこけい;kakokei +いいすぎ;iisugi +がし;gashi +ねんがじょう;nengajou +しゅくがかい;shukugakai +ふゆかい;fuyukai +かいらく;kairaku +かいかつ;kaikatsu +かいせつ;kaisetsu +りかい;rikai +ぶんかい;bunkai +しかく;shikaku +せいかく;seikaku +しょゆうかく;shoyuukaku +せいかく;seikaku +かくにん;kakunin +かくじつ;kakujitsu +きんがく;kingaku +がくめん;gakumen +ひたいぎわ;hitaigiwa +かんこう;kankou +にっかん;nikkan +はっかん;hakkan +かんせん;kansen +かんぶ;kanbu +かんじ;kanji +かんれい;kanrei +よなれた;yonareta +かんげい;kangei +かんらく;kanraku +こうかん;koukan +そうがんきょう;sougankyou +にくがん;nikugan +ちまなこ;chimanako +きほん;kihon +ききん;kikin +きんし;kinshi +きんえん;kin_en +げんきん;genkin +じく;jiku +くぎり;kugiri +もんく;monku +くんよみ;kun_yomi +くんれんし;kunrenshi +きょうくんてき;kyoukunteki +ぐんしゅう;gunshuu +ぎょぐん;gyogun +ぐんきょ;gunkyo +けいざい;keizai +けいせん;keisen +けいか;keika +けっぱく;keppaku +けっぺき;keppeki +いさぎよく;isagiyoku +じけん;jiken +ようけん;youken +じょうけん;jouken +りょけん;ryoken +しょうけん;shouken +ていきけん;teikiken +けんあく;ken_aku +ほけん;hoken +けんそ;kenso +けんとう;kentou +たんけん;tanken +けんさいん;kensain +けんぷ;kenpu +じんけん;jinken +きぬもの;kinumono +げんど;gendo +げんかい;genkai +むげん;mugen +はつげん;hatsugen +げんしょう;genshou +げんじつ;genjitsu +げんしょう;genshou +かげん;kagen +めべり;meberi +こじ;koji +こやまだし;koyamadashi +こじん;kojin +こせい;kosei +いっこ;ikko +べんごし;bengoshi +ほご;hogo +ごえい;goei +こうか;kouka +ゆうこう;yuukou +ききめ;kikime +ぶあつ;buatsu +こうせい;kousei +こうじょう;koujou +こうち;kouchi +こうさく;kousaku +こううんき;kouunki +こうぶつ;koubutsu +こうせき;kouseki +たんこう;tankou +こうせい;kousei +こころがまえ;kokorogamae +こうぎ;kougi +こうえん;kouen +こうし;koushi +こんけつ;konketsu +こんらん;konran +まぜもの;mazemono +けんさ;kensa +しんさ;shinsa +さもん;samon +さいせい;saisei +さいかん;saikan +さらいねん;sarainen +さいなん;sainan +さいがい;saigai +かさい;kasai +ごさい;gosai +ふさい;fusai +ひとづま;hitoduma +さいよう;saiyou +さいしゅう;saishuu +さいしゅ;saishu +じっさい;jissai +まどぎわ;madogiwa +そんざい;sonzai +ざいりゅう;zairyuu +ざいしょ;zaisho +ざいさん;zaisan +ざいだん;zaidan +ざいせいてき;zaiseiteki +はんざい;hanzai +ざいあく;zaiaku +つみぶかい;tsumibukai +ざつだん;zatsudan +ざつおん;zatsuon +ぞうひょう;zouhyou +さんぎょう;sangyou +ようさん;yousan +そらまめ;soramame +さんそ;sanso +さんせい;sansei +えんさん;ensan +さんせい;sansei +さんびか;sanbika +さんじ;sanji +してん;shiten +しじ;shiji +してん;shiten +いし;ishi +しぼう;shibou +ゆうし;yuushi +きょうし;kyoushi +しひょう;shihyou +しだん;shidan +しほん;shihon +しりょう;shiryou +しきん;shikin +あんじ;anji +てんじ;tenji +しきょう;shikyou +るいじひん;ruijihin +えせ;ese +にあう;niau +こじ;koji +しょうに;shouni +じどうぶんがく;jidoubungaku +じょうしき;joushiki +いしき;ishiki +ちしきじん;chishikijin +ひんしつ;hinshitsu +しちや;shichiya +ひとじち;hitojichi +しゅくしゃ;shukusha +しゃえい;shaei +いなかもの;inakamono +しゃざい;shazai +しゃれい;sharei +かんしゃ;kansha +じゅぎょう;jugyou +じゅよ;juyo +きょうじゅ;kyouju +しゅうにゅう;shuunyuu +しゅうえき;shuueki +しゅうようりょく;shuuyouryoku +しゅうり;shuuri +しゅうせい;shuusei +しゅうぎょう;shuugyou +こうしゅう;koushuu +たいしゅう;taishuu +がっしゅうこく;gasshuukoku +しゅくが;shukuga +しゅくじ;shukuji +いわいごと;iwaigoto +ぜんじゅつ;zenjutsu +じゅつご;jutsugo +じょじゅつ;jojutsu +ぎじゅつてき;gijutsuteki +げいじゅつてき;geijutsuteki +しゅじゅつ;shujutsu +じゅんび;junbi +すいじゅん;suijun +じゅんけっしょう;junkesshou +じょぶん;jobun +じょれつ;joretsu +じょすう;josuu +じょきょ;jokyo +めんじょ;menjo +そうじ;souji +しょうたい;shoutai +しょうしゅう;shoushuu +てまねく;temaneku +しょうち;shouchi +しょうにん;shounin +けいしょうしゃ;keishousha +しょうごう;shougou +しょうさん;shousan +めいしょう;meishou +しょうにん;shounin +ろんしょう;ronshou +しょうめい;shoumei +むじょうけん;mujouken +じょうやく;jouyaku +じょうてつ;joutetsu +じょうたい;joutai +げんじょう;genjou +しょうたいじょう;shoutaijou +ひじょう;hijou +じょうれい;jourei +にちじょう;nichijou +どうじょう;doujou +じょうせい;jousei +なさけない;nasakenai +しょっき;shokki +そしきてき;soshikiteki +おりもの;orimono +しょくにん;shokunin +しょくぎょう;shokugyou +しょくいん;shokuin +せいど;seido +せいし;seishi +きょうせい;kyousei +だんせい;dansei +せいてき;seiteki +しょうぶん;shoubun +ぎょうせい;gyousei +せいじか;seijika +ちゅうおうせいふ;chuuouseifu +せいりょく;seiryoku +せいみつ;seimitsu +ぶしょう;bushou +せいぞう;seizou +せいせい;seisei +にほんせい;nihonsei +ぜいきん;zeikin +ぜいむしょ;zeimusho +しょとくぜい;shotokuzei +せきにん;sekinin +じせき;jiseki +せきむ;sekimu +せいせき;seiseki +ぎょうせき;gyouseki +ぼうせき;bouseki +めんせつ;mensetsu +せつぞく;setsuzoku +つぎめ;tsugime +せっち;secchi +せっけい;sekkei +せつりつ;setsuritsu +ぜっせん;zessen +したたらず;shitatarazu +べんぜつ;benzetsu +ぜつぼう;zetsubou +ぜったいてき;zettaiteki +たえず;taezu +こぜに;kozeni +きんせん;kinsen +さいせん;saisen +ぜんい;zen_i +しんぜん;shinzen +ぜんごさく;zengosaku +そせん;sosen +せんぞ;senzo +そふぼ;sofubo +げんそ;genso +ようそ;youso +すあし;suashi +そうがく;sougaku +そうごう;sougou +そうりだいじん;souridaijin +ぞうせん;zousen +もくぞう;mokuzou +じんぞう;jinzou +そうぞう;souzou +もくぞう;mokuzou +げんぞう;genzou +ぞうだい;zoudai +ぞうぜい;zouzei +ぞうふく;zoufuku +きそくてき;kisokuteki +ほうそく;housoku +げんそく;gensoku +そくてい;sokutei +そくち;sokuchi +はかりがたい;hakarigatai +きんぞく;kinzoku +ふぞく;fuzoku +ぞくめい;zokumei +そんしつ;sonshitsu +そんがいだか;songaidaka +いいそこない;iisokonai +こうたい;koutai +たいしょく;taishoku +たいい;taii +たいひ;taihi +かしきん;kashikin +かしや;kashiya +たいど;taido +たいせい;taisei +わざわざ;wazawaza +だんたい;dantai +ふとん;futon +だんけつ;danketsu +せつだん;setsudan +だんげん;dangen +ことわりがき;kotowarigaki +けんちく;kenchiku +けんちくか;kenchikuka +きずきなおす;kizukinaosu +しゅちょう;shuchou +かくちょう;kakuchou +みはる;miharu +ていしゅつ;teishutsu +ぜんてい;zentei +ちょうちん;chouchin +ていど;teido +かてい;katei +ほどちかい;hodochikai +てきとう;tekitou +てきせい;tekisei +てっき;tekki +てきい;tekii +むてき;muteki +かたきうち;katakiuchi +でんとう;dentou +とうけい;toukei +だいとうりょう;daitouryou +どうぞう;douzou +どうか;douka +せいどう;seidou +しどう;shidou +しゅどうけん;shudouken +でんどう;dendou +とくちょう;tokuchou +とくゆう;tokuyuu +とくしょく;tokushoku +とくてん;tokuten +しょとく;shotoku +ありうる;ariuru +どうとく;doutoku +とくぎ;tokugi +とっくり;tokkuri +どくえい;dokuei +ひとりごと;hitorigoto +どくりつ;dokuritsu +にんめい;ninmei +にんい;nin_i +せきにんしゃ;sekininsha +ねんりょう;nenryou +ねんしょう;nenshou +もえつく;moetsuku +かのうせい;kanousei +のうりょく;nouryoku +のうめん;noumen +はさん;hasan +はそん;hason +やぶれめ;yabureme +はんにん;hannin +はんい;han_i +はんざいがく;hanzaigaku +はんだん;handan +はんじ;hanji +はんこ;hanko +しゅっぱんしゃ;shuppansha +はんが;hanga +はんけん;hanken +ひれい;hirei +ひかく;hikaku +くらべもの;kurabemono +ひりょう;hiryou +ひまん;himan +こえつち;koetsuchi +ひにん;hinin +ひごうりてき;higouriteki +ひこう;hikou +せつび;setsubi +じゅんびちゅう;junbichuu +そなえつけ;sonaetsuke +いっぴょう;ippyou +こめだわら;komedawara +どひょう;dohyou +ひょうか;hyouka +ひょうばん;hyouban +あくひょう;akuhyou +ひんけつ;hinketsu +ひんこん;hinkon +びんぼうじん;binboujin +はいふ;haifu +もうふ;moufu +ぬのじ;nunoji +ふじん;fujin +しゅふ;shufu +ふちょう;fuchou +ふゆう;fuyuu +とみくじ;tomikuji +ふじさん;fujisan +ぶしどう;bushidou +ぶき;buki +むしゃ;musha +ふっかつ;fukkatsu +かいふく;kaifuku +ちょうふく;choufuku +ふくせい;fukusei +ぶっきょう;bukkyou +じょうぶつ;joubutsu +のどぼとけ;nodobotoke +へんしゅうしゃ;henshuusha +へんせい;hensei +あみもの;amimono +べんとう;bentou +べんろん;benron +べんまく;benmaku +かくほ;kakuho +ほぞん;hozon +せいめいほけん;seimeihoken +ぼち;bochi +ぼひょう;bohyou +はかまいり;hakamairi +ほうこく;houkoku +でんぽう;denpou +ほうしゅう;houshuu +ほうさく;housaku +ほうふ;houfu +ほうまん;houman +よぼう;yobou +ぼうすい;bousui +ぼうえい;bouei +ぼうえきぎょう;bouekigyou +ぼうえきふう;bouekifuu +ぼうえきしゃ;bouekisha +ぼうりょく;bouryoku +ばくろ;bakuro +あばれもの;abaremono +みらい;mirai +みち;michi +まだまだ;madamada +ぎむ;gimu +じむしょ;jimusho +しょくむ;shokumu +むりょう;muryou +ぶじ;buji +めいろ;meiro +めいむ;meimu +まよいご;mayoigo +もめん;momen +わたげ;watage +わたがし;watagashi +ゆしゅつ;yushutsu +ゆそう;yusou +うんゆ;un_yu +よぶん;yobun +よけい;yokei +ごじゅうあまり;gojuuamari +よきん;yokin +あずかりにん;azukarinin +あずかりしょう;azukarishou +びよういん;biyouin +ないよう;naiyou +けいようし;keiyoushi +のうりつ;nouritsu +とうそつ;tousotsu +ぜいりつ;zeiritsu +りゃくご;ryakugo +りゃくせつ;ryakusetsu +りゃくず;ryakuzu +るすばん;rusuban +とめがね;tomegane +りょうじ;ryouji +りょうど;ryoudo +ようりょう;youryou +いよう;iyou +いじょう;ijou +いじん;ijin +いでん;iden +いしつ;ishitsu +ゆいごん;yuigon +りょういき;ryouiki +ちいき;chiiki +くいき;kuiki +いちまんえん;ichiman_en +いっせん;issen +にじゅういち;nijuuichi +うちゅう;uchuu +どうう;douu +うちょうてん;uchouten +うもう;umou +はおり;haori +いちわ;ichiwa +えいがかん;eigakan +はんえい;han_ei +ゆうばえ;yuubae +えんちょう;enchou +えんき;enki +のびのび;nobinobi +えんがん;engan +えんどう;endou +えんせん;ensen +かのう;kanou +かけつ;kaketsu +いうべき;iubeki +じが;jiga +わがまま;wagamama +われわれ;wareware +せっかい;sekkai +はいいろ;haiiro +かざんばい;kazanbai +しがい;shigai +かいどう;kaidou +きゅうけつき;kyuuketsuki +すいとる;suitoru +きゅうそ;kyuuso +なきむし;nakimushi +なきだす;nakidasu +ていきょう;teikyou +ともまわり;tomomawari +くよう;kuyou +きょうぶ;kyoubu +むなげ;munage +どきょう;dokyou +ぼうきょう;boukyou +ごうし;goushi +きょうど;kyoudo +しゅっきん;shukkin +きんべんせい;kinbensei +つとめさき;tsutomesaki +きんにく;kinniku +すじみち;sujimichi +すじがき;sujigaki +かけい;kakei +けいとう;keitou +けいれつ;keiretsu +ちょっけい;chokkei +しょうけい;shoukei +ちょくじょうけいこう;chokujoukeikou +そんけい;sonkei +けいご;keigo +いけい;ikei +けいかん;keikan +けいこく;keikoku +けいほう;keihou +げきじょう;gekijou +げきてき;gekiteki +げきつう;gekitsuu +けっきょじん;kekkyojin +あなご;anago +あなうめ;anaume +けんぎょう;kengyou +けんよう;ken_you +しかねる;shikaneru +けんり;kenri +けんこう;kenkou +ごんげ;gonge +けんぽう;kenpou +けんしょう;kenshou +けんぺい;kenpei +しげん;shigen +げんせん;gensen +げんじ;genji +げんかく;genkaku +げんぴ;genpi +そうごん;sougon +じこ;jiko +ちき;chiki +りこ;riko +こきゅう;kokyuu +てんこ;tenko +よびもの;yobimono +ごかい;gokai +ごはん;gohan +ごやく;goyaku +こうごう;kougou +こうひ;kouhi +ごご;gogo +こうい;koui +こうだんし;koudanshi +こうし;koushi +こうこう;koukou +ふこう;fukou +こうたいし;koutaishi +ほうおう;houou +めいじてんのう;meijitennou +こうよう;kouyou +しんく;shinku +こうちゃ;koucha +こうう;kouu +こうふく;koufuku +のりおり;noriori +こうてつ;koutetsu +せいこうじょ;seikoujo +はがねいろ;haganeiro +じこく;jikoku +こくいん;kokuin +きざみめ;kizamime +こくもつ;kokumotsu +こくるい;kokurui +こくそう;kokusou +こっせつ;kossetsu +ろうこつ;roukotsu +ほねおる;honeoru +こんなん;konnan +こんく;konku +こまらせる;komaraseru +さきん;sakin +じゃり;jari +すなはま;sunahama +ざせき;zaseki +ざだんかい;zadankai +ぎんざ;ginza +けいざいがく;keizaigaku +へんさい;hensai +すまない;sumanai +さいばん;saiban +たちくず;tachikuzu +たちかた;tachikata +せいさく;seisaku +たいさく;taisaku +さくどうか;sakudouka +さっし;sasshi +にさつ;nisatsu +たんざく;tanzaku +しきゅう;shikyuu +げし;geshi +いたらない;itaranai +しりつ;shiritsu +わたしたち;watashitachi +しじ;shiji +しせい;shisei +ようし;youshi +すがたみ;sugatami +しりょく;shiryoku +しかく;shikaku +どうし;doushi +ことばがき;kotobagaki +ほんし;honshi +しゅうかんし;shuukanshi +じしゃく;jishaku +じき;jiki +じりょく;jiryoku +ちゅうしゃき;chuushaki +いたおす;itaosu +しゃげきじょう;shagekijou +きしゃ;kisha +すてご;sutego +すておく;suteoku +しゃくど;shakudo +しゃくはち;shakuhachi +せきち;sekichi +かいしゃく;kaishaku +しゃくほう;shakuhou +しゃくめい;shakumei +じゃくねん;jakunen +もしくは;moshikuha +わかもの;wakamono +じゅよう;juyou +ひつじゅひん;hitsujuhin +じゅきゅう;jukyuu +じゅし;jushi +じゅりつ;juritsu +じゅひ;juhi +しゅうきょう;shuukyou +そうけ;souke +しゅうは;shuuha +じょうじゅ;jouju +について;nitsuite +しゅうしょく;shuushoku +じゅうぎょういん;juugyouin +じゅうしゃ;juusha +したがって;shitagatte +じゅうせん;juusen +ほうじゅう;houjuu +たてがき;tategaki +しゅくしょう;shukushou +たんしゅく;tanshuku +ちぢみどめ;chidimidome +せいじゅく;seijuku +はんじゅく;hanjuku +じゅくれん;jukuren +じゅんすい;junsui +じゅんもう;junmou +じゅんえき;jun_eki +しょり;shori +しょち;shochi +しょしょ;shosho +しょめい;shomei +しょいん;shoin +けいさつしょ;keisatsusho +しょとう;shotou +しょくん;shokun +もろて;morote +しょうらい;shourai +しょうぐん;shougun +まさに;masani +くしょう;kushou +わらいごえ;waraigoe +えがお;egao +ししょうしゃ;shishousha +しょうがい;shougai +きずつける;kizutsukeru +しょうがい;shougai +しょうじ;shouji +さしさわる;sashisawaru +じょうかまち;joukamachi +ひめじじょう;himejijou +しろあと;shiroato +じょうき;jouki +じょうりゅう;jouryuu +むしあつい;mushiatsui +ほうしん;houshin +しんろ;shinro +はりがね;harigane +じんあい;jin_ai +じんしゃ;jinsha +におう;niou +すいちょく;suichoku +あまだれ;amadare +たれかざり;tarekazari +すいり;suiri +すいせんしゃ;suisensha +すいしんき;suishinki +すんぽう;sunpou +いっすん;issun +すんぶん;sunbun +ぜせい;zesei +これら;korera +せいしょ;seisho +せいじん;seijin +しんせい;shinsei +せいい;seii +せいじつ;seijitsu +まことに;makotoni +せんでん;senden +せんこく;senkoku +せんきょうし;senkyoushi +せんもん;senmon +せんよう;sen_you +せんせい;sensei +おんせんじょう;onsenjou +せんすい;sensui +ひせん;hisen +せんれい;senrei +てあらい;tearai +せんしょく;senshoku +そめもの;somemono +しみこむ;shimikomu +ばんそう;bansou +そうがくどう;sougakudou +そうじょう;soujou +まどぐち;madoguchi +でまど;demado +どうそうかい;dousoukai +そうぞう;souzou +そうりつしゃ;souritsusha +そうい;soui +かそう;kasou +そううん;souun +こうそうびる;kousoubiru +そうじゅうし;soujuushi +せっそう;sessou +あやつりにんぎょう;ayatsuriningyou +ぞうしょ;zousho +ぞうとく;zoutoku +さかぐら;sakagura +ぞうき;zouki +ないぞう;naizou +しんぞうがく;shinzougaku +ぞくご;zokugo +ぞっか;zokka +ふうぞく;fuuzoku +せいぞん;seizon +ぞんじより;zonjiyori +そんざいしゃ;sonzaisha +そんちょう;sonchou +そんのうか;sonnouka +そんりょ;sonryo +じたく;jitaku +たくち;takuchi +たんとう;tantou +にないしょうにん;ninaishounin +がくしゅうふたん;gakushuufutan +たんち;tanchi +たんきゅうしゃ;tankyuusha +さぐりだす;saguridasu +だんかい;dankai +まわりかいだん;mawarikaidan +てんらんかい;tenrankai +てんぼう;tenbou +とうぎ;tougi +うちいる;uchiiru +とうばつぐん;toubatsugun +せいとう;seitou +ろうどうとう;roudoutou +とうは;touha +さとう;satou +とうい;toui +とうぶん;toubun +とどけしょ;todokesho +とどけでる;todokederu +ゆきとどく;yukitodoku +なんみん;nanmin +なんぎ;nangi +みがたい;migatai +にまんえん;niman_en +にじゅう;nijuu +にせん;nisen +ぎゅうにゅう;gyuunyuu +にゅうさん;nyuusan +にゅうぼう;nyuubou +にんしき;ninshiki +にんか;ninka +みとめいん;mitomein +のうぜい;nouzei +なや;naya +すいとうぼ;suitoubo +ずのう;zunou +しゅのう;shunou +のうしょうがい;noushougai +はけん;haken +たなかは;tanakaha +れいはい;reihai +はいぐ;haigu +はいご;haigo +せなか;senaka +はいしん;haishin +はいびょう;haibyou +はいえん;haien +はいぞう;haizou +はいゆう;haiyuu +はいく;haiku +はいじん;haijin +はんちょう;hanchou +きゅうごはん;kyuugohan +はんでん;handen +ばんめし;banmeshi +ばんか;banka +こんばん;konban +ひにん;hinin +ひていご;hiteigo +いなめない;inamenai +ひはん;hihan +ひひょう;hihyou +ひじゅん;hijun +ひみつ;himitsu +ごくひ;gokuhi +ひしょ;hisho +ふくぶ;fukubu +はらだち;haradachi +ちゅうふく;chuufuku +ふんき;funki +ふんとう;funtou +ふるいたつ;furuitatsu +へいか;heika +へいけん;heiken +てんおうへいか;ten_ouheika +へいてん;heiten +へいこう;heikou +しめだす;shimedasu +だんぺん;danpen +かたて;katate +かたづける;katadukeru +ほじょ;hojo +ほじゅう;hojuu +ほきょう;hokyou +ほうせき;houseki +ざいほう;zaihou +こだから;kodakara +ほうもん;houmon +らいほうしゃ;raihousha +たんぼう;tanbou +しぼう;shibou +もうじゃ;mouja +ぼうめい;boumei +ぼうきゃく;boukyaku +ぼうおん;bouon +わすれがち;wasuregachi +しんぼう;shinbou +ぼうぐらふ;bougurafu +ぼうべに;boubeni +いちまい;ichimai +にまいじた;nimaijita +にまいがい;nimaigai +てんまく;tenmaku +かいまく;kaimaku +ばくふ;bakufu +みつど;mitsudo +みつゆ;mitsuyu +めんみつ;menmitsu +れんめい;renmei +どうめい;doumei +かめい;kamei +もけい;mokei +もしゃ;mosha +きぼ;kibo +やさき;yasaki +やじるし;yajirushi +いっし;isshi +ほんやく;hon_yaku +つうやく;tsuuyaku +いいわけ;iiwake +ゆうびん;yuubin +ゆうそう;yuusou +ゆうてい;yuutei +ゆうしゅう;yuushuu +ゆうせん;yuusen +じょゆう;joyuu +ようじ;youji +おさなご;osanago +ようひ;youhi +ようすい;yousui +ひつじかい;hitsujikai +よくぼう;yokubou +しょくよく;shokuyoku +ものほしげ;monohoshige +よくじつ;yokujitsu +よくちょう;yokuchou +よくよくねん;yokuyokunen +らんぼう;ranbou +はんらん;hanran +みだれあし;midareashi +らんおう;ran_ou +さんらん;sanran +なまたまご;namatamago +ごらん;goran +かいらん;kairan +かんらん;kanran +りめん;rimen +うらけ;urake +うらづける;uradukeru +きりつ;kiritsu +りちぎ;richigi +りんじ;rinji +りんかい;rinkai +りんせき;rinseki +めいろう;meirou +ろうほう;rouhou +ろうどくほう;roudokuhou +ろんぶん;ronbun +りろん;riron +ろんり;ronri +あねったい;anettai +おうあ;oua +ありゅう;aryuu +ひあい;hiai +あいか;aika +もののあわれ;mononoaware +あくしゅ;akushu +にぎりや;nigiriya +にぎりめし;nigirimeshi +とりあつかい;toriatsukai +こきつかう;kokitsukau +きゃくあつかい;kyakuatsukai +いらい;irai +いぜん;izen +えこじ;ekoji +いりょく;iryoku +いげん;igen +おどしもんく;odoshimonku +こうい;koui +ためすじ;tamesuji +しすぎる;shisugiru +たいい;taii +しょうい;shoui +いかん;ikan +いだい;idai +いじん;ijin +えらぶつ;erabutsu +そうい;soui +いはん;ihan +いいちがい;iichigai +いじ;iji +いしん;ishin +せんい;sen_i +いもん;imon +いあん;ian +なぐさみもの;nagusamimono +いど;ido +けいいぎ;keiigi +ぬきいと;nukiito +いっぴん;ippin +それや;soreya +いっしゅつ;isshutsu +さといも;satoimo +いもがい;imogai +やきいも;yakiimo +こんいん;kon_in +いんせき;inseki +いんぞくばつ;inzokubatsu +いんき;inki +いんぶ;inbu +かげぐち;kageguchi +いんきょ;inkyo +いんじゃ;inja +かくれが;kakurega +いんぶん;inbun +いんりつ;inritsu +おんいん;on_in +えいか;eika +えいそう;eisou +えいし;eishi +えいきょう;eikyou +えいぞう;eizou +かげむしゃ;kagemusha +えいり;eiri +えいかく;eikaku +せいえい;seiei +ぼうえき;boueki +あくえき;akueki +やくびょう;yakubyou +きえつ;kietsu +えつらく;etsuraku +まんえつ;man_etsu +ゆうえつ;yuuetsu +えっきょう;ekkyou +おいこす;oikosu +はいえつ;haietsu +えっけん;ekken +えっけんしつ;ekkenshitsu +えっぺい;eppei +けんえつ;ken_etsu +えつらんしつ;etsuranshitsu +かえん;kaen +のうえん;nouen +えんてん;enten +えんかい;enkai +えんらく;enraku +しゅえん;shuen +えんじょ;enjo +おうえん;ouen +せいえん;seien +えんとつ;entotsu +きんえん;kin_en +たばこ;tabako +るいじんえん;ruijin_en +やえん;yaen +さるまねや;sarumaneya +あえん;aen +こくえん;kokuen +えんぴついれ;enpitsuire +えんがわ;engawa +ふちぬい;fuchinui +えんだん;endan +おせん;osen +おしょく;oshoku +よごれもの;yogoremono +おうめん;oumen +くぼち;kubochi +へこみ;hekomi +おうしゅう;oushuu +おしいれ;oshiire +ておしぐるま;teoshiguruma +おうしゅう;oushuu +おうべい;oubei +おうしかん;oushikan +おうだ;ouda +なぐりこみ;nagurikomi +なぐりあう;naguriau +おうとう;outou +さくらいろ;sakurairo +さくらにく;sakuraniku +ろうおう;rouou +そんおう;son_ou +げんおきな;gen_okina +おくそこ;okusoko +おくさま;okusama +おくぎ;okugi +きおく;kioku +ついおく;tsuioku +おくそく;okusoku +ゆうぐ;yuugu +ふぐ;fugu +ぐびじんそう;gubijinsou +おつしゅ;otsushu +おとめ;otome +おつに;otsuni +おろしうり;oroshiuri +おろししょう;oroshishou +おろしだいこん;oroshidaikon +おんわ;onwa +おんとう;ontou +へいおん;heion +かじん;kajin +ぜっか;zekka +かさく;kasaku +かどうきょう;kadoukyou +しょか;shoka +かくう;kakuu +かび;kabi +ちゅうか;chuuka +はなばなしい;hanabanashii +せいか;seika +みずがし;mizugashi +うずまき;uzumaki +かせん;kasen +かちゅう;kachuu +はなよめ;hanayome +かし;kashi +てんか;tenka +きゅうか;kyuuka +よか;yoka +ひまどる;himadoru +かふく;kafuku +さいか;saika +かこん;kakon +せいか;seika +くつした;kutsushita +ながぐつ;nagagutsu +かもく;kamoku +かふ;kafu +かげん;kagen +かじょうがき;kajougaki +かしょ;kasho +いっこ;ikko +かぎょう;kagyou +かせぎて;kasegite +ともかせぎ;tomokasegi +かばり;kabari +ががんぼ;gaganbo +かやりび;kayaribi +ゆうが;yuuga +がごう;gagou +がしゅ;gashu +きが;kiga +がき;gaki +がし;gashi +かいにゅう;kainyuu +かいかく;kaikaku +じこしょうかい;jikoshoukai +けいかい;keikai +かいりつ;kairitsu +かいぎょう;kaigyou +かいだん;kaidan +かいぶつ;kaibutsu +あやしげ;ayashige +かいたいしゃ;kaitaisha +ゆうかい;yuukai +かいじょう;kaijou +こうかい;koukai +くやしさ;kuyashisa +くやみじょう;kuyamijou +かいさい;kaisai +かいむ;kaimu +みなさま;minasama +きんかい;kinkai +かいこう;kaikou +さんかい;sankai +はかい;hakai +かいめつ;kaimetsu +かいけつびょう;kaiketsubyou +かいちゅう;kaichuu +ふところで;futokorode +じゅっかい;jukkai +だんがいしゃ;dangaisha +だんがい;dangai +がいそう;gaisou +しょうがい;shougai +さいがい;saigai +てんがい;tengai +がいたん;gaitan +かんがい;kangai +がいぜん;gaizen +がいとう;gaitou +とうがい;tougai +がいはく;gaihaku +がいねん;gainen +がいりゃく;gairyaku +たいがい;taigai +かきね;kakine +いけがき;ikegaki +かいまみる;kaimamiru +かくしん;kakushin +けっかく;kekkaku +かくへいき;kakuheiki +かいがら;kaigara +こうかく;koukaku +ちかく;chikaku +りんかく;rinkaku +じょうかく;joukaku +ゆうかく;yuukaku +ひかく;hikaku +こうりょう;kouryou +たいこう;taikou +かくり;kakuri +かんかく;kankaku +かくしゅう;kakushuu +かくとく;kakutoku +ぎょかく;gyokaku +えもの;emono +いかく;ikaku +かくど;kakudo +いかくてき;ikakuteki +しゅうかく;shuukaku +たかく;takaku +しゅうかくだか;shuukakudaka +さんがく;sangaku +がくふ;gakufu +うんぜんだけ;unzendake +かかりびと;kakaribito +みかけ;mikake +こしかける;koshikakeru +ひがた;higata +せきこ;sekiko +にいがたし;niigatashi +いっかつ;ikkatsu +かっこ;kakko +ほうかつてき;houkatsuteki +かっさい;kassai +きょうかつ;kyoukatsu +いっかつ;ikkatsu +かっすい;kassui +かつぼう;katsubou +かわき;kawaki +えんかつ;enkatsu +かっそうろ;kassouro +すべりやすい;suberiyasui +かっしょく;kasshoku +かったん;kattan +かっぷ;kappu +しょかつ;shokatsu +かんかつ;kankatsu +とうかつ;toukatsu +かつまた;katsumata +かつ;katsu +こうしょ;kousho +かりいれ;kariire +かりこむ;karikomu +くさかりき;kusakariki +あまざけ;amazake +かんげん;kangen +あまえ;amae +はっかん;hakkan +かんがん;kangan +あせみず;asemizu +かんづめ;kandume +かんきり;kankiri +きかん;kikan +かんぞう;kanzou +かんじん;kanjin +きもったま;kimottama +おうかん;oukan +えいかん;eikan +かんもう;kanmou +かんぼつ;kanbotsu +けっかん;kekkan +かんらく;kanraku +かんでんち;kandenchi +かんそうき;kansouki +かわいた;kawaita +かんべん;kanben +かんじょう;kanjou +かんちがい;kanchigai +かんじゃ;kanja +かんぶ;kanbu +ながわずらい;nagawazurai +かんつう;kantsuu +じゅうかん;juukan +かんりゅう;kanryuu +かんもん;kanmon +きょうかん;kyoukan +わめきごえ;wamekigoe +かんにん;kannin +たんのう;tannou +たえがたい;taegatai +かんき;kanki +かえぎ;kaegi +こうかんがくせい;koukangakusei +ゆうかん;yuukan +かんぜん;kanzen +あえなく;aenaku +かんおけ;kan_oke +せっかん;sekkan +ひつぎだい;hitsugidai +しゃっかん;shakkan +らっかん;rakkan +かんたい;kantai +かんせい;kansei +かんさん;kansan +かんじん;kanjin +かんだい;kandai +かんよう;kan_you +かんい;kan_i +かんし;kanshi +そうかん;soukan +かんきん;kankin +かんわ;kanwa +かんりゅう;kanryuu +ゆるゆる;yuruyuru +いかん;ikan +かんこん;kankon +うらみ;urami +かんげん;kangen +せいかんしゃ;seikansha +へんかん;henkan +ゆびわ;yubiwa +かんじょうせん;kanjousen +かんきょう;kankyou +ぐんかん;gunkan +かんたい;kantai +かんしゅ;kanshu +ねんかん;nenkan +かんしょう;kanshou +かんがみて;kangamite +ほうがん;hougan +がんゆうりょう;gan_yuuryou +ふくめて;fukumete +がんこ;ganko +がんけん;ganken +きぎょう;kigyou +きかく;kikaku +くわだて;kuwadate +きろ;kiro +ぶんき;bunki +たき;taki +きちゅう;kichuu +きんき;kinki +いみきらう;imikirau +きすう;kisuu +しんき;shinki +きけい;kikei +きねん;kinen +きとう;kitou +いのりあう;inoriau +きどう;kidou +むきどう;mukidou +じょうき;jouki +きせい;kisei +きこん;kikon +きてい;kitei +きかん;kikan +うえじに;uejini +きがこうしん;kigakoushin +きかい;kikai +きせき;kiseki +おにごっこ;onigokko +きかがく;kikagaku +きし;kishi +しょうぎ;shougi +きてき;kiteki +ほうき;houki +きけん;kiken +きじ;kiji +こうき;kouki +きせき;kiseki +かがやき;kagayaki +きし;kishi +きへい;kihei +いっきうち;ikkiuchi +てきぎ;tekigi +べんぎ;bengi +よろしく;yoroshiku +にせもの;nisemono +ぎぜん;gizen +いつわりもの;itsuwarimono +さぎ;sagi +ぎまん;giman +あざむきとる;azamukitoru +ぎしき;gishiki +ぎてん;giten +れいぎ;reigi +ゆうぎてき;yuugiteki +ぎが;giga +たわごと;tawagoto +もぎ;mogi +ぎせい;gisei +ぎせいご;giseigo +ぎせい;gisei +ぎだ;gida +ぎせいせいど;giseiseido +のぎく;nogiku +きっか;kikka +きくばん;kikuban +きちにち;kichinichi +きっぽう;kippou +ふきつ;fukitsu +きつえん;kitsuen +きっすいせん;kissuisen +きつもん;kitsumon +つまり;tsumari +つめこむ;tsumekomu +きゃっか;kyakka +たいきゃく;taikyaku +さて;sate +きゃっか;kyakka +きゃたつ;kyatatsu +あしに;ashini +ぎゃくさつ;gyakusatsu +ぎゃくたい;gyakutai +ざんぎゃく;zangyaku +きゅうだいてん;kyuudaiten +ついきゅう;tsuikyuu +およびごし;oyobigoshi +さきゅう;sakyuu +きゅうしん;kyuushin +おかべ;okabe +ろうきゅう;roukyuu +ふきゅう;fukyuu +くちば;kuchiba +ふんきゅう;funkyuu +きゅうだん;kyuudan +きゅうめい;kyuumei +きゅうきょく;kyuukyoku +きゅうきょう;kyuukyou +きゅうくつ;kyuukutsu +きょじん;kyojin +きょだい;kyodai +きょひ;kyohi +きょぜつ;kyozetsu +きょひ;kyohi +きょし;kyoshi +こんきょ;konkyo +しょうこ;shouko +よりどころ;yoridokoro +きょぎ;kyogi +こくう;kokuu +きょむしゅぎ;kyomushugi +きょり;kyori +きょこつ;kyokotsu +そっきょぎ;sokkyogi +ぎょしゃ;gyosha +ごよう;goyou +おんちゅう;onchuu +きょうあく;kyouaku +きょうさく;kyousaku +きっきょう;kikkyou +ぜっきょう;zekkyou +さけびごえ;sakebigoe +さけびだす;sakebidasu +きょうじん;kyoujin +きょうげん;kyougen +くるった;kurutta +きょうじゅしゃ;kyoujusha +きょうゆう;kyouyuu +きょうらく;kyouraku +じょうきょう;joukyou +じっきょう;jikkyou +いわんや;iwan_ya +きょうこく;kyoukoku +ちきょう;chikyou +かいきょう;kaikyou +きょうげき;kyougeki +いたばさみ;itabasami +はさみむし;hasamimushi +きょうぎ;kyougi +こうきょう;koukyou +せまくるしい;semakurushii +きょうふ;kyoufu +きょうえいびょう;kyoueibyou +おそれいる;osoreiru +きょうじゅん;kyoujun +きょうけい;kyoukei +きょうけん;kyouken +きょうはく;kyouhaku +きょうい;kyoui +おどかして;odokashite +きょうせいてき;kyouseiteki +ききょう;kikyou +ためなおす;tamenaosu +ひびきわたる;hibikiwataru +あくえいきょう;akueikyou +こうきょうきょく;koukyoukyoku +きょうい;kyoui +きょうがく;kyougaku +おどろくべき;odorokubeki +ぎょうてん;gyouten +しんこう;shinkou +おおせだす;oosedasu +ぎょうてん;gyouten +つうぎょう;tsuugyou +ぎょうせい;gyousei +ぎょうし;gyoushi +こりしょう;korishou +こった;kotta +きんりょう;kinryou +きんめ;kinme +ふきん;fukin +さいきん;saikin +きんるい;kinrui +ほきんしゃ;hokinsha +てふうきん;tefuukin +きんせん;kinsen +ことづめ;kotodume +きんちょう;kinchou +きんきゅう;kinkyuu +きんみつ;kinmitsu +きんげん;kingen +きんけい;kinkei +つつしんで;tsutsushinde +きょうきん;kyoukin +きんど;kindo +えりくび;erikubi +ぎんえい;gin_ei +ぎんみ;ginmi +ぎんゆうしじん;gin_yuushijin +せんくしゃ;senkusha +かりだす;karidasu +かけおち;kakeochi +ぐじん;gujin +ぐずる;guzuru +ぐこう;gukou +ぐうぜん;guuzen +ぐうぞう;guuzou +はいぐうしゃ;haiguusha +きぐう;kiguu +たいぐう;taiguu +ふぐう;fuguu +いちぐう;ichiguu +すみいし;sumiishi +かたすみ;katasumi +くっぷく;kuppuku +ふくつ;fukutsu +くっせつ;kussetsu +はっくつ;hakkutsu +ほりだす;horidasu +さいくつ;saikutsu +くりいと;kuriito +くりこす;kurikosu +くりかえす;kurikaesu +くんしょう;kunshou +しゅくん;shukun +くんい;kun_i +くんこう;kunkou +くんいく;kun_iku +くんぷう;kunpuu +しょけい;shokei +しけい;shikei +けいじ;keiji +きゅうけい;kyuukei +ちかけい;chikakei +はぐき;haguki +けいやく;keiyaku +けいき;keiki +けいいん;keiin +けいよ;keiyo +ちえ;chie +めぐみぶかい;megumibukai +けいはつ;keihatsu +けいじ;keiji +はいけい;haikei +けいじばん;keijiban +ぜんけい;zenkei +けいよう;keiyou +けいこく;keikoku +せっけい;sekkei +けいりゅう;keiryuu +けいこう;keikou +けいせつ;keisetsu +ほたるがり;hotarugari +けいこう;keikou +けいとう;keitou +けいしゃど;keishado +けいたい;keitai +ていけい;teikei +ひっけい;hikkei +けいぞく;keizoku +ままこ;mamako +つぎたし;tsugitashi +けいしゅく;keishuku +けいじ;keiji +けいが;keiga +きゅうけい;kyuukei +しょうけい;shoukei +いこい;ikoi +けいらん;keiran +けいしゃ;keisha +けいめい;keimei +かんげいかい;kangeikai +げいごう;geigou +むかえざけ;mukaezake +げいゆ;geiyu +ほげい;hogei +ざとうくじら;zatoukujira +そげき;sogeki +こうげき;kougeki +はやうち;hayauchi +かんげき;kangeki +げっか;gekka +はげしさ;hageshisa +けっし;kesshi +けっしゅつ;kesshutsu +けっさく;kessaku +けんしょう;kenshou +ひけん;hiken +かたがき;katagaki +けんやく;ken_yaku +せっけん;sekken +きんけん;kinken +けんどう;kendou +けんぶ;kenbu +たんけん;tanken +いっけん;ikken +けんとう;kentou +のきさき;nokisaki +せいそうけん;seisouken +けんがい;kengai +きょうさんけん;kyousanken +けんじつ;kenjitsu +けんご;kengo +ちゅうけん;chuuken +けんお;ken_o +きげん;kigen +いやいや;iyaiya +けんじょう;kenjou +こんだて;kondate +けんしん;kenshin +はけん;haken +こづかい;kodukai +やりなおす;yarinaosu +けんじゃ;kenja +けんめい;kenmei +かしこだて;kashikodate +けんそん;kenson +けんきょ;kenkyo +けんじょう;kenjou +けんちゅう;kenchuu +おおまゆ;oomayu +からまゆ;karamayu +けんちょ;kencho +けんよう;ken_you +けんびきょう;kenbikyou +けんめい;kenmei +けねん;kenen +いのちがけ;inochigake +げんそう;gensou +げんぞう;genzou +げんじゅつ;genjutsu +げんみょう;genmyou +げんかん;genkan +くろうと;kurouto +せいげん;seigen +ゆみづる;yumiduru +げんがっき;gengakki +こじいん;kojiin +こどく;kodoku +こりつ;koritsu +こけい;kokei +こじょう;kojou +ことう;kotou +こし;koshi +ふゆがれ;fuyugare +かれは;kareha +こよう;koyou +やといにん;yatoinin +かいこ;kaiko +こだい;kodai +こじ;koji +ほこりがお;hokorigao +こどう;kodou +たいこ;taiko +こつづみ;kotsudumi +こりょ;koryo +かいこ;kaiko +こもん;komon +そうご;sougo +ごじょ;gojo +たがいちがい;tagaichigai +ごふく;gofuku +くれぐれも;kureguremo +くれて;kurete +ごらく;goraku +かんご;kango +ごらくひん;gorakuhin +ごせい;gosei +かくご;kakugo +さとり;satori +ごいし;goishi +ごばん;goban +ごうち;gouchi +びこう;bikou +きこう;kikou +こうし;koushi +ぎこう;gikou +こうげん;kougen +せいこう;seikou +こうちゅう;kouchuu +こうしゅ;koushu +かんだかい;kandakai +いりえ;irie +こうこ;kouko +えど;edo +たんこう;tankou +こうふ;koufu +たいこう;taikou +こうぎ;kougi +こうそう;kousou +こうげきしゃ;kougekisha +せんこう;senkou +せめいる;semeiru +こうしん;koushin +いまさら;imasara +よふけ;yofuke +こうそく;kousoku +こういん;kouin +かかわらず;kakawarazu +しゅこう;shukou +こうてい;koutei +こうけい;koukei +こうじょう;koujou +こうきゅう;koukyuu +こうれい;kourei +こうずい;kouzui +こうせきそう;kousekisou +こうだい;koudai +こうてん;kouten +あれち;arechi +あらなみ;aranami +こうがい;kougai +きんこう;kinkou +こうや;kouya +こうすい;kousui +こうき;kouki +いろか;iroka +こうしゃく;koushaku +おおたこう;ootakou +おうこう;oukou +こうけん;kouken +ねんぐ;nengu +みつぎもの;mitsugimono +ひかえじょ;hikaejo +こうそ;kouso +ひかえがき;hikaegaki +きょうこう;kyoukou +おおあわて;ooawate +あわてもの;awatemono +こうか;kouka +こうか;kouka +こうすい;kousui +こうしゅだい;koushudai +しめころす;shimekorosu +しぼりだす;shiboridasu +こうもく;koumoku +じこう;jikou +じょうこう;joukou +げすいこう;gesuikou +みぞきり;mizokiri +どぶねずみ;dobunezumi +ようこう;youkou +たいこう;taikou +つなびき;tsunabiki +こうぼ;koubo +こうそ;kouso +はっこう;hakkou +げんこう;genkou +とうこう;toukou +そうこう;soukou +きんこう;kinkou +へいこう;heikou +こうき;kouki +こうにゅう;kounyuu +こうばい;koubai +こうどく;koudoku +ごうもん;goumon +ごうせき;gouseki +ごうもんだい;goumondai +ごうけん;gouken +ごうもう;goumou +ごうちょく;gouchoku +ごうう;gouu +ごうそう;gousou +ごうしゅう;goushuu +こくふく;kokufuku +こっき;kokki +こくめい;kokumei +こくし;kokushi +ざんこく;zankoku +こくしょ;kokusho +ごくもん;gokumon +じごく;jigoku +ぎごく;gigoku +みこみ;mikomi +ひとごみ;hitogomi +こめもの;komemono +こんちゅう;konchuu +こんぶ;konbu +こうこん;koukon +かいこん;kaikon +いこん;ikon +うらみごと;uramigoto +こんやく;kon_yaku +けっこんしき;kekkonshiki +しんこんふうふ;shinkonfuufu +こんいろ;kon_iro +こんや;kon_ya +のうこん;noukon +れいこん;reikon +しょうこん;shoukon +たまげる;tamageru +かいこん;kaikon +こんでん;konden +みかいこんち;mikaikonchi +こんだん;kondan +こんがん;kongan +こんい;kon_i +ほさ;hosa +さかん;sakan +たいさ;taisa +しさ;shisa +きょうさ;kyousa +きょうさしゃ;kyousasha +さぎし;sagishi +さしゅ;sashu +さしょう;sashou +さこく;sakoku +れんさ;rensa +くさりどめ;kusaridome +さいひょうせん;saihyousen +さいへん;saihen +くだけた;kudaketa +しゅさいしゃ;shusaisha +さいりょう;sairyou +さいしょう;saishou +さいばい;saibai +ぼんさい;bonsai +せんざい;senzai +しきさい;shikisai +たんさい;tansai +さいうん;saiun +さいかい;saikai +しょさい;shosai +けっさい;kessai +さいむ;saimu +さいけん;saiken +さいけんしゃ;saikensha +しゅさい;shusai +さいそく;saisoku +さいみん;saimin +にさい;nisai +さいひ;saihi +せいぼ;seibo +せきさい;sekisai +けいさい;keisai +きさい;kisai +やくざいし;yakuzaishi +やくざい;yakuzai +かんげざい;kangezai +ながさき;nagasaki +しまざき;shimazaki +きく;kiku +さくじょ;sakujo +さくげん;sakugen +けずりとる;kezuritoru +さくいん;sakuin +しさく;shisaku +てっさく;tessaku +さくさん;sakusan +すのもの;sunomono +すづけ;suduke +さくしゅ;sakushu +あっさく;assaku +しぼりとる;shiboritoru +さくご;sakugo +さっかく;sakkaku +とうさく;tousaku +しきざき;shikizaki +おそざき;osozaki +さきのこる;sakinokoru +さついれ;satsuire +なふだ;nafuda +せんえんさつ;sen_ensatsu +さつえい;satsuei +とりなおす;torinaosu +つまみぐい;tsumamigui +さっかしょう;sakkashou +すれちがう;surechigau +すりこむ;surikomu +はいざら;haizara +おおざら;oozara +さらあらい;saraarai +さんばし;sanbashi +さじき;sajiki +さんどう;sandou +さんげき;sangeki +ざんさつ;zansatsu +ひさん;hisan +さんか;sanka +あまがさ;amagasa +ひがさ;higasa +ざんていてき;zanteiteki +ざんじ;zanji +しばらくして;shibarakushite +ようし;youshi +しゅし;shushi +うまうまと;umaumato +うかがいごと;ukagaigoto +しこう;shikou +うかがいさぐる;ukagaisaguru +めいし;meishi +さしみ;sashimi +とげぬき;togenuki +したい;shitai +えだづの;edaduno +かれえだ;kareeda +しふく;shifuku +ふくし;fukushi +ふくしこっか;fukushikokka +したい;shitai +かし;kashi +せんたくし;sentakushi +しせつ;shisetsu +じっし;jisshi +せやく;seyaku +しぼう;shibou +あぶらけ;aburake +やにめ;yanime +しえん;shien +むらさきいろ;murasakiiro +しがいせん;shigaisen +しし;shishi +こうし;koushi +こうし;koushi +しいく;shiiku +かいぬし;kainushi +かいいぬ;kaiinu +しゆう;shiyuu +めうし;meushi +めいぬ;meinu +しか;shika +おんし;onshi +たまもの;tamamono +しじゅん;shijun +しもん;shimon +しもんきかん;shimonkikan +じじゅう;jijuu +じじょ;jijo +じそう;jisou +じよう;jiyou +じみ;jimi +じう;jiu +じひ;jihi +じぜん;jizen +じあい;jiai +ぎょじ;gyoji +こくじ;kokuji +いんじ;inji +しゃじく;shajiku +ちじく;chijiku +じくもの;jikumono +しっかん;shikkan +しっそう;shissou +とっくに;tokkuni +しっぴつ;shippitsu +しゅうねん;shuunen +とりなす;torinasu +しつど;shitsudo +しっち;shicchi +しめっぽい;shimeppoi +しっき;shikki +しっこく;shikkoku +うるしぬり;urushinuri +しばふ;shibafu +しばい;shibai +しばかりき;shibakariki +ようしゃ;yousha +しゃめん;shamen +おんしゃ;onsha +しゃめん;shamen +しゃほうけい;shahoukei +ななめつぎ;nanametsugi +しゃふつ;shafutsu +なまにえ;namanie +にたてる;nitateru +しゃにむに;shanimuni +しゃこうまく;shakoumaku +しゃだんき;shadanki +じゃあく;jaaku +むじゃき;mujaki +かぜ;kaze +じゃかん;jakan +だこう;dakou +へびかわ;hebikawa +いっしゃく;isshaku +さんしゃく;sanshaku +じっしゃく;jisshaku +しゃくふ;shakufu +ばんしゃく;banshaku +しゃくりょう;shakuryou +しゃくい;shakui +じゅしゃく;jushaku +だんしゃく;danshaku +せいじゃく;seijaku +せきばく;sekibaku +さびしさ;sabishisa +しゅいろ;shuiro +しゅにく;shuniku +しゅひつ;shuhitsu +しゅりょう;shuryou +かりいぬ;kariinu +かりこみ;karikomi +とくしゅ;tokushu +しゅしょう;shushou +ことさら;kotosara +しゅぎょく;shugyoku +しんじゅ;shinju +じゅず;juzu +しゅみ;shumi +しゅい;shui +しゅこう;shukou +じゅみょう;jumyou +ちょうじゅ;chouju +べいじゅ;beiju +じゅきょう;jukyou +じゅしゃ;jusha +じゅがく;jugaku +しゅうじん;shuujin +しゅうえき;shuueki +しけいしゅう;shikeishuu +しゅうこう;shuukou +ふなあそび;funaasobi +こぶね;kobune +しゅうさい;shuusai +しゅういつ;shuuitsu +しゅうび;shuubi +しゅうき;shuuki +ぞくしゅう;zokushuu +くさみ;kusami +しゅうしょう;shuushou +あいしゅう;aishuu +うれいがお;ureigao +ほうしゅう;houshuu +おうしゅう;oushuu +けんしゅう;kenshuu +しゅうあく;shuuaku +しゅうぶん;shuubun +みにくさ;minikusa +しゅうらい;shuurai +くうしゅう;kuushuu +せしゅう;seshuu +かじゅう;kajuu +ぼくじゅう;bokujuu +みそしる;misoshiru +じゅうぶん;juubun +じゅうじつ;juujitsu +あてがう;ategau +じゅうどう;juudou +にゅうじゃく;nyuujaku +やわらかもの;yawarakamono +じゅうたい;juutai +しぶみ;shibumi +しぶしぶ;shibushibu +しょうじゅう;shoujuu +じゅうけん;juuken +じゅうか;juuka +じゅうい;juui +じゅうてき;juuteki +ちょうじゅう;choujuu +おじ;oji +おば;oba +はくしゅく;hakushuku +ていしゅく;teishuku +しゅくじょ;shukujo +ししゅく;shishuku +しゅくぜん;shukuzen +じしゅく;jishuku +げんしゅく;genshuku +じゅくせい;jukusei +じゅくそく;jukusoku +しじゅく;shijuku +しゅんさい;shunsai +しゅんけつ;shunketsu +しゅんどう;shundou +いっしゅん;isshun +しゅんかん;shunkan +またたくまに;matatakumani +じょうじゅん;joujun +ちゅうじゅん;chuujun +げじゅん;gejun +じゅんかい;junkai +じゅんさ;junsa +ひとめぐり;hitomeguri +むじゅん;mujun +うしろだて;ushirodate +たてつく;tatetsuku +じゅんい;jun_i +ひじゅん;hijun +じゅんきょ;junkyo +じゅんし;junshi +じゅんきょうしゃ;junkyousha +じゅんしょく;junshoku +いんじゅん;injun +じゅんかん;junkan +あくじゅんかん;akujunkan +じゅんかつ;junkatsu +りじゅん;rijun +じゅんたく;juntaku +じゅんしゅ;junshu +じゅんぽう;junpou +じゅんぽう;junpou +しょみん;shomin +しょむ;shomu +しょし;shoshi +たんしょ;tansho +はなお;hanao +じょじょう;jojou +にょじつ;nyojitsu +じょじゅつ;jojutsu +じょじょうてき;jojouteki +じょくん;jokun +じょこう;jokou +じょじょに;jojoni +じょほ;joho +ますめ;masume +にしょう;nishou +いっしょうびん;isshoubin +しょうしゅう;shoushuu +しょうかん;shoukan +めしつかい;meshitsukai +ししょう;shishou +きょしょう;kyoshou +いしょう;ishou +びょうしょう;byoushou +ゆかはり;yukahari +とこのま;tokonoma +しょうほん;shouhon +ししょう;shishou +しょうやく;shouyaku +しょうぞう;shouzou +ふしょう;fushou +あやかりもの;ayakarimono +しょうそう;shousou +こうしょう;koushou +なおなお;naonao +しょうしん;shoushin +じょうしょう;joushou +しょうこうき;shoukouki +まつば;matsuba +まつばら;matsubara +しょうちくばい;shouchikubai +しょうき;shouki +しょうたく;shoutaku +ぬまち;numachi +てっしょう;tesshou +よいづき;yoiduki +よいごし;yoigoshi +しょうじょう;shoujou +えんしょう;enshou +きょうふしょう;kyoufushou +はっしょうち;hasshouchi +きっしょう;kisshou +ふしょうじ;fushouji +こうしょう;koushou +かんしょう;kanshou +しょうがい;shougai +しょうかい;shoukai +しょうかいしゃ;shoukaisha +しょうかいじょう;shoukaijou +そしょう;soshou +そしょうにん;soshounin +そしょうひよう;soshouhiyou +しょうちゅう;shouchuu +しゃしょう;shashou +しょくしょう;shokushou +すいしょう;suishou +しょうか;shouka +けっしょう;kesshou +しょうど;shoudo +しょうしん;shoushin +くろこげ;kurokoge +しょうさん;shousan +しょうやく;shouyaku +がらす;garasu +けしょう;keshou +けしょうひん;keshouhin +けしょうしつ;keshoushitsu +しょうしょ;shousho +しょうれい;shourei +たいしょう;taishou +しょうれい;shourei +すいしょう;suishou +しょうがくきん;shougakukin +しょうさい;shousai +みしょう;mishou +くわしく;kuwashiku +ひょうしょう;hyoushou +けんしょう;kenshou +しょうとく;shoutoku +しょうとつ;shoutotsu +しょうどう;shoudou +せっしょう;sesshou +しょうきん;shoukin +しょうきゃく;shoukyaku +べんしょう;benshou +がんしょう;ganshou +あんしょう;anshou +さんごしょう;sangoshou +けいしょう;keishou +つりがねどう;tsuriganedou +しょうにゅうせき;shounyuuseki +せたけ;setake +ほうじょう;houjou +じょうだん;joudan +じょうちょう;jouchou +じょうご;jougo +じょうか;jouka +ふじょう;fujou +じょうすい;jousui +じょうよ;jouyo +よじょう;yojou +かじょう;kajou +じょうく;jouku +にじょう;nijou +たたみこむ;tatamikomu +おきなわ;okinawa +なわばり;nawabari +じじょうじばく;jijoujibaku +どじょう;dojou +じょうど;joudo +てんじょう;tenjou +れいじょう;reijou +あいじょう;aijou +じょうまえ;joumae +てじょう;tejou +じょうざい;jouzai +じょうほ;jouho +じょうと;jouto +おやゆずり;oyayuzuri +じょうぞう;jouzou +じょうせい;jousei +かもしだす;kamoshidasu +せいしょく;seishoku +りしょく;rishoku +ふえだか;fuedaka +そうしょく;soushoku +くびかざり;kubikazari +かざりもの;kazarimono +しょくしゅ;shokushu +せっしょく;sesshoku +ふれあう;fureau +いしょく;ishoku +しょくぼう;shokubou +しょくたく;shokutaku +ぶじょく;bujoku +くつじょく;kutsujoku +せつじょく;setsujoku +しんしゅく;shinshuku +ついしん;tsuishin +せのび;senobi +しんく;shinku +からみ;karami +かろうじて;karoujite +しんにゅう;shinnyuu +しんがい;shingai +しんりゃく;shinryaku +しんしん;shinshin +つなみ;tsunami +つつうらうら;tsutsuuraura +しんおん;shin_on +こうしん;koushin +こうしん;koushin +にんしん;ninshin +にんしんかのう;ninshinkanou +にんしんけんさ;ninshinkensa +しんどう;shindou +ふりきる;furikiru +にねんぶり;ninenburi +しんしょく;shinshoku +しんすい;shinsui +みずびたし;mizubitashi +しんし;shinshi +しんしょう;shinshou +しんしろく;shinshiroku +しんだん;shindan +しんさつ;shinsatsu +おうしん;oushin +しんしつ;shinshitsu +ねいる;neiru +ねかしもの;nekashimono +しんちょう;shinchou +きんしん;kinshin +つつしみぶかい;tsutsushimibukai +しんぎ;shingi +ふしん;fushin +しんぱん;shinpan +じしん;jishin +みぶるい;miburui +ふるえごえ;furuegoe +しんたん;shintan +たきぎこや;takigikoya +まきわり;makiwari +はくじん;hakujin +はもの;hamono +りょうば;ryouba +じんりょく;jinryoku +じんみらい;jinmirai +こころづくし;kokorodukushi +じんそく;jinsoku +じんらい;jinrai +ふんじん;funjin +じんだい;jindai +じんろく;jinroku +こうじん;koujin +じんとう;jintou +じんち;jinchi +じんつう;jintsuu +じんもん;jinmon +じんじょう;jinjou +たずねだす;tazunedasu +こすい;kosui +ふぶき;fubuki +ふきたおす;fukitaosu +すいじ;suiji +めしたき;meshitaki +じすい;jisui +とうすい;tousui +げんすい;gensui +しょうすい;shousui +すいび;suibi +いきごと;ikigoto +すいじん;suijin +すいじゃく;suijaku +ろうすい;rousui +せいすい;seisui +ますい;masui +よっぱらい;yopparai +ふなよい;funayoi +すいこう;suikou +みすい;misui +しとげる;shitogeru +すいみん;suimin +じゅくすい;jukusui +ごすい;gosui +すいじょう;suijou +いなほ;inaho +ほさき;hosaki +ぼうすい;bousui +どくせん;dokusen +うらないしゃ;uranaisha +しめた;shimeta +せんす;sensu +せんぷうき;senpuuki +せんけい;senkei +せんぬき;sennuki +きゅうすいせん;kyuusuisen +しょうかせん;shoukasen +せんかい;senkai +せんばん;senban +しゅうせん;shuusen +じっせん;jissen +じっせんてき;jissenteki +じっせんしゅぎ;jissenshugi +せんてつ;sentetsu +せんこう;senkou +ようせん;yousen +せんざい;senzai +せんすい;sensui +もぐりこむ;mogurikomu +せんえん;sen_en +へんせん;hensen +せんげ;senge +すいせん;suisen +せんこつ;senkotsu +じせん;jisen +せんい;sen_i +せんさい;sensai +せんもう;senmou +せんぎょ;sengyo +せんめい;senmei +ちょうせん;chousen +ざぜん;zazen +ぜんしゅう;zenshuu +ぜんでら;zendera +デパート;depaato +ほっかいどう;hokkaidou +ほんしゅう;honshuu +しこく;shikoku +インド;indo +アメリカ;amerika +それん;soren +くらい;kurai +たいへん;taihen +まんいん;man_in +もう;mou +きのう;kinou +あさ;asa +ひる;hiru +よる;yoru +けさ;kesa +さくや;sakuya +いっしょに;isshoni +ぜんたいで;zentaide +ぜんたいで;zentaide +へいほうキロメートル;heihoukiromeetoru +かい;kai +キロ;kiro +おりる;oriru +ねる;neru +でる;deru +うまれる;umareru +かう;kau +はいる;hairu +あめがふる;amegafuru +ゆきがふる;yukigafuru +さく;saku +ふろにはいる;furonihairu +けっこんする;kekkonsuru +てら;tera +ちゃみせ;chamise +やまみち;yamamichi +そら;sora +みどり;midori +ちょうじゅう;choujuu +ぎが;giga +はいく;haiku +あし;ashi +はなし;hanashi +しけん;shiken +てつづき;tetsuduki +にわ;niwa +びょうき;byouki +じゅぎょう;jugyou +けんぶつ;kenbutsu +えはがき;ehagaki +めいしょ;meisho +だいぶつ;daibutsu +たいしゃ;taisha +じんじゃ;jinja +しか;shika +こじか;kojika +ぎょうじ;gyouji +かてい;katei +しょうがつ;shougatsu +かどまつ;kadomatsu +しめなわ;shimenawa +もち;mochi +せつぶん;setsubun +まめ;mame +おに;oni +ふくのかみ;fukunokami +ひなまつり;hinamatsuri +ひなにんぎょう;hinaningyou +たんごのせっく;tangonosekku +はじめ;hajime +まつり;matsuri +こいのぼり;koinobori +たなばた;tanabata +ほし;hoshi +うしかい;ushikai +うし;ushi +でんせつ;densetsu +あまのがわ;amanogawa +おりひめ;orihime +ハイキング;haikingu +まつおばしょう;matsuobashou +つめたい;tsumetai +みじかい;mijikai +たのしい;tanoshii +かわいらしい;kawairashii +あおい;aoi +さいわい;saiwai +かんたん;kantan +ふしんせつ;fushinsetsu +げんき;genki +ロマンチック;romanchikku +びょうき;byouki +いくつか;ikutsuka +ごぜん;gozen +ど;do +こいのぼりおたてる;koinoboriotateru +はしる;hashiru +ハイキングにいく;haikinguniiku +はいくをつくる;haikuwotsukuru +しゃしんをとる;shashinwotoru +おくる;okuru +かざる;kazaru +まく;maku +おいだす;oidasu +まねく;maneku +わたる;wataru +あう;au +けんぶつする;kenbutsusuru +くる;kuru +おおぜい;oozei +ことり;kotori +いけ;ike +はし;hashi +こい;koi +しゃせい;shasei +ちゅうがくせい;chuugakusei +ぶらんこ;buranko +こかげ;kokage +だんじょ;danjo +ひかり;hikari +べんとう;bentou +かだん;kadan +おか;oka +とおく;tooku +すもう;sumou +かね;kane +くるま;kuruma +でんわばんごう;denwabangou +いけばな;ikebana +でし;deshi +おぼん;obon +せんぞ;senzo +たましい;tamashii +まんげつ;mangetsu +おつきみ;otsukimi +うんどうかい;undoukai +ひとびと;hitobito +こめ;kome +とりいれ;toriire +ほうさく;housaku +むら;mura +あきまつり;akimatsuri +しちごさん;shichigosan +とし;toshi +とし;toshi +おおそうじ;oosouji +おおみそか;oomisoka +よなか;yonaka +じょやのかね;joyanokane +ベンチ;benchi +ハーモニカ;haamonika +ボール;booru +ハンカチ;hankachi +デパート;depaato +ジャズ;jazu +スポーツ;supootsu +シーズン;shiizun +サイクリング;saikuringu +だいもんじ;daimonji +かんとう;kantou +かんさい;kansai +くろい;kuroi +あかるい;akarui +ふべん;fuben +じょうず;jouzu +モダン;modan +さいご;saigo +さい;sai +おちる;ochiru +なげる;nageru +おしえる;oshieru +おちゃをたてる;ochawotateru +コーヒーをいれる;koohiiwoireru +あつめる;atsumeru +むかえる;mukaeru +ひをつける;hiwotsukeru +さく;saku +あそぶ;asobu +うたう;utau +はしがかかる;hashigakakaru +ぶらんこにのる;burankoninoru +はなす;hanasu +もつ;motsu +まわる;mawaru +ハーモニカをふく;haamonikawofuku +すもうをとる;sumouwotoru +みおろす;miorosu +ひかる;hikaru +にすむ;nisumu +しる;shiru +ひらく;hiraku +しまる;shimaru +まがる;magaru +ふとる;futoru +ピアノをひく;pianowohiku +シャツをぬぐ;shatsuwonugu +とおる;tooru +すむ;sumu +いわう;iwau +にまいる;nimairu +もちをつく;mochiwotsuku +おじゃまする;ojamasuru +しょうかいする;shoukaisuru +つゆ;tsuyu +つゆあけ;tsuyuake +なつやすみ;natsuyasumi +はれ;hare +なつやま;natsuyama +こうざんしょくぶつ;kouzanshokubutsu +くも;kumo +はんとう;hantou +かいがん;kaigan +ぶんか;bunka +せいじ;seiji +さんぎょう;sangyou +ちゅうしん;chuushin +しぜん;shizen +みずうみ;mizuumi +のはら;nohara +ちへいせん;chiheisen +ゆうひ;yuuhi +しゅうかく;shuukaku +もの;mono +さかな;sakana +ていりゅうじょ;teiryuujo +かぜ;kaze +こけ;koke +やまごや;yamagoya +せいき;seiki +れきし;rekishi +きもの;kimono +ぬの;nuno +あな;ana +あたま;atama +こふん;kofun +はにわ;haniwa +ふくそう;fukusou +ころ;koro +はかま;hakama +へいあんじだい;heianjidai +かまくらじだい;kamakurajidai +むろまちじだい;muromachijidai +ぜんじ;zenji +ぜんしんてき;zenshinteki +とうぜん;touzen +しゅうぜん;shuuzen +しゅうぜんこう;shuuzenkou +つくろいかざる;tsukuroikazaru +そし;soshi +そがい;sogai +けんそ;kenso +そぜい;sozei +そしゃく;soshaku +そしゃっけん;soshakken +そち;sochi +そじ;soji +きょそ;kyoso +そまつ;somatsu +そとう;sotou +あらすじ;arasuji +そかく;sokaku +そかいしゃ;sokaisha +うとうとしい;utoutoshii +そしょうじけん;soshoujiken +こくそ;kokuso +あいそ;aiso +そぞう;sozou +ちょうそ;chouso +かそせい;kasosei +そせき;soseki +きそ;kiso +きそてき;kisoteki +そうほう;souhou +むそう;musou +ふたご;futago +そうだい;soudai +きょうそう;kyousou +そうしゃ;sousha +そうごん;sougon +しょうえん;shouen +べっそう;bessou +そうさ;sousa +そうさく;sousaku +さがしだす;sagashidasu +そうにゅう;sounyuu +そうわ;souwa +さしえ;sashie +そうえん;souen +くわいろ;kuwairo +くわばたけ;kuwabatake +そうじき;soujiki +いっそう;issou +はきだす;hakidasu +ほうそう;housou +ぐんそう;gunsou +そうし;soushi +きそう;kisou +すばこ;subako +すだつ;sudatsu +そうしつ;soushitsu +もふく;mofuku +もちゅう;mochuu +そうしき;soushiki +そうぎや;sougiya +そうか;souka +そうち;souchi +いしょう;ishou +へんそう;hensou +そういん;souin +こうそう;kousou +そうしょく;soushoku +そうぐう;souguu +そうなん;sounan +そうなんしんごう;sounanshingou +すいそう;suisou +よくそう;yokusou +しそう;shisou +かんそう;kansou +しょうそう;shousou +こうそうち;kousouchi +そうがい;sougai +しもよ;shimoyo +しもふりにく;shimofuriniku +そうおん;souon +そうどう;soudou +おおさわぎ;oosawagi +もぬけ;monuke +かいそう;kaisou +しそう;shisou +ぞうお;zouo +にくらしい;nikurashii +にくみあう;nikumiau +ぞうよ;zouyo +きぞう;kizou +おくりもの;okurimono +そくい;sokui +そっこく;sokkoku +そくせき;sokuseki +けっそく;kessoku +はなたば;hanataba +つかのま;tsukanoma +そくしん;sokushin +さいそく;saisoku +そくせい;sokusei +かいぞく;kaizoku +とうぞく;touzoku +ぞくぐん;zokugun +だとう;datou +だきょう;dakyou +だけつ;daketsu +だらく;daraku +だたい;datai +だらくぼうず;darakubouzu +だりょく;daryoku +たいだ;taida +だき;daki +だもの;damono +だば;daba +むだ;muda +たいきゅう;taikyuu +たいか;taika +たえがたい;taegatai +たいぎょう;taigyou +なまけもの;namakemono +おこたりがち;okotarigachi +たいじ;taiji +じゅたい;jutai +たいばん;taiban +たいぜん;taizen +あんたい;antai +たいせい;taisei +ゆうたい;yuutai +ゆうたいるい;yuutairui +てぶくろ;tebukuro +たいほ;taiho +たいほしゃ;taihosha +たいや;taiya +だいたい;daitai +りょうがえ;ryougae +とりかえ;torikae +たいざい;taizai +ていたい;teitai +たいのう;tainou +きよたき;kiyotaki +たきがわ;takigawa +けごんだき;kegondaki +さいたく;saitaku +せんたく;sentaku +せんたくかもく;sentakukamoku +こうたく;koutaku +さわち;sawachi +たっきゅう;takkyuu +たくえつ;takuetsu +しょくたく;shokutaku +たくしょく;takushoku +かいたく;kaitaku +ぎょたく;gyotaku +たくせん;takusen +たくそう;takusou +いたく;itaku +せんたくき;sentakuki +せんたくもの;sentakumono +じゅだく;judaku +しょうだく;shoudaku +かいだく;kaidaku +だくりゅう;dakuryuu +だくおん;dakuon +にごりえ;nigorie +ただしがき;tadashigaki +ただしづき;tadashiduki +たじま;tajima +だつい;datsui +だっぴ;dappi +だっしゅつ;dasshutsu +だっしゅ;dasshu +だっかい;dakkai +うばいさる;ubaisaru +とだな;todana +ほんだな;hondana +ぶどうだな;budoudana +たんねん;tannen +たんせい;tansei +にぬり;ninuri +だいたん;daitan +たんせき;tanseki +らくたん;rakutan +たんすい;tansui +たんしょく;tanshoku +あわゆき;awayuki +たんそく;tansoku +きょうたん;kyoutan +なげきさけぶ;nagekisakebu +きょくたん;kyokutan +たんせい;tansei +みちばた;michibata +たんじょうび;tanjoubi +こうたん;koutan +こうたん;koutan +たんこうじょ;tankoujo +たんれん;tanren +たんきん;tankin +だんやく;dan_yaku +だんりょく;danryoku +ひきて;hikite +かだん;kadan +だんじょう;danjou +どたんば;dotanba +ちじょく;chijoku +むち;muchi +はじいる;hajiiru +いっち;icchi +ちめいてき;chimeiteki +いたしかた;itashikata +ちこく;chikoku +ちち;chichi +おそざき;osozaki +はくち;hakuchi +ぐち;guchi +ちじょう;chijou +ちぎょ;chigyo +ちせつ;chisetsu +ようちえん;youchien +かちく;kachiku +ちくしょう;chikushou +ちくさん;chikusan +くちく;kuchiku +ちくいち;chikuichi +ちくごてき;chikugoteki +ちょちく;chochiku +ちくでん;chikuden +ちくせき;chikuseki +ちつじょ;chitsujo +かんちつ;kanchitsu +ちつろく;chitsuroku +ちっし;chisshi +ちっそく;chissoku +ちっそ;chisso +ちゃくし;chakushi +はいちゃく;haichaku +ちゃくさい;chakusai +ちゅうてん;chuuten +おきあい;okiai +おきづり;okiduri +ちゅうしゅつ;chuushutsu +ちゅうしょう;chuushou +ちゅうせん;chuusen +せっちゅう;secchuu +ちゅうしん;chuushin +くちゅう;kuchuu +ちゅうぞう;chuuzou +ちゅうてつ;chuutetsu +いがた;igata +ちゅうしゃ;chuusha +ちゅうざい;chuuzai +ちゅうにち;chuunichi +けいちょう;keichou +ちょうもん;choumon +とむらいがっせん;tomuraigassen +ちょうはつ;chouhatsu +ちょうせん;chousen +ちょうせんてき;chousenteki +ちょうこく;choukoku +ちょうぞう;chouzou +てぼり;tebori +ちょうぼう;choubou +ながめ;nagame +ちょうぼうぜっけい;choubouzekkei +つりば;tsuriba +ちょうぎょ;chougyo +つりせん;tsurisen +ぼうちょう;bouchou +ふくれっつら;fukurettsura +ふくらしこ;fukurashiko +ちょうじん;choujin +ちょうか;chouka +にゅうちょう;nyuuchou +ちょうやく;chouyaku +とびいた;tobiita +はねかえる;hanekaeru +しょうちょう;shouchou +ちょうしゅう;choushuu +とくちょう;tokuchou +せいちょう;seichou +すみきる;sumikiru +すましがお;sumashigao +ちょうこう;choukou +とうちょう;touchou +ちょうしんき;choushinki +ちょうばつ;choubatsu +ちょうかい;choukai +こりごり;korigori +ちょくご;chokugo +ちょくし;chokushi +ちょくにん;chokunin +ちんぼつ;chinbotsu +ちんたい;chintai +ちんか;chinka +ちんき;chinki +ちんぴん;chinpin +ちんぽん;chinpon +ちん;chin +ちんの;chinno +ちんとく;chintoku +ちんじょう;chinjou +ちんれつ;chinretsu +しんちんたいしゃ;shinchintaisha +ちんつうざい;chintsuuzai +ちんせい;chinsei +ぶんちん;bunchin +ついらく;tsuiraku +げきつい;gekitsui +ついし;tsuishi +かいづか;kaiduka +つかあな;tsukaana +たからづか;takaraduka +つけもの;tsukemono +ちゃづけ;chaduke +しおづけ;shioduke +たてつぼ;tatetsubo +ごつぼ;gotsubo +つぼすう;tsubosuu +きゅうてい;kyuutei +ほうてい;houtei +ていしん;teishin +ていじょう;teijou +ぞうてい;zoutei +しんてい;shintei +ていこう;teikou +ていとう;teitou +ていたく;teitaku +ていない;teinai +かんてい;kantei +ていしゅ;teishu +りょてい;ryotei +りょうてい;ryoutei +ていそう;teisou +ていせつ;teisetsu +ていじつ;teijitsu +ていこく;teikoku +ていおう;teiou +ていおうせっかい;teiousekkai +ていせい;teisei +かいてい;kaitei +かいていばん;kaiteiban +ていそう;teisou +ていしん;teishin +ていじ;teiji +たんてい;tantei +ないてい;naitei +ていさつ;teisatsu +ぼうはてい;bouhatei +ていぼう;teibou +ていぼうづたい;teiboudutai +かんてい;kantei +ていこ;teiko +きゅうめいてい;kyuumeitei +しめきり;shimekiri +ていやく;teiyaku +しめだし;shimedashi +でいど;deido +こうでい;koudei +どろあし;doroashi +きてき;kiteki +てきしゅ;tekishu +くちぶえ;kuchibue +てきよう;tekiyou +てきはつ;tekihatsu +つみとる;tsumitoru +すいてき;suiteki +いってき;itteki +てきか;tekika +こうてつ;koutetsu +てつりつ;tetsuritsu +てっき;tekki +てつがく;tetsugaku +てつじん;tetsujin +せんてつ;sentetsu +てつや;tetsuya +てっていてき;tetteiteki +かんてつ;kantetsu +てっしゅう;tesshuu +てっきょ;tekkyo +てっかい;tekkai +てんか;tenka +てんぷ;tenpu +そえぎ;soegi +きゅうでん;kyuuden +ごてん;goten +とのさま;tonosama +ほくとせい;hokutosei +としゅ;toshu +たいと;taito +とざい;tozai +はきけ;hakike +といき;toiki +とちゅう;tochuu +とたん;totan +ぜんと;zento +とこう;tokou +とせい;tosei +いいわたす;iiwatasu +ぬりもの;nurimono +とそう;tosou +ぬりぐすり;nurigusuri +どれい;dorei +やつら;yatsura +やっこさん;yakkosan +どき;doki +どなる;donaru +いかりぐるう;ikariguruu +とうふ;toufu +だいず;daizu +まめほん;mamehon +とうらい;tourai +とうたつ;toutatsu +とうてい;toutei +とうぼうしゃ;toubousha +みのがす;minogasu +にげみち;nigemichi +とうさん;tousan +めんどう;mendou +とうち;touchi +れいとうざい;reitouzai +とうけつ;touketsu +こおりつく;kooritsuku +とうほん;touhon +けとうじん;ketoujin +からて;karate +はくとう;hakutou +ももいろ;momoiro +とうげんきょう;tougenkyou +とうめい;toumei +とうしゃ;tousha +すきとおる;sukitooru +あいとう;aitou +ついとう;tsuitou +いたむべき;itamubeki +とうよう;touyou +ごうとう;goutou +ぬすびと;nusubito +とうき;touki +くんとう;kuntou +とうぜん;touzen +せきとう;sekitou +そとば;sotoba +ごじゅうのとう;gojuunotou +とうさい;tousai +とうじょう;toujou +とうじょうけん;toujouken +びょうとう;byoutou +むなぎ;munagi +べつむね;betsumune +てんねんとう;tennentou +すいとう;suitou +しゅとう;shutou +えんとう;entou +つつぬけ;tsutsunuke +つつがた;tsutsugata +すいとう;suitou +いなさく;inasaku +わせだ;waseda +とうは;touha +ふみこむ;fumikomu +あしぶみ;ashibumi +とうほん;touhon +とうしゃ;tousha +とうしゃき;toushaki +とうし;toushi +とうし;toushi +せんとうき;sentouki +とうき;touki +とうらく;touraku +ぼうとう;boutou +どうさつ;dousatsu +くうどう;kuudou +どうくつ;doukutsu +どうたい;doutai +そうどうせん;soudousen +どうまわり;doumawari +とうげみち;tougemichi +うすいとうげ;usuitouge +よんじゅうのとうげ;yonjuunotouge +とくめい;tokumei +いんとく;intoku +ひとく;hitoku +かんとく;kantoku +とくれい;tokurei +とくそく;tokusoku +とくし;tokushi +きとく;kitoku +とくと;tokuto +とつめん;totsumen +でこぼこ;dekoboko +おうとつ;outotsu +とつぜん;totsuzen +とつにゅう;totsunyuu +つっこむ;tsukkomu +とんえい;ton_ei +ちゅうとん;chuuton +ちゅうとんち;chuutonchi +とんもう;tonmou +ぶたにく;butaniku +とんカツ;tonkatsu +どんかん;donkan +どんさい;donsai +にびいろ;nibiiro +どんてん;donten +くもりがち;kumorigachi +はなぐもり;hanagumori +なんか;nanka +なんすい;nansui +なんじゃく;nanjaku +にそう;nisou +あまでら;amadera +びくに;bikuni +とうにょうびょう;tounyoubyou +にょうそ;nyouso +にょうい;nyoui +にんぷ;ninpu +ふにんしょう;funinshou +にんしんちょうせつ;ninshinchousetsu +にんたい;nintai +にんじゃ;ninja +しのびこむ;shinobikomu +あんねい;annei +ていねい;teinei +ねいじつ;neijitsu +ねんど;nendo +ねんちゃく;nenchaku +ねばりづよい;nebariduyoi +くのう;kunou +のうさつ;nousatsu +おうのう;ounou +のうか;nouka +のうこう;noukou +あぶらっこい;aburakkoi +はあく;haaku +はじゅう;hajuu +とって;totte +はけん;haken +はき;haki +せいは;seiha +ろうば;rouba +さんば;sanba +おにばば;onibaba +ぎょくはい;gyokuhai +さかずきごと;sakazukigoto +はいじょ;haijo +はいすい;haisui +はいきガス;haikigasu +はいし;haishi +はいじ;haiji +すたりもの;sutarimono +わがはい;wagahai +せんぱい;senpai +はいしゅつ;haishutsu +ばいか;baika +うめしゅ;umeshu +つゆ;tsuyu +ばいよう;baiyou +さいばいしゃ;saibaisha +ばいち;baichi +ばいせきしゃ;baisekisha +ばいしん;baishin +ばいおん;baion +ばいかい;baikai +しょくばい;shokubai +ばいたい;baitai +ばいしょう;baishou +ばいしょうきん;baishoukin +そんがいばいしょう;songaibaishou +はくしゃく;hakushaku +おじ;oji +がはく;gahaku +はくしゅ;hakushu +ひょうし;hyoushi +はくしゃ;hakusha +しゅくはく;shukuhaku +とまりばん;tomariban +いっぱく;ippaku +はくがい;hakugai +はくりょく;hakuryoku +せっぱく;seppaku +せんぱく;senpaku +はくらい;hakurai +はくよう;hakuyou +うすぎ;usugi +けいはく;keihaku +うすかわ;usukawa +ばくぜん;bakuzen +ばくばく;bakubaku +さばく;sabaku +そくばく;sokubaku +ほばく;hobaku +しばりくび;shibarikubi +ばくはつ;bakuhatsu +ばくだん;bakudan +げんばく;genbaku +こばこ;kobako +はこぶね;hakobune +はこいり;hakoiri +はだいろ;hadairo +すはだ;suhada +きめ;kime +うえきばち;uekibachi +はちまき;hachimaki +いはつ;ihatsu +とうはつ;touhatsu +さんぱつ;sanpatsu +かみがた;kamigata +ばっさい;bassai +せいばつ;seibatsu +さつばつ;satsubatsu +ばつぐん;batsugun +ぬけあな;nukeana +てぬかり;tenukari +ばっきん;bakkin +しょばつ;shobatsu +ばちあたり;bachiatari +もんばつ;monbatsu +ばつぞく;batsuzoku +ざいばつ;zaibatsu +はんせん;hansen +ほばしら;hobashira +ほかける;hokakeru +どうはんしゃ;douhansha +ばんそうしゃ;bansousha +あいともなう;aitomonau +ちはん;chihan +こはん;kohan +こはんしじん;kohanshijin +いっぱん;ippan +ぜんぱん;zenpan +かはん;kahan +はんばい;hanbai +しはん;shihan +はんろ;hanro +うんぱん;unpan +はんそう;hansou +はんそうたい;hansoutai +はんざつ;hanzatsu +ぼんのう;bonnou +はんろう;hanrou +はんぷ;hanpu +はんこう;hankou +はんぱく;hanpaku +もはん;mohan +きはん;kihan +はんいない;han_inai +はんじょう;hanjou +はんざつ;hanzatsu +はんしょく;hanshoku +はんしゅ;hanshu +はんべい;hanbei +かがはん;kagahan +ばんじん;banjin +ばんこう;bankou +やばん;yaban +えんばん;enban +きばん;kiban +すいばん;suiban +おうひ;ouhi +ひでんか;hidenka +こうたいしひ;koutaishihi +かれし;kareshi +かのじょ;kanojo +ひがん;higan +ひけん;hiken +ひれき;hireki +ひろう;hirou +ひげ;hige +ひくつ;hikutsu +ひきん;hikin +ひろう;hirou +つかれめ;tsukareme +つかれきる;tsukarekiru +ひがいしゃ;higaisha +ひふく;hifuku +ひこくにん;hikokunin +かいひ;kaihi +もんぴ;monpi +とびらえ;tobirae +ひめい;himei +せきひ;sekihi +きねんひ;kinenhi +ひぎょう;higyou +ひめん;himen +まかりとおる;makaritooru +かいひ;kaihi +ふかひ;fukahi +ひにん;hinin +びこつ;bikotsu +こうび;koubi +しっぽ;shippo +びさい;bisai +びこう;bikou +びこう;bikou +ひってき;hitteki +ひっぷ;hippu +いっぴき;ippiki +ぶんぴつ;bunpitsu +ひにょう;hinyou +ひにょうきか;hinyoukika +ひめみや;himemiya +ひめがき;himegaki +ようこひめ;youkohime +ひょうはく;hyouhaku +ひょうちゃく;hyouchaku +ひょうりゅうしゃ;hyouryuusha +しゅびょう;shubyou +みょうじ;myouji +なえぎ;naegi +びょうしゃ;byousha +てんびょう;tenbyou +えがきだす;egakidasu +あいびょう;aibyou +ねこぜ;nekoze +シャムねこ;shamuneko +かいひん;kaihin +はまべ;hamabe +はまとびむし;hamatobimushi +しゅひん;shuhin +らいひん;raihin +ひんきゃく;hinkyaku +ひんぱんに;hinpanni +ひんぱつ;hinpatsu +ひんど;hindo +びんそく;binsoku +えいびん;eibin +きびん;kibin +びんづめ;bindume +かびん;kabin +つるべ;tsurube +ふじょ;fujo +ふよう;fuyou +ふいく;fuiku +きょうふしょう;kyoufushou +いふ;ifu +きょうふしょうせつ;kyoufushousetsu +ふぞく;fuzoku +きふ;kifu +ふきん;fukin +ふえん;fuen +ふにん;funin +ふにんち;funinchi +ふりょく;furyoku +うわき;uwaki +うきよ;ukiyo +きっぷ;kippu +ふごう;fugou +ふごう;fugou +ふつう;futsuu +ふへん;fuhen +ふきゅう;fukyuu +ふしん;fushin +ふはい;fuhai +くされ;kusare +ふせつ;fusetsu +しきもの;shikimono +やしき;yashiki +ひふえん;hifuen +かんぷ;kanpu +はだぎ;hadagi +ふか;fuka +ふし;fushi +げっぷ;geppu +がくふ;gakufu +けいふ;keifu +ねんぷ;nenpu +ぶじょくてき;bujokuteki +けいぶ;keibu +ぶまん;buman +ぶたい;butai +まいこ;maiko +ふるまい;furumai +ふうとう;fuutou +ふうさ;fuusa +ほうけん;houken +きふく;kifuku +せんぷく;senpuku +ふして;fushite +しんぷく;shinpuku +がふく;gafuku +よこはば;yokohaba +てんぷく;tenpuku +ふくめん;fukumen +ふくすい;fukusui +はらいもどす;haraimodosu +ふってい;futtei +はらいだす;haraidasu +ふってん;futten +わきたつ;wakitatsu +わきでる;wakideru +ふんしつ;funshitsu +ふんそう;funsou +ふんぷん;funpun +ふんいき;fun_iki +むふん;mufun +そうふん;soufun +ふんか;funka +ふんすい;funsui +ふきだす;fukidasu +こふん;kofun +ふんぼ;funbo +ふんぼのち;funbonochi +ふんがい;fungai +ふんど;fundo +ぎふん;gifun +へいしゅ;heishu +こうおつへい;kouotsuhei +ひのえ;hinoe +がっぺい;gappei +へいよう;heiyou +へいはつ;heihatsu +へいこう;heikou +なみき;namiki +つきなみ;tsukinami +おうへい;ouhei +いえがら;iegara +おおがら;oogara +いたべい;itabei +どべい;dobei +へいごし;heigoshi +しへい;shihei +かへい;kahei +ごへい;gohei +へいしゃ;heisha +ひへい;hihei +へいがい;heigai +へきが;hekiga +がんぺき;ganpeki +かべがみ;kabegami +とうへき;touheki +しゅうへき;shuuheki +くせげ;kusege +へんこう;henkou +へんけん;henken +へんくつ;henkutsu +ふへんせい;fuhensei +へんざい;henzai +いっぺん;ippen +ほかく;hokaku +とらえどころ;toraedokoro +つかまえどころ;tsukamaedokoro +うらなみ;uranami +うらかぜ;urakaze +うらざと;urazato +てんぽ;tenpo +ほそう;hosou +ほそうどうろ;hosoudouro +ぼしゅう;boshuu +ぼきん;bokin +おうぼ;oubo +ぼじょう;bojou +けいぼ;keibo +ぼしん;boshin +ぼしゅん;boshun +ゆうぐれ;yuugure +くらしかた;kurashikata +めいぼ;meibo +ぼき;boki +ちょうぼ;choubo +ほうこう;houkou +ほうし;houshi +ほうき;houki +ほうが;houga +れんぽう;renpou +ほんぽう;honpou +ほうし;houshi +ほうのう;hounou +しんぽう;shinpou +だきつく;dakitsuku +ほうかい;houkai +かかえこむ;kakaekomu +きほう;kihou +はっぽう;happou +あわだつ;awadatsu +ほうし;houshi +ほうい;houi +さいぼう;saibou +ほうきゅう;houkyuu +ねんぽう;nenpou +ほうろくまい;hourokumai +もほう;mohou +もほうしゃ;mohousha +ならいけずり;naraikezuri +しゅほう;shuhou +れんぽう;renpou +みねうち;mineuchi +ほうがん;hougan +てっぽう;teppou +たいほう;taihou +ほうかい;houkai +なだれ;nadare +やまくずれ;yamakuzure +ほうわ;houwa +ほうしょく;houshoku +あきしょう;akishou +ほうしょう;houshou +ほうび;houbi +ほめことば;homekotoba +ほうごう;hougou +ぬいもの;nuimono +ぬいめ;nuime +けつぼう;ketsubou +びんぼう;binbou +たいぼう;taibou +たぼう;tabou +はんぼう;hanbou +ぼうさつ;bousatsu +ぼうず;bouzu +ぼうや;bouya +ぼうかん;boukan +ぼうがい;bougai +ぼうし;boushi +さまたげなし;samatagenashi +ぼうしつ;boushitsu +ふさふさ;fusafusa +せわにょうぼう;sewanyoubou +しぼうそう;shibousou +しぼうかた;shiboukata +しぼうそしき;shibousoshiki +ぼうし;boushi +ぼうしょ;bousho +おおたなにがし;ootananigashi +ぼうけん;bouken +かんぼう;kanbou +おかして;okashite +かいぼう;kaibou +かいぼうがく;kaibougaku +せいたいかいぼう;seitaikaibou +ぼうき;bouki +ぼうもう;boumou +ぼうせきぎょう;bousekigyou +ぼうちょう;bouchou +ぼうかん;boukan +ぼうちゅう;bouchuu +ぼうし;boushi +めいもう;meimou +もうもく;moumoku +もんもう;monmou +めくらばん;mekuraban +しょうもう;shoumou +そんもう;sonmou +しんしんもうじゃく;shinshinmoujaku +もうれつ;mouretsu +もうじゅう;moujuu +もさ;mosa +ぎょもう;gyomou +あみど;amido +つうしんもう;tsuushinmou +もくさつ;mokusatsu +ちんもく;chinmoku +だまりこむ;damarikomu +もんしょう;monshou +しもん;shimon +はもん;hamon +にもんめ;nimonme +ごもんめ;gomonme +さんもんめ;sanmonme +やっかい;yakkai +やくび;yakubi +さいやく;saiyaku +やくしん;yakushin +ひやく;hiyaku +おどりこむ;odorikomu +ゆかい;yukai +ゆえつ;yuetsu +ゆらく;yuraku +きょうゆ;kyouyu +せつゆ;setsuyu +ゆし;yushi +ちゆ;chiyu +へいゆ;heiyu +ゆごう;yugou +ゆいいつ;yuiitsu +ただいま;tadaima +いいだくだく;iidakudaku +ゆうきょう;yuukyou +ゆうげん;yuugen +ゆうかい;yuukai +ゆうぜん;yuuzen +ゆうちょう;yuuchou +ゆうきゅう;yuukyuu +ゆうし;yuushi +ゆうよ;yuuyo +ゆうよきかん;yuuyokikan +ゆうふく;yuufuku +よゆう;yoyuu +ふゆうかいきゅう;fuyuukaikyuu +ゆうべん;yuuben +ゆうしゃ;yuusha +おうし;oushi +ゆうわく;yuuwaku +ゆうどう;yuudou +さそいみず;sasoimizu +ゆうしゅう;yuushuu +うれえがお;ureegao +ものうい;monoui +ゆうわ;yuuwa +きんゆう;kin_yuu +ゆうずう;yuuzuu +あたえぬし;ataenushi +かんよ;kan_yo +じゅよしき;juyoshiki +めいよ;meiyo +えいよ;eiyo +ほまれたかい;homaretakai +ちゅうよう;chuuyou +ぼんよう;bon_you +そようちょう;soyouchou +ようすい;yousui +あげば;ageba +あげもの;agemono +どうよう;douyou +ゆりいす;yuriisu +ゆれどめ;yuredome +ようえき;youeki +ようかい;youkai +とけあう;tokeau +ようつう;youtsuu +こしにく;koshiniku +ものごし;monogoshi +おどりこ;odoriko +ぶよう;buyou +おどりじ;odoriji +ようぎょう;yougyou +ようぎょうか;yougyouka +かんそうがま;kansougama +ようご;yougo +ようりつ;youritsu +ほうよう;houyou +ようきょく;youkyoku +みんよう;min_you +うたいぼん;utaibon +よくし;yokushi +よくあつ;yokuatsu +よくせい;yokusei +うよく;uyoku +よくたん;yokutan +よくりゅう;yokuryuu +らしん;rashin +せきらら;sekirara +はだかうま;hadakauma +られつ;raretsu +らてん;raten +もうらてき;mourateki +らいう;raiu +らいめい;raimei +ぎょらい;gyorai +しんらい;shinrai +たよりない;tayorinai +たのみ;tanomi +れんらく;renraku +からみあう;karamiau +からみつく;karamitsuku +らくのう;rakunou +らくさん;rakusan +かんらく;kanraku +らんよう;ran_you +らんぴ;ranpi +はんらん;hanran +らんかん;rankan +くうらん;kuuran +らんがい;rangai +りいん;riin +のうり;nouri +りしゅう;rishuu +げり;geri +せきり;sekiri +えきり;ekiri +りれき;rireki +りこう;rikou +はきもの;hakimono +ぶんり;bunri +りりく;ririku +ちばなれ;chibanare +りゅうし;ryuushi +かりゅうかい;karyuukai +せんりゅう;senryuu +きょうりゅう;kyouryuu +りゅうじん;ryuujin +たつまき;tatsumaki +りゅうし;ryuushi +ひとつぶ;hitotsubu +りゅうりゅう;ryuuryuu +りゅうせい;ryuusei +りゅうき;ryuuki +こうりゅう;kouryuu +りゅうさん;ryuusan +いおう;iou +りゅうかぎん;ryuukagin +りょしゅう;ryoshuu +ほりょ;horyo +ふりょ;furyo +えんりょ;enryo +こうりょ;kouryo +むりょ;muryo +りょうかい;ryoukai +りょうしょう;ryoushou +しゅうりょう;shuuryou +りょうみ;ryoumi +すずみだい;suzumidai +すずかぜ;suzukaze +りょうし;ryoushi +りょうじゅう;ryoujuu +しょうりょう;shouryou +りょうぼ;ryoubo +きゅうりょう;kyuuryou +ごりょう;goryou +どうりょう;douryou +りょうゆう;ryouyuu +かんりょう;kanryou +りょうせい;ryousei +りょうか;ryouka +りょうちょう;ryouchou +りょうほう;ryouhou +りょうよう;ryouyou +いりょうはん;iryouhan +しょくりょう;shokuryou +ひょうろう;hyourou +りょうどう;ryoudou +りんもう;rinmou +にりん;nirin +いちぶいちりん;ichibuichirin +りんり;rinri +じんりん;jinrin +ぜつりん;zetsurin +りんしつ;rinshitsu +りんせつ;rinsetsu +となりあう;tonariau +るいかん;ruikan +なみだあめ;namidaame +そらなみだ;soranamida +るいけい;ruikei +るいせき;ruiseki +けいるい;keirui +どるい;dorui +てきるい;tekirui +るいしん;ruishin +せいれい;seirei +しょうれいきん;shoureikin +はげみあう;hagemiau +もどしぜい;modoshizei +へんれい;henrei +もどしそう;modoshisou +でんれい;denrei +ふうりん;fuurin +すずなり;suzunari +れいさい;reisai +れいか;reika +れいらく;reiraku +ゆうれい;yuurei +あくりょう;akuryou +たまや;tamaya +どれいせい;doreisei +れいじゅう;reijuu +れいぞく;reizoku +ねんれい;nenrei +みょうれい;myourei +こうれい;kourei +れいじん;reijin +びれい;birei +しゅうれい;shuurei +れきねん;rekinen +せいれき;seireki +はなごよみ;hanagoyomi +ひれつ;hiretsu +れつじょう;retsujou +れっとう;rettou +れっか;rekka +れつじょ;retsujo +れっぷう;reppuu +はれつ;haretsu +ぶんれつ;bunretsu +さけめ;sakeme +れんあい;ren_ai +しつれん;shitsuren +こいびと;koibito +れんちょく;renchoku +れんか;renka +はれんち;harenchi +れんきんじゅつ;renkinjutsu +れんせい;rensei +ねりがね;nerigane +ろへん;rohen +だんろ;danro +げんしろ;genshiro +ろしゅつ;roshutsu +よつゆ;yotsuyu +ろてん;roten +しんろう;shinrou +ろうどう;roudou +たろう;tarou +はろう;harou +ろうひ;rouhi +ろうにん;rounin +ろうか;rouka +がろう;garou +かいろう;kairou +しょうろう;shourou +ぼうろう;bourou +ろうかく;roukaku +ろうでん;rouden +ろうしゅつ;roushutsu +あまもり;amamori +しゅうわい;shuuwai +ぞうわい;zouwai +まかないつき;makanaitsuki +めいわく;meiwaku +わくせい;wakusei +とまどい;tomadoi +わくぐみ;wakugumi +わくなし;wakunashi +わくない;wakunai +こうわん;kouwan +わんにゅう;wannyuu +とうきょうわん;toukyouwan +わんしょう;wanshou +しゅわん;shuwan +ほそうで;hosoude +はな;hana +もも;momo +ばら;bara +にほん;nihon +にほんじん;nihonjin +がくせい;gakusei +かいしゃいん;kaishain +いもうと;imouto +いとこ;itoko +ひと;hito +ぎんこう;ginkou +ゆうびんきょく;yuubinkyoku +きって;kitte +うりば;uriba +ほん;hon +びょういん;byouin +としょかん;toshokan +とうきょうえき;toukyoueki +だいがく;daigaku +しゃしん;shashin +かいしゃ;kaisha +じどうしゃ;jidousha +しゅと;shuto +めいし;meishi +しごと;shigoto +けんちくか;kenchikuka +おとうと;otouto +でんきすたんど;denkisutando +ドイツ;doitsu +ドイツジン;doitsujin +カメラ;kamera +タバコ;tabako +メガネ;megane +ノート;nooto +ボールペン;boorupen +イギリス;igirisu +ロンダン;rondan +びじゅつかん;bijutsukan +あたり;atari +ふん;fun +こうじょう;koujou +たてもの;tatemono +げきじょう;gekijou +まち;machi +さけ;sake +うみ;umi +やま;yama +みず;mizu +にほんご;nihongo +きかい;kikai +ひとたち;hitotachi +しょうせつ;shousetsu +おんな;onna +おんなのひと;onnanohito +つぎ;tsugi +むこう;mukou +がか;gaka +やね;yane +れんが;renga +タイヤ;taiya +ホテル;hoteru +タイプライター;taipuraitaa +ビル;biru +コーヒー;koohii +ちいさい;chiisai +ながい;nagai +あかい;akai +わかい;wakai +おおきい;ookii +やさしい;yasashii +ふるい;furui +やすい;yasui +かるい;karui +つよい;tsuyoi +とおい;tooi +しろい;shiroi +おもい;omoi +しんせつ;shinsetsu +しずか;shizuka +ゆうめい;yuumei +たいへん;taihen +とても;totemo +ふん;fun +えいぎょうか;eigyouka +かちょう;kachou +ほんだな;hondana +けいさんき;keisanki +こくばん;kokuban +えんぴつ;enpitsu +りんご;ringo +どうろ;douro +こども;kodomo +おんなのこ;onnanoko +おとこのこ;otokonoko +いぬ;inu +とり;tori +ねこ;neko +かんこくじん;kankokujin +かぞく;kazoku +しゅみ;shumi +しゅうしゅう;shuushuu +こうこうせい;koukousei +きょうだい;kyoudai +ドア;doa +カレンダー;karendaa +ロッカー;rokkaa +トイレ;toire +テレビ;terebi +テーブル;teeburu +コンピューター;konpyuutaa +ゴルフ;gorufu +ごるふじょう;gorufujou +メンバー;menbaa +クラブ;kurabu +ヤード;yaado +キャヂィー;kyadii +うえ;ue +うしろ;ushiro +ひだり;hidari +みぎ;migi +よこ;yoko +まんなか;mannaka +おく;oku +すみ;sumi +かど;kado +あいだ;aida +いま;ima +つ;tsu +にん;nin +さつ;satsu +ほん;hon +だい;dai +ほう;hou +ほほう;hohou +はん;han +ちゅうごくご;chuugokugo +あさごはん;asagohan +こうがい;kougai +えき;eki +しごと;shigoto +りょこうしゃ;ryokousha +してん;shiten +ぜんこく;zenkoku +しゅっちょう;shucchou +しゃいん;shain +がいしゅつ;gaishutsu +てがみ;tegami +てんいん;ten_in +しゅるい;shurui +ていか;teika +めんぜい;menzei +さつ;satsu +ほしょうしょ;hoshousho +じびき;jibiki +えいご;eigo +けんぽう;kenpou +きねんび;kinenbi +たばこや;tabakoya +ぶどうしゅ;budoushu +こうたい;koutai +タクシー;takushii +ビール;biiru +パン;pan +フイルム;fuirumu +カラー;karaa +ネガカラー;negakaraa +ポジ;poji +ズームレンズ;zuumurenzu +ショートズーム;shootozuumu +ミリ;miri +ズーム;zuumu +パスポート;pasupooto +バス;basu +きゅうしゅう;kyuushuu +たいへん;taihen +よく;yoku +ときどき;tokidoki +すこし;sukoshi +ゆっくり;yukkuri +めったに;mettani +あさ;asa +ひる;hiru +よる;yoru +らいしゅう;raishuu +えん;en +かい;kai +ですから;desukara +それでわ;soredewa +でわじゃあ;dewajaa +それから;sorekara +なるほど;naruhodo +から;kara +まで;made +ほど;hodo +おきる;okiru +みる;miru +テレビおみる;terebiomiru +いる;iru +はじめる;hajimeru +たべる;taberu +でんわおかける;denwaokakeru +ある;aru +あるく;aruku +いく;iku +かかる;kakaru +はじまる;hajimaru +よむ;yomu +のむ;nomu +たばこおすう;tabakoosuu +まつ;matsu +しゅっちょうする;shucchousuru +がいしゅつする;gaishutsusuru +さんぽする;sanposuru +ひるごはん;hirugohan +ばんごはん;bangohan +ちか;chika +ちかてつ;chikatetsu +しょくどう;shokudou +ろうか;rouka +いりぐち;iriguchi +すし;sushi +ちゅっちょうりょこう;chucchouryokou +きっぷ;kippu +こうつうこうしゃ;koutsuukousha +ざせき;zaseki +ざせきしていけん;zasekishiteiken +していせき;shiteiseki +しんだいけん;shindaiken +しかた;shikata +いき;iki +かえり;kaeri +はやおき;hayaoki +こうちゃ;koucha +ほうこくしょ;houkokusho +えいが;eiga +えいがかん;eigakan +ともだち;tomodachi +ふく;fuku +くつ;kutsu +したぎ;shitagi +じょうくう;joukuu +きゅうこう;kyuukou +きゅうりょう;kyuuryou +けっこん;kekkon +なつ;natsu +あき;aki +ふゆ;fuyu +しま;shima +しまぐに;shimaguni +おおきさ;ookisa +じんこうみつど;jinkoumitsudo +ぜんたい;zentai +やま;yama +かざん;kazan +へいや;heiya +かわ;kawa +ゆき;yuki +あめ;ame +たいふう;taifuu +もみじ;momiji +こうよう;kouyou +チャンネル;channeru +エレベーター;erebeetaa +カレーライス;kareeraisu +コメヂィー;komedii +きゅうてい;kyuutei +ふじん;fujin +じゅうにひとえ;juunihitoe +こそで;kosode +ふだんぎ;fudangi +きこう;kikou +そで;sode +すそ;suso +かつどう;katsudou +ようふく;youfuku +けっこんしき;kekkonshiki +きかい;kikai +ガイドブック;gaidobukku +テント;tento +ゲーム;geemu +キャンプファイヤー;kyanpufaiyaa +ループ;ruupu +ワンピース;wanpiisu +ツーピース;tsuupiisu +スタイル;sutairu +プウル;puuru +ちょうせん;chousen +さっぽろ;sapporo +ましゅうこ;mashuuko +しれとこはんとう;shiretokohantou +ほだか;hodaka +のりくら;norikura +みなみアルプス;minamiarupusu +きただけ;kitadake +しょうなんかいがん;shounankaigan +こけでら;kokedera +おそい;osoi +ひろい;hiroi +ユニーク;yuniiku +せいしき;seishiki +とくべつ;tokubetsu +ゆうだい;yuudai +だいじょうぶ;daijoubu +ちいさな;chiisana +おなじ;onaji +ドイツせい;doitsusei +そんなに;sonnani +じつに;jitsuni +けっして;kesshite +すこしも;sukoshimo +あす;asu +それとも;soretomo +ばかり;bakari +しか;shika +だれも;daremo +どこにも;dokonimo +なにも;nanimo +とも;tomo +かんじる;kanjiru +ににる;niniru +コートをきる;kootowokiru +かんがえる;kangaeru +たずねる;tazuneru +あける;akeru +かさねる;kasaneru +にのぼる;ninoboru +ひらく;hiraku +しぬ;shinu +とぶ;tobu +とまる;tomaru +テントをはる;tentowoharu +かこむ;kakomu +はく;haku +じゅうじつする;juujitsusuru +はったつする;hattatsusuru +にてきする;nitekisuru +にかんどうする;nikandousuru +あたり;atari +しんごう;shingou +ひゃく;hyaku +こうさてん;kousaten +がわ;gawa +ほう;hou +みせ;mise +じしょ;jisho +きそく;kisoku +こえ;koe +しょくじ;shokuji +わしょく;washoku +ちゅうかりょうり;chuukaryouri +すしや;sushiya +てっか;tekka +もりあわせ;moriawase +あかだし;akadashi +のみもの;nomimono +さしみ;sashimi +いたまえ;itamae +のうぎょう;nougyou +のうぎょうこく;nougyoukoku +のうぎょうじんこう;nougyoujinkou +のうぎょうせいさんぶつ;nougyouseisanbutsu +せんご;sengo +せんぜん;senzen +こうぎょう;kougyou +こうぎょうこく;kougyoukoku +ろうどうじんこう;roudoujinkou +すいさんぎょう;suisangyou +えんようぎょぎょう;en_yougyogyou +だいいちじさんぎょう;daiichijisangyou +だいにじさんぎょう;dainijisangyou +だいさんじさんぎょう;daisanjisangyou +サービスぎょう;saabisugyou +きかいか;kikaika +まわり;mawari +えんがん;engan +はいすい;haisui +もくざい;mokuzai +じゅよう;juyou +きょうきゅう;kyoukyuu +こくない;kokunai +こくがい;kokugai +がいこくじん;gaikokujin +がいこくご;gaikokugo +ゆにゅう;yunyuu +ゆしゅつ;yushutsu +てつ;tetsu +どう;dou +こうぶつ;koubutsu +せきゆ;sekiyu +せきたん;sekitan +メートル;meetoru +バイク;baiku +ケーキ;keeki +ペン;pen +スウプ;suupu +ジョギング;jogingu +さむい;samui +あつい;atsui +あつい;atsui +あたたかい;atatakai +あたたかい;atatakai +かわいそう;kawaisou +きゅうそく;kyuusoku +おも;omo +すっかり;sukkari +もっと;motto +かならず;kanarazu +ねんねん;nennen +やく;yaku +すぐ;sugu +もともと;motomoto +こんや;kon_ya +このまえ;konomae +みな;mina +いっしょに;isshoni +にちかん;nichikan +しゅうかん;shuukan +ねんかん;nenkan +それに;soreni +のうち;nouchi +しめる;shimeru +よごれる;yogoreru +ふえる;fueru +きをつける;kiwotsukeru +まつ;matsu +はらう;harau +はたらく;hataraku +とまる;tomaru +まもる;mamoru +すすむ;susumu +にへる;niheru +ねつがある;netsugaaru +せんたくする;sentakusuru +しゅっぱつする;shuppatsusuru +ちゅうもんする;chuumonsuru +ゆにゅうする;yunyuusuru +ゆしゅつする;yushutsusuru +あいさつする;aisatsusuru +せいさんする;seisansuru +りっしゅん;risshun +りっか;rikka +りっしゅう;risshuu +りっとう;rittou +はじまり;hajimari +おわり;owari +まなつ;manatsu +まふゆ;mafuyu +あつさ;atsusa +はんじつ;hanjitsu +はんつき;hantsuki +はんとし;hantoshi +かいすいよく;kaisuiyoku +やまやま;yamayama +まど;mado +ぼんおどり;bon_odori +わらいごえ;waraigoe +けんぶつにん;kenbutsunin +わ;wa +からだ;karada +くうこう;kuukou +かいもの;kaimono +は;ha +きがえ;kigae +やきゅう;yakyuu +しゅうしょく;shuushoku +こうこがく;koukogaku +しりょう;shiryou +てんのうけ;tennouke +しぞく;shizoku +うったえ;uttae +はんだん;handan +みやこ;miyako +りゅうがくせい;ryuugakusei +せいじたいせい;seijitaisei +かくりつ;kakuritsu +ちほう;chihou +せいしん;seishin +ざいせい;zaisei +せいりょく;seiryoku +ヨーロッパ;yooroppa +ホーム;hoomu +ドア;doa +テニス;tenisu +ラケット;raketto +コート;kooto +ベンチ;benchi +ジュース;juusu +バレーボール;bareebooru +バスケットボール;basukettobooru +スポーツ;supootsu +テニスシューズ;tenisushuuzu +ちゅうぶちほう;chuubuchihou +こじき;kojiki +じょうもんぶんか;joumonbunka +やよいぶんか;yayoibunka +こふんぶんか;kofunbunka +あすかじだい;asukajidai +ならじだい;narajidai +しせいせいど;shiseiseido +しょうとくたいし;shoutokutaishi +ほうりゅうじ;houryuuji +たいかのかいしん;taikanokaishin +じんしんのらん;jinshinnoran +とき;toki +あいだ;aida +さびしい;sabishii +さわがしい;sawagashii +すずしい;suzushii +せまい;semai +かしこい;kashikoi +むしあつい;mushiatsui +せいしんてき;seishinteki +ざいせいてき;zaiseiteki +いわゆる;iwayuru +わが;waga +ずっと;zutto +すこし;sukoshi +そのご;sonogo +シャワーをあびる;shawaawoabiru +のびる;nobiru +ながれる;nagareru +ながれる;nagareru +ながれる;nagareru +ラジオをつける;rajiowotsukeru +ベンチにこしかける;benchinikoshikakeru +わすれる;wasureru +うったえる;uttaeru +たてる;tateru +つたえる;tsutaeru +ごちそうをつくる;gochisouwotsukuru +はく;haku +ねむる;nemuru +すわる;suwaru +うごく;ugoku +しまる;shimaru +はをみがく;hawomigaku +ねがう;negau +とる;toru +つくる;tsukuru +つくる;tsukuru +はんだんをくだす;handanwokudasu +うつる;utsuru +こまる;komaru +うんてんする;untensuru +しゅうしょくする;shuushokusuru +かくりつする;kakuritsusuru +しょくじをする;shokujiwosuru +かいものをする;kaimonowosuru +きがえをする;kigaewosuru +テニスをする;tenisuwosuru +やきゅうをする;yakyuuwosuru +りゅうがくする;ryuugakusuru +ちきゅう;chikyuu +もとめる;motomeru +すくう;sukuu +やきもち;yakimochi +すなお;sunao +たいした;taishita +うつ;utsu +いじょう;ijou +きゅうし;kyuushi +びっくり;bikkuri +みちしお;michishio +をのぼる;wonoboru +そびえとしゃかいしゅぎきょうわこくれんぽう;sobietoshakaishugikyouwakokurenpou +ふけんこう;fukenkou diff --git a/_test/tests/inc/utf8_romanize.test.php b/_test/tests/inc/utf8_romanize.test.php new file mode 100644 index 000000000..d08346faa --- /dev/null +++ b/_test/tests/inc/utf8_romanize.test.php @@ -0,0 +1,37 @@ +<?php +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +/** + * @group slow + */ +class utf8_romanize_test extends PHPUnit_Framework_TestCase { + + /** + * Check Japanese romanization + * + * @author Denis Scheither <amorphis@uni-bremen.de> + */ + function test_japanese(){ + $tests = file(dirname(__FILE__).'/utf8_kanaromaji.txt'); + $line = 1; + foreach($tests as $test){ + list($jap,$rom) = explode(';',trim($test)); + + $chk = utf8_romanize($jap); + $this->assertEquals($rom,$chk,"$jap\t->\t$chk\t!=\t$rom\t($line)"); + $line++; + } + } + + /** + * Test romanization of character that would usually be deaccented in a different + * way FS#1117 + * + * @author Andreas Gohr <andi@splitbrain.org> + */ + function test_deaccented(){ + $this->assertEquals("a A a A a o O",utf8_romanize("å Å ä Ä ä ö Ö")); + } +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_stripspecials.test.php b/_test/tests/inc/utf8_stripspecials.test.php new file mode 100644 index 000000000..c9dc3205f --- /dev/null +++ b/_test/tests/inc/utf8_stripspecials.test.php @@ -0,0 +1,27 @@ +<?php +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class utf8_stripspecials extends DokuWikiTest { + + + function test1(){ + // we test multiple cases here - format: string, repl, additional, test + $tests = array(); + $tests[] = array('asciistring','','','asciistring'); + $tests[] = array('asciistring','','\._\-:','asciistring'); + $tests[] = array('ascii.string','','\._\-:','asciistring'); + $tests[] = array('ascii.string',' ','\._\-:','ascii string'); + $tests[] = array('2.1.14',' ','\._\-:','2 1 14'); + $tests[] = array('ascii.string','','\._\-:\*','asciistring'); + $tests[] = array('ascii.string',' ','\._\-:\*','ascii string'); + $tests[] = array('2.1.14',' ','\._\-:\*','2 1 14'); + $tests[] = array('string with nbsps','_','\*','string_with_nbsps'); + + foreach($tests as $test){ + $this->assertEquals(utf8_stripspecials($test[0],$test[1],$test[2]),$test[3]); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_substr.test.php b/_test/tests/inc/utf8_substr.test.php new file mode 100644 index 000000000..758e8c9d4 --- /dev/null +++ b/_test/tests/inc/utf8_substr.test.php @@ -0,0 +1,42 @@ +<?php +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class utf8_substr_test extends DokuWikiTest { + + + function test1(){ + // we test multiple cases here - format: in, offset, length, out + $tests = array(); + $tests[] = array('asciistring',2,null,'ciistring'); + $tests[] = array('asciistring',2,4,'ciis'); + $tests[] = array('asciistring',-4,null,'ring'); + $tests[] = array('asciistring',2,-4,'ciist'); + $tests[] = array('asciistring',-6,-2,'stri'); + + $tests[] = array('живπά우리をあöä',2,null,'вπά우리をあöä'); + $tests[] = array('живπά우리をあöä',2,4,'вπά우'); + $tests[] = array('живπά우리をあöä',-4,null,'をあöä'); + $tests[] = array('живπά우리をあöä',2,-4,'вπά우리'); + $tests[] = array('живπά우리をあöä',-6,-2,'우리をあ'); + + foreach($tests as $test){ + $this->assertEquals(utf8_substr($test[0],$test[1],$test[2]),$test[3]); + } + } + + function test2_bug891() { + // we test multiple cases here - format: in, offset, length, out + $tests = array(); + + $str = str_repeat('в',66000).'@@'; + $tests[] = array($str, 65600, 1, 'в'); + $tests[] = array($str,0,66002,$str); + + foreach($tests as $test){ + $this->assertEquals(utf8_substr($test[0],$test[1],$test[2]),$test[3]); + } + } + +} +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_unicode.test.php b/_test/tests/inc/utf8_unicode.test.php new file mode 100644 index 000000000..fde8c5d02 --- /dev/null +++ b/_test/tests/inc/utf8_unicode.test.php @@ -0,0 +1,58 @@ +<?php + +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class utf8_unicode_test extends DokuWikiTest { + + function test_from_1byte(){ + $in = 'a'; + $out = array(97); + $this->assertEquals(utf8_to_unicode($in),$out); + } + + function test_from_2byte(){ + $in = "\xc3\xbc"; + $out = array(252); + $this->assertEquals(utf8_to_unicode($in),$out); + } + + function test_from_3byte(){ + $in = "\xe2\x99\x8a"; + $out = array(9802); + $this->assertEquals(utf8_to_unicode($in),$out); + } + + function test_from_4byte(){ + $in = "\xf4\x80\x80\x81"; + $out = array(1048577); + $this->assertEquals(utf8_to_unicode($in),$out); + } + + function test_to_1byte(){ + $out = 'a'; + $in = array(97); + $this->assertEquals(unicode_to_utf8($in),$out); + } + + function test_to_2byte(){ + $out = "\xc3\xbc"; + $in = array(252); + $this->assertEquals(unicode_to_utf8($in),$out); + } + + function test_to_3byte(){ + $out = "\xe2\x99\x8a"; + $in = array(9802); + $this->assertEquals(unicode_to_utf8($in),$out); + } + + function test_to_4byte(){ + $out = "\xf4\x80\x80\x81"; + $in = array(1048577); + $this->assertEquals(unicode_to_utf8($in),$out); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/inc/utf8_utf16be.test.php b/_test/tests/inc/utf8_utf16be.test.php new file mode 100644 index 000000000..6a12a01fd --- /dev/null +++ b/_test/tests/inc/utf8_utf16be.test.php @@ -0,0 +1,26 @@ +<?php + +// use no mbstring help here +if(!defined('UTF8_NOMBSTRING')) define('UTF8_NOMBSTRING',1); + +class utf8_utf16be_test extends DokuWikiTest { + // some chars from various code regions + var $utf8 = '鈩ℵŁöx'; + var $utf16 = "\x92\x29\x21\x35\x1\x41\x0\xf6\x0\x78"; + + /** + * Convert from UTF-8 to UTF-16BE + */ + function test_to16be(){ + $this->assertEquals(utf8_to_utf16be($this->utf8), $this->utf16); + } + + /** + * Convert from UTF-16BE to UTF-8 + */ + function test_from16be(){ + $this->assertEquals(utf16be_to_utf8($this->utf16),$this->utf8); + } +} + +//Setup VIM: ex: et ts=2 : diff --git a/_test/tests/lib/exe/css_css_compress.test.php b/_test/tests/lib/exe/css_css_compress.test.php new file mode 100644 index 000000000..a7c87b6a7 --- /dev/null +++ b/_test/tests/lib/exe/css_css_compress.test.php @@ -0,0 +1,67 @@ +<?php + +require_once DOKU_INC.'lib/exe/css.php'; + +class css_css_compress_test extends DokuWikiTest { + + function test_mlcom1(){ + $text = '/** + * A multi + * line *test* + * check + */'; + $this->assertEquals(css_compress($text), ''); + } + + function test_mlcom2(){ + $text = '#comment/* */ { + color: lime; + }'; + $this->assertEquals(css_compress($text), '#comment/* */{color:lime;}'); + } + + function test_slcom1(){ + $text = '// this is a comment'; + $this->assertEquals(css_compress($text), ''); + } + + function test_slcom2(){ + $text = '#foo { + color: lime; // another comment + }'; + $this->assertEquals(css_compress($text), '#foo{color:lime;}'); + } + + function test_slcom3(){ + $text = '#foo { + background-image: url(http://foo.bar/baz.jpg); + }'; + $this->assertEquals(css_compress($text), '#foo{background-image:url(http://foo.bar/baz.jpg);}'); + } + + function test_hack(){ + $text = '/* Mac IE will not see this and continue with inline-block */ + /* \\*/ + display: inline; + /* */'; + $this->assertEquals(css_compress($text), '/* \\*/display:inline;/* */'); + } + + function test_hack2(){ + $text = '/* min-height hack for Internet Explorer http://www.cssplay.co.uk/boxes/minheight.html */ + /*\\*/ + * html .page { + height: 450px; + } + /**/'; + $this->assertEquals(css_compress($text), '/*\\*/* html .page{height:450px;}/**/'); + } + + function test_nl1(){ + $text = "a{left:20px;\ntop:20px}"; + $this->assertEquals(css_compress($text), 'a{left:20px;top:20px}'); + } + +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/lib/exe/css_css_loadfile.test.php b/_test/tests/lib/exe/css_css_loadfile.test.php new file mode 100644 index 000000000..c89b69b2c --- /dev/null +++ b/_test/tests/lib/exe/css_css_loadfile.test.php @@ -0,0 +1,55 @@ +<?php + +require_once DOKU_INC.'lib/exe/css.php'; + +class css_css_loadfile_test extends DokuWikiTest { + public function setUp() { + $this->file = tempnam('/tmp', 'css'); + } + + private function csstest($input, $output = null, $location = 'http://www.example.com/') { + io_saveFile($this->file, $input); + $this->assertEquals(css_loadfile($this->file, $location), (is_null($output) ? $input : $output)); + } + + public function test_url_relative() { + $this->csstest('#test { background: url("test/test.png"); }', '#test { background: url("http://www.example.com/test/test.png"); }'); + $this->csstest('#test { background: url(\'test/test.png\'); }', '#test { background: url(\'http://www.example.com/test/test.png\'); }'); + } + + public function test_url_absolute() { + $this->csstest('#test { background: url("/test/test.png"); }'); + $this->csstest('#test { background: url(\'/test/test.png\'); }'); + } + + public function test_url_with_protocol() { + $this->csstest('#test { background: url("http://www.test.com/test/test.png"); }'); + $this->csstest('#test { background: url("https://www.test.com/test/test.png"); }'); + $this->csstest('#test { background: url(\'http://www.test.com/test/test.png\'); }'); + $this->csstest('#test { background: url(\'https://www.test.com/test/test.png\'); }'); + } + + public function test_import_relative() { + $this->csstest('@import "test/test.png";', '@import "http://www.example.com/test/test.png";'); + $this->csstest('@import \'test/test.png\';', '@import \'http://www.example.com/test/test.png\';'); + } + + public function test_import_absolute() { + $this->csstest('@import "/test/test.png";'); + $this->csstest('@import \'/test/test.png\';'); + } + + public function test_import_with_protocol() { + $this->csstest('@import "http://www.test.com/test/test.png";'); + $this->csstest('@import "https://www.test.com/test/test.png";'); + $this->csstest('@import \'http://www.test.com/test/test.png\';'); + $this->csstest('@import \'https://www.test.com/test/test.png\';'); + } + + public function tearDown() { + unlink($this->file); + unset($this->file); + } +} + +//Setup VIM: ex: et ts=4 sw=4 : diff --git a/_test/tests/lib/exe/js_js_compress.test.php b/_test/tests/lib/exe/js_js_compress.test.php new file mode 100644 index 000000000..aa8d82933 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress.test.php @@ -0,0 +1,138 @@ +<?php + +require_once DOKU_INC.'lib/exe/js.php'; + +class js_js_compress_test extends DokuWikiTest { + + function test_mlcom1(){ + $text = '/** + * A multi + * line *test* + * check + */'; + $this->assertEquals(js_compress($text), ''); + } + + function test_mlcom2(){ + $text = 'var foo=6;/* another comment */'; + $this->assertEquals(js_compress($text), 'var foo=6;'); + } + + function test_mlcomcond(){ + $text = '/*@if (@_win32)'; + $this->assertEquals(js_compress($text), '/*@if(@_win32)'); + } + + function test_slcom1(){ + $text = '// an comment'; + $this->assertEquals(js_compress($text), ''); + } + + function test_slcom2(){ + $text = 'var foo=6;// another comment '; + $this->assertEquals(js_compress($text), 'var foo=6;'); + } + + function test_slcom3(){ + $text = 'var foo=6;// another comment / or something with // comments '; + $this->assertEquals(js_compress($text), 'var foo=6;'); + } + + function test_regex1(){ + $text = 'foo.split( /[a-Z\/]*/ );'; + $this->assertEquals(js_compress($text), 'foo.split(/[a-Z\/]*/);'); + } + + function test_regex_in_array(){ + $text = '[/"/ , /"/ , /"/]'; + $this->assertEquals(js_compress($text), '[/"/,/"/,/"/]'); + } + + function test_regex_in_hash(){ + $text = '{ a : /"/ }'; + $this->assertEquals(js_compress($text), '{a:/"/}'); + } + + function test_regex_preceded_by_spaces_caracters(){ + $text = "text.replace( \t \r\n /\"/ , ".'"//" )'; + $this->assertEquals(js_compress($text), 'text.replace(/"/,"//")'); + } + + function test_dquot1(){ + $text = 'var foo="Now what \\" \'do we//get /*here*/ ?";'; + $this->assertEquals(js_compress($text), $text); + } + + function test_dquot2(){ + $text = 'var foo="Now what \\\\\\" \'do we//get /*here*/ ?";'; + $this->assertEquals(js_compress($text), $text); + } + + function test_dquotrunaway(){ + $text = 'var foo="Now where does it end'; + $this->assertEquals(js_compress($text), $text); + } + + function test_squot1(){ + $text = "var foo='Now what \\' \"do we//get /*here*/ ?';"; + $this->assertEquals(js_compress($text), $text); + } + + function test_squotrunaway(){ + $text = "var foo='Now where does it end"; + $this->assertEquals(js_compress($text), $text); + } + + function test_nl1(){ + $text = "var foo=6;\nvar baz=7;"; + $this->assertEquals(js_compress($text), 'var foo=6;var baz=7;'); + } + + function test_lws1(){ + $text = " \t var foo=6;"; + $this->assertEquals(js_compress($text), 'var foo=6;'); + } + + function test_tws1(){ + $text = "var foo=6; \t "; + $this->assertEquals(js_compress($text), 'var foo=6;'); + } + + function test_shortcond(){ + $text = "var foo = (baz) ? 'bar' : 'bla';"; + $this->assertEquals(js_compress($text), "var foo=(baz)?'bar':'bla';"); + + } + + function test_complexminified(){ + $text = 'if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class=\'test e\'></div><div class=\'test\'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;foo="text/*";bla="*/"'; + + $this->assertEquals(js_compress($text),$text); + } + + function test_multilinestring(){ + $text = 'var foo = "this is a \\ +multiline string";'; + $this->assertEquals('var foo="this is a multiline string";',js_compress($text)); + + $text = "var foo = 'this is a \\ +multiline string';"; + $this->assertEquals("var foo='this is a multiline string';",js_compress($text)); + } + + + /** + * Test the files provided with the original JsStrip + */ + function test_original(){ + $files = glob(dirname(__FILE__).'/js_js_compress/test-*-in.js'); + + foreach($files as $file){ + $info = "Using file $file"; + $this->assertEquals(js_compress(file_get_contents($file)), + file_get_contents(substr($file,0,-5).'out.js'), $info); + }; + } +} + +//Setup VIM: ex: et ts=4 : diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-in.js b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-in.js new file mode 100644 index 000000000..771dc1640 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-in.js @@ -0,0 +1,5 @@ + + var s = " /* this is a comment */ " ; + + + diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-out.js b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-out.js new file mode 100644 index 000000000..7d6a5346e --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-out.js @@ -0,0 +1 @@ +var s=" /* this is a comment */ ";
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-in.js b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-in.js new file mode 100644 index 000000000..a59f1b774 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-in.js @@ -0,0 +1,5 @@ + + +var s = "// this is a comment "; + + diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-out.js b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-out.js new file mode 100644 index 000000000..caa2fdca2 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-out.js @@ -0,0 +1 @@ +var s="// this is a comment ";
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes1-in.js b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes1-in.js new file mode 100644 index 000000000..845c59bdf --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes1-in.js @@ -0,0 +1,5 @@ + + var s = ' /* this is a comment */ ' ; + + + diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes1-out.js b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes1-out.js new file mode 100644 index 000000000..b2696cb98 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes1-out.js @@ -0,0 +1 @@ +var s=' /* this is a comment */ ';
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes2-in.js b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes2-in.js new file mode 100644 index 000000000..0459a4891 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes2-in.js @@ -0,0 +1,5 @@ + + +var s = '// this is a comment '; + + diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes2-out.js b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes2-out.js new file mode 100644 index 000000000..21b6a410e --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentInSingleQuotes2-out.js @@ -0,0 +1 @@ +var s='// this is a comment ';
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentMultiline-in.js b/_test/tests/lib/exe/js_js_compress/test-CommentMultiline-in.js new file mode 100644 index 000000000..b9d16a7bd --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentMultiline-in.js @@ -0,0 +1,11 @@ + + if (true) { + /* this + * is a + * multiline comment */ + document.write("true"); /* this + is another + */ + +} + diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentMultiline-out.js b/_test/tests/lib/exe/js_js_compress/test-CommentMultiline-out.js new file mode 100644 index 000000000..8eed2e57a --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentMultiline-out.js @@ -0,0 +1 @@ +if(true){document.write("true");}
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentSingleLine-in.js b/_test/tests/lib/exe/js_js_compress/test-CommentSingleLine-in.js new file mode 100644 index 000000000..302d7160b --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentSingleLine-in.js @@ -0,0 +1,7 @@ + + if (true) { + // this is a single line comment + document.write("true") ; // another +} + + diff --git a/_test/tests/lib/exe/js_js_compress/test-CommentSingleLine-out.js b/_test/tests/lib/exe/js_js_compress/test-CommentSingleLine-out.js new file mode 100644 index 000000000..8eed2e57a --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-CommentSingleLine-out.js @@ -0,0 +1 @@ +if(true){document.write("true");}
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-IfThenElseBraces-in.js b/_test/tests/lib/exe/js_js_compress/test-IfThenElseBraces-in.js new file mode 100644 index 000000000..afc824762 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-IfThenElseBraces-in.js @@ -0,0 +1,7 @@ + + +if ( true ) { + document.write("foo"); +} else { + document.write("bar"); +} diff --git a/_test/tests/lib/exe/js_js_compress/test-IfThenElseBraces-out.js b/_test/tests/lib/exe/js_js_compress/test-IfThenElseBraces-out.js new file mode 100644 index 000000000..2a982a98e --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-IfThenElseBraces-out.js @@ -0,0 +1 @@ +if(true){document.write("foo");}else{document.write("bar");}
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-IfThenElseNoBraces-in.js b/_test/tests/lib/exe/js_js_compress/test-IfThenElseNoBraces-in.js new file mode 100644 index 000000000..79d10775e --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-IfThenElseNoBraces-in.js @@ -0,0 +1,7 @@ + + +if ( true ) + document.write("foo"); + else + document.write("bar"); + diff --git a/_test/tests/lib/exe/js_js_compress/test-IfThenElseNoBraces-out.js b/_test/tests/lib/exe/js_js_compress/test-IfThenElseNoBraces-out.js new file mode 100644 index 000000000..b087c42fc --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-IfThenElseNoBraces-out.js @@ -0,0 +1 @@ +if(true)document.write("foo");else document.write("bar");
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpBackslash-in.js b/_test/tests/lib/exe/js_js_compress/test-RegexpBackslash-in.js new file mode 100644 index 000000000..503e07283 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpBackslash-in.js @@ -0,0 +1,3 @@ + +var r = / a backslash\// ; + diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpBackslash-out.js b/_test/tests/lib/exe/js_js_compress/test-RegexpBackslash-out.js new file mode 100644 index 000000000..e5c83770c --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpBackslash-out.js @@ -0,0 +1 @@ +var r=/ a backslash\//;
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpSimple-in.js b/_test/tests/lib/exe/js_js_compress/test-RegexpSimple-in.js new file mode 100644 index 000000000..2741e74c2 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpSimple-in.js @@ -0,0 +1,3 @@ + + +var r = /simple/g ; diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpSimple-out.js b/_test/tests/lib/exe/js_js_compress/test-RegexpSimple-out.js new file mode 100644 index 000000000..bb530b0a1 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpSimple-out.js @@ -0,0 +1 @@ +var r=/simple/g;
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-in.js b/_test/tests/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-in.js new file mode 100644 index 000000000..c7dbdba3d --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-in.js @@ -0,0 +1,5 @@ + + + var r = / simple with whitespace /g ; + + diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-out.js b/_test/tests/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-out.js new file mode 100644 index 000000000..5c2db510b --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-out.js @@ -0,0 +1 @@ +var r=/ simple with whitespace /g;
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpString-in.js b/_test/tests/lib/exe/js_js_compress/test-RegexpString-in.js new file mode 100644 index 000000000..debb983e5 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpString-in.js @@ -0,0 +1,3 @@ + + var r = "fruit" ; + r.replace ( /fruit/g, "apple") ; diff --git a/_test/tests/lib/exe/js_js_compress/test-RegexpString-out.js b/_test/tests/lib/exe/js_js_compress/test-RegexpString-out.js new file mode 100644 index 000000000..92ffc7d47 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-RegexpString-out.js @@ -0,0 +1 @@ +var r="fruit";r.replace(/fruit/g,"apple");
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementDoWhile-in.js b/_test/tests/lib/exe/js_js_compress/test-StatementDoWhile-in.js new file mode 100644 index 000000000..0c84c66ec --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementDoWhile-in.js @@ -0,0 +1,2 @@ +var x = 0; + do x=x+1 while (x < 10); diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementDoWhile-out.js b/_test/tests/lib/exe/js_js_compress/test-StatementDoWhile-out.js new file mode 100644 index 000000000..593e9a664 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementDoWhile-out.js @@ -0,0 +1 @@ +var x=0;do x=x+1 while(x<10);
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementForIn-in.js b/_test/tests/lib/exe/js_js_compress/test-StatementForIn-in.js new file mode 100644 index 000000000..1b0aeb6ff --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementForIn-in.js @@ -0,0 +1,2 @@ +for ( var x in foo ) + document.write(x); diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementForIn-out.js b/_test/tests/lib/exe/js_js_compress/test-StatementForIn-out.js new file mode 100644 index 000000000..95c85871e --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementForIn-out.js @@ -0,0 +1 @@ +for(var x in foo)document.write(x);
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementNew-in.js b/_test/tests/lib/exe/js_js_compress/test-StatementNew-in.js new file mode 100644 index 000000000..61f357f34 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementNew-in.js @@ -0,0 +1 @@ +var x = new Object();
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementNew-out.js b/_test/tests/lib/exe/js_js_compress/test-StatementNew-out.js new file mode 100644 index 000000000..0d4ff7f58 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementNew-out.js @@ -0,0 +1 @@ +var x=new Object();
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementSwitchCase-in.js b/_test/tests/lib/exe/js_js_compress/test-StatementSwitchCase-in.js new file mode 100644 index 000000000..39ffc1239 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementSwitchCase-in.js @@ -0,0 +1,4 @@ +var x = 1; +switch (x) { + case 1: document.write(1); +}
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StatementSwitchCase-out.js b/_test/tests/lib/exe/js_js_compress/test-StatementSwitchCase-out.js new file mode 100644 index 000000000..e51c07371 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StatementSwitchCase-out.js @@ -0,0 +1 @@ +var x=1;switch(x){case 1:document.write(1);}
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StringDoubleQuotes-in.js b/_test/tests/lib/exe/js_js_compress/test-StringDoubleQuotes-in.js new file mode 100644 index 000000000..57fe13b90 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StringDoubleQuotes-in.js @@ -0,0 +1,3 @@ + +var s1 = "double \"quotes\"" ; +var s2 = "'test'" ; diff --git a/_test/tests/lib/exe/js_js_compress/test-StringDoubleQuotes-out.js b/_test/tests/lib/exe/js_js_compress/test-StringDoubleQuotes-out.js new file mode 100644 index 000000000..9f91fc83d --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StringDoubleQuotes-out.js @@ -0,0 +1 @@ +var s1="double \"quotes\"";var s2="'test'";
\ No newline at end of file diff --git a/_test/tests/lib/exe/js_js_compress/test-StringSingleQuotes-in.js b/_test/tests/lib/exe/js_js_compress/test-StringSingleQuotes-in.js new file mode 100644 index 000000000..bb5f9951a --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StringSingleQuotes-in.js @@ -0,0 +1,8 @@ + +var s1 = 'single \'quotes\' ' ; + +var s2= '/* test */' ; + +var s3 = '// test' ; + +var s4 = '"test"' ; diff --git a/_test/tests/lib/exe/js_js_compress/test-StringSingleQuotes-out.js b/_test/tests/lib/exe/js_js_compress/test-StringSingleQuotes-out.js new file mode 100644 index 000000000..f38b26544 --- /dev/null +++ b/_test/tests/lib/exe/js_js_compress/test-StringSingleQuotes-out.js @@ -0,0 +1 @@ +var s1='single \'quotes\' ';var s2='/* test */';var s3='// test';var s4='"test"';
\ No newline at end of file diff --git a/_test/tests/test/basic.test.php b/_test/tests/test/basic.test.php new file mode 100644 index 000000000..b4926d2ba --- /dev/null +++ b/_test/tests/test/basic.test.php @@ -0,0 +1,22 @@ +<?php + +/** + * @group integration + */ +class InttestsBasicTest extends DokuWikiTest { + /** + * Execute the simplest possible request and expect + * a dokuwiki page which obviously has the word "DokuWiki" + * in it somewhere. + */ + function testSimpleRun() { + $request = new TestRequest(); + + $response = $request->execute(); + + $this->assertTrue( + strpos($response->getContent(), 'DokuWiki') >= 0, + 'DokuWiki was not a word in the output' + ); + } +} diff --git a/_test/tests/test/globals.test.php b/_test/tests/test/globals.test.php new file mode 100644 index 000000000..180fd0d0d --- /dev/null +++ b/_test/tests/test/globals.test.php @@ -0,0 +1,49 @@ +<?php + +/** + * @group integration + */ +class InttestsGlobalsTest extends DokuWikiTest { + + /** + * every request should be with its own variables + */ + function testFirstRun() { + global $EVENT_HANDLER; + + $request = new TestRequest(); + $request->setServer('testvar', true); + + $self = $this; + $EVENT_HANDLER->register_hook('TPL_CONTENT_DISPLAY', 'AFTER', null, + function() use ($self) { + $self->assertTrue($_SERVER['testvar'], 'Server variable not set correctly: testvar'); + $self->assertEquals('87.142.120.6', $_SERVER['REMOTE_ADDR'], 'Server variable not set correctly: REMOTE_ADDR'); + $_SERVER['tmpvar'] = true; + } + ); + + $request->execute(); + } + + /** + * @depends testFirstRun + */ + function testSecondRun() { + global $EVENT_HANDLER; + + $request = new TestRequest(); + $request->setServer('testvar', false); + + $self = $this; + $EVENT_HANDLER->register_hook('TPL_CONTENT_DISPLAY', 'AFTER', null, + function() use ($self) { + $self->assertFalse($_SERVER['testvar'], 'Server variable not set correctly: testvar'); + $self->assertEquals('87.142.120.6', $_SERVER['REMOTE_ADDR'], 'Server variable not set correctly: REMOTE_ADDR'); + $self->assertFalse(isset($_SERVER['tmpvar'])); + } + ); + + $request->execute(); + } +} diff --git a/_test/tests/test/hooks.test.php b/_test/tests/test/hooks.test.php new file mode 100644 index 000000000..621b9f9b8 --- /dev/null +++ b/_test/tests/test/hooks.test.php @@ -0,0 +1,24 @@ +<?php + +/** + * @group integration + */ +class InttestsHooksTest extends DokuWikiTest { + + function testHookTriggering() { + global $EVENT_HANDLER; + + $request = new TestRequest(); + $hookTriggered = false; + + $EVENT_HANDLER->register_hook('TPL_CONTENT_DISPLAY', 'AFTER', null, + function() use (&$hookTriggered) { + $hookTriggered = true; + } + ); + + $request->execute(); + + $this->assertTrue($hookTriggered, 'Hook was not triggered as expected!'); + } +} diff --git a/_test/tests/test/phpquery.test.php b/_test/tests/test/phpquery.test.php new file mode 100644 index 000000000..188d834cb --- /dev/null +++ b/_test/tests/test/phpquery.test.php @@ -0,0 +1,18 @@ +<?php + +/** + * @group integration + */ +class InttestsPHPQueryTest extends DokuWikiTest { + /** + * Execute the simplest possible request and check the + * meta generator tag is set to "DokuWiki" + */ + function testSimpleRun() { + $request = new TestRequest(); + + $response = $request->execute(); + + $this->assertEquals('DokuWiki', $response->queryHTML('meta[name="generator"]')->attr('content') ); + } +} diff --git a/_test/tests/test/plugins.test.php b/_test/tests/test/plugins.test.php new file mode 100644 index 000000000..ac6d1ee45 --- /dev/null +++ b/_test/tests/test/plugins.test.php @@ -0,0 +1,32 @@ +<?php + +/** + * @group integration + */ +class InttestsPluginsTest extends DokuWikiTest { + + function setUp() { + $this->pluginsEnabled = array( + 'testing' + ); + + parent::setUp(); + } + + function testTestingPluginEnabled() { + global $EVENT_HANDLER; + + $request = new TestRequest(); + $hookTriggered = false; + + $EVENT_HANDLER->register_hook('TESTING_PLUGIN_INSTALLED', 'AFTER', null, + function() use (&$hookTriggered) { + $hookTriggered = true; + } + ); + + $request->execute(); + + $this->assertTrue($hookTriggered, 'Testing plugin did not trigger!'); + } +} diff --git a/_test/tests/test/plugins_defaults.test.php b/_test/tests/test/plugins_defaults.test.php new file mode 100644 index 000000000..953960bb7 --- /dev/null +++ b/_test/tests/test/plugins_defaults.test.php @@ -0,0 +1,24 @@ +<?php + +/** + * @group integration + */ +class InttestsPluginsDefaultTest extends DokuWikiTest { + + function testTestingPluginDisabledDefault() { + global $EVENT_HANDLER; + + $request = new TestRequest(); + $hookTriggered = false; + + $EVENT_HANDLER->register_hook('TESTING_PLUGIN_INSTALLED', 'AFTER', null, + function() use (&$hookTriggered) { + $hookTriggered = true; + } + ); + + $request->execute(); + + $this->assertFalse($hookTriggered, 'Testing plugin did trigger!'); + } +} diff --git a/_test/tests/test/reset.test.php b/_test/tests/test/reset.test.php new file mode 100644 index 000000000..39c43cd3b --- /dev/null +++ b/_test/tests/test/reset.test.php @@ -0,0 +1,38 @@ +<?php + +/** + * @group integration + */ +class InttestsScopeTest extends DokuWikiTest { + + public $triggered = false; + + function testFirstRun(){ + global $conf; + $conf['foo'] = 'bar'; + + global $EVENT_HANDLER; + $self = $this; + $EVENT_HANDLER->register_hook('DOKUWIKI_STARTED', 'AFTER', null, + function() use ($self) { + $self->triggered = true; + } + ); + $request = new TestRequest(); + $request->execute(); + $this->assertTrue($this->triggered); + } + + /** + * @depends testFirstRun + */ + function testSecondRun(){ + global $conf; + $this->assertFalse(isset($conf['foo']), 'conf setting'); + + $request = new TestRequest(); + $request->execute(); + + $this->assertFalse($this->triggered, 'trigger'); + } +} diff --git a/_test/tests/test/scope.test.php b/_test/tests/test/scope.test.php new file mode 100644 index 000000000..8c4ad9cf8 --- /dev/null +++ b/_test/tests/test/scope.test.php @@ -0,0 +1,49 @@ +<?php + +/** + * @group integration + */ +class InttestsResetTest extends DokuWikiTest { + /** + * It should be possible to have two test cases within one test class. + */ + function testFirstRun() { + $request = new TestRequest(); + $response = $request->execute(); + $this->assertTrue( + strpos($response->getContent(), 'DokuWiki') >= 0, + 'DokuWiki was not a word in the output' + ); + } + + /** + * @depends testFirstRun + */ + function testSecondRun() { + $request = new TestRequest(); + $response = $request->execute(); + $this->assertTrue( + strpos($response->getContent(), 'DokuWiki') >= 0, + 'DokuWiki was not a word in the output' + ); + } + + /** + * two requests within the same test case should be possible + */ + function testMultipleRequests() { + $request = new TestRequest(); + $response = $request->execute(); + $this->assertTrue( + strpos($response->getContent(), 'DokuWiki') >= 0, + 'DokuWiki was not a word in the output' + ); + + $request = new TestRequest(); + $response = $request->execute(); + $this->assertTrue( + strpos($response->getContent(), 'DokuWiki') >= 0, + 'DokuWiki was not a word in the output' + ); + } +} |