コード例 #1
0
 public static JsMemberExpression MemberOrSelf(this JsMemberExpression member, string name)
 {
     if (name.IsNullOrEmpty())
     {
         return(member);
     }
     return(member.Member(name));
 }
コード例 #2
0
 void _Visit(JsMemberExpression node)
 {
     if (node.PreviousMember != null)
     {
         Visit(node.PreviousMember);
         Control(".");
     }
     Literal(node.Name);
 }
コード例 #3
0
 public static JsInvocationExpression Typeof(JsMemberExpression me)
 {
     return(new JsInvocationExpression {
         Member = new JsMemberExpression {
             Name = "typeof"
         }, Arguments = new List <JsExpression> {
             me
         }
     });
 }
コード例 #4
0
        public static JsMemberExpression Members(string members)
        {
            JsMemberExpression node = null;

            foreach (var token in members.Split('.'))
            {
                node = new JsMemberExpression {
                    PreviousMember = node
                };
                node.Name = token;
            }
            return(node);
        }
コード例 #5
0
 protected virtual void _visit( JsMemberExpression node )
 {
     throw new NotImplementedException( "JsMemberExpression" );
 }
コード例 #6
0
 public static JsMemberExpression Member(this JsExpression member, JsMemberExpression exp)
 {
     exp.PreviousMember = member;
     return(exp);
 }
コード例 #7
0
 protected void _visit(JsMemberExpression node, bool include)
 {
     if (node != null)
     {
         if (include)
         {
             dependencyList.Add(node.Name);
         }
     }
 }
コード例 #8
0
        protected override void _visit(JsMemberExpression node)
        {
            if (node != null)
            {
                visit( node.PreviousMember );

                // bschmidtke : We may need this although I don't think so. Keeping around for node.Name, just in case.

                //string jsStr = node.ToJs();
                //string regStr = @"(?:Typeof\(|new\s)([\w\.]+)(?:\(|\))";
                //MatchCollection match = Regex.Matches( node.Name, regStr, RegexOptions.None );
                //if ( match.Count > 0 )
                //{
                //    visit( node, true );
                //}
                //else
                //{
                //    // end of the line for this guy
                //}
            }
        }
コード例 #9
0
        public JsNode VisitInvocationResolveResult(CSharpInvocationResolveResult res)
        {
            Res = res;

            ProcessMember();

            if (MethodAtt != null && MethodAtt.InlineCode != null)
                return Js.CodeExpression(MethodAtt.InlineCode);

            var conditional = ProcessConditional();
            if (conditional)
                return null;

            bool omittedCalls;
            var omittedCallsNode = ProcessOmitCalls(out omittedCalls);
            if (omittedCalls)
                return omittedCallsNode;

            JsMember = SkJs.EntityToMember(Member);
            ProcessTarget();

            ProcessPrmBindings();

            ProcessNativeParams();

            ProcessByRefs1();

            PrmBindings.ForEach(t => t.JsCallResult = VisitExpression(t.Binding.CallResult));
            Node2 = new JsInvocationExpression
            {
                Member = JsMember,
                Arguments = PrmBindings.Select(t => t.JsCallResult).ToList(),
            };

            ProcessByRefs2();

            ProcessExtensionImplementedInInstance();

            TransformIntoBaseMethodCallIfNeeded(Res, Node2);

            ProcessArgsCustomization();

            ProcessGenericMethodArgs();

            var inlineCodeExpression = ProcessInlineCodeExpression();
            if (inlineCodeExpression != null)
                return inlineCodeExpression;



            var omittedDotOperator = ProcessOmitDotOperator();
            if (omittedDotOperator != null)
                return omittedDotOperator;

            ProcessRemoveEmptyPreviousMemberName();

            var indexerAccess = ProcessIndexer();
            if (indexerAccess != null)
                return indexerAccess;

            ProcessByRefs3();

            return Node2;

        }
コード例 #10
0
 public static JsMemberExpression getNewMemberExpression(string name, JsMemberExpression previousMember = null)
 {
     JsMemberExpression result = new JsMemberExpression();
     result.Name = name;
     result.PreviousMember = previousMember;
     return result;
 }
コード例 #11
0
ファイル: Js.cs プロジェクト: kitsilanosoftware/SharpKit
 public static JsInvocationExpression Typeof(JsMemberExpression me)
 {
     return new JsInvocationExpression { Member = new JsMemberExpression { Name = "typeof" }, Arguments = new List<JsExpression> { me } };
 }
コード例 #12
0
ファイル: Js.cs プロジェクト: kitsilanosoftware/SharpKit
 public static JsMemberExpression Members(string members)
 {
     JsMemberExpression node = null;
     foreach (var token in members.Split('.'))
     {
         node = new JsMemberExpression { PreviousMember = node };
         node.Name = token;
     }
     return node;
 }
コード例 #13
0
ファイル: Js.cs プロジェクト: kitsilanosoftware/SharpKit
 public static JsMemberExpression Member(this JsExpression member, JsMemberExpression exp)
 {
     exp.PreviousMember = member;
     return exp;
 }