From: konn Date: Sun, 13 Jul 2008 17:40:15 +0000 (+0000) Subject: * Added h3 tag with CSS for au XHTML converter. X-Git-Tag: v0.13.0~4^2~1447 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7b5fc317dd362027820ea4ef9c07650ee10d8fbf;p=modchxj%2Fmod_chxj.git * Added h3 tag with CSS for au XHTML converter. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/sandbox@2908 1a406e8e-add9-4483-a2c8-d8cac5b7c224 --- diff --git a/src/chxj_xhtml_mobile_1_0.c b/src/chxj_xhtml_mobile_1_0.c index 4c7f97d8..de00a853 100644 --- a/src/chxj_xhtml_mobile_1_0.c +++ b/src/chxj_xhtml_mobile_1_0.c @@ -2100,39 +2100,53 @@ static char * s_xhtml_1_0_start_h3_tag(void *pdoc, Node *node) { xhtml_t *xhtml = GET_XHTML(pdoc); - Doc *doc = xhtml->doc; + Doc *doc = xhtml->doc; Attr *attr; + char *attr_style = NULL; + char *attr_align = NULL; - W_L("entryp)) { + css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style); + if (style) { + css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align"); + css_property_t *cur; + for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) { + if (STRCASEEQ('l','L',"left", cur->value)) { + attr_align = apr_pstrdup(doc->pool, "left"); } - else if (STRCASEEQ('r','R',"right",value)) { - W_L(" style=\""); - W_L("text-align:right"); - W_L("\""); + else if (STRCASEEQ('c','C',"center",cur->value)) { + attr_align = apr_pstrdup(doc->pool, "center"); } - else if (STRCASEEQ('c','C',"center",value)) { - W_L(" style=\""); - W_L("text-align:center"); - W_L("\""); + else if (STRCASEEQ('r','R',"right",cur->value)) { + attr_align = apr_pstrdup(doc->pool, "right"); } - break; } } } + W_L(""); + return xhtml->out; } @@ -2152,6 +2166,10 @@ s_xhtml_1_0_end_h3_tag(void *pdoc, Node *UNUSED(child)) Doc *doc = xhtml->doc; W_L(""); + if (IS_CSS_ON(xhtml->entryp)) { + chxj_css_pop_prop_list(xhtml->css_prop_stack); + } + return xhtml->out; } diff --git a/test/chxj_xhtml_mobile_1_0/test_chxj_xhtml_mobile_1_0.c b/test/chxj_xhtml_mobile_1_0/test_chxj_xhtml_mobile_1_0.c index c18de1fb..59d7353d 100644 --- a/test/chxj_xhtml_mobile_1_0/test_chxj_xhtml_mobile_1_0.c +++ b/test/chxj_xhtml_mobile_1_0/test_chxj_xhtml_mobile_1_0.c @@ -588,6 +588,20 @@ void test_xhtml_h1_tag_with_css_003(); void test_xhtml_h1_tag_with_css_004(); void test_xhtml_h1_tag_with_css_005(); void test_xhtml_h1_tag_with_css_006(); + +void test_xhtml_h2_tag_with_css_001(); +void test_xhtml_h2_tag_with_css_002(); +void test_xhtml_h2_tag_with_css_003(); +void test_xhtml_h2_tag_with_css_004(); +void test_xhtml_h2_tag_with_css_005(); +void test_xhtml_h2_tag_with_css_006(); + +void test_xhtml_h3_tag_with_css_001(); +void test_xhtml_h3_tag_with_css_002(); +void test_xhtml_h3_tag_with_css_003(); +void test_xhtml_h3_tag_with_css_004(); +void test_xhtml_h3_tag_with_css_005(); +void test_xhtml_h3_tag_with_css_006(); /* pend */ int @@ -1212,6 +1226,20 @@ main() CU_add_test(xhtml_suite, "test h1 with css 004", test_xhtml_h1_tag_with_css_004); CU_add_test(xhtml_suite, "test h1 with css 005", test_xhtml_h1_tag_with_css_005); CU_add_test(xhtml_suite, "test h1 with css 006", test_xhtml_h1_tag_with_css_006); + + CU_add_test(xhtml_suite, "test h2 with css 001", test_xhtml_h2_tag_with_css_001); + CU_add_test(xhtml_suite, "test h2 with css 002", test_xhtml_h2_tag_with_css_002); + CU_add_test(xhtml_suite, "test h2 with css 003", test_xhtml_h2_tag_with_css_003); + CU_add_test(xhtml_suite, "test h2 with css 004", test_xhtml_h2_tag_with_css_004); + CU_add_test(xhtml_suite, "test h2 with css 005", test_xhtml_h2_tag_with_css_005); + CU_add_test(xhtml_suite, "test h2 with css 006", test_xhtml_h2_tag_with_css_006); + + CU_add_test(xhtml_suite, "test h3 with css 001", test_xhtml_h3_tag_with_css_001); + CU_add_test(xhtml_suite, "test h3 with css 002", test_xhtml_h3_tag_with_css_002); + CU_add_test(xhtml_suite, "test h3 with css 003", test_xhtml_h3_tag_with_css_003); + CU_add_test(xhtml_suite, "test h3 with css 004", test_xhtml_h3_tag_with_css_004); + CU_add_test(xhtml_suite, "test h3 with css 005", test_xhtml_h3_tag_with_css_005); + CU_add_test(xhtml_suite, "test h3 with css 006", test_xhtml_h3_tag_with_css_006); /* aend */ CU_basic_run_tests(); @@ -1562,7 +1590,7 @@ void test_xhtml_a_tag_href_attribute_002() void test_xhtml_a_tag_href_attribute_003() { #define TEST_STRING "abc" -#define RESULT_STRING "abc" +#define RESULT_STRING "abc" char *ret; char *tmp; device_table spec; @@ -1591,7 +1619,7 @@ void test_xhtml_a_tag_href_attribute_003() void test_xhtml_a_tag_href_attribute_004() { #define TEST_STRING "abc" -#define RESULT_STRING "abc" +#define RESULT_STRING "abc" char *ret; char *tmp; device_table spec; @@ -1620,7 +1648,7 @@ void test_xhtml_a_tag_href_attribute_004() void test_xhtml_a_tag_href_attribute_005() { #define TEST_STRING "abc" -#define RESULT_STRING "abc" +#define RESULT_STRING "abc" char *ret; char *tmp; device_table spec; @@ -3423,7 +3451,7 @@ void test_xhtml_form_tag_005() void test_xhtml_form_tag_006() { #define TEST_STRING "
" -#define RESULT_STRING "
" +#define RESULT_STRING "
" char *ret; char *tmp; device_table spec; @@ -3510,7 +3538,7 @@ void test_xhtml_form_tag_008() void test_xhtml_form_tag_009() { #define TEST_STRING "
" -#define RESULT_STRING "
" +#define RESULT_STRING "
" char *ret; char *tmp; device_table spec; @@ -4357,7 +4385,7 @@ void test_xhtml_h3_tag_006() void test_xhtml_h3_tag_007() { #define TEST_STRING "

" -#define RESULT_STRING "

" +#define RESULT_STRING "

" char *ret; char *tmp; device_table spec; @@ -4386,7 +4414,7 @@ void test_xhtml_h3_tag_007() void test_xhtml_h3_tag_008() { #define TEST_STRING "

" -#define RESULT_STRING "

" +#define RESULT_STRING "

" char *ret; char *tmp; device_table spec; @@ -4415,7 +4443,7 @@ void test_xhtml_h3_tag_008() void test_xhtml_h3_tag_009() { #define TEST_STRING "

" -#define RESULT_STRING "

" +#define RESULT_STRING "

" char *ret; char *tmp; device_table spec; @@ -5991,7 +6019,7 @@ void test_xhtml_img_tag_001() void test_xhtml_img_tag_002() { #define TEST_STRING "" -#define RESULT_STRING "" +#define RESULT_STRING "" char *ret; char *tmp; device_table spec; @@ -6020,7 +6048,7 @@ void test_xhtml_img_tag_002() void test_xhtml_img_tag_003() { #define TEST_STRING "" -#define RESULT_STRING "" +#define RESULT_STRING "" char *ret; char *tmp; device_table spec; @@ -6049,7 +6077,7 @@ void test_xhtml_img_tag_003() void test_xhtml_img_tag_004() { #define TEST_STRING "" -#define RESULT_STRING "" +#define RESULT_STRING "" char *ret; char *tmp; device_table spec; @@ -6078,7 +6106,7 @@ void test_xhtml_img_tag_004() void test_xhtml_img_tag_005() { #define TEST_STRING "" -#define RESULT_STRING "" +#define RESULT_STRING "" char *ret; char *tmp; device_table spec; @@ -6107,7 +6135,7 @@ void test_xhtml_img_tag_005() void test_xhtml_img_tag_006() { #define TEST_STRING "" -#define RESULT_STRING "" +#define RESULT_STRING "" char *ret; char *tmp; device_table spec; @@ -16835,6 +16863,258 @@ void test_xhtml_h2_tag_with_css_006() #undef TEST_STRING #undef RESULT_STRING } + + + +/*===========================================================================*/ +/* h3 tag with CSS */ +/*===========================================================================*/ +char *test_chxj_serf_get046(request_rec *r, apr_pool_t *ppool, const char *uri_path, int ss, apr_size_t *len) +{ + static char *css = "a:focus { display: none }\n" + "a:link { display: none }\n" + "a { display: none }\n" + "hr { display: none }\n" + "a:visited { display:none }\n" + "h3 { text-align: right }\n"; + *len = strlen(css); + call_check = 1; + return css; +} +void test_xhtml_h3_tag_with_css_001() +{ +#define TEST_STRING "" \ + "

あいう

" +#define RESULT_STRING "" \ + "" \ + "

あいう

" + char *ret; + char *tmp; + device_table spec; + chxjconvrule_entry entry; + cookie_t cookie; + apr_size_t destlen; + APR_INIT; + chxj_serf_get = test_chxj_serf_get046; + call_check = 0; + + COOKIE_INIT(cookie); + + SPEC_INIT(spec); + destlen = sizeof(TEST_STRING)-1; + entry.action |= CONVRULE_CSS_ON_BIT; + + tmp = chxj_encoding(&r, TEST_STRING, &destlen); + ret = chxj_convert_xhtml_mobile_1_0(&r, &spec, tmp, destlen, &destlen, &entry, &cookie); + ret = chxj_rencoding(&r, ret, &destlen); + CU_ASSERT(ret != NULL); + CU_ASSERT(strcmp(RESULT_STRING, ret) == 0); + CU_ASSERT(destlen == sizeof(RESULT_STRING)-1); + CU_ASSERT(call_check == 1); + + APR_TERM; +#undef TEST_STRING +#undef RESULT_STRING +} +char *test_chxj_serf_get047(request_rec *r, apr_pool_t *ppool, const char *uri_path, int ss, apr_size_t *len) +{ + static char *css = "a:focus { display: none }\n" + "a:link { display: none }\n" + "a { display: none }\n" + "hr { display: none }\n" + "a:visited { display:none }\n" + "h3 { text-align: center }\n"; + *len = strlen(css); + call_check = 1; + return css; +} +void test_xhtml_h3_tag_with_css_002() +{ +#define TEST_STRING "" \ + "

あいう

" +#define RESULT_STRING "" \ + "" \ + "

あいう

" + char *ret; + char *tmp; + device_table spec; + chxjconvrule_entry entry; + cookie_t cookie; + apr_size_t destlen; + APR_INIT; + chxj_serf_get = test_chxj_serf_get047; + call_check = 0; + + COOKIE_INIT(cookie); + + SPEC_INIT(spec); + destlen = sizeof(TEST_STRING)-1; + entry.action |= CONVRULE_CSS_ON_BIT; + + tmp = chxj_encoding(&r, TEST_STRING, &destlen); + ret = chxj_convert_xhtml_mobile_1_0(&r, &spec, tmp, destlen, &destlen, &entry, &cookie); + ret = chxj_rencoding(&r, ret, &destlen); + CU_ASSERT(ret != NULL); + CU_ASSERT(strcmp(RESULT_STRING, ret) == 0); + CU_ASSERT(destlen == sizeof(RESULT_STRING)-1); + CU_ASSERT(call_check == 1); + + APR_TERM; +#undef TEST_STRING +#undef RESULT_STRING +} +char *test_chxj_serf_get048(request_rec *r, apr_pool_t *ppool, const char *uri_path, int ss, apr_size_t *len) +{ + static char *css = "a:focus { display: none }\n" + "a:link { display: none }\n" + "a { display: none }\n" + "hr { display: none }\n" + "a:visited { display:none }\n" + "h3 { text-align: right }\n"; + *len = strlen(css); + call_check = 1; + return css; +} +void test_xhtml_h3_tag_with_css_003() +{ +#define TEST_STRING "" \ + "

あいう

" +#define RESULT_STRING "" \ + "" \ + "

あいう

" + char *ret; + char *tmp; + device_table spec; + chxjconvrule_entry entry; + cookie_t cookie; + apr_size_t destlen; + APR_INIT; + chxj_serf_get = test_chxj_serf_get048; + call_check = 0; + + COOKIE_INIT(cookie); + + SPEC_INIT(spec); + destlen = sizeof(TEST_STRING)-1; + entry.action |= CONVRULE_CSS_ON_BIT; + + tmp = chxj_encoding(&r, TEST_STRING, &destlen); + ret = chxj_convert_xhtml_mobile_1_0(&r, &spec, tmp, destlen, &destlen, &entry, &cookie); + ret = chxj_rencoding(&r, ret, &destlen); + CU_ASSERT(ret != NULL); + CU_ASSERT(strcmp(RESULT_STRING, ret) == 0); + CU_ASSERT(destlen == sizeof(RESULT_STRING)-1); + CU_ASSERT(call_check == 1); + + APR_TERM; +#undef TEST_STRING +#undef RESULT_STRING +} +void test_xhtml_h3_tag_with_css_004() +{ +#define TEST_STRING "" \ + "

あいう

" +#define RESULT_STRING "" \ + "" \ + "

あいう

" + char *ret; + char *tmp; + device_table spec; + chxjconvrule_entry entry; + cookie_t cookie; + apr_size_t destlen; + APR_INIT; + chxj_serf_get = test_chxj_serf_get048; + call_check = 0; + + COOKIE_INIT(cookie); + + SPEC_INIT(spec); + destlen = sizeof(TEST_STRING)-1; + entry.action |= CONVRULE_CSS_ON_BIT; + + tmp = chxj_encoding(&r, TEST_STRING, &destlen); + ret = chxj_convert_xhtml_mobile_1_0(&r, &spec, tmp, destlen, &destlen, &entry, &cookie); + ret = chxj_rencoding(&r, ret, &destlen); + CU_ASSERT(ret != NULL); + CU_ASSERT(strcmp(RESULT_STRING, ret) == 0); + CU_ASSERT(destlen == sizeof(RESULT_STRING)-1); + CU_ASSERT(call_check == 0); + + APR_TERM; +#undef TEST_STRING +#undef RESULT_STRING +} +void test_xhtml_h3_tag_with_css_005() +{ +#define TEST_STRING "" \ + "

あいう

" +#define RESULT_STRING "" \ + "" \ + "

あいう

" + char *ret; + char *tmp; + device_table spec; + chxjconvrule_entry entry; + cookie_t cookie; + apr_size_t destlen; + APR_INIT; + chxj_serf_get = test_chxj_serf_get048; + call_check = 0; + + COOKIE_INIT(cookie); + + SPEC_INIT(spec); + destlen = sizeof(TEST_STRING)-1; + entry.action |= CONVRULE_CSS_ON_BIT; + + tmp = chxj_encoding(&r, TEST_STRING, &destlen); + ret = chxj_convert_xhtml_mobile_1_0(&r, &spec, tmp, destlen, &destlen, &entry, &cookie); + ret = chxj_rencoding(&r, ret, &destlen); + CU_ASSERT(ret != NULL); + CU_ASSERT(strcmp(RESULT_STRING, ret) == 0); + CU_ASSERT(destlen == sizeof(RESULT_STRING)-1); + CU_ASSERT(call_check == 0); + + APR_TERM; +#undef TEST_STRING +#undef RESULT_STRING +} +void test_xhtml_h3_tag_with_css_006() +{ +#define TEST_STRING "" \ + "

あいう

" +#define RESULT_STRING "" \ + "" \ + "

あいう

" + char *ret; + char *tmp; + device_table spec; + chxjconvrule_entry entry; + cookie_t cookie; + apr_size_t destlen; + APR_INIT; + chxj_serf_get = test_chxj_serf_get048; + call_check = 0; + + COOKIE_INIT(cookie); + + SPEC_INIT(spec); + destlen = sizeof(TEST_STRING)-1; + entry.action |= CONVRULE_CSS_ON_BIT; + + tmp = chxj_encoding(&r, TEST_STRING, &destlen); + ret = chxj_convert_xhtml_mobile_1_0(&r, &spec, tmp, destlen, &destlen, &entry, &cookie); + ret = chxj_rencoding(&r, ret, &destlen); + CU_ASSERT(ret != NULL); + CU_ASSERT(strcmp(RESULT_STRING, ret) == 0); + CU_ASSERT(destlen == sizeof(RESULT_STRING)-1); + CU_ASSERT(call_check == 0); + + APR_TERM; +#undef TEST_STRING +#undef RESULT_STRING +} /* * vim:ts=2 et */