Browse Source

Add the start_pos/end_pos info for parsed elements

mingodad 7 years ago
parent
commit
bb8c18ef15
1 changed files with 14 additions and 7 deletions
  1. 14 7
      SquiLu-ext/sq_gumbo.cpp

+ 14 - 7
SquiLu-ext/sq_gumbo.cpp

@@ -19,17 +19,17 @@ SQ_OPT_STRING_STRLEN();
 static SQRESULT build_node(HSQUIRRELVM v, GumboNode* node);
 
 static void reg_string(HSQUIRRELVM v, const char *name, const char *val) {
-  sq_pushstring(v, name, -1);
+  sq_pushstring(v, name, -1);
   if(val) sq_pushstring(v, val, -1);
-  else sq_pushnull(v);
-  sq_rawset(v, -3);
-}
+  else sq_pushnull(v);
+  sq_rawset(v, -3);
+}
 
 static void reg_boolean(HSQUIRRELVM v, const char *name, SQBool val) {
-  sq_pushstring(v, name, -1);
+  sq_pushstring(v, name, -1);
   sq_pushbool(v, val);
-  sq_rawset(v, -3);
-}
+  sq_rawset(v, -3);
+}
 
 static inline SQRESULT add_children(HSQUIRRELVM v, GumboVector *children) {
     unsigned int tl = 0;
@@ -93,6 +93,13 @@ static SQRESULT build_element(HSQUIRRELVM v, GumboElement *element) {
     sq_newarray(v, element->children.length);
     if(add_children(v, &element->children) == SQ_ERROR) return SQ_ERROR;
     sq_rawset(v, -3);
+    sq_pushliteral(v, _SC("start_pos"));
+    sq_pushinteger(v, element->start_pos.offset);
+    sq_rawset(v, -3);
+
+    sq_pushliteral(v, _SC("end_pos"));
+    sq_pushinteger(v, element->end_pos.offset);
+    sq_rawset(v, -3);
     return SQ_OK;
 }