protected JsJsonObjectExpression VisitEnumToJson(ITypeDefinition ce) { bool valuesAsNames; Sk.UseJsonEnums(ce, out valuesAsNames); //var valuesAsNames = att != null && att.ValuesAsNames; var constants = ce.GetConstants().ToList(); if (!valuesAsNames && constants.Where(t => t.ConstantValue == null).FirstOrDefault() != null) { var value = 0L; foreach (var c in constants) { if (c.ConstantValue == null) { c.SetConstantValue(value); } else { value = Convert.ToInt64(c.ConstantValue); } value++; } } constants.RemoveAll(t => !Sk.IsJsExported(t)); var json = new JsJsonObjectExpression { NamesValues = new List <JsJsonNameValue>() }; json.NamesValues.AddRange(constants.Select(t => VisitEnumField(t, valuesAsNames))); return(json); }
public override JsNode _Visit(IProperty pe) { var list = GetAccessorsToExport(pe); if (Sk.IsNativeProperty(pe)) { var statements = new List <JsStatement>(); statements.AddRange(list.Select(ExportMethod).Cast <JsStatement>()); var json = new JsJsonObjectExpression(); foreach (var accessor in list) { if (accessor == pe.Getter) { json.Add("get", ExportTypePrefix(pe.Getter.GetDeclaringTypeDefinition(), pe.IsStatic).Member("get_" + pe.Name)); } if (accessor == pe.Setter) { json.Add("set", ExportTypePrefix(pe.Setter.GetDeclaringTypeDefinition(), pe.IsStatic).Member("set_" + pe.Name)); } } if (Sk.IsNativePropertyEnumerable(pe)) { json.Add("enumerable", Js.True()); } var defineStatement = Js.Member("Object").Member("defineProperty").Invoke( ExportTypePrefix(pe.GetDeclaringTypeDefinition(), pe.IsStatic), Js.String(pe.Name), json).Statement(); statements.Add(defineStatement); return(new JsUnit() { Statements = statements }); } else { var list2 = list.Select(ExportMethod).Cast <JsStatement>().ToList(); return(new JsUnit { Statements = list2 }); } }