[prev in list] [next in list] [prev in thread] [next in thread] 

List:       elinks-cvs
Subject:    [ELinks] elinks (ECMASCRIPT) - jonas: Introduce empty element end ...
From:       cvs () pasky ! ji ! cz
Date:       2004-02-29 3:38:20
Message-ID: 20040229033820.5861.qmail () machine ! sinus ! cz
[Download RAW message or body]

This is an automated notification of a change to the ELinks CVS tree.

Author: jonas
Module: elinks
   Tag: ECMASCRIPT
  Date: Sun Feb 29 03:38:20 2004 GMT

---- Log message:

Introduce empty element end token.


---- Files affected:

elinks/src/document/sgml:
   parser.c (1.1.2.49 -> 1.1.2.50) 
    http://cvsweb.elinks.or.cz/cvsweb.cgi/elinks/src/document/sgml/parser.c.diff?r1=1.1.2.49&r2=1.1.2.50&f=u
  scanner.c (1.1.2.24 -> 1.1.2.25) 
    http://cvsweb.elinks.or.cz/cvsweb.cgi/elinks/src/document/sgml/scanner.c.diff?r1=1.1.2.24&r2=1.1.2.25&f=u
  scanner.h (1.1.2.6 -> 1.1.2.7) 
    http://cvsweb.elinks.or.cz/cvsweb.cgi/elinks/src/document/sgml/scanner.h.diff?r1=1.1.2.6&r2=1.1.2.7&f=u



---- Diffs:

 elinks/src/document/sgml/parser.c  |    6 ++++++
 elinks/src/document/sgml/scanner.c |   11 +++++++----
 elinks/src/document/sgml/scanner.h |    1 +
 3 files changed, 14 insertions(+), 4 deletions(-)


Index: elinks/src/document/sgml/parser.c
diff -u elinks/src/document/sgml/parser.c:1.1.2.49 \
                elinks/src/document/sgml/parser.c:1.1.2.50
--- elinks/src/document/sgml/parser.c:1.1.2.49	Sun Feb 29 04:03:40 2004
+++ elinks/src/document/sgml/parser.c	Sun Feb 29 04:38:15 2004
@@ -167,6 +167,7 @@
 		case SGML_TOKEN_ELEMENT:
 		case SGML_TOKEN_ELEMENT_BEGIN:
 		case SGML_TOKEN_ELEMENT_END:
+		case SGML_TOKEN_ELEMENT_EMPTY_END:
 			return;
 
 		case SGML_TOKEN_IDENT:
@@ -223,6 +224,11 @@
 				skip_scanner_token(scanner);
 			}
 
+			break;
+
+		case SGML_TOKEN_ELEMENT_EMPTY_END:
+			pop_dom_node(navigator);
+			skip_scanner_token(scanner);
 			break;
 
 		case SGML_TOKEN_ELEMENT_END:
Index: elinks/src/document/sgml/scanner.c
diff -u elinks/src/document/sgml/scanner.c:1.1.2.24 \
                elinks/src/document/sgml/scanner.c:1.1.2.25
--- elinks/src/document/sgml/scanner.c:1.1.2.24	Sat Feb 28 05:41:52 2004
+++ elinks/src/document/sgml/scanner.c	Sun Feb 29 04:38:15 2004
@@ -279,14 +279,17 @@
 				scan_sgml(scanner, string, SGML_CHAR_IDENT);
 				real_length = string - token->string;
 
+				if (skip_sgml(scanner, &string, '>'))
+					type = SGML_TOKEN_ELEMENT_END;
+
 			} else if (*string == '>') {
+				string++;
 				real_length = 0;
+				type = SGML_TOKEN_ELEMENT_END;
 			}
 
-			if (skip_sgml(scanner, &string, '>')) {
+			if (type != SGML_TOKEN_GARBAGE)
 				scanner->state = SGML_STATE_TEXT;
-				type = SGML_TOKEN_ELEMENT_END;
-			}
 
 		} else {
 			/* Alien < > stuff so ignore it */
@@ -309,7 +312,7 @@
 		if (*string == '>') {
 			string++;
 			real_length = 0;
-			type = SGML_TOKEN_ELEMENT_END;
+			type = SGML_TOKEN_ELEMENT_EMPTY_END;
 			assert(scanner->state == SGML_STATE_ELEMENT);
 			scanner->state = SGML_STATE_TEXT;
 		} else if (is_sgml_attribute(*string)) {
Index: elinks/src/document/sgml/scanner.h
diff -u elinks/src/document/sgml/scanner.h:1.1.2.6 \
                elinks/src/document/sgml/scanner.h:1.1.2.7
--- elinks/src/document/sgml/scanner.h:1.1.2.6	Sat Feb 28 04:32:22 2004
+++ elinks/src/document/sgml/scanner.h	Sun Feb 29 04:38:15 2004
@@ -32,6 +32,7 @@
 	SGML_TOKEN_ELEMENT,		/* <{ident}> */
 	SGML_TOKEN_ELEMENT_BEGIN,	/* <{ident} */
 	SGML_TOKEN_ELEMENT_END,		/* </{ident}> or </> */
+	SGML_TOKEN_ELEMENT_EMPTY_END,	/* /> */
 	SGML_TOKEN_ATTRIBUTE,		/* [^>\t\r\n\f\v ]+ */
 
 	SGML_TOKEN_ENTITY,		/* &ident; */


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic