]> matita.cs.unibo.it Git - helm.git/commitdiff
Matitaweb:
authormatitaweb <claudio.sacerdoticoen@unibo.it>
Tue, 20 Mar 2012 16:27:14 +0000 (16:27 +0000)
committermatitaweb <claudio.sacerdoticoen@unibo.it>
Tue, 20 Mar 2012 16:27:14 +0000 (16:27 +0000)
1) partially solves a problem with TeX-like macro conversion when the script contains markup
2) ports a bugfix from Matita 1.0 (see log for revision 11211).

matitaB/components/grafite_parser/grafiteParser.ml
matitaB/components/grafite_parser/grafiteParser.mli
matitaB/matita/html/matitaweb.js
matitaB/matita/matitaEngine.ml

index 7985512d938db4f14b773107530bacbe516f93c3..a632069947d37c40e5d31a9308b2401d20fb6f98 100644 (file)
@@ -42,15 +42,17 @@ let exc_located_wrapper f =
       raise (HExtlib.Localized 
         (floc,CicNotationParser.Parse_error (Printexc.to_string exn)))
 
-type parsable = Grammar.parsable
+type parsable = Grammar.parsable * Ulexing.lexbuf
 
 let parsable_statement status buf =
  let grammar = CicNotationParser.level2_ast_grammar status in
-  Grammar.parsable grammar (Obj.magic buf)
+  Grammar.parsable grammar (Obj.magic buf), buf
 
 let parse_statement grafite_parser parsable =
   exc_located_wrapper
-    (fun () -> (Grammar.Entry.parse_parsable (Obj.magic grafite_parser) parsable))
+    (fun () -> (Grammar.Entry.parse_parsable (Obj.magic grafite_parser) (fst parsable)))
+
+let strm_of_parsable (_,buf) = buf
 
 let add_raw_attribute ~text t = N.AttributedTerm (`Raw text, t)
 
index 4f3ce988ee15f366a6c0319b8e2a40dde2b976b5..9e6f1dc6f8cdeccfd942bc223c61b89eda03b4b5 100644 (file)
@@ -51,3 +51,4 @@ val extend : #status as 'status ->
 type parsable
 val parsable_statement: #status -> Ulexing.lexbuf -> parsable
 val parse_statement: #status -> parsable -> GrafiteAst.statement
+val strm_of_parsable: parsable -> Ulexing.lexbuf
index d367b6bb3019a02590894f09c4e3d455a2ca4eb8..cec0bb3baa9d7a4ea6feb1dbd7ab35a5c30206ab 100644 (file)
@@ -211,10 +211,10 @@ function lookup_tex(texmacro)
 function strip_tags(tagname,classname) 
 {
     var tags = unlocked.getElementsByTagName(tagname);
-    var tlen = tags.length; // preserving the value from removeChild operations
     if (is_defined(classname)) {
        tags = filterByClass(tags,classname);
     }
+    var tlen = tags.length; // preserving the value from removeChild operations
     for (i = 0; i < tlen; i++) {
         var children = tags[i].childNodes;
         for (j = 0; j < children.length; j++) {
index 14716e2b68143102be55fa187c63ac6349b781fb..734140ad3dc6be656045a2be7c3e6b15c513dbc6 100644 (file)
@@ -147,28 +147,37 @@ let rec get_ast status ~compiling ~asserted ~include_paths strm =
 
 and eval_from_stream ~compiling ~asserted ~include_paths ?do_heavy_checks status str cb =
  let matita_debug = Helm_registry.get_bool "matita.debug" in
- let rec loop asserted status =
-  let asserted,stop,status = 
+ let rec loop asserted status str =
+  let asserted,stop,status,str = 
    try
      let cont =
        try Some (get_ast status ~compiling ~asserted ~include_paths str)
        with End_of_file -> None in
      match cont with
-     | None -> asserted, true, status
+     | None -> asserted, true, status, str
      | Some (asserted,ast) ->
         (* pp_ast_statement status ast; *)
         cb status ast;
         let status =
           eval_ast ~include_paths ?do_heavy_checks status ("",0,ast)
         in
-         asserted, false, status
+        let str =
+         match ast with
+            (GrafiteAst.Executable
+              (_,GrafiteAst.NCommand
+                (_,(GrafiteAst.Include _ | GrafiteAst.Notation _)))) ->
+              GrafiteParser.parsable_statement status
+               (GrafiteParser.strm_of_parsable str)
+          | _ -> str
+        in
+         asserted, false, status, str
    with exn when not matita_debug ->
      prerr_endline ("EnrichedWithStatus: " ^ Printexc.to_string exn);
      raise (EnrichedWithStatus (exn, status))
   in
-  if stop then asserted,status else loop asserted status
+  if stop then asserted,status else loop asserted status str
  in
-  loop asserted status
+  loop asserted status str
 
 and compile ~compiling ~asserted ~include_paths ~outch ?uid fname =
   if List.mem fname compiling then raise (CircularDependency fname);