From d7f4ea995682fdb853bea630d64132bb56af8d03 Mon Sep 17 00:00:00 2001 From: Gabriel Adrian Samfira Date: Wed, 28 Aug 2024 20:08:21 +0300 Subject: [PATCH 1/2] Add deserializer for classes Signed-off-by: Gabriel Adrian Samfira --- .gitignore | 2 + build.ps1 | 21 ++++-- lib/net47/PowerShellYamlSerialization.dll | Bin 0 -> 9728 bytes lib/net47/PowerShellYamlTypes.dll | Bin 0 -> 4608 bytes .../PowerShellYamlSerialization.dll | Bin 0 -> 9728 bytes .../PowerShellYamlSerializer.dll | Bin 9216 -> 0 bytes lib/netstandard2.1/PowerShellYamlTypes.dll | Bin 0 -> 4608 bytes powershell-yaml.psd1 | 2 +- powershell-yaml.psm1 | 69 ++++++++++++++++-- .../PowerShellYamlSerialization.csproj} | 0 .../serializer.cs} | 32 ++++++-- .../PowerShellYamlTypes.csproj | 7 ++ src/PowerShellYamlTypes/Types.cs | 24 ++++++ 13 files changed, 138 insertions(+), 19 deletions(-) create mode 100644 lib/net47/PowerShellYamlSerialization.dll create mode 100644 lib/net47/PowerShellYamlTypes.dll create mode 100644 lib/netstandard2.1/PowerShellYamlSerialization.dll delete mode 100644 lib/netstandard2.1/PowerShellYamlSerializer.dll create mode 100644 lib/netstandard2.1/PowerShellYamlTypes.dll rename src/{PowerShellYamlSerializer.csproj => PowerShellYamlSerialization/PowerShellYamlSerialization.csproj} (100%) rename src/{PowerShellYamlSerializer.cs => PowerShellYamlSerialization/serializer.cs} (84%) create mode 100644 src/PowerShellYamlTypes/PowerShellYamlTypes.csproj create mode 100644 src/PowerShellYamlTypes/Types.cs diff --git a/.gitignore b/.gitignore index ae3e075..f65fb06 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ src/obj src/bin +src/*/obj +src/*/bin diff --git a/build.ps1 b/build.ps1 index b5e850c..c3f8ca2 100644 --- a/build.ps1 +++ b/build.ps1 @@ -15,13 +15,22 @@ $here = Split-Path -Parent $MyInvocation.MyCommand.Path -dotnet build --configuration Release $here/src/ +dotnet build --configuration Release $here/src/PowerShellYamlSerialization +dotnet build --configuration Release $here/src/PowerShellYamlTypes -$destinations = @("netstandard2.1", "net47") +function Copy-Assemblies { + param( + $module + ) -foreach ($item in $destinations) { - $src = Join-Path $here "src" "bin" "Release" $item "PowerShellYamlSerializer.dll" - $dst = Join-Path $here "lib" $item "PowerShellYamlSerializer.dll" + $destinations = @("netstandard2.1", "net47") + foreach ($item in $destinations) { + $src = Join-Path $here "src" $module "bin" "Release" $item "$module.dll" + $dst = Join-Path $here "lib" $item "$module.dll" - Copy-Item -Force $src $dst + Copy-Item -Force $src $dst + } } + +Copy-Assemblies -module "PowerShellYamlSerialization" +Copy-Assemblies -module "PowerShellYamlTypes" diff --git a/lib/net47/PowerShellYamlSerialization.dll b/lib/net47/PowerShellYamlSerialization.dll new file mode 100644 index 0000000000000000000000000000000000000000..0b75d6d702db8b4248dd2527154a956cdaa32523 GIT binary patch literal 9728 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 QRd?n;c%MIXuo8j)0p9iar~m)} literal 0 HcmV?d00001 diff --git a/lib/net47/PowerShellYamlTypes.dll b/lib/net47/PowerShellYamlTypes.dll new file mode 100644 index 0000000000000000000000000000000000000000..7fd30604dba32b465e4e0aee64319343c702d22a GIT binary patch literal 4608 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 O%HI(`mJ#?^JN@4@JAKCh diff --git a/lib/netstandard2.1/PowerShellYamlTypes.dll b/lib/netstandard2.1/PowerShellYamlTypes.dll new file mode 100644 index 0000000000000000000000000000000000000000..962b90d01b510a244adb5d1008697dd466121982 GIT binary patch literal 4608 zcmeHKU2GIp6h1Rs)`CzV2x3fhYO5mXY`5E5swn+gz#@g(U687=ot?ei4$RK1GqbcS zQ5%Ck_>&NfKB6YRn(%;$(MU8g@h1``n&^wh_+r!teK5ut1AgbuOn3XEsl1tZwsY=1 zKll92y?0KBA2>+~B5J~O=@QYK7#aE`{%14`am)2@wb0p>=Ud-Y_MLCdPg%ZJ@!XPU zlr__E95>JkLi4JQW;t5+Ku#;WMWL@*v#LEZJ+g~vpOT6gS;8^Jq@%Th?xNN`>X_+%r%M|lmrcKbvr~&#A zz3vIyg`yNqK*+Xa-WVh3BN~Y3@%S?GXW-aWT0yfK(YL6%!pzHn>(t{|+O+i!b;}wg zr6wMeB-jY3ku6CCl-oO?MBX^|V_kZOp6SS>d)fI4vVq&7+x9roNsJ%zJQsMDQ}S8k z@QSb`Z3lDo5ayh6+n$3%S&TO50PfocY`4J504!JT-}s8Ml8HZ*3~dT?T?>+5KjgB+ zJR$*UkLU5jb>W9-iyDqeI<0tWl75l+a~fCI(kZAX=_0j&|E01A_yLKpmbgpea}s|~ zEPX@m1AdzrH_7=ctuckox)0mrfDUOA-na!NxBAj72N{7j?xnMO588;ki_>% zJSMRPypd|aNqR(LjZC^;X_Z)~D`_X`v;jL#r)#MM+(s4PZMb`M#B~AqPWlFTkbVNb zSMqbf{nEl9JxJ}!gq)k0->ayIIUzGRK|RR8!TOk&z#eLvjq3=ZgjZ2p)`;O+_=;f1 zuv@I!;%?e8W|ZyyMp@i_bbNfkFppx(?Y4wnq#d~_w`vzhg<19d#bQSUeqcC7!zMrSnWmMfMmygkAZo)L&*e}KbK zs0M=OW(R$vB<3i}ibAziVxM(hzwe83!LH@4ppl(7JcP9yx3`#fy`ziucfUHOS+% zu)J6`gZjc)zy=JbRu_y`oxmy!$q%f8Wm|AMSJGU~4@6myl=LVkY=i|bHeag#9~G0fFga1u&A|0ye%3Ndj_U`O>Bp?tNBn}ZSB_bx@T1oUpV*in=hsO(uD|*4 z{mF|F+xgrN8w2OUFMCf9pZTusrBA=3CQVVA6B;QiFj>Ez$rd?HH-B<`!=>}LeSM#r zRMlh)bX1nAn6xCekcy|JS&6=A*YRbPS2x}78I}F6vunl_70xj~<+;s};He`#>1J zz?Tn18Xph*h%yT4lGtXNz2;=MVPv-Vn3Dw|(%l{Dp6;%mbRh#lr`csrrbSOCgKMAf zgPRmOfk8!nD~FsZ99Wz&5NrBv+npY++JRNU;f31lGSr{~c<@5d!6SR&lW@6l7y1+LD$RL_OM|& zRQ65R6G9#|DZO+fj4UkAVvGNCmRSMrDu_0d+}sUo!Vaxt2|g=v?|8V6Xoef82xbyp zm>r@VjRWtZQOt(Wzw8G+1iU-!y6K&!pD%_dfOjxMIPMIIxn3+H<&c$HhsYogb}aOW z0yZ6*Bv;DY<*GcS2Dm=t1_jV_L4|Op=_?#Y1u+HCvcNAbVd<>Y>7e-6MFq?`->a~8 z5cbOGT-Zkq85y8(4FN_VnZ_K~JxyV>@f(wJ8~;Pputp#%)?+(y23g59WjvL6@h;b1 z2kz&(y+bkrzaj55x~Y!2hy8DcK36V~x(;Hr8!}m*U!96FLv+Nlr`iWwC25H(R6)L6 z;Swsr|Lyo-@X!d}QFA-q7 te3$*$CqDRPtgul@4QGk>RsF5jdT)) as IDictionary; - return deserializedObject; + var psObject = new PSObject(); + parser.Consume(); + + while (parser.TryConsume(out var scalar)) { + var key = scalar.Value; + var value = rootDeserializer(typeof(object)); + psObject.Properties.Add(new PSNoteProperty(key, value)); + } + parser.Consume(); + return psObject; } public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerializer serializer) { @@ -111,14 +118,16 @@ public override void Emit(ScalarEventInfo eventInfo, IEmitter emitter) { eventInfo.Style = ScalarStyle.DoubleQuoted; } else if (val.IndexOf('\n') > -1) { eventInfo.Style = ScalarStyle.Literal; - } + } break; } base.Emit(eventInfo, emitter); } - // objectGraphVisitor, w => w.OnTop() - public static SerializerBuilder Add(SerializerBuilder builder, bool omitNullValues = false) { +} + +class BuilderUtils { + public static SerializerBuilder BuildSerializer(SerializerBuilder builder, bool omitNullValues = false) { builder = builder .WithEventEmitter(next => new StringQuotingEmitter(next)) .WithTypeConverter(new BigIntegerTypeConverter()) @@ -129,4 +138,13 @@ public static SerializerBuilder Add(SerializerBuilder builder, bool omitNullValu } return builder; } -} + + public static DeserializerBuilder BuildDeserializer(DeserializerBuilder builder) { + builder = builder + .WithTypeConverter(new BigIntegerTypeConverter()) + .WithTypeConverter(new PSObjectTypeConverter(false)); + Console.WriteLine(builder); + return builder; + } + +} \ No newline at end of file diff --git a/src/PowerShellYamlTypes/PowerShellYamlTypes.csproj b/src/PowerShellYamlTypes/PowerShellYamlTypes.csproj new file mode 100644 index 0000000..2fd285a --- /dev/null +++ b/src/PowerShellYamlTypes/PowerShellYamlTypes.csproj @@ -0,0 +1,7 @@ + + + + netstandard2.1;net47 + + + diff --git a/src/PowerShellYamlTypes/Types.cs b/src/PowerShellYamlTypes/Types.cs new file mode 100644 index 0000000..0c9aa30 --- /dev/null +++ b/src/PowerShellYamlTypes/Types.cs @@ -0,0 +1,24 @@ +using System; + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, Inherited = false, AllowMultiple = false)] +public class PowerShellYamlSerializable : Attribute +{ + public bool ShouldRecurse { get; } + + public PowerShellYamlSerializable(bool shouldRecurse) + { + ShouldRecurse = shouldRecurse; + } +} + + +[AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)] +public class PowerShellYamlPropertyAliasAttribute : Attribute +{ + public string YamlName { get; } + + public PowerShellYamlPropertyAliasAttribute(string yamlName) + { + YamlName = yamlName; + } +} From d5f6b2fb070576447c07b7d5c9e8ba5d603acc29 Mon Sep 17 00:00:00 2001 From: Gabriel Adrian Samfira Date: Wed, 28 Aug 2024 20:20:19 +0300 Subject: [PATCH 2/2] Export commandlets Signed-off-by: Gabriel Adrian Samfira --- lib/net47/PowerShellYamlSerialization.dll | Bin 9728 -> 9728 bytes lib/net47/PowerShellYamlTypes.dll | Bin 4608 -> 4608 bytes .../PowerShellYamlSerialization.dll | Bin 9728 -> 9728 bytes lib/netstandard2.1/PowerShellYamlTypes.dll | Bin 4608 -> 4608 bytes powershell-yaml.psd1 | 2 +- powershell-yaml.psm1 | 217 ++++++++++-------- src/PowerShellYamlSerialization/serializer.cs | 1 - 7 files changed, 128 insertions(+), 92 deletions(-) diff --git a/lib/net47/PowerShellYamlSerialization.dll b/lib/net47/PowerShellYamlSerialization.dll index 0b75d6d702db8b4248dd2527154a956cdaa32523..872fa9a2f6cad2cb634f1bdbcd471c68be7cf64c 100644 GIT binary patch delta 2239 zcma)8e@v8h82>!)d+&R%=MN4<;583 z@ArA{?xlGz&D-&+<*mWMfzY-@+7;@2lFCe?3@xV!SY*1Csb)20P`lYeK}Yj+$YTzp z0u5u*fV2q!nWqyA!j;NemFmr2&0(I`rr1gV+d2)z0 zwP6!3v2AFZ$%a~8*p>RFAYU4_OY9nN2-iM~u$yGqA&YR`$*beA&(f^NV1m)dK6RFx zRvirpBL)jCLdnxY);P2o3%N`>``b_`^IU_-xrS{Uf>L=+D%ZKZjudV*sKY9Ym0Cry zg(PsU#C(ZQ7&kfT62=&mqfd>&PT531gp$SObsW&j0^E`bl7cbLTqXIUZ ziLiE6Q%2+02s@}oDdUjo;;=|FF>sHtiAoG+N;aHjJQhWm$P$ag5hk+4V@C=^eR)sh zL_1T_OtDcwiSVWh7D_m)O;VCDPqJO8(NdWmkFb}uX-YD_m2CLQxNuRj;W!tD?pymq zvR1x1uj0ZT!GdT-7D^ORn=p&tE5cTOcNMr*@HRHHZNWRdasRDvB(d7XTdhFYD&CO( z)r@!Z2wmi{+r>5u|KX_M{|gfVjob=hjw~Zm6HJTUu0+zAtl#xX;GtgzE1#p#uMwgd zbvPJp$Yiv`EwKpwK_;b=R7hMPv07pcqmGS?6R=9!EsRcdAVZzZgDi$fU_N@`pi;*7 z)CyG73Yw2A?6VZ-u!~lphPE54v5Ijmj$k$GS2)jlgm|liudpP_3`(q~WwZ~caUBO) z`BZ-!A?nwTVhm2s&0;xP?wyX()7r zwiADe%2*OeJ@g%7sRJu%D9By^#NGE&zTqMVWl=hfq9%13oumTQLquX6M{(Fp9?E{L ziZW@AR!wO*YI%;PMwBRhE9FV0lydb>Qc!^}7+++}#%MgMWMe$$Gdj`0n2HUIS?E<( zXCoIEn9RTsV>$k2e2f>eQN>t}B`8zNd1A{{pR|1u+lSd|t5n21m$B_bgW8LU@T!9n z%SpsSO+k*DEYK_+o8i07W6h&7a=c52q%FRa?j9dd63^Pd{hE1f#cY?|cz5CkGS4SY4UbFOqR#ijiva3S2tU780cN?( z+(4@ajBQ7Fgy568u! A(f|Me delta 2303 zcma)832YQ)6#m}K&g`&UOD)IJ1}QC+a@p;{QYu0%QVLay<**2bc4?s@l!jtJ0xsCt zAQD0y!VzmiF`x}cAgckyL@LUeXdoySgruR7LlZOtnh=8D|92_D#KhVCzj@#L-!=Q* zKiRcKYl}9o_dMGD#%B#16XolM=Gjv1ilka|bATCck}<+9l~g(Hu9HY$*I4LlGSPsA z_!MArZ$R9p#89-@s4?Xox5WxrLtg-VZmX5nZ9Iiq3$TX)ZZ|t+T#Xk)su$L(z+3!)Bh<|-L1Qm~6v+iM3n%ivkG#=cVy6b4C-ZSJ00LZtxD2lG?tXi4 zWRuANylm_>_S!c3m5kW2MG(8Uq@Si}D?2w$T1B zufi+RV*22<&w71Wjr)}QTbsp)<+hT`?fVhl>a6=TO>>lKt4GQ8+U zx8soNw9;m!$8l^_BZ@dI@F>kB>tk;pY;_he%^2GIFh$4t6)I+gvJVYf^MTgbUX>+_ zg+^?6b+Qt#N;XFnzN&GY#`%up_^^Z+hkUe}aoD4axB#UY$MiPNT6JC<4|M2aou<~K zo<70^EX%9Pn#-rRF`T*7ul|B%4*n#WP zhh8^`gV_AyfvUXve(jb`?Q5Ov5&dd9na2=BI+@zr)X5U)w@tH?s4>&{EC&W60zlDh zPSv-1^A~y6Ddcosim?Nx&*+NZW9+aQZ}dP~65V3O#39(po;BhyL9>o1&tOK3sVMQ- z7h@_)Uu@>sGrxW&NkF4I1uSNo6Ou%XPFAd;-)$?!7=R+pwxZS=N_ITPwpba)K(uMr z@yjIPmS!D(Nx1ja-b2mm_;9&K5-c8l=C8wW6ieQdTqe2UId;ESQ7H&87 zk8Or=^yl&AG7nwQZV7r3ZN6yQEg#Z|egrkI&oag5|oWMHDHsv3!%ZSGe=Qf%|mC_`IGM91c zjhgBL%3;)+E$EM2vrS{ZC|{U^kZlgsSc#4J9^K^_u4A&B+dUBO$=Ttz^Exbh zw5;A!kFVpB&iVVd-Fl9)8u%yI8EMt@>3A*C!`+L;%3oStyVUjcoZ!q}R<*pMsH!^p zV$bp3XrxaU@mJq`Z$(D?{;6M1DgNQqy^Cw3+xs?)rQWfL(Y(Ms85$1fge$Yl$}-1< z!jk&QBbGBE}r&C5~2Pmua_ pVu<%FVi4uD>F~&)U6!^D(lSJSX7qZ}V8i%kY_wO(9cf7S{sU?lwwnL| diff --git a/lib/net47/PowerShellYamlTypes.dll b/lib/net47/PowerShellYamlTypes.dll index 7fd30604dba32b465e4e0aee64319343c702d22a..fa56ae474b247821528fc118cb9f48514529ee4c 100644 GIT binary patch delta 234 zcmZorX;7Ka!SZK=`SOiDKI{VVf7}W_7+O0l%`D_BU9wSo@(cFw8YyO}X%;Dlsbrmf zlGCU4{z!+!Og_R{r2rLt2@?dV_P&xKTU^(byFYZk_U1UQXDt3H3}y_e3~3A&3@HqT zK$aPUF_32nq>~tu84Q5DL?CGa6iH$*VlV-!N@cJFvdqBhlYy)hAWjB~r2%D9H&5oz GWdZ;K#7VjU delta 234 zcmZorX;7Ka!BVltm}qQa zo}8AHnrdijU}$b?Vs4mZ43scRHc3u1Of@$)p3Ke}$>R6z{@TeYoB;xbCY<|p`9huc z+p`v~ztgjS@)6D|1*jm?f2bf(weE`3&wJ}{Y`nLGYdinuIId?b{>co<43%z+;i^Xs&G+K;Ig`x4*@?AE^zr$cL|gjI&jF4q$b>ZDZ(+9n7V0K zVrsQ&-i{MBO{ukseN4P_Wx6RVYhul{A}22AN6XZLwrYM(d)}8Tu0Ps3?EKF2`@PTC zdEe)7H!j+^XzQz%vkxxa2)&U+FNON*Da9m8*Nh@ysp(Q?nGKXq>&-3-Ce#;0UQaP9 z&@eF-xEBYI*`HJpu2DKvdchpf63mNQhHXAzTcrW|3^Ptooj2DCq`VC5=jVQd?b^;4 zTic&oB@))y0fShptHrWdfGJWc>MG0m`8@M&=4w5iO3Xd_G@5T7*3*JPmEHN$v0K@# z>#(Wv%UN@Si9h@2g4+wh81-j>QuF0Uhv8x88P$ztVJQLK&x zE|yp*afxx8lRnEBjWP_X(ddy)oPtoYxV(;|S|^vkFH@JwGJcDA`wqDiTdbn3Mt*y- z&wB)b_zz^q-ez)I^T+8e-ax?=xj4iJlFzmU#IBcl0!pFsun-^XPZpqonIYNV5jIh> zIQHz~C~^396qv`2gy1#(3{A(A>i0w#)_B^sG74vRE189C!DQJD;{WMf&TU}=PjEOGcK!bFy7*qRJcU%nGLu$!r9 z#%mN%5*km9 zC@wq@EQoH*#C%26CRFfuMR=3HT?Kh6_!!r*ZNWi4xc}DIlUVKNqgEhn6$hk$Bjdw7 zLKk`Lc5%$Ye=I8a|H4E-C$~bVl4V3{!gh<@u0+ypXZ@j%gNObZSow~^kVc4Q)RDl* zUm>F%ITDL76l78=Nu|Uk5*s8oG3r>y_!wHH-NooYFJ`D|Jjh~*1mpo?vt?XR_A#9@JP9la!4>7{aN{MbjyY)~K`T6cwv(A`;^m#bI6^$|0?mGO0>y zpj3QjSxd7b%4Gd@%9BbddGtO~P>F9DH!x;l0v0M+n1X6X2ih4^u!eCajw@|h$i+n_ zCHS4O40jl-cp(e5jAd93uUf_v>s5Wy_C;(T7O34)5%cV2+lQ6v01|m{FG(yT5eqdL zS*lZ@Svo1bgr|^)lBY3p9iktkCH^NpypEEKXH5+9qw7l=48K3AmdyLn^TG>a=32wS zsZnHKo{?7fv^&mw!2MhPpTl$V!aJt*QFvj(a?0>~0xgC9oPZ~{CCAh3%g$}eF3f3m z=lKIgZjV35=k~jOMJ<7Vc`C6j7p)@|J3xzT6fU`s??(P{Zgf1VFFKyWcRJtqct$h-nC=H^;D0;>~U;!N3=P^W7_AOI{xGGGe=hL>+5!2h`(DE`HdIJ z1HyKOTvMq&+?lkC%o9l&;poRVtJQvZ5I_qG;pfjKz$}+p4nLcDtFxIkF&47Y3^(%F kD}W-lJksCCmY;7QYc0GI2w!ofDazX7aBS)*g|e;x00#7(k^lez delta 2245 zcma)8Yiv|S6#mY=d+%PhP_|gWr3=yrg(@`NZp%`NP_m*_YN!^(2Aa@rTCCMlZAA@_ zr4$?S0n|%G#0Q8PD%#kr#^(b!EdHZjXzAB&3yNKXU=2h z&Y8Kpwqk9?=0`l0O$YkA9uLa%UEPaho+~oZDkuRKxS7Uew^}C3OK!Ww1M%t5Z7$J( zh4dUCI1&)IJs3$;8ZD-*bNj4-HEAZ`bB|ehLuXNFwE+8Cz#VGmTtC+fWUm3<S9CPQI`#zu{YH3l{A6XiR_+)w)p zUWF%Rzv+X|KIHXb70y#0Yq{dX1GbXu?elRyI<50Go$M&n;~ph%&~ER0lxepfeZ%vZ zor-In9-7WgoU^&68R)#H+GI zIMKKbpH6nWS0$?vg$p&7X^c53jt?!wR77#yOhvbz#6c)c8PnT1WOXwAB^|m-r&-}q zt6!(z#5S**))KDXMm}??xBZ*~2;@$pAH7oOEml-BA2&iVZW71(H8bFWkey>~%!bKg z5^ncd4^U0!Xy)aZVna2{C2OabDhfZ!-CidUzi1zoTr4oZ5W$c3SCR(TIVn@I4X0%k zz50n+_)RLutLb%K-EY~{-Z987)30Tac?>~(kg2hagDiu7TQ&O#t!5tA(lZ`$0E!l~ zst)ME?jQQ#-T#9r?A4BM7B4{wpxY8c%0H~ z;LT*>jAjFVnfU!*V}EJZ!NrvtnXq{DnZE%YOK~+OSJJ2aU>eG+)m8E zPRuYTu#i;|DJ(`Gf-;-r!-c}ow6OD;ZM9w%?W!Cx}@KFi|6M6_Mx4!P5GGhCDO6T`5rq(O=YK4$P&is zl(Xoj?>Q!$>0Cs&tac3Pm0iM{Nc)OHc~`zcy6nViIUDD!e?UO`6Y0t*X|Jm$hVvkzlXVxH0%73B*v3t@A-#s)l&Pccm1$7#%UONRwYN9dYjg(lnE za#Ty|p1RWZN|^Phiu<2-P>v@y4XY9>y1cn{x%+i$nX~A=#;WNF7no(Zy z-!(ja#nKl8(P!(T^&M++hb7uZcZ;R&&R}9}V6jY!#Y$og#kIBJX^~h%U44D1xF8fM zE{cTe!W<}!6~!7t^^tJc-7%(Vq|tC;7vz>ogVWf-zMdcX^=@XyXgi0W_MD(QGb3ww z!OE{wfu!K4H3=jP|sh8`T}Bv&mv+7b+j4qD5PDHwhhrT XLVY-KI&*?y?3kWN%Q-7u1>U~_bHuK6 diff --git a/lib/netstandard2.1/PowerShellYamlTypes.dll b/lib/netstandard2.1/PowerShellYamlTypes.dll index 962b90d01b510a244adb5d1008697dd466121982..b5058d8b8f42ce230e31ddb8918ecafec371c375 100644 GIT binary patch delta 234 zcmZorX;7Ka!7}~$w8a~H0@wvKr(WQ9I(OT-qtv|IDyww)5LT8NUo+{#L&^o9iZve=S4Mc|#P@M@_tszjQIZ)hq^JM;9CIHWX BOqKuu diff --git a/powershell-yaml.psd1 b/powershell-yaml.psd1 index 793493f..c0d53a2 100644 --- a/powershell-yaml.psd1 +++ b/powershell-yaml.psd1 @@ -52,7 +52,7 @@ Description = 'Powershell module for serializing and deserializing YAML' PowerShellVersion = '5.0' # Functions to export from this module -FunctionsToExport = "ConvertTo-Yaml","ConvertFrom-Yaml","Resolve-AttributeOverrides","Get-DeserializerBuilder" +FunctionsToExport = "ConvertTo-Yaml","ConvertFrom-Yaml","ConvertFrom-YamlToClass" AliasesToExport = "cfy","cty" } diff --git a/powershell-yaml.psm1 b/powershell-yaml.psm1 index a9a03a7..f413e14 100644 --- a/powershell-yaml.psm1 +++ b/powershell-yaml.psm1 @@ -346,6 +346,132 @@ function Convert-PSObjectToGenericObject { return $data } +function Get-Serializer { + Param( + [Parameter(Mandatory=$true)][SerializationOptions]$Options + ) + + $builder = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.SerializerBuilder")::new() + + if ($Options.HasFlag([SerializationOptions]::Roundtrip)) { + $builder = $builder.EnsureRoundtrip() + } + if ($Options.HasFlag([SerializationOptions]::DisableAliases)) { + $builder = $builder.DisableAliases() + } + if ($Options.HasFlag([SerializationOptions]::EmitDefaults)) { + $builder = $builder.EmitDefaults() + } + if ($Options.HasFlag([SerializationOptions]::JsonCompatible)) { + $builder = $builder.JsonCompatible() + } + if ($Options.HasFlag([SerializationOptions]::DefaultToStaticType)) { + $resolver = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.TypeResolvers.StaticTypeResolver")::new() + $builder = $builder.WithTypeResolver($resolver) + } + if ($Options.HasFlag([SerializationOptions]::WithIndentedSequences)) { + $builder = $builder.WithIndentedSequences() + } + + $omitNull = $Options.HasFlag([SerializationOptions]::OmitNullValues) + + $stringQuoted = $stringQuotedAssembly.GetType("StringQuotingEmitter") + $util = $stringQuotedAssembly.GetType("BuilderUtils") + $builder = $util::BuildSerializer($builder, $omitNull) + + return $builder.Build() +} + +function Resolve-AttributeOverrides { + Param( + $deserializerBuilder, + [System.Type]$theType + ) + + foreach ($attr in $theType.GetProperties()) { + $custom = $attr.GetCustomAttributes($true) + if ($custom -eq $null) { + continue + } + $shouldRecurse = $false + foreach ($customAttr in $custom) { + switch($customAttr.TypeId.Name) { + "PowerShellYamlPropertyAliasAttribute" { + if ($customAttr.YamlName -eq "") { + break + } + $alias = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.YamlMemberAttribute")::new() + $alias.Alias = $custom.YamlName + $deserializerBuilder = $deserializerBuilder.WithAttributeOverride($theType, $attr.Name, $alias) + break + } + "PowerShellYamlSerializable" { + $shouldRecurse = $customAttr.ShouldRecurse + break + } + } + } + if ($shouldRecurse -eq $true) { + $nestedType = $null + if ($attr.PropertyType -eq [string]) { + $nestedType = [string] + } else { + $instance = [System.Activator]::CreateInstance($attr.PropertyType) + $nestedType = $instance.GetType() + } + return (Resolve-AttributeOverrides -deserializer $deserializerBuilder -theType $nestedType) + } + } + return $deserializerBuilder +} + + +function Get-DeserializerBuilder { + $deserializerBuilder = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.DeserializerBuilder")::new() + $stringQuoted = $stringQuotedAssembly.GetType("BuilderUtils") + $deserializerBuilder = $stringQuoted::BuildDeserializer($deserializerBuilder) + return $deserializerBuilder +} + +function ConvertFrom-YamlToClass { + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [string]$Yaml, + [System.Type]$Type + ) + + BEGIN { + $yamlArray = @() + } + + PROCESS { + if($Yaml -is [string]) { + $yamlArray += $Yaml + } + } + + END { + if($yamlArray.Count -eq 0) { + return + } + $deserializerBuilder = Get-DeserializerBuilder + $deserializerBuilder = Resolve-AttributeOverrides -deserializerBuilder $deserializerBuilder -theType $Type + $deserializer = $deserializerBuilder.Build() + + if ($yamlArray.Count -eq 1) { + $deserialized = $deserializer.Deserialize($yamlArray[0], $Type) + return $deserialized + } + + $ret = @() + foreach($i in $yamlArray) { + $ret += $deserializer.Deserialize($i, $Type) + } + return $ret + } +} + function ConvertFrom-Yaml { [CmdletBinding()] Param( @@ -387,42 +513,6 @@ function ConvertFrom-Yaml { } } -function Get-Serializer { - Param( - [Parameter(Mandatory=$true)][SerializationOptions]$Options - ) - - $builder = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.SerializerBuilder")::new() - - if ($Options.HasFlag([SerializationOptions]::Roundtrip)) { - $builder = $builder.EnsureRoundtrip() - } - if ($Options.HasFlag([SerializationOptions]::DisableAliases)) { - $builder = $builder.DisableAliases() - } - if ($Options.HasFlag([SerializationOptions]::EmitDefaults)) { - $builder = $builder.EmitDefaults() - } - if ($Options.HasFlag([SerializationOptions]::JsonCompatible)) { - $builder = $builder.JsonCompatible() - } - if ($Options.HasFlag([SerializationOptions]::DefaultToStaticType)) { - $resolver = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.TypeResolvers.StaticTypeResolver")::new() - $builder = $builder.WithTypeResolver($resolver) - } - if ($Options.HasFlag([SerializationOptions]::WithIndentedSequences)) { - $builder = $builder.WithIndentedSequences() - } - - $omitNull = $Options.HasFlag([SerializationOptions]::OmitNullValues) - - $stringQuoted = $stringQuotedAssembly.GetType("StringQuotingEmitter") - $util = $stringQuotedAssembly.GetType("BuilderUtils") - $builder = $util::BuildSerializer($builder, $omitNull) - - return $builder.Build() -} - function ConvertTo-Yaml { [CmdletBinding(DefaultParameterSetName = 'NoOptions')] Param( @@ -496,63 +586,10 @@ function ConvertTo-Yaml { } } -function Resolve-AttributeOverrides { - Param( - $deserializerBuilder, - [System.Type]$theType - ) - - foreach ($attr in $theType.GetProperties()) { - $custom = $attr.GetCustomAttributes($true) - if ($custom -eq $null) { - continue - } - $shouldRecurse = $false - foreach ($customAttr in $custom) { - switch($customAttr.TypeId.Name) { - "PowerShellYamlPropertyAliasAttribute" { - if ($customAttr.YamlName -eq "") { - break - } - $alias = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.YamlMemberAttribute")::new() - $alias.Alias = $custom.YamlName - $deserializerBuilder = $deserializerBuilder.WithAttributeOverride($theType, $attr.Name, $alias) - break - } - "PowerShellYamlSerializable" { - $shouldRecurse = $customAttr.ShouldRecurse - break - } - } - } - if ($shouldRecurse -eq $true) { - $nestedType = $null - if ($attr.PropertyType -eq [string]) { - $nestedType = [string] - } else { - $instance = [System.Activator]::CreateInstance($attr.PropertyType) - $nestedType = $instance.GetType() - } - return (Resolve-AttributeOverrides -deserializer $deserializerBuilder -theType $nestedType) - } - } - return $deserializerBuilder -} - - -function Get-DeserializerBuilder { - $deserializerBuilder = $yamlDotNetAssembly.GetType("YamlDotNet.Serialization.DeserializerBuilder")::new() - $stringQuoted = $stringQuotedAssembly.GetType("BuilderUtils") - Write-Host "$stringQuoted" - $deserializerBuilder = $stringQuoted::BuildDeserializer($deserializerBuilder) - return $deserializerBuilder -} - New-Alias -Name cfy -Value ConvertFrom-Yaml New-Alias -Name cty -Value ConvertTo-Yaml Export-ModuleMember -Function ConvertFrom-Yaml,ConvertTo-Yaml -Alias cfy,cty -Export-ModuleMember -Function Get-DeserializerBuilder -Export-ModuleMember -Function Resolve-AttributeOverrides +Export-ModuleMember -Function ConvertFrom-YamlToClass diff --git a/src/PowerShellYamlSerialization/serializer.cs b/src/PowerShellYamlSerialization/serializer.cs index e601f9f..855bdba 100644 --- a/src/PowerShellYamlSerialization/serializer.cs +++ b/src/PowerShellYamlSerialization/serializer.cs @@ -143,7 +143,6 @@ public static DeserializerBuilder BuildDeserializer(DeserializerBuilder builder) builder = builder .WithTypeConverter(new BigIntegerTypeConverter()) .WithTypeConverter(new PSObjectTypeConverter(false)); - Console.WriteLine(builder); return builder; }