Skip to content
Snippets Groups Projects
Select Git revision
  • JS-based-scroll-rendering
  • master default
  • Paul_Marius_Level
  • Paul_Marius_2
  • Paul_Marius
  • Andi_Mark
  • be-UnityWebView
  • gitignoreFrameitServer
  • ZimmerBSc
  • Bugfix_StageLoading
  • stages
  • MAZIFAU_Experimental
  • tsc/coneworld
  • tsc/fact-interaction
  • marcel
  • MaZiFAU_TopSort
  • mergeHelper
  • zwischenSpeichern
  • tempAndrToMaster
  • SebBranch
  • 3.0
  • v2.1
  • v2.0
  • v1.0
24 results

Scroll.cs

Blame
  • Scroll.cs 3.62 KiB
    using JsonSubTypes;
    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using static SOMDocManager;
    
    
    public class Scroll
    {
        public string @ref;
        public string label;
        public string description;
        public List<ScrollFact> requiredFacts;
        public List<ScrollFact> acquiredFacts;
    
        public class FilledScroll
        {
            public string scroll;
            public List<ScrollAssignment> assignments;
    
            public FilledScroll(string scroll, List<ScrollAssignment> assignments)
            {
                this.scroll = scroll;
                this.assignments = assignments;
            }
        }
    
        public class ScrollTheoryReference
        {
            public string problemTheory;
            public string solutionTheory;
        }
    
        [JsonConverter(typeof(JsonSubtypes), "kind")]
        [JsonSubtypes.KnownSubType(typeof(ScrollSymbolFact), "general")]
        [JsonSubtypes.KnownSubType(typeof(ScrollValueFact), "veq")]
        public abstract class ScrollFact
        {
            public string kind;
            public UriReference @ref;
            public string label;
    
            public abstract String getType();
    
            public abstract String getApplicant();
        }
    
        public class UriReference
        {
            public string uri;
    
            public UriReference(string uri)
            {
                this.uri = uri;
            }
        }
    
        /**
        * Class used for deserializing incoming symbol-declarations from mmt
        */
        public class ScrollSymbolFact : ScrollFact
        {
            public SOMDoc tp;
            public SOMDoc df;
    
            public override String getType()
            {
                return tp switch
                {
                    OMS oMS => oMS.uri,
                    OMA oMA => ((oMA.arguments[0] as OMA).applicant as OMS).uri,
                    _ => null
                };
            }
    
            public override String getApplicant()
            {
                //Debug.Log(" Check " + this.tp is OMS + " and " + this.tp is OMA + " and " + this.tp is OMSTR + " or " + this.tp is OMF);
                // return ((OMS)((OMA)((OMA)this.tp).arguments[0]).arguments[0]).uri;
                return df switch
                {
                    OMA oMA when oMA.applicant is OMS oMS => oMS.uri,
                    _ => null // ((OMS)((OMA)((OMA)this.df).arguments[0]).applicant).uri;
                };
            }
        }
    
        /**
        * Class used for deserializing incoming value-declarations from mmt
        */
        public class ScrollValueFact : ScrollFact
        {
            public SOMDoc lhs;
            public SOMDoc valueTp;
            public SOMDoc value;
            public SOMDoc proof;
    
            public override String getType()
            {
                return lhs switch
                {
                    OMA oMA when oMA.applicant is OMS oMS => oMS.uri,
                    _ => null
                };
            }
            public override String getApplicant()
            {
                // TODO Test this 
                return lhs switch
                {
                    OMA oMA when oMA.applicant is OMS oMS => oMS.uri,
                    _ => null
                };
            }
    
        }
    
        public class ScrollAssignment
        {
            public UriReference fact;
            public OMS assignment;
        }
    
        public class ScrollApplicationInfo
        {
            public Boolean valid;
            public ScrollApplicationCheckingError[] errors;
            public List<Scroll.ScrollFact> acquiredFacts;
        }
    
        public class ScrollDynamicInfo
        {
            public Scroll original;
            public Scroll rendered;
            public List<List<Scroll.ScrollAssignment>> completions;
            public Boolean valid;
            public ScrollApplicationCheckingError[] errors;
        }
    
        public class ScrollApplicationCheckingError
        {
            public String kind;
            public string msg;
            public SOMDoc fact;
        }
    
    }