[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [w3m-dev 01852] Re: backend and emacs-w3m
- From: Hironori Sakamoto <h-saka@xxxxxxxxxxxxx>
- Date: Tue, 27 Mar 2001 17:30:05 +0900 (JST)
- X-ml-name: emacs-w3m
- X-mail-count: 00378
坂本です。
>> From: TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp>
>> 坂本> * -halfdump の出力の形式を変更することは譲れない。
>> 取り急ぎ一点だけ。私が考えているのは w3m の内部表現を固定化することで
>> はありません。
了解。
>> そうではなく、内部表現を上位層(ユーザーインターフェースプログラム)の処
>> 理しやすい形式に変換して出力するモードをつくりませんか、という提案です。
『処理しやすい形式』というのがくせ者で、いまのままでも
上位層である w3m の HTMLlineporc2body は『処理しやすい』わけです。:-(
halfdump に version を付けて出力することで対応していただけませんんか。
もちろん、[emacs-w3m:00375], [w3m-dev 01849] で書いた様に
* header や form 情報の出力
* 文字コード変換
はやるべきと思います。
文字コード変換に絡んで、
<rule>内部コード</rule> (w3m-m17n なら <symbol>) は同等のタグにします。
visited_anchor のために(急いで)実装してから、いろいろ考えていたのです
が元の様な ASCII で表現したタグの方がいいでしょう。
内部コード化は HTMLlineproc2body の仕事にします。
この patch は添付します。(最初からこうすれば簡単だったのに。)
PS.
あんまりサーバとか上位層とか言わないで…
-----------------------------------
坂本 浩則 <hsaka@mth.biglobe.ne.jp>
http://www2u.biglobe.ne.jp/~hsaka/
--- html.c.orig Fri Mar 23 10:49:54 2001
+++ html.c Tue Mar 27 15:43:12 2001
@@ -67,6 +67,8 @@
unsigned char ALST_TABLE_ALT[] = {ATTR_TID};
#define MAXA_TABLE_ALT 1
+unsigned char ALST_RULE[] = {ATTR_TYPE};
+#define MAXA_RULE 1
unsigned char ALST_TITLE_ALT[] = {ATTR_TITLE};
#define MAXA_TITLE_ALT 1
unsigned char ALST_INPUT_ALT[] =
@@ -196,7 +198,7 @@
/* pseudo tag */
{ALST_TABLE_ALT,MAXA_TABLE_ALT,TFLG_INT}, /* 113 HTML_TABLE_ALT */
- {NULL, 0, TFLG_INT}, /* 114 HTML_RULE */
+ {ALST_RULE, MAXA_RULE, TFLG_INT}, /* 114 HTML_RULE */
{NULL, 0, TFLG_INT|TFLG_END}, /* 115 HTML_N_RULE */
{NULL, 0, TFLG_INT}, /* 116 HTML_PRE_INT */
{NULL, 0, TFLG_INT|TFLG_END}, /* 117 HTML_N_PRE_INT */
--- file.c.orig Fri Mar 23 11:19:54 2001
+++ file.c Tue Mar 27 15:43:12 2001
@@ -131,7 +131,7 @@
NBSP "*", NBSP "+", NBSP "o", NBSP "#", NBSP "@", NBSP "-",
NBSP "=", "**", "--"
};
-#define HR_RULE "\212"
+#define HR_RULE "-"
#define HR_RULE_WIDTH 1
#endif /* not KANJI_SYMBOLS */
@@ -2125,7 +2125,7 @@
if (w > 200 && i < 13) {
/* must be a horizontal line */
#ifndef KANJI_SYMBOLS
- Strcat_charp(tmp, "<_RULE>");
+ Strcat_charp(tmp, "<_RULE TYPE=10>");
#endif /* not KANJI_SYMBOLS */
w /= pixel_per_char;
for (i = 0; i < w - (HR_RULE_WIDTH - 1); i += HR_RULE_WIDTH)
@@ -2629,7 +2629,7 @@
break;
}
#ifndef KANJI_SYMBOLS
- Strcat_charp(tmp, "<_RULE>");
+ Strcat_charp(tmp, "<_RULE TYPE=10>");
#endif /* not KANJI_SYMBOLS */
w -= HR_RULE_WIDTH - 1;
if (w <= 0)
@@ -3594,6 +3594,9 @@
int hseq;
Str line;
char *endp;
+#ifndef KANJI_SYMBOLS
+ char rule;
+#endif
if (w3m_debug)
debug = fopen("zzzerr", "a");
@@ -3626,8 +3629,8 @@
while (str < endp && pos < LINELEN) {
mode = get_mctype(str);
#ifndef KANJI_SYMBOLS
- if (effect & PC_RULE && IS_INTSPACE(*str)) {
- PPUSH(PC_ASCII | effect, *str);
+ if (effect & PC_RULE && *str != '<') {
+ PPUSH(PC_ASCII | effect, rule | 0x80);
str++;
} else
#endif
@@ -3897,6 +3900,8 @@
#ifndef KANJI_SYMBOLS
case HTML_RULE:
effect |= PC_RULE;
+ if (parsedtag_get_value(tag, ATTR_TYPE, &p))
+ rule = (char)atoi(p);
break;
case HTML_N_RULE:
effect &= ~PC_RULE;
--- table.c.orig Fri Mar 23 10:49:53 2001
+++ table.c Tue Mar 27 15:43:12 2001
@@ -35,22 +35,22 @@
static char *rule[] =
#endif
{
- "<_RULE>\200</_RULE>",
- "<_RULE>\201</_RULE>",
- "<_RULE>\202</_RULE>",
- "<_RULE>\203</_RULE>",
- "<_RULE>\204</_RULE>",
- "<_RULE>\205</_RULE>",
- "<_RULE>\206</_RULE>",
- "<_RULE>\207</_RULE>",
- "<_RULE>\210</_RULE>",
- "<_RULE>\211</_RULE>",
- "<_RULE>\212</_RULE>",
- "<_RULE>\213</_RULE>",
- "<_RULE>\214</_RULE>",
- "<_RULE>\215</_RULE>",
- "<_RULE>\216</_RULE>",
- "<_RULE>\217</_RULE>"
+ "<_RULE TYPE=0>+</_RULE>",
+ "<_RULE TYPE=1>|</_RULE>",
+ "<_RULE TYPE=2>-</_RULE>",
+ "<_RULE TYPE=3>+</_RULE>",
+ "<_RULE TYPE=4>|</_RULE>",
+ "<_RULE TYPE=5>|</_RULE>",
+ "<_RULE TYPE=6>+</_RULE>",
+ "<_RULE TYPE=7> </_RULE>",
+ "<_RULE TYPE=8>-</_RULE>",
+ "<_RULE TYPE=9>+</_RULE>",
+ "<_RULE TYPE=10>-</_RULE>",
+ "<_RULE TYPE=11> </_RULE>",
+ "<_RULE TYPE=12>+</_RULE>",
+ "<_RULE TYPE=13> </_RULE>",
+ "<_RULE TYPE=14> </_RULE>",
+ "<_RULE TYPE=15> </_RULE>"
};
#if defined(__EMX__)&&!defined(JP_CHARSET)
static char **ruleB = _rule, **rule = _rule;
@@ -64,7 +64,7 @@
static char **ruleB = rule;
#endif /* not __EMX__ or JP_CHARSET */
-#define TN_VERTICALBAR "<_RULE>\205</_RULE>"
+#define TN_VERTICALBAR "<_RULE TYPE=5>|</_RULE>"
#define RULE_WIDTH 1
#endif /* not KANJI_SYMBOLS */