├── py ├── core │ └── DUMMY_README.md ├── docs │ └── DUMMY_README.md ├── libs │ └── DUMMY_README.md ├── diag │ ├── data │ │ ├── DUMMY_README.md │ │ ├── initial_diag_file_resource_example.txt │ │ └── data_partikel_pun.txt │ ├── libs │ │ └── DUMMY_README.md │ ├── core │ │ ├── PySipebiHelper.py │ │ ├── PySipebiDiagnosticsError.py │ │ └── PySipebiDiagnosticsBase.py │ ├── PySipebiDiagAturanPartikelLahKahTah.py │ ├── PySipebiDiagAturanAngkaBilanganBesar.py │ ├── PySipebiDiagAturanPartikelPun.py │ ├── README.md │ ├── PySipebiDiagExample.py │ └── PySipebiDiagAturanTandaBacaPadaDialog.py ├── data │ ├── initial_file_resource_example.txt │ ├── PySipebiDiagAturanAngkaBilanganBesar_common_check.txt │ ├── results │ │ ├── PySipebiDiagAturanPartikelPun_result.txt │ │ ├── PySipebiDiagAturanPartikelLahKahTah_result.txt │ │ ├── PySipebiDiagAturanAngkaBilanganBesar_Val_result.txt │ │ └── PySipebiDiagAturanTandaBacaPadaDialog_result.txt │ ├── PySipebiDiagAturanAngkaBilanganBesar_test.txt │ ├── PySipebiDiagAturanPartikelPun_test.txt │ ├── PySipebiDiagAturanPartikelPun_common_check.txt │ ├── PySipebiPerbaikanKataHubung_common_check.txt │ ├── PySipebiPerbaikanKataHubung_test.txt │ ├── PySipebiDiagAturanPartikelLahKahTah_common_check.txt │ ├── PySipebiPerbaikanKataHubung_result.txt │ ├── PySipebiDiagAturanPartikelLahKahTah_test.txt │ ├── PySipebiDiagAturanTandaBacaPadaDialog_common_check.txt │ ├── PySipebiDiagAturanTandaBacaPadaDialog_test.txt │ └── README.md ├── PySipebiCommonValidationRunner.py ├── README.md ├── PySipebiDiagAturanPartikelPun_Val.py ├── PySipebiDiagAturanPartikelLahKahTah_Val.py ├── PySipebiDiagAturanAngkaBilanganBesar_Val.py ├── PySipebiDiagExample_Val.py └── PySipebiDiagAturanTandaBacaPadaDialog_Val.py ├── packages ├── System.Buffers.4.5.1 │ ├── lib │ │ ├── netcoreapp2.0 │ │ │ └── _._ │ │ ├── uap10.0.16299 │ │ │ └── _._ │ │ ├── net461 │ │ │ ├── System.Buffers.dll │ │ │ └── System.Buffers.xml │ │ ├── netstandard1.1 │ │ │ ├── System.Buffers.dll │ │ │ └── System.Buffers.xml │ │ └── netstandard2.0 │ │ │ ├── System.Buffers.dll │ │ │ └── System.Buffers.xml │ ├── ref │ │ ├── netcoreapp2.0 │ │ │ └── _._ │ │ ├── uap10.0.16299 │ │ │ └── _._ │ │ ├── net45 │ │ │ ├── System.Buffers.dll │ │ │ └── System.Buffers.xml │ │ ├── netstandard1.1 │ │ │ ├── System.Buffers.dll │ │ │ └── System.Buffers.xml │ │ └── netstandard2.0 │ │ │ ├── System.Buffers.dll │ │ │ └── System.Buffers.xml │ ├── useSharedDesignerContext.txt │ ├── version.txt │ ├── .signature.p7s │ ├── System.Buffers.4.5.1.nupkg │ └── LICENSE.TXT ├── System.Memory.4.5.5 │ ├── lib │ │ ├── netcoreapp2.1 │ │ │ └── _._ │ │ ├── net461 │ │ │ └── System.Memory.dll │ │ ├── netstandard1.1 │ │ │ └── System.Memory.dll │ │ └── netstandard2.0 │ │ │ └── System.Memory.dll │ ├── ref │ │ └── netcoreapp2.1 │ │ │ └── _._ │ ├── useSharedDesignerContext.txt │ ├── version.txt │ ├── .signature.p7s │ ├── System.Memory.4.5.5.nupkg │ └── LICENSE.TXT ├── System.Numerics.Vectors.4.5.0 │ ├── lib │ │ ├── MonoTouch10 │ │ │ └── _._ │ │ ├── MonoAndroid10 │ │ │ └── _._ │ │ ├── netcoreapp2.0 │ │ │ └── _._ │ │ ├── uap10.0.16299 │ │ │ └── _._ │ │ ├── xamarinios10 │ │ │ └── _._ │ │ ├── xamarinmac20 │ │ │ └── _._ │ │ ├── xamarintvos10 │ │ │ └── _._ │ │ ├── xamarinwatchos10 │ │ │ └── _._ │ │ ├── net46 │ │ │ └── System.Numerics.Vectors.dll │ │ ├── netstandard1.0 │ │ │ └── System.Numerics.Vectors.dll │ │ ├── netstandard2.0 │ │ │ └── System.Numerics.Vectors.dll │ │ └── portable-net45+win8+wp8+wpa81 │ │ │ └── System.Numerics.Vectors.dll │ ├── ref │ │ ├── MonoTouch10 │ │ │ └── _._ │ │ ├── MonoAndroid10 │ │ │ └── _._ │ │ ├── netcoreapp2.0 │ │ │ └── _._ │ │ ├── uap10.0.16299 │ │ │ └── _._ │ │ ├── xamarinios10 │ │ │ └── _._ │ │ ├── xamarinmac20 │ │ │ └── _._ │ │ ├── xamarintvos10 │ │ │ └── _._ │ │ ├── xamarinwatchos10 │ │ │ └── _._ │ │ ├── net45 │ │ │ └── System.Numerics.Vectors.dll │ │ ├── net46 │ │ │ └── System.Numerics.Vectors.dll │ │ ├── netstandard1.0 │ │ │ └── System.Numerics.Vectors.dll │ │ └── netstandard2.0 │ │ │ └── System.Numerics.Vectors.dll │ ├── useSharedDesignerContext.txt │ ├── version.txt │ ├── .signature.p7s │ ├── System.Numerics.Vectors.4.5.0.nupkg │ └── LICENSE.TXT ├── System.Runtime.CompilerServices.Unsafe.4.5.3 │ ├── useSharedDesignerContext.txt │ ├── version.txt │ ├── .signature.p7s │ ├── System.Runtime.CompilerServices.Unsafe.4.5.3.nupkg │ ├── lib │ │ ├── net461 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ │ ├── netcoreapp2.0 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ │ ├── netstandard1.0 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ │ └── netstandard2.0 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ ├── ref │ │ ├── net461 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ │ ├── netstandard1.0 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ │ └── netstandard2.0 │ │ │ └── System.Runtime.CompilerServices.Unsafe.dll │ └── LICENSE.TXT ├── IronPython.3.4.1 │ ├── logo.png │ ├── .signature.p7s │ ├── IronPython.3.4.1.nupkg │ ├── lib │ │ ├── net462 │ │ │ ├── IronPython.dll │ │ │ ├── IronPython.Wpf.dll │ │ │ ├── IronPython.Modules.dll │ │ │ ├── IronPython.SQLite.dll │ │ │ ├── IronPython.SQLite.xml │ │ │ └── IronPython.Wpf.xml │ │ ├── net6.0 │ │ │ ├── IronPython.dll │ │ │ ├── IronPython.Wpf.dll │ │ │ ├── IronPython.Modules.dll │ │ │ ├── IronPython.SQLite.dll │ │ │ ├── IronPython.SQLite.xml │ │ │ └── IronPython.Wpf.xml │ │ ├── netcoreapp3.1 │ │ │ ├── IronPython.dll │ │ │ ├── IronPython.Wpf.dll │ │ │ ├── IronPython.Modules.dll │ │ │ ├── IronPython.SQLite.dll │ │ │ ├── IronPython.SQLite.xml │ │ │ └── IronPython.Wpf.xml │ │ └── netstandard2.0 │ │ │ ├── IronPython.dll │ │ │ ├── IronPython.SQLite.dll │ │ │ ├── IronPython.Modules.dll │ │ │ └── IronPython.SQLite.xml │ └── README.md └── DynamicLanguageRuntime.1.3.4 │ ├── .signature.p7s │ ├── lib │ ├── net452 │ │ ├── Microsoft.Dynamic.dll │ │ ├── Microsoft.Scripting.dll │ │ └── Microsoft.Scripting.Metadata.dll │ ├── net6.0 │ │ ├── Microsoft.Dynamic.dll │ │ ├── Microsoft.Scripting.dll │ │ └── Microsoft.Scripting.Metadata.dll │ ├── netcoreapp3.1 │ │ ├── Microsoft.Dynamic.dll │ │ ├── Microsoft.Scripting.dll │ │ └── Microsoft.Scripting.Metadata.dll │ └── netstandard2.0 │ │ ├── Microsoft.Dynamic.dll │ │ ├── Microsoft.Scripting.dll │ │ └── Microsoft.Scripting.Metadata.dll │ ├── DynamicLanguageRuntime.1.3.4.nupkg │ └── README.md ├── bin ├── Debug │ ├── kata.sipebi │ ├── SipebiMini.Core.dll │ ├── pengaturan.sipebi │ ├── SipebiMini.Editor.exe │ ├── SipebiMini.Analyser.exe │ ├── tambahan-data-buatan.txt │ ├── pengaturan-pengguna.xml │ ├── contoh-teks.txt │ └── daftar-diagnosis.xml └── Release │ ├── kata.sipebi │ ├── SipebiMini.exe │ ├── SipebiMini.pdb │ ├── pengaturan.sipebi │ ├── SipebiMini.Core.dll │ ├── SipebiMini.Editor.exe │ ├── SipebiMini.Analyser.exe │ ├── SipebiMini.exe.config │ ├── tambahan-data-buatan.txt │ ├── pengaturan-pengguna.xml │ ├── contoh-teks.txt │ └── daftar-diagnosis.xml ├── Morphology ├── IndoMorph-Dataset.xlsx └── IndoMorph-Earlier-Dataset.xlsx ├── Analyses └── EYD Analyzed Simplified v4.xlsx ├── CODEOWNERS ├── Properties ├── Settings.settings ├── Settings.Designer.cs ├── AssemblyInfo.cs ├── Resources.Designer.cs └── Resources.resx ├── Program.cs ├── packages.config ├── initiator.bat ├── App.config ├── SipebiMini.Sample.sln ├── FileHelper.cs ├── Files ├── contoh-teks.txt ├── daftar-diagnosis-tambahan.xml └── daftar-diagnosis.xml ├── README.md ├── SipebiMiniForm.cs └── SipebiMini.Sample.csproj /py/core/DUMMY_README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /py/docs/DUMMY_README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /py/libs/DUMMY_README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /py/diag/data/DUMMY_README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /py/diag/libs/DUMMY_README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/netcoreapp2.0/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/uap10.0.16299/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/netcoreapp2.0/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/uap10.0.16299/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/lib/netcoreapp2.1/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/ref/netcoreapp2.1/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/useSharedDesignerContext.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/useSharedDesignerContext.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/MonoTouch10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/MonoTouch10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/MonoAndroid10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/netcoreapp2.0/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/uap10.0.16299/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/xamarinios10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/xamarinmac20/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/xamarintvos10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/xamarinwatchos10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/MonoAndroid10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/netcoreapp2.0/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/uap10.0.16299/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/xamarinios10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/xamarinmac20/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/xamarintvos10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/xamarinwatchos10/_._: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/useSharedDesignerContext.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/useSharedDesignerContext.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/version.txt: -------------------------------------------------------------------------------- 1 | 7601f4f6225089ffb291dc7d58293c7bbf5c5d4f 2 | -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/version.txt: -------------------------------------------------------------------------------- 1 | 32b491939fbd125f304031c35038b1e14b4e3958 2 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/version.txt: -------------------------------------------------------------------------------- 1 | 30ab651fcb4354552bd4891619a0bdd81e0ebdbf 2 | -------------------------------------------------------------------------------- /py/data/initial_file_resource_example.txt: -------------------------------------------------------------------------------- 1 | isi 2 | dari 3 | file 4 | resource 5 | skrip validasi -------------------------------------------------------------------------------- /bin/Debug/kata.sipebi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Debug/kata.sipebi -------------------------------------------------------------------------------- /bin/Release/kata.sipebi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/kata.sipebi -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/version.txt: -------------------------------------------------------------------------------- 1 | 7601f4f6225089ffb291dc7d58293c7bbf5c5d4f 2 | -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanAngkaBilanganBesar_common_check.txt: -------------------------------------------------------------------------------- 1 | KG05 2 | 1 3 | KG05|01|05|100.000.000|100 juta|False -------------------------------------------------------------------------------- /bin/Release/SipebiMini.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/SipebiMini.exe -------------------------------------------------------------------------------- /bin/Release/SipebiMini.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/SipebiMini.pdb -------------------------------------------------------------------------------- /bin/Debug/SipebiMini.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Debug/SipebiMini.Core.dll -------------------------------------------------------------------------------- /bin/Debug/pengaturan.sipebi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Debug/pengaturan.sipebi -------------------------------------------------------------------------------- /bin/Release/pengaturan.sipebi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/pengaturan.sipebi -------------------------------------------------------------------------------- /bin/Debug/SipebiMini.Editor.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Debug/SipebiMini.Editor.exe -------------------------------------------------------------------------------- /bin/Release/SipebiMini.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/SipebiMini.Core.dll -------------------------------------------------------------------------------- /Morphology/IndoMorph-Dataset.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/Morphology/IndoMorph-Dataset.xlsx -------------------------------------------------------------------------------- /bin/Debug/SipebiMini.Analyser.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Debug/SipebiMini.Analyser.exe -------------------------------------------------------------------------------- /bin/Release/SipebiMini.Editor.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/SipebiMini.Editor.exe -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/logo.png -------------------------------------------------------------------------------- /py/diag/data/initial_diag_file_resource_example.txt: -------------------------------------------------------------------------------- 1 | isi 2 | dari 3 | file 4 | resource 5 | skrip diagnosis 6 | atau 7 | skrip validasi -------------------------------------------------------------------------------- /bin/Release/SipebiMini.Analyser.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/bin/Release/SipebiMini.Analyser.exe -------------------------------------------------------------------------------- /py/data/results/PySipebiDiagAturanPartikelPun_result.txt: -------------------------------------------------------------------------------- 1 | complete 2 | pass 3 | 0 common mistakes found 4 | 0 special mistakes found 5 | -------------------------------------------------------------------------------- /Analyses/EYD Analyzed Simplified v4.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/Analyses/EYD Analyzed Simplified v4.xlsx -------------------------------------------------------------------------------- /Morphology/IndoMorph-Earlier-Dataset.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/Morphology/IndoMorph-Earlier-Dataset.xlsx -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/.signature.p7s -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/.signature.p7s -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Memory.4.5.5/.signature.p7s -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanAngkaBilanganBesar_test.txt: -------------------------------------------------------------------------------- 1 | Dia berhasil mengumpulkan donasi 100.000.000 untuk biaya sekolah anak-anak kurang mampu di desanya. -------------------------------------------------------------------------------- /py/data/results/PySipebiDiagAturanPartikelLahKahTah_result.txt: -------------------------------------------------------------------------------- 1 | complete 2 | pass 3 | 0 common mistakes found 4 | 0 special mistakes found 5 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/IronPython.3.4.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/IronPython.3.4.1.nupkg -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net462/IronPython.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net462/IronPython.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net6.0/IronPython.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net6.0/IronPython.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/.signature.p7s -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/System.Memory.4.5.5.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Memory.4.5.5/System.Memory.4.5.5.nupkg -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/.signature.p7s -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net462/IronPython.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net462/IronPython.Wpf.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net6.0/IronPython.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net6.0/IronPython.Wpf.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/System.Buffers.4.5.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/System.Buffers.4.5.1.nupkg -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net462/IronPython.Modules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net462/IronPython.Modules.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net462/IronPython.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net462/IronPython.SQLite.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net6.0/IronPython.Modules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net6.0/IronPython.Modules.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net6.0/IronPython.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/net6.0/IronPython.SQLite.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/net461/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/lib/net461/System.Buffers.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/net45/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/ref/net45/System.Buffers.dll -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/lib/net461/System.Memory.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Memory.4.5.5/lib/net461/System.Memory.dll -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanPartikelPun_test.txt: -------------------------------------------------------------------------------- 1 | Merekapun sering menyanyikan lagu daerah di acara kenegaraan. 2 | Biar pun kalah, dia tidak sedih. 3 | Meski pun kalah, dia tidak sedih. -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.Wpf.dll -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanPartikelPun_common_check.txt: -------------------------------------------------------------------------------- 1 | KE02, KE03 2 | 3 3 | KE02|01|01|Merekapun|Mereka pun|False 4 | KE03|02|01|Biar pun|Biarpun|False 5 | KE04|03|01|Meski pun|Meskipun|False -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.Modules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.Modules.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.SQLite.dll -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.SQLite.dll -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/lib/netstandard1.1/System.Memory.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Memory.4.5.5/lib/netstandard1.1/System.Memory.dll -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/lib/netstandard2.0/System.Memory.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Memory.4.5.5/lib/netstandard2.0/System.Memory.dll -------------------------------------------------------------------------------- /py/data/results/PySipebiDiagAturanAngkaBilanganBesar_Val_result.txt: -------------------------------------------------------------------------------- 1 | fail 2 | Exception: ('list index out of range',) 3 | fail 4 | 0 common mistakes found 5 | 0 special mistakes found 6 | -------------------------------------------------------------------------------- /py/data/results/PySipebiDiagAturanTandaBacaPadaDialog_result.txt: -------------------------------------------------------------------------------- 1 | complete 2 | fail 3 | 1 common mistakes found 4 | P1 E2 | Expected 'ibu,,' but got 'ibu,' 5 | 0 special mistakes found 6 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.Modules.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.Modules.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/netstandard1.1/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/lib/netstandard1.1/System.Buffers.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/netstandard2.0/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/lib/netstandard2.0/System.Buffers.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/netstandard1.1/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/ref/netstandard1.1/System.Buffers.dll -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/netstandard2.0/System.Buffers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Buffers.4.5.1/ref/netstandard2.0/System.Buffers.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/.signature.p7s -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/net452/Microsoft.Dynamic.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/net452/Microsoft.Dynamic.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/net6.0/Microsoft.Dynamic.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/net6.0/Microsoft.Dynamic.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/DynamicLanguageRuntime.1.3.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/DynamicLanguageRuntime.1.3.4.nupkg -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/net452/Microsoft.Scripting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/net452/Microsoft.Scripting.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/net6.0/Microsoft.Scripting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/net6.0/Microsoft.Scripting.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/System.Numerics.Vectors.4.5.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/System.Numerics.Vectors.4.5.0.nupkg -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/net46/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/lib/net46/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/net45/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/ref/net45/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/net46/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/ref/net46/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/netcoreapp3.1/Microsoft.Dynamic.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/netcoreapp3.1/Microsoft.Dynamic.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/netcoreapp3.1/Microsoft.Scripting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/netcoreapp3.1/Microsoft.Scripting.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/netstandard2.0/Microsoft.Dynamic.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/netstandard2.0/Microsoft.Dynamic.dll -------------------------------------------------------------------------------- /py/data/PySipebiPerbaikanKataHubung_common_check.txt: -------------------------------------------------------------------------------- 1 | KH01, KH02, Sipebi Error 1 2 | 3 3 | KH01|01|02|burungburung|burung-burung|False 4 | KH01|01|13|berhari hari|berhari-hari|False 5 | KH01|02|08|Kurukuru,|kuru-kuru,|True -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/net452/Microsoft.Scripting.Metadata.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/net452/Microsoft.Scripting.Metadata.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/net6.0/Microsoft.Scripting.Metadata.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/net6.0/Microsoft.Scripting.Metadata.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/netstandard2.0/Microsoft.Scripting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/netstandard2.0/Microsoft.Scripting.dll -------------------------------------------------------------------------------- /py/diag/data/data_partikel_pun.txt: -------------------------------------------------------------------------------- 1 | adapun 2 | andaipun 3 | ataupun 4 | bagaimanapun 5 | biarpun 6 | jikapun 7 | kalaupun 8 | kendatipun 9 | maupun 10 | meskipun 11 | sekalipun 12 | sementangpun 13 | sungguhpun 14 | walaupun -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence, 3 | # @ian5666987 will be requested for 4 | # review when someone opens a pull request. 5 | * @ian5666987 -------------------------------------------------------------------------------- /bin/Release/SipebiMini.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/netstandard1.0/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/lib/netstandard1.0/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/netstandard2.0/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/lib/netstandard2.0/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/netstandard1.0/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/ref/netstandard1.0/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/ref/netstandard2.0/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/ref/netstandard2.0/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/netcoreapp3.1/Microsoft.Scripting.Metadata.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/netcoreapp3.1/Microsoft.Scripting.Metadata.dll -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/lib/netstandard2.0/Microsoft.Scripting.Metadata.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/DynamicLanguageRuntime.1.3.4/lib/netstandard2.0/Microsoft.Scripting.Metadata.dll -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Numerics.Vectors.4.5.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/System.Runtime.CompilerServices.Unsafe.4.5.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/System.Runtime.CompilerServices.Unsafe.4.5.3.nupkg -------------------------------------------------------------------------------- /py/data/PySipebiPerbaikanKataHubung_test.txt: -------------------------------------------------------------------------------- 1 | Bahkan burungburung di sana tidak mendapatkan cukup makanan. Dan ini sudah terjadi berhari hari. 2 | Aku pergi mengunjungi kebun binatang itu bersama Kurukuru, teman baikku. Sudah berjam-jam kami berjalan di kebun binatang. 3 | -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/net461/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/net461/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/ref/net461/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/ref/net461/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ian5666987/Sipebi-Mini-Sample/HEAD/packages/System.Runtime.CompilerServices.Unsafe.4.5.3/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll -------------------------------------------------------------------------------- /bin/Release/tambahan-data-buatan.txt: -------------------------------------------------------------------------------- 1 | sdh|sudah 2 | utk|untuk 3 | kpd|kepada 4 | tll|terlalu 5 | spt|seperti 6 | rmh|rumah,ramah 7 | rpt|rapat,repot 8 | msk|masuk,masak,musik 9 | byk|banyak 10 | yg|yang 11 | tdk|tidak 12 | dpt|dapat 13 | dgn|dengan 14 | org|orang 15 | jg|juga 16 | sdg|sedang -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanPartikelLahKahTah_common_check.txt: -------------------------------------------------------------------------------- 1 | KE01 2 | 6 3 | KE01|01|07|mantap lah|mantaplah|False 4 | KE01|02|01|Bukan kah|Bukankah|False 5 | KE01|03|01|Aku tah|Akutah|False 6 | KE01|04|01|Apa tah|Apatah|False 7 | KE01|04|10|merah lah|merahlah|False 8 | KE01|04|11|atau kah|ataukah|False -------------------------------------------------------------------------------- /bin/Debug/tambahan-data-buatan.txt: -------------------------------------------------------------------------------- 1 | sdh|sudah 2 | utk|untuk 3 | kpd|kepada 4 | tll|terlalu 5 | spt|seperti 6 | rmh|rumah,ramah 7 | rpt|rapat,repot 8 | msk|masuk,masak,musik 9 | byk|banyak 10 | yg|yang 11 | tdk|tidak 12 | dpt|dapat 13 | dgn|dengan 14 | org|orang 15 | jg|juga 16 | sdg|sedang 17 | jgn|jangan -------------------------------------------------------------------------------- /py/data/PySipebiPerbaikanKataHubung_result.txt: -------------------------------------------------------------------------------- 1 | complete 2 | fail 3 | 2 4 | diagnostics index [1] [berhari hari] is not generated by [PySipebiPerbaikanKataHubung.py] 5 | [IsAmbiguous] value for diagnostics index [2] [Kurukuru, -> kuru-kuru,] is [False]. Excpected: [True] 6 | 1 7 | special comments for special mistakes here 8 | -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanPartikelLahKahTah_test.txt: -------------------------------------------------------------------------------- 1 | Setelah mendapatkan dukungan dari para tetua, mantap lah dia membuat keputusan itu. 2 | Bukan kah bulan ini seharusnya sudah memasuki musim kemarau? 3 | Aku tah yang dia panggil? 4 | Apa tah perkataan ku yang membuat nya marah hingga merah lah muka nya seperti itu atau kah ada sebab lain nya? -------------------------------------------------------------------------------- /py/diag/core/PySipebiHelper.py: -------------------------------------------------------------------------------- 1 | # This file contains helper methods for PySipebi 2 | import os 3 | 4 | class PySipebiHelper: 5 | @staticmethod 6 | def find_proper_path(filepath): 7 | if filepath is not None and not os.path.isfile(filepath) and filepath.startswith('py\\'): 8 | return filepath[len('py\\'):] 9 | return filepath 10 | -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanTandaBacaPadaDialog_common_check.txt: -------------------------------------------------------------------------------- 1 | TB07, TB08 2 | 11 3 | TB07|01|02|ibu|ibu,,|False 4 | TB07|03|02|ibu ,"kamu|ibu, "kamu|False 5 | TB07|06|04|1|1,|False 6 | TB07|06|06|ibu|ibu,|False 7 | TB07|07|04|1",|1,"|False 8 | TB07|08|06|ibu|ibu,|False 9 | TB08|09|04|kampung?,"|kampung?"|False 10 | TB08|10|04|kampung?",|kampung?"|False 11 | TB08|11|02|bohong!,"|bohong!"|False 12 | TB08|12|02|bohong!",|bohong!"|False -------------------------------------------------------------------------------- /py/diag/core/PySipebiDiagnosticsError.py: -------------------------------------------------------------------------------- 1 | class PySipebiDiagnosticsError: 2 | ErrorCode = '[Kode]' 3 | ParagraphNo = 0 4 | ElementNo = 0 5 | OriginalElement = '' 6 | CorrectedElement = '' 7 | OriginalParagraphOffset = 0 8 | PositionOffset = 0 9 | CorrectedCharPosition = 0 10 | IsAmbiguous = False 11 | 12 | def SimpleDisplay(self): 13 | return self.ErrorCode + ' ' + self.OriginalElement + ' -> ' + self.CorrectedElement 14 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace SipebiMini { 8 | static class Program { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new SampleForm()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /bin/Debug/pengaturan-pengguna.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | true 5 | false 6 | false 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /bin/Release/pengaturan-pengguna.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | true 5 | false 6 | false 7 | 8 | 9 | -------------------------------------------------------------------------------- /py/data/PySipebiDiagAturanTandaBacaPadaDialog_test.txt: -------------------------------------------------------------------------------- 1 | Kata ibu "Jika kamu juara 1, ibu akan belikan sepatu baru." 2 | Kata ibu,"Jika kamu juara 1, ibu akan belikan sepatu baru." 3 | Kata ibu ,"Jika kamu juara 1, ibu akan belikan sepatu baru." 4 | Kata ibu, "jika kamu juara 1, ibu akan belikan sepatu baru." 5 | Kata ibu "jika kamu juara 1, ibu akan belikan sepatu baru." 6 | "Jika kamu juara 1" kata ibu "ibu akan belikan sepatu baru." 7 | "Jika kamu juara 1", kata ibu, "ibu akan belikan sepatu baru." 8 | "Jika kamu juara 1," kata ibu "ibu akan belikan sepatu baru." 9 | "Kapan kamu pulang kampung?," tanya nenek. 10 | "Kapan kamu pulang kampung?", tanya nenek. 11 | "Jangan bohong!," teriaknya. 12 | "Jangan bohong!", teriaknya. -------------------------------------------------------------------------------- /initiator.bat: -------------------------------------------------------------------------------- 1 | :: Create all applicable folders 2 | if not exist py mkdir py 3 | if not exist py\core mkdir py\core 4 | if not exist py\libs mkdir py\libs 5 | if not exist py\data mkdir py\data 6 | if not exist py\diag mkdir py\diag 7 | if not exist bin\Debug mkdir bin\Debug 8 | if not exist bin\Release mkdir bin\Release 9 | if not exist Files mkdir Files 10 | 11 | :: Remove applicable existing directories 12 | if exist bin\Debug\py rmdir /s /q bin\Debug\py 13 | if exist bin\Release\py rmdir /s /q bin\Release\py 14 | 15 | :: Copying all the py content to debug and release folders 16 | robocopy Files bin\Debug *.* 17 | robocopy Files bin\Release *.* 18 | robocopy py bin\Debug\py /MIR 19 | robocopy py bin\Release\py /MIR 20 | 21 | :: Clean up target directories 22 | if exist bin\Debug\py\.idea rmdir /s /q bin\Debug\py\.idea 23 | if exist bin\Release\py\.idea rmdir /s /q bin\Release\py\.idea 24 | 25 | pause 26 | -------------------------------------------------------------------------------- /App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 17 | 18 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /py/data/README.md: -------------------------------------------------------------------------------- 1 | # Dua Komponen Penting Skrip Validasi 2 | 3 | ## 1. Fail `test` 4 | Fail ini merupakan fail yang berisi data teks yang akan digunakan untuk proses validasi. 5 | 6 | Berikut merupakan contoh dari isi fail test: 7 | ```txt 8 | Saya mau pergi ke sana. saya mau pergi ke sini. 9 | Dia kah? Dia lah! 10 | ``` 11 | 12 | ## 2. Fail `common_check` 13 | Fail ini merupakan fail yang digunakan sebagai acuan dari penyuntingan yang benar dan valid. Oleh karena itu, perlu diperhatikan bahwa setiap elemen perbaikan dari fail ini harus valid dan benar. 14 | Template isi dari fail ini adalah sebagai berikut: 15 | ```txt 16 | , 17 | 18 | ||||| 19 | ``` 20 | 21 | Berikut merupakan contoh dari isi fail common_check: 22 | ```txt 23 | KA01, KE01 24 | 3 25 | KA01|01|06|saya|Saya|False 26 | KE01|02|01|Dia kah|Diakah|False 27 | KE01|02|02|Dia lah|Dialah|False 28 | ``` -------------------------------------------------------------------------------- /Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SipebiMini.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SipebiMini.Sample.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30523.141 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SipebiMini.Sample", "SipebiMini.Sample.csproj", "{F6EE0D11-71CB-4005-81C2-19153F4C595F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {F6EE0D11-71CB-4005-81C2-19153F4C595F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {F6EE0D11-71CB-4005-81C2-19153F4C595F}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {F6EE0D11-71CB-4005-81C2-19153F4C595F}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {F6EE0D11-71CB-4005-81C2-19153F4C595F}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {6A7BDD4B-33D7-4FA2-9114-C069DD6BFFAC} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/LICENSE.TXT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) .NET Foundation and Contributors 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /packages/System.Memory.4.5.5/LICENSE.TXT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) .NET Foundation and Contributors 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /packages/System.Numerics.Vectors.4.5.0/LICENSE.TXT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) .NET Foundation and Contributors 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /packages/System.Runtime.CompilerServices.Unsafe.4.5.3/LICENSE.TXT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) .NET Foundation and Contributors 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /py/PySipebiCommonValidationRunner.py: -------------------------------------------------------------------------------- 1 | # This class is used to run the validation classes 2 | import os.path 3 | from diag.core.PySipebiHelper import PySipebiHelper 4 | 5 | class PySipebiCommonValidationRunner: 6 | def __init__(self, validation_class): 7 | self.validation_class = validation_class 8 | self.shared_resources = {} 9 | 10 | def input_into_shared_resources(self, file_resource_name): 11 | abs_filename = '' 12 | if "diag" in file_resource_name: 13 | file_resource_name = file_resource_name[file_resource_name.find('diag') + 5:] 14 | abs_filename = PySipebiHelper.find_proper_path(f'py\\diag\\data\\{file_resource_name}') 15 | file_resource_name = f'diag\\data\\{file_resource_name}' 16 | 17 | else: 18 | abs_filename = PySipebiHelper.find_proper_path(f'py\\data\\{file_resource_name}') 19 | self.shared_resources[file_resource_name] = self.read_file(abs_filename) 20 | 21 | def read_file(self, filename): 22 | with open(filename, 'r', newline="\r\n") as f: 23 | return f.read() 24 | 25 | def setup_and_run_validation(self): 26 | # Instantiate and execute the validation class 27 | test = self.validation_class() 28 | for filename in test.fileResourceNames: 29 | self.input_into_shared_resources(filename) 30 | 31 | test.execute_with_shared_resources(self.shared_resources) -------------------------------------------------------------------------------- /FileHelper.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Threading; 3 | 4 | namespace SipebiMini { 5 | public class FileHelper { 6 | // Fungsi untuk mengecek apakah file telah dihapus dari sistem 7 | public static bool PastikanTerhapus(string namaFail) { 8 | int counter = 0; 9 | int counterMaksimum = 50; 10 | if (File.Exists(namaFail)) { 11 | File.Delete(namaFail); 12 | while (File.Exists(namaFail) && counter <= counterMaksimum) { 13 | Thread.Sleep(100); 14 | counter++; 15 | } 16 | } 17 | return counter <= counterMaksimum; 18 | } 19 | 20 | // Fungsi untuk mengecek apakah file telah dibuat oleh sistem 21 | public static bool PastikanTerbuat(string namaFail) { 22 | FileInfo informasiFail = new FileInfo(namaFail); 23 | int counter = 0; 24 | int counterMaksimum = 50; 25 | while (isFileLocked(informasiFail) && counter <= counterMaksimum) { 26 | Thread.Sleep(100); 27 | counter++; 28 | } 29 | return counter <= counterMaksimum; 30 | } 31 | 32 | /* Mengecek apakah file tidak dikunci oleh sistem atau suatu proses 33 | * Didapat dari: https://stackoverflow.com/questions/10982104/wait-until-file-is-completely-written 34 | */ 35 | private static bool isFileLocked(FileInfo file) { 36 | FileStream stream = null; 37 | try { 38 | stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); 39 | } catch (IOException) { 40 | return true; 41 | } finally { 42 | if (stream != null) 43 | stream.Close(); 44 | } 45 | return false; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SipebiMini")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SipebiMini")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("f6ee0d11-71cb-4005-81c2-19153f4c595f")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("2.0.0.0")] 36 | [assembly: AssemblyFileVersion("2.0.0.0")] 37 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net462/IronPython.SQLite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.SQLite 5 | 6 | 7 | 8 | 9 | Basic locking strategy for Console/Winform applications 10 | 11 | 12 | 13 | 14 | Locking strategy for Medium Trust. It uses the same trick used in the native code for WIN_CE 15 | which doesn't support LockFileEx as well. 16 | 17 | 18 | 19 | * The rest are extensions, not normally found in printf() */ 20 | 21 | 22 | * beginning-of-error-codes */ 23 | 24 | 25 | * previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ 26 | 27 | 28 | * The methods above are in version 1 of the sqlite_module object. Those 29 | 30 | 31 | * x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net6.0/IronPython.SQLite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.SQLite 5 | 6 | 7 | 8 | 9 | Basic locking strategy for Console/Winform applications 10 | 11 | 12 | 13 | 14 | Locking strategy for Medium Trust. It uses the same trick used in the native code for WIN_CE 15 | which doesn't support LockFileEx as well. 16 | 17 | 18 | 19 | * The rest are extensions, not normally found in printf() */ 20 | 21 | 22 | * beginning-of-error-codes */ 23 | 24 | 25 | * previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ 26 | 27 | 28 | * The methods above are in version 1 of the sqlite_module object. Those 29 | 30 | 31 | * x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.SQLite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.SQLite 5 | 6 | 7 | 8 | 9 | Basic locking strategy for Console/Winform applications 10 | 11 | 12 | 13 | 14 | Locking strategy for Medium Trust. It uses the same trick used in the native code for WIN_CE 15 | which doesn't support LockFileEx as well. 16 | 17 | 18 | 19 | * The rest are extensions, not normally found in printf() */ 20 | 21 | 22 | * beginning-of-error-codes */ 23 | 24 | 25 | * previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ 26 | 27 | 28 | * The methods above are in version 1 of the sqlite_module object. Those 29 | 30 | 31 | * x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netstandard2.0/IronPython.SQLite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.SQLite 5 | 6 | 7 | 8 | 9 | Basic locking strategy for Console/Winform applications 10 | 11 | 12 | 13 | 14 | Locking strategy for Medium Trust. It uses the same trick used in the native code for WIN_CE 15 | which doesn't support LockFileEx as well. 16 | 17 | 18 | 19 | * The rest are extensions, not normally found in printf() */ 20 | 21 | 22 | * beginning-of-error-codes */ 23 | 24 | 25 | * previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ 26 | 27 | 28 | * The methods above are in version 1 of the sqlite_module object. Those 29 | 30 | 31 | * x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/README.md: -------------------------------------------------------------------------------- 1 | IronPython Engine 2 | ================= 3 | 4 | IronPython is an open-source implementation of the Python programming language that is tightly integrated with .NET. IronPython can use .NET and Python libraries, and other .NET languages can use Python code just as easily. 5 | 6 | This package contains the IronPython engine that allows embedding an IronPython interpreter in a .NET application. The interpreted Python code can call the .NET code and can be called from the .NET code. This package does not contain the IronPython Standard Library, which is distributed separately as package `IronPython.StdLib`. 7 | 8 | ## Example 9 | 10 | Execute Python code and call it from .NET code: 11 | 12 | ```cs 13 | var eng = IronPython.Hosting.Python.CreateEngine(); 14 | var scope = eng.CreateScope(); 15 | eng.Execute(@" 16 | def greetings(name): 17 | return 'Hello ' + name.title() + '!' 18 | ", scope); 19 | dynamic greetings = scope.GetVariable("greetings"); 20 | System.Console.WriteLine(greetings("world")); 21 | ``` 22 | 23 | ## Differences with CPython 24 | 25 | While compatibility with CPython is one of our main goals with IronPython 3, there are still some differences that may cause issues. See [Differences from CPython](https://github.com/IronLanguages/ironpython3/blob/master/Documentation/differences-from-c-python.md) for details. 26 | 27 | ## Package compatibility 28 | 29 | See the [Package compatibility](https://github.com/IronLanguages/ironpython3/blob/master/Documentation/package-compatibility.md) document for information on compatibility with popular Python packages. Note that to run most packages, IronPython Standard Library must be present. 30 | -------------------------------------------------------------------------------- /Files/contoh-teks.txt: -------------------------------------------------------------------------------- 1 | Akan tetapi ia tetap bersikukuh. Dengan demikian ia menyatakan bahwa dirinya memang keras kepala. Oleh karena itu dia kupecat. Biarpun demikian, bukan artinya gajinya tidak kubayar. 2 | 3 | kapital pada huruf pertama kalimat. aku mau berjalan. tetapi apakah bisa? Utk hal spt itu, dia sdh tll byk tahu. 4 | 5 | dia mau ditangkap karena dia membantu memiralkan video didudukan tersebut. rpt yg diadakan di rmh tdk dpt dilakukan dgn baik. 6 | 7 | kapital ditambah kata ganti orang. STNKnya dan STNK ku tidak dibawa. demikian juga dengan SIM mu yang lupa kamu bawa. 8 | 9 | Selain rpt mengurusi org keluar msk rmh, hal itu jg membuat istri yg sibuk msk dan anak yg sdg main msk marah-marah kpd sang kepala rmh tangga. 10 | 11 | kata penghubung subordinatif diberi koma. aku tetap bekerja, meskipun aku sakit. apakah Anda tetap bekerja, jika Anda sakit? apakah Anda bekerja, supaya bisa hidup merdeka? Ataukah Anda bekerja, karena uang? Ataukah Anda bekerja, supaya mendapatkan kepuasan? Berkerjalah sambil belajar menyukai pekerjaan Anda agar Anda tidak perlu menderita bekerja seumur hidup. 12 | 13 | kata penghubung intra kalimat tidak diberi koma. Dia tidak bekerja melainkan bermain-main. Dia bermain-main padahal dia sudah besar. Masih kecil saja sudah tidak pantas untuk terus bermain-main, apalagi dia sudah besar. 14 | 15 | Dia melakukan hal ini untuk yang ke 4 kalinya. ia sudah diperingati ketika melakukannya untuk yang ke3 kalinya tetapi dia tetap tidak mau mendengar. 16 | 17 | Pada tahun 1940an terjadi puncak perang dunia ke2. Pada waktu itu, sekitar 200 an negara dunia terlibat. 18 | 19 | Waktu menunjukkan pukul 10:05 di tempat saya. Atau lebih tepatnya pukul 10;07;08 WIB. 20 | 21 | Akupuntur dan al-Quran, sekali lagi: al-quran, Al-quran (AL-QURAN). antik barang itu. 22 | 23 | Sinar infra-merah bukan ultra violet. Kata dia mega mendung, bukan mono-poli. Sudah lah sepatutnya. Tidak-kah memang demikian kasusnya? 24 | 25 | -------------------------------------------------------------------------------- /bin/Debug/contoh-teks.txt: -------------------------------------------------------------------------------- 1 | Akan tetapi ia tetap bersikukuh. Dengan demikian ia menyatakan bahwa dirinya memang keras kepala. Oleh karena itu dia kupecat. Biarpun demikian, bukan artinya gajinya tidak kubayar. 2 | 3 | kapital pada huruf pertama kalimat. aku mau berjalan. tetapi apakah bisa? Utk hal spt itu, dia sdh tll byk tahu. 4 | 5 | dia mau ditangkap karena dia membantu memiralkan video didudukan tersebut. rpt yg diadakan di rmh tdk dpt dilakukan dgn baik. 6 | 7 | kapital ditambah kata ganti orang. STNKnya dan STNK ku tidak dibawa. demikian juga dengan SIM mu yang lupa kamu bawa. 8 | 9 | Selain rpt mengurusi org keluar msk rmh, hal itu jg membuat istri yg sibuk msk dan anak yg sdg main msk marah-marah kpd sang kepala rmh tangga. 10 | 11 | kata penghubung subordinatif diberi koma. aku tetap bekerja, meskipun aku sakit. apakah Anda tetap bekerja, jika Anda sakit? apakah Anda bekerja, supaya bisa hidup merdeka? Ataukah Anda bekerja, karena uang? Ataukah Anda bekerja, supaya mendapatkan kepuasan? Berkerjalah sambil belajar menyukai pekerjaan Anda agar Anda tidak perlu menderita bekerja seumur hidup. 12 | 13 | kata penghubung intra kalimat tidak diberi koma. Dia tidak bekerja melainkan bermain-main. Dia bermain-main padahal dia sudah besar. Masih kecil saja sudah tidak pantas untuk terus bermain-main, apalagi dia sudah besar. 14 | 15 | Dia melakukan hal ini untuk yang ke 4 kalinya. ia sudah diperingati ketika melakukannya untuk yang ke3 kalinya tetapi dia tetap tidak mau mendengar. 16 | 17 | Pada tahun 1940an terjadi puncak perang dunia ke2. Pada waktu itu, sekitar 200 an negara dunia terlibat. 18 | 19 | Waktu menunjukkan pukul 10:05 di tempat saya. Atau lebih tepatnya pukul 10;07;08 WIB. 20 | 21 | Akupuntur dan al-Quran, sekali lagi: al-quran, Al-quran (AL-QURAN). antik barang itu. 22 | 23 | Sinar infra-merah bukan ultra violet. Kata dia mega mendung, bukan mono-poli. Sudah lah sepatutnya. Tidak-kah memang demikian kasusnya? 24 | 25 | -------------------------------------------------------------------------------- /bin/Release/contoh-teks.txt: -------------------------------------------------------------------------------- 1 | Akan tetapi ia tetap bersikukuh. Dengan demikian ia menyatakan bahwa dirinya memang keras kepala. Oleh karena itu dia kupecat. Biarpun demikian, bukan artinya gajinya tidak kubayar. 2 | 3 | kapital pada huruf pertama kalimat. aku mau berjalan. tetapi apakah bisa? Utk hal spt itu, dia sdh tll byk tahu. 4 | 5 | dia mau ditangkap karena dia membantu memiralkan video didudukan tersebut. rpt yg diadakan di rmh tdk dpt dilakukan dgn baik. 6 | 7 | kapital ditambah kata ganti orang. STNKnya dan STNK ku tidak dibawa. demikian juga dengan SIM mu yang lupa kamu bawa. 8 | 9 | Selain rpt mengurusi org keluar msk rmh, hal itu jg membuat istri yg sibuk msk dan anak yg sdg main msk marah-marah kpd sang kepala rmh tangga. 10 | 11 | kata penghubung subordinatif diberi koma. aku tetap bekerja, meskipun aku sakit. apakah Anda tetap bekerja, jika Anda sakit? apakah Anda bekerja, supaya bisa hidup merdeka? Ataukah Anda bekerja, karena uang? Ataukah Anda bekerja, supaya mendapatkan kepuasan? Berkerjalah sambil belajar menyukai pekerjaan Anda agar Anda tidak perlu menderita bekerja seumur hidup. 12 | 13 | kata penghubung intra kalimat tidak diberi koma. Dia tidak bekerja melainkan bermain-main. Dia bermain-main padahal dia sudah besar. Masih kecil saja sudah tidak pantas untuk terus bermain-main, apalagi dia sudah besar. 14 | 15 | Dia melakukan hal ini untuk yang ke 4 kalinya. ia sudah diperingati ketika melakukannya untuk yang ke3 kalinya tetapi dia tetap tidak mau mendengar. 16 | 17 | Pada tahun 1940an terjadi puncak perang dunia ke2. Pada waktu itu, sekitar 200 an negara dunia terlibat. 18 | 19 | Waktu menunjukkan pukul 10:05 di tempat saya. Atau lebih tepatnya pukul 10;07;08 WIB. 20 | 21 | Akupuntur dan al-Quran, sekali lagi: al-quran, Al-quran (AL-QURAN). antik barang itu. 22 | 23 | Sinar infra-merah bukan ultra violet. Kata dia mega mendung, bukan mono-poli. Sudah lah sepatutnya. Tidak-kah memang demikian kasusnya? 24 | 25 | -------------------------------------------------------------------------------- /py/README.md: -------------------------------------------------------------------------------- 1 | # Validasi Skrip Diagnosis 2 | 3 | Skrip diagnosis tentunya harus melewati tahap validasi terlebih dahulu sebelum dimasukkan ke dalam kode Sipebi yang asli. Tahapan validasi ini dilakukan untuk memastikan bahwa skrip diagnosis yang dibuat tidak mengandung kesalahan sintaksis dan logika. 4 | 5 | Untuk melakukan validasi pada skrip diagnosis yang Anda telah buat, ikuti tahapan berikut ini: 6 | 1. Buat sebuah fail dengan nama `_Val.py` pada direktori `py/`. Misalnya, nama class skrip diagnosis Anda adalah `PySipebiDiagAturanTandaBacaPadaDialog`, maka nama fail validasi yang harus Anda buat adalah `PySipebiAturanTandaBacaPadaDialog_Val.py`. 7 | 2. Buat 2 fail `.txt` dasar yang dibutuhkan untuk dibaca pada proses validasi, yaitu fail `common_check` dan fail `test`. Fail tersebut dibuat pada folder `py/data`. Sesuaikan nama failnya dengan konvensi berikut. Misalnya, nama class skrip diagnosis Anda adalah `PySipebiDiagAturanTandaBacaPadaDialog`, maka nama fail `common_check` dan `test` yang harus Anda buat adalah `PySipebiDiagAturanTandaBacaPadaDialog_common_check.txt` dan `PySipebiDiagAturanTandaBacaPadaDialog_test.txt`. Isi dari kedua fail tersebut bisa lihat di contoh fail `common_check` dan `test` yang sudah ada. 8 | 3. Untuk pembuatan kode skrip validasi, ikuti saja alur kode yang ada pada fail validasi yang telah dibuat, seperti fail `PySipebiDiagAturanPartikelPun_Val.py`. Isi fail kurang lebih sama. Dipersilahkan jika ingin menambahkan beberapa validasi tambahan. 9 | 4. Untuk menjalankan fail validasi, pada baris paling bawah kode pada fail validasi, salin kode berikut dan ubah beberapa hal yang seharusnya diubah: 10 | 11 | ```python 12 | if __name__ == "__main__": 13 | validation_runner = PySipebiCommonValidationRunner() 14 | validation_runner.setup_and_run_validation() 15 | ``` 16 | 17 | Contohnya, 18 | ```python 19 | if __name__ == "__main__": 20 | validation_runner = PySipebiCommonValidationRunner(PySipebiDiagAturanPartikelLahKahTah_Val) 21 | validation_runner.setup_and_run_validation() 22 | ``` 23 | 5. Setelah itu, jalankan fail skrip validasi tersebut. Setelah dijalankan, maka akan dibuat sebuah fail txt `result` yang merupakan hasil dari validasi skrip diagnosis yang telah dibuat. Fail tersebut akan berada pada folder `py/data/results`. Fail tersebut berisi hasil validasi dari skrip diagnosis yang telah dibuat. Jika hasil validasi tersebut tidak sesuai dengan yang diharapkan, maka perbaiki skrip diagnosis yang telah dibuat. Jika hasil validasi tersebut sesuai dengan yang diharapkan, maka skrip diagnosis tersebut dapat dimasukkan ke dalam kode Sipebi yang asli. -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SipebiMini.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SipebiMini.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /packages/DynamicLanguageRuntime.1.3.4/README.md: -------------------------------------------------------------------------------- 1 | Dynamic Language Runtime 2 | ======================== 3 | The Dynamic Language Runtime enables language developers to more easily create dynamic languages for the .NET platform. In addition to being a pluggable back-end for dynamic language compilers, the DLR provides language interop for dynamic operations on objects. The DLR has common hosting APIs for using dynamic languages as libraries or for scripting in your .NET applications. 4 | 5 | | **What?** | **Where?** | 6 | | --------: | :------------: | 7 | | **Windows/Linux/macOS Builds** | [![Build status](https://dotnet.visualstudio.com/IronLanguages/_apis/build/status/DLR)](https://dotnet.visualstudio.com/IronLanguages/_build/latest?definitionId=41) [![Github build status](https://github.com/IronLanguages/dlr/workflows/CI/badge.svg)](https://github.com/IronLanguages/dlr/actions?workflow=CI) | 8 | | **Downloads** | [![NuGet](https://img.shields.io/nuget/v/DynamicLanguageRuntime.svg)](https://www.nuget.org/packages/DynamicLanguageRuntime/) [![Release](https://img.shields.io/github/release/IronLanguages/dlr.svg)](https://github.com/IronLanguages/dlr/releases/latest)| 9 | | **Help** | [![Gitter chat](https://badges.gitter.im/IronLanguages/ironpython.svg)](https://gitter.im/IronLanguages/ironpython) [![StackExchange](https://img.shields.io/stackexchange/stackoverflow/t/dynamic-language-runtime.svg)](http://stackoverflow.com/questions/tagged/dynamic-language-runtime) | 10 | 11 | Code of Conduct 12 | --------------- 13 | This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. 14 | For more information see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct). 15 | 16 | Installation 17 | ------------ 18 | The best way to install the DLR is through the NuGet DynamicLanguageRuntime package. 19 | 20 | Documentation 21 | ------------- 22 | The best current documentation is in the Docs/ directory, in Word and PDF format (it *was* a Microsoft project, after all). 23 | 24 | Help 25 | ---- 26 | If you have any questions, [open an issue](https://github.com/IronLanguages/dlr/issues/new), even if it's not an actual bug. The issues are an acceptable discussion forum as well. 27 | 28 | History 29 | ------- 30 | The original DLR site is at [CodePlex](http://dlr.codeplex.com). The DLR was part of a much larger repository containing IronPython and IronRuby as well; you can find it at the [main](https://github.com/IronLanguages/main) repository. This is a smaller repository containing just the DLR, which makes it easier to package and should make it easier to do more regular releases. 31 | 32 | Build 33 | ----- 34 | You will need to have Visual Studio 2019 16.8.0 or later installed on your machine. 35 | 36 | On Windows machines, start a Visual Studio command prompt and type: 37 | 38 | > make 39 | 40 | On Unix machines, make sure Mono is installed and in the PATH, and type: 41 | 42 | $ make 43 | 44 | Since the main development is on Windows, Mono bugs may inadvertantly be introduced 45 | — please report them! 46 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net462/IronPython.Wpf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.Wpf 5 | 6 | 7 | 8 | 9 | Provides helpers for interacting with Windows Presentation Foundation applications. 10 | 11 | 12 | 13 | 14 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 15 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 16 | 17 | The provided object is expected to be the same type as the root of the XAML element. 18 | 19 | 20 | 21 | 22 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 23 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 24 | 25 | The provided object is expected to be the same type as the root of the XAML element. 26 | 27 | 28 | 29 | 30 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 31 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 32 | 33 | The provided object is expected to be the same type as the root of the XAML element. 34 | 35 | 36 | 37 | 38 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 39 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 40 | 41 | The provided object is expected to be the same type as the root of the XAML element. 42 | 43 | 44 | 45 | 46 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 47 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 48 | 49 | The provided object is expected to be the same type as the root of the XAML element. 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /py/diag/PySipebiDiagAturanPartikelLahKahTah.py: -------------------------------------------------------------------------------- 1 | from .core.PySipebiDiagnosticsBase import PySipebiDiagnosticsBase 2 | from .core.PySipebiDiagnosticsError import PySipebiDiagnosticsError 3 | from .core.PySipebiStructs import PySipebiTextDivision, PySipebiParagraphDivision, PySipebiWordDivision 4 | 5 | class PySipebiDiagAturanPartikelLahKahTah(PySipebiDiagnosticsBase): 6 | hasSharedResources = True 7 | sharedResourcesOutputKeys = ['sipebi_text_division'] 8 | ERROR_CODE_1 = '[KE01]' 9 | 10 | def setup(self): 11 | self.isReady = True 12 | 13 | def execute_with_shared_resources(self, text, shared_resources): 14 | sipebi_text: PySipebiTextDivision = shared_resources['sipebi_text_division'] # konvensi penamaan: sipebi_text_division 15 | for i, paragraph_div in enumerate(sipebi_text.paragraph_divs): 16 | paragraph: PySipebiParagraphDivision = paragraph_div 17 | for j, word_div in enumerate(paragraph.word_divs): 18 | word: PySipebiWordDivision = word_div 19 | 20 | # TODO: implementasi aturan partikel lah, kah, tah 21 | next_word = word.next_word_div 22 | # jika kata berikutnya adalah partikel lah, kah, atau tah, misal: apa kah 23 | # maka gabungkan kata tersebut menjadi: apakah 24 | if next_word and (next_word.pre_clean_word == "lah" 25 | or next_word.pre_clean_word == "kah" 26 | or next_word.pre_clean_word == "tah"): 27 | original_element = word.clean_word_string + " " + next_word.pre_clean_word 28 | corrected_element = word.clean_word_string + next_word.pre_clean_word 29 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_1 30 | , original_element=original_element, corrected_element=corrected_element) 31 | 32 | 33 | self.isCompleted = True 34 | 35 | # add_diagnostics: fungsi untuk menambahkan kesalahan ke dalam daftar kesalahan 36 | # fungsi ini harus dipanggil setiap kali sebuah kesalahan ditemukan 37 | # word: kata awal yang yang mengandung kesalahan 38 | # paragraph: paragraf yang mengandung kesalahan 39 | # error_code: kode kesalahan 40 | # original_element: elemen yang salah 41 | # corrected_element: elemen yang benar 42 | def add_diagnostics(self, word: PySipebiWordDivision, paragraph: PySipebiParagraphDivision, error_code: str 43 | , original_element: str, corrected_element: str): 44 | hasilDiagnosis = PySipebiDiagnosticsError() 45 | hasilDiagnosis.ParagraphNo = paragraph.index 46 | hasilDiagnosis.ElementNo = word.element_no 47 | hasilDiagnosis.OriginalParagraphOffset = paragraph.offset 48 | hasilDiagnosis.PositionOffset = word.position_offset + word.pre_word.length 49 | hasilDiagnosis.CorrectedCharPosition = 0 50 | hasilDiagnosis.IsAmbiguous = False 51 | hasilDiagnosis.ErrorCode = error_code 52 | hasilDiagnosis.OriginalElement = original_element 53 | hasilDiagnosis.CorrectedElement = corrected_element 54 | self.diagList.append(hasilDiagnosis) 55 | 56 | return hasilDiagnosis -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Seputar Urun Daya Sipebi 2 | 3 | ## Pendahuluan 4 | 5 | Semenjak awal tahun 2022, Sipebi resmi diluncurkan sebagai proyek urun daya semi-terbuka. Hal ini dimaksudkan agar masyarakat umum, ahli linguistik, dan ahli TI yang ingin berbagian dalam mengembangkan dan menyempurnakan Sipebi, dapat berbagian dan memiliki cara/platform standar dalam memberikan kontribusi. 6 | 7 | Sebagai proyek urun daya, setiap orang diberikan kesempatan untuk turut berbagian dalam mengembangkan Sipebi dalam kapasitasnya masing-masing 8 | 9 | Sebagai proyek semi-terbuka, data dan kode pemrograman nonkonfidensial Sipebi dibukakan kepada semua masyarakat umum 10 | 11 | Di samping itu, Sipebi versi Beta juga diluncurkan agar masyarakat dapat memiliki akses terhadap pengembangan Sipebi yang belum resmi namun termutakhir. Tidak seperti versi keluaran resmi, Sipebi versi Beta mungkin untuk dimutakhirkan kapan saja ketika terdapat pengembangan maupun fitur uji coba baru di dalam Sipebi, sebelum pengembangan/fitur baru tersebut secara resmi dimasukkan ke dalam Sipebi versi keluaran resmi selanjutnya ketika didapati bahwa fitur tersebut telah bekerja dengan cukup memuaskan 12 | 13 | Sipebi Mini merupakan suatu proyek publik pada laman github yang berisikan versi nonkonfidensial Sipebi resmi yang termutakhir. Sipebi Mini dibuat untuk mengakomodasi kebutuhan pengembang TI yang hendak berbagian dalam mengembangkan Sipebi tanpa perlu memiliki akses ke sumber kode asli Sipebi (yang dilindungi oleh Hak Cipta) 14 | 15 | ## Berkontribusi 16 | 17 | Pastikan Anda memiliki prasyarat berikut: 18 | 19 | 1. Platform desktop dengan [.NET 4.6.2 Targeting Runtime / SDK terpasang](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net462-developer-pack-offline-installer). 20 | 2. Saat bekerja dengan basis kode, sebaiknya gunakan IDE dengan penyelesaian kode cerdas dan penyorotan sintaks, seperti versi terbaru [Visual Studio](https://visualstudio.microsoft.com/), atau [Visual Studio Code](https://code.visualstudio.com//). 21 | 22 | ### Mengunduh Sumber Kode SIPEBI 23 | 24 | Kloning repositori: 25 | 26 | ``` shell 27 | git clone https://github.com/ian5666987/Sipebi-Mini-Sample 28 | cd Sipebi-Mini-Sample 29 | ``` 30 | 31 | Untuk memperbarui kode sumber ke komit terbaru, jalankan perintah berikut di dalam direktori `Sipebi-Mini-Sample`: 32 | 33 | ``` shell 34 | git pull 35 | ``` 36 | 37 | ### Compile Sumber Kode 38 | 39 | Konfigurasi build untuk IDE yang direkomendasikan disertakan. Anda harus menggunakan fungsionalitas Build/Run yang disediakan dari IDE Anda untuk menjalankannya. 40 | 41 | - Pengguna Visual Studio harus memuat proyek melalui file `SipebiMini.Sample.sln`. 42 | 43 | ## Tautan penting 44 | 45 | 1. [Seputar Urun Daya Sipebi](https://kbbi.kemdikbud.go.id/Sipebi/SeputarUrunDaya) 46 | 2. [Sumber Data Terbuka Sipebi](https://docs.google.com/spreadsheets/d/1b6628kbRLqsSM06XuV6iiOnFQXffmfOqMNx_joe_0vQ/edit#gid=0) 47 | 3. [Sipebi Versi Beta](https://kbbi.kemdikbud.go.id/Aplikasi/Sipebi?version=dev) 48 | 49 | ## Lisensi 50 | 51 | Sumber kode Sipebi Mini adalah sepenuhnya kode terbuka, namun menggunakan program penyuntingan (bersumber kode tertutup) yang sama persis dengan Sipebi keluaran resmi. Dengan demkian, Sipebi Mini memiliki fungsi penyuntingan dasar yang sama persis dengan Sipebi keluaran resmi, hanya berbeda di dalam hal tampilan pengguna dan fungsi-fungsi non-penyuntingan lainnya. 52 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/net461/System.Buffers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | System.Buffers 4 | 5 | 6 | 7 | Provides a resource pool that enables reusing instances of type . 8 | The type of the objects that are in the resource pool. 9 | 10 | 11 | Initializes a new instance of the class. 12 | 13 | 14 | Creates a new instance of the class. 15 | A new instance of the class. 16 | 17 | 18 | Creates a new instance of the class using the specifed configuration. 19 | The maximum length of an array instance that may be stored in the pool. 20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. 21 | A new instance of the class with the specified configuration. 22 | 23 | 24 | Retrieves a buffer that is at least the requested length. 25 | The minimum length of the array. 26 | An array of type that is at least minimumLength in length. 27 | 28 | 29 | Returns an array to the pool that was previously obtained using the method on the same instance. 30 | A buffer to return to the pool that was previously obtained using the method. 31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. 32 | 33 | 34 | Gets a shared instance. 35 | A shared instance. 36 | 37 | 38 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/net45/System.Buffers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | System.Buffers 4 | 5 | 6 | 7 | Provides a resource pool that enables reusing instances of type . 8 | The type of the objects that are in the resource pool. 9 | 10 | 11 | Initializes a new instance of the class. 12 | 13 | 14 | Creates a new instance of the class. 15 | A new instance of the class. 16 | 17 | 18 | Creates a new instance of the class using the specifed configuration. 19 | The maximum length of an array instance that may be stored in the pool. 20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. 21 | A new instance of the class with the specified configuration. 22 | 23 | 24 | Retrieves a buffer that is at least the requested length. 25 | The minimum length of the array. 26 | An array of type that is at least minimumLength in length. 27 | 28 | 29 | Returns an array to the pool that was previously obtained using the method on the same instance. 30 | A buffer to return to the pool that was previously obtained using the method. 31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. 32 | 33 | 34 | Gets a shared instance. 35 | A shared instance. 36 | 37 | 38 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/netstandard1.1/System.Buffers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | System.Buffers 4 | 5 | 6 | 7 | Provides a resource pool that enables reusing instances of type . 8 | The type of the objects that are in the resource pool. 9 | 10 | 11 | Initializes a new instance of the class. 12 | 13 | 14 | Creates a new instance of the class. 15 | A new instance of the class. 16 | 17 | 18 | Creates a new instance of the class using the specifed configuration. 19 | The maximum length of an array instance that may be stored in the pool. 20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. 21 | A new instance of the class with the specified configuration. 22 | 23 | 24 | Retrieves a buffer that is at least the requested length. 25 | The minimum length of the array. 26 | An array of type that is at least minimumLength in length. 27 | 28 | 29 | Returns an array to the pool that was previously obtained using the method on the same instance. 30 | A buffer to return to the pool that was previously obtained using the method. 31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. 32 | 33 | 34 | Gets a shared instance. 35 | A shared instance. 36 | 37 | 38 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/lib/netstandard2.0/System.Buffers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | System.Buffers 4 | 5 | 6 | 7 | Provides a resource pool that enables reusing instances of type . 8 | The type of the objects that are in the resource pool. 9 | 10 | 11 | Initializes a new instance of the class. 12 | 13 | 14 | Creates a new instance of the class. 15 | A new instance of the class. 16 | 17 | 18 | Creates a new instance of the class using the specifed configuration. 19 | The maximum length of an array instance that may be stored in the pool. 20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. 21 | A new instance of the class with the specified configuration. 22 | 23 | 24 | Retrieves a buffer that is at least the requested length. 25 | The minimum length of the array. 26 | An array of type that is at least minimumLength in length. 27 | 28 | 29 | Returns an array to the pool that was previously obtained using the method on the same instance. 30 | A buffer to return to the pool that was previously obtained using the method. 31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. 32 | 33 | 34 | Gets a shared instance. 35 | A shared instance. 36 | 37 | 38 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/netstandard1.1/System.Buffers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | System.Buffers 4 | 5 | 6 | 7 | Provides a resource pool that enables reusing instances of type . 8 | The type of the objects that are in the resource pool. 9 | 10 | 11 | Initializes a new instance of the class. 12 | 13 | 14 | Creates a new instance of the class. 15 | A new instance of the class. 16 | 17 | 18 | Creates a new instance of the class using the specifed configuration. 19 | The maximum length of an array instance that may be stored in the pool. 20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. 21 | A new instance of the class with the specified configuration. 22 | 23 | 24 | Retrieves a buffer that is at least the requested length. 25 | The minimum length of the array. 26 | An array of type that is at least minimumLength in length. 27 | 28 | 29 | Returns an array to the pool that was previously obtained using the method on the same instance. 30 | A buffer to return to the pool that was previously obtained using the method. 31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. 32 | 33 | 34 | Gets a shared instance. 35 | A shared instance. 36 | 37 | 38 | -------------------------------------------------------------------------------- /packages/System.Buffers.4.5.1/ref/netstandard2.0/System.Buffers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | System.Buffers 4 | 5 | 6 | 7 | Provides a resource pool that enables reusing instances of type . 8 | The type of the objects that are in the resource pool. 9 | 10 | 11 | Initializes a new instance of the class. 12 | 13 | 14 | Creates a new instance of the class. 15 | A new instance of the class. 16 | 17 | 18 | Creates a new instance of the class using the specifed configuration. 19 | The maximum length of an array instance that may be stored in the pool. 20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. 21 | A new instance of the class with the specified configuration. 22 | 23 | 24 | Retrieves a buffer that is at least the requested length. 25 | The minimum length of the array. 26 | An array of type that is at least minimumLength in length. 27 | 28 | 29 | Returns an array to the pool that was previously obtained using the method on the same instance. 30 | A buffer to return to the pool that was previously obtained using the method. 31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. 32 | 33 | 34 | Gets a shared instance. 35 | A shared instance. 36 | 37 | 38 | -------------------------------------------------------------------------------- /py/diag/PySipebiDiagAturanAngkaBilanganBesar.py: -------------------------------------------------------------------------------- 1 | from .core.PySipebiDiagnosticsBase import PySipebiDiagnosticsBase 2 | from .core.PySipebiDiagnosticsError import PySipebiDiagnosticsError 3 | from .core.PySipebiStructs import PySipebiTextDivision, PySipebiParagraphDivision, PySipebiWordDivision, PySipebiNumericDivision 4 | 5 | class PySipebiDiagAturanAngkaBilanganBesar(PySipebiDiagnosticsBase): 6 | hasSharedResources = True 7 | sharedResourcesOutputKeys = ['sipebi_text_division'] 8 | ERROR_CODE_1 = '[KG05]' 9 | 10 | def setup(self): 11 | self.isReady = True 12 | 13 | def execute_with_shared_resources(self, text, shared_resources): 14 | sipebi_text: PySipebiTextDivision = shared_resources['sipebi_text_division'] # konvensi penamaan: sipebi_text_division 15 | for i, paragraph_div in enumerate(sipebi_text.paragraph_divs): 16 | paragraph: PySipebiParagraphDivision = paragraph_div 17 | for j, word_div in enumerate(paragraph.word_divs): 18 | word: PySipebiWordDivision = word_div 19 | 20 | # TODO: implementasi aturan angka bilangan besar 21 | if not isinstance(word, PySipebiNumericDivision): 22 | continue 23 | dot_index = word.clean_word_string.find('.') 24 | if dot_index != -1: 25 | if word.greater_than(9999): 26 | dot_index = word.clean_word_string.find('.') 27 | count_dot = word.clean_word_string.count('.') 28 | string_repr = "" 29 | if count_dot == 1: 30 | string_repr = "ribu" 31 | elif count_dot == 2: 32 | string_repr = "juta" 33 | elif count_dot == 3: 34 | string_repr = "miliar" 35 | elif count_dot == 4: 36 | string_repr = "triliun" 37 | 38 | original_element = word.clean_word_string 39 | corrected_element = word.clean_word_string[:dot_index] + " " + string_repr 40 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_1 41 | , original_element=original_element, corrected_element=corrected_element) 42 | 43 | self.isCompleted = True 44 | 45 | # add_diagnostics: fungsi untuk menambahkan kesalahan ke dalam daftar kesalahan 46 | # fungsi ini harus dipanggil setiap kali sebuah kesalahan ditemukan 47 | # word: kata awal yang yang mengandung kesalahan 48 | # paragraph: paragraf yang mengandung kesalahan 49 | # error_code: kode kesalahan 50 | # original_element: elemen yang salah 51 | # corrected_element: elemen yang benar 52 | def add_diagnostics(self, word: PySipebiWordDivision, paragraph: PySipebiParagraphDivision, error_code: str 53 | , original_element: str, corrected_element: str): 54 | hasilDiagnosis = PySipebiDiagnosticsError() 55 | hasilDiagnosis.ParagraphNo = paragraph.index 56 | hasilDiagnosis.ElementNo = word.element_no 57 | hasilDiagnosis.OriginalParagraphOffset = paragraph.offset 58 | hasilDiagnosis.PositionOffset = word.position_offset + word.pre_word.length 59 | hasilDiagnosis.CorrectedCharPosition = 0 60 | hasilDiagnosis.IsAmbiguous = False 61 | hasilDiagnosis.ErrorCode = error_code 62 | hasilDiagnosis.OriginalElement = original_element 63 | hasilDiagnosis.CorrectedElement = corrected_element 64 | self.diagList.append(hasilDiagnosis) 65 | 66 | return hasilDiagnosis -------------------------------------------------------------------------------- /py/diag/PySipebiDiagAturanPartikelPun.py: -------------------------------------------------------------------------------- 1 | from .core.PySipebiDiagnosticsBase import PySipebiDiagnosticsBase 2 | from .core.PySipebiDiagnosticsError import PySipebiDiagnosticsError 3 | from .core.PySipebiStructs import PySipebiTextDivision, PySipebiParagraphDivision, PySipebiWordDivision 4 | 5 | class PySipebiDiagAturanPartikelPun(PySipebiDiagnosticsBase): 6 | hasSharedResources = True 7 | sharedResourcesOutputKeys = ['sipebi_text_division'] 8 | ERROR_CODE_1 = '[KE02]' 9 | ERROR_CODE_2 = '[KE03]' 10 | nama_fail_daftar_partikel_pun = "data_partikel_pun.txt" 11 | fileResourceNames = [nama_fail_daftar_partikel_pun] 12 | daftar_partikel_pun = [] 13 | 14 | def setup(self): 15 | self.isReady = True 16 | 17 | def execute_with_shared_resources(self, text, shared_resources): 18 | file = self.read_file(self.nama_fail_daftar_partikel_pun, shared_resources) 19 | 20 | self.daftar_partikel_pun = file.split('\r\n') 21 | 22 | 23 | sipebi_text: PySipebiTextDivision = shared_resources['sipebi_text_division'] # konvensi penamaan: sipebi_text_division 24 | for i, paragraph_div in enumerate(sipebi_text.paragraph_divs): 25 | paragraph: PySipebiParagraphDivision = paragraph_div 26 | for j, word_div in enumerate(paragraph.word_divs): 27 | word: PySipebiWordDivision = word_div 28 | 29 | # TODO: implementasi aturan partikel pun 30 | next_word = word.next_word_div 31 | 32 | if word.ended_with("pun") and len(word.clean_word_string) > len("pun"): 33 | if not word.clean_word_string in self.daftar_partikel_pun: 34 | original_element = word.clean_word_string 35 | corrected_element = word.clean_word_string[:-3] + " pun" 36 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_2 37 | , original_element=original_element, corrected_element=corrected_element) 38 | 39 | elif next_word and (next_word.pre_clean_word.lower() == "pun"): 40 | if word.clean_word_string.lower() + next_word.pre_clean_word.lower() in self.daftar_partikel_pun: 41 | original_element = word.clean_word_string + " " + next_word.pre_clean_word 42 | corrected_element = word.clean_word_string + next_word.pre_clean_word 43 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_1 44 | , original_element=original_element, corrected_element=corrected_element) 45 | 46 | self.isCompleted = True 47 | 48 | # add_diagnostics: fungsi untuk menambahkan kesalahan ke dalam daftar kesalahan 49 | # fungsi ini harus dipanggil setiap kali sebuah kesalahan ditemukan 50 | # word: kata awal yang yang mengandung kesalahan 51 | # paragraph: paragraf yang mengandung kesalahan 52 | # error_code: kode kesalahan 53 | # original_element: elemen yang salah 54 | # corrected_element: elemen yang benar 55 | def add_diagnostics(self, word: PySipebiWordDivision, paragraph: PySipebiParagraphDivision, error_code: str 56 | , original_element: str, corrected_element: str): 57 | hasilDiagnosis = PySipebiDiagnosticsError() 58 | hasilDiagnosis.ParagraphNo = paragraph.index 59 | hasilDiagnosis.ElementNo = word.element_no 60 | hasilDiagnosis.OriginalParagraphOffset = paragraph.offset 61 | hasilDiagnosis.PositionOffset = word.position_offset + word.pre_word.length 62 | hasilDiagnosis.CorrectedCharPosition = 0 63 | hasilDiagnosis.IsAmbiguous = False 64 | hasilDiagnosis.ErrorCode = error_code 65 | hasilDiagnosis.OriginalElement = original_element 66 | hasilDiagnosis.CorrectedElement = corrected_element 67 | self.diagList.append(hasilDiagnosis) 68 | 69 | return hasilDiagnosis -------------------------------------------------------------------------------- /py/diag/README.md: -------------------------------------------------------------------------------- 1 | ## Cara Membuat Skrip Diagnostics Sipebi Mini dalam Bahasa Python 2 | 3 | ### Pendahuluan 4 | Skrip Diagnostic pada Sipebi Mini merupakan skrip yang digunakan untuk memeriksa kesalahan aturan ejaan pada Sipebi Mini. Selain bisa membuat skrip diagnostic dalam bahasa C#, Sipebi Mini juga mendukung pembuatan skrip diagnostic dalam bahasa Python. Folder `py/diag/` pada Sipebi Mini berisikan segala sesuatu yang berhubungan dengan pengerjaan skrip diagnostic dalam bahasa Python. Jika ingin membuat skrip diagnosis dalam bahasa Python, Anda diharapkan hanya fokus pada folder `py/diag/` saja dan file `App.config` pada yang terletak pada root folder `Sipebi-Mini-Sample`. Terdapat beberapa folder dan file yang terletak pada folder `py/diag/`, yaitu: 5 | 6 | 1. Folder `core`: Folder yang berisikan file-file yang berhubungan dengan fungsi-fungsi dasar yang digunakan oleh skrip diagnostic dalam bahasa Python. 7 | 2. Folder `data`: Folder yang berisikan file-file yang berhubungan dengan data yang digunakan oleh skrip diagnostic dalam bahasa Python. 8 | 3. Folder `libs`: Folder yang berisikan file-file yang berhubungan dengan pustaka-pustaka pembantu yang digunakan oleh skrip diagnostic dalam bahasa Python. 9 | 4. File `PySipebiDiagExample.py`: File yang berisikan contoh skrip diagnostic dalam bahasa Python. 10 | 11 | ### Memahami Struktur Skrip Diagnostic dalam Bahasa Python 12 | Sebelum masuk kepada tahap pembuatan skrip diagnostic dalam bahasa Python, Anda diharapkan memahami struktur skrip diagnostic dalam bahasa Python terlebih dahulu. 13 | 14 | Pada folder `core` terdapat beberapa file yang berisikan fungsi-fungsi dasar yang digunakan oleh skrip diagnostic dalam bahasa Python. File-file tersebut adalah: 15 | 1. File `PySipebiDiagnosticsBase.py`: File ini berisikan sebuah base class dari skrip - skrip diagnostics yang akan Anda buat. File ini berisikan fungsi-fungsi dasar yang digunakan oleh skrip diagnostic dalam bahasa Python. File ini juga berisikan fungsi-fungsi yang akan dipanggil oleh Sipebi Mini untuk menjalankan skrip diagnostic yang Anda buat. Luangkan waktu Anda untuk membaca file ini dan memahami fungsi-fungsi yang terdapat pada file ini. 16 | 2. File `PySipebiDiagnosticsError.py`: File ini berisikan sebuah class yang akan merepresentasikan kesalahan aturan ejaan yang ada pada teks. Satu kesalahan aturan ejaan berarti satu objek class ini. Semua atribut yang ada pada class pada file ini harus diisi semua dengan benar agar skrip diagnostic yang Anda buat dapat berjalan dengan baik. Luangkan waktu Anda untuk membaca file ini dan memahami fungsi-fungsi yang terdapat pada file ini. 17 | 18 | ### Membuat Skrip Diagnostic dalam Bahasa Python 19 | Setelah memahami struktur skrip diagnostic dalam bahasa Python, Anda dapat membuat skrip diagnostic dalam bahasa Python. Untuk membuat skrip diagnostic dalam bahasa Python, Anda diharapkan melakukan langkah-langkah berikut: 20 | 21 | 1. Membuat Sebuah file skrip diagnosis untuk masing - masing aturan ejaan yang ada dengan konvensi nama `PySipebiDiag.py`.Contohnya, `PySipebiDiagPerbaikanKataHubung.py` untuk aturan ejaan perbaikan kata hubung. Pada file ini, buatlah sebuah class yang namanya sama dengan filenya tanpa ekstensi `.py`. Class yang Anda buat **harus** *extends* dari class `PySipebiDiagnosticsBase`. Setelah itu, Anda harus melakukan *override* pada seluruh *method* yang ada pada class `PySipebiDiagnosticsBase`. Anda dapat melihat contoh pada file `PySipebiDiagExample.py` untuk lebih jelasnya. 22 | 23 | 2. Setelah Anda membuat sebuah skrip diagnostic, agar skrip yang Anda buat dijalankan oleh Sipebi Mini, Anda harus menambahkan sebuah *entry* pada file `App.config` yang terletak pada root folder `Sipebi-Mini-Sample`. Anda harus menaruh nama file skrip diagnostics Andas pada properti `value` dengan `key PyDiagnosticsScripts`. Selain itu, Anda juga harus memasukan aturan ejaan baru yang Anda buat pada file `daftar-diagnosis-tambahan.xml` yang terletak pada `bin/Debug`. Tag `ErrorCode` pada file xml tersebut nilainya harus sama dengan error code yang Anda tulis pada file diagnosis Anda. Anda dapat melihat contoh pada file `daftar-diagnosis-tambahan.xml` untuk lebih jelasnya. 24 | 25 | 3. Sebelum menjalankan aplikasi SipebiMini untuk mencoba skrip yang Anda buat, Anda harus menjalankan file `initiator.bat` yang bertujuan untuk menduplikasi file skrip Anda ke dalam folder `bin/debug`. Setelah menjalankan file `initiator.bat`, Anda dapat menjalankan aplikasi SipebiMini untuk mencoba skrip yang Anda buat. -------------------------------------------------------------------------------- /py/PySipebiDiagAturanPartikelPun_Val.py: -------------------------------------------------------------------------------- 1 | # All validation class must be derived from PySipebiMiniValidationBase 2 | from PySipebiMiniValidationBase import PySipebiMiniValidationBase 3 | from diag.PySipebiDiagAturanPartikelPun import PySipebiDiagAturanPartikelPun 4 | from diag.core.PySipebiStructs import PySipebiTextDivision 5 | from PySipebiCommonValidationRunner import PySipebiCommonValidationRunner 6 | 7 | class PySipebiDiagAturanPartikelPun_Val(PySipebiMiniValidationBase): 8 | # Additional properties which are not in the base class 9 | isInputFileAvailable = False # Just an example 10 | commonMistakeFound = False # Just an example 11 | specialMistakeFound = False # Just an example 12 | 13 | # Values of base class properties requiring different default values 14 | diagScriptFileName = 'PySipebiDiagAturanPartikelPun.py' 15 | sipebiErrorCodes = ['[KE02]', '[KE03]'] 16 | 17 | # Shared resources and output-related properties 18 | hasSharedResources = True 19 | # file resources that are taken from py\data\ folder 20 | fileResourceNames = \ 21 | ['PySipebiDiagAturanPartikelPun_common_check.txt', 22 | 'PySipebiDiagAturanPartikelPun_test.txt', 23 | 'diag/data_partikel_pun.txt'] 24 | # the output file name of this validation script 25 | outputFilename = 'PySipebiDiagAturanPartikelPun_result.txt' 26 | 27 | # Supposing there is no override needed in the setup, init_changing_vars, and write_output_content methods 28 | # We will only need to override execute method as shown below 29 | def execute_with_shared_resources(self, shared_resources): 30 | # Some initialization here 31 | # re-initialize all the variables (to clear the results from the previous call) 32 | self.init_changing_vars() 33 | 34 | self.isInputFileAvailable = True 35 | self.commonMistakeFound = False 36 | self.specialMistakeFound = False 37 | 38 | # Wrap the whole mechanism except for write_output_content in a single try-except block 39 | try: 40 | if not self.isInputFileAvailable: 41 | self.failReason = 'the input file is not found' 42 | return # Return immediately as nothing else can be done if there is no input file 43 | 44 | # Here, parse the common_guide text 45 | self.parse_common_check_python(shared_resources) 46 | 47 | # Run the diagnostics script here 48 | diag_script = PySipebiDiagAturanPartikelPun() 49 | test_file = shared_resources.get('PySipebiDiagAturanPartikelPun_test.txt') 50 | 51 | sipebi_text_division = PySipebiTextDivision(test_file) 52 | shared_resources['sipebi_text_division'] = sipebi_text_division 53 | 54 | diag_script.execute_with_shared_resources(test_file, shared_resources) 55 | 56 | counter = 0 57 | for diag in diag_script.diagList: 58 | if diag.ErrorCode in self.sipebiErrorCodes: 59 | checkDiag = self.commonCheckDiagnosticsErrors[counter] 60 | if diag.ElementNo == checkDiag.ElementNo and diag.ParagraphNo == checkDiag.ParagraphNo and diag.OriginalElement == checkDiag.OriginalElement: 61 | if diag.CorrectedElement != checkDiag.CorrectedElement: 62 | self.commonMistakes.append(f"P{diag.ParagraphNo} E{diag.ElementNo} | Expected '{checkDiag.CorrectedElement}' but got '{diag.CorrectedElement}'") 63 | 64 | counter += 1 65 | 66 | for i in range(counter, len(self.commonCheckDiagnosticsErrors)): 67 | self.commonMistakes.append(f"P{self.commonCheckDiagnosticsErrors[i].ParagraphNo} E{self.commonCheckDiagnosticsErrors[i].ElementNo} | Expected '{self.commonCheckDiagnosticsErrors[i].OriginalElement} => {self.commonCheckDiagnosticsErrors[i].CorrectedElement}' but not detected") 68 | 69 | # Check the conditions to consider that the validation result is 'pass' or 'fail' 70 | self.isPassed = len(self.commonMistakes) == 0 and len(self.specialMistakes) == 0 71 | 72 | # If we reach this point, the validation has been executed successfully 73 | # Mark the execution as completed successfully, emptied out all mistakes for the next call 74 | self.isCompleted = True 75 | 76 | except Exception as e: # catch essentially all exceptions, NOT the best practice but is sufficient for an example 77 | self.isCompleted = False 78 | self.failReason = 'Exception: ' + str(e.args) 79 | 80 | self.write_output_content_python() 81 | 82 | if __name__ == "__main__": 83 | validation_runner = PySipebiCommonValidationRunner(PySipebiDiagAturanPartikelPun_Val) 84 | validation_runner.setup_and_run_validation() -------------------------------------------------------------------------------- /Files/daftar-diagnosis-tambahan.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [Buatan-KPS-D] 5 | [Buatan] Kesalahan Penulisan Singkat (Definit) 6 | [Buatan] Kata yang digunakan merupakan bentuk penulisan singkat(an) yang tidak baku - biasa hanya dipakai dalam bentuk percakapan tertulis 7 | 1.1.0.0 8 | true 9 | 10 | 11 | [Buatan-KPS-A] 12 | [Buatan] Kesalahan Penulisan Singkat (Ambigu) 13 | [Buatan] Kata yang digunakan mungkin merupakan bentuk penulisan singkat(an) yang tidak baku - biasa hanya dipakai dalam bentuk percakapan tertulis 14 | 1.1.0.0 15 | true 16 | 17 | 18 | [Kode Contoh A] 19 | [Contoh] Contoh Kode Kesalahan A 20 | [Contoh] Contoh penjelasan kode kesalahan A 21 | 1.2.0.0 22 | true 23 | 24 | 25 | [Kode Contoh B] 26 | [Contoh] Contoh Kode Kesalahan B 27 | [Contoh] Contoh penjelasan kode kesalahan B 28 | 1.2.0.0 29 | true 30 | 31 | 32 | [TB07] 33 | Tanda koma digunakan untuk memisahkan petikan langsung dari bagian lain dalam kalimat 34 | Tanda koma digunakan untuk memisahkan petikan langsung dari bagian lain dalam kalimat 35 | 1.2.0.0 36 | false 37 | 38 | 39 | [TB08] 40 | Tanda koma tidak digunakan untuk memisahkan petikan langsung yang diakhiri tanda tanya atau tanda seru dari bagian kalimat yang mengikutinya 41 | Tanda koma tidak digunakan untuk memisahkan petikan langsung yang diakhiri tanda tanya atau tanda seru dari bagian kalimat yang mengikutinya 42 | 1.2.0.0 43 | false 44 | 45 | 46 | [KE01] 47 | Partikel -lah, -kah, dan -tah ditulis serangkai dengan kata yang mendahuluinya 48 | Partikel -lah, -kah, dan -tah ditulis serangkai dengan kata yang mendahuluinya 49 | 1.2.0.0 50 | false 51 | 52 | 53 | [KE02] 54 | Partikel pun ditulis terpisah dari kata yang mendahuluinya 55 | Partikel pun ditulis terpisah dari kata yang mendahuluinya 56 | 1.2.0.0 57 | false 58 | 59 | 60 | [KE03] 61 | Bentuk pun yang merupakan bagian kata penghubung seperti berikut ditulis serangkai 62 | Bentuk pun yang merupakan bagian kata penghubung seperti berikut ditulis serangkai 63 | 1.2.0.0 64 | false 65 | 66 | 67 | [KG05] 68 | Angka yang menunjukkan bilangan besar dapat ditulis sebagian dengan huruf supaya lebih mudah dibaca 69 | Angka yang menunjukkan bilangan besar dapat ditulis sebagian dengan huruf supaya lebih mudah dibaca 70 | 1.2.0.0 71 | false 72 | 73 | 74 | [Kode Contoh R] 75 | [Contoh] Contoh Kode Kesalahan R 76 | [Contoh] Kode ini muncul jika file resource dapat terbaca dengan sempurna 77 | 1.2.0.0 78 | true 79 | 80 | -------------------------------------------------------------------------------- /py/PySipebiDiagAturanPartikelLahKahTah_Val.py: -------------------------------------------------------------------------------- 1 | # All validation class must be derived from PySipebiMiniValidationBase 2 | from PySipebiMiniValidationBase import PySipebiMiniValidationBase 3 | from diag.PySipebiDiagAturanPartikelLahKahTah import PySipebiDiagAturanPartikelLahKahTah 4 | from diag.core.PySipebiStructs import PySipebiTextDivision 5 | from PySipebiCommonValidationRunner import PySipebiCommonValidationRunner 6 | 7 | class PySipebiDiagAturanPartikelLahKahTah_Val(PySipebiMiniValidationBase): 8 | # Additional properties which are not in the base class 9 | isInputFileAvailable = False # Just an example 10 | commonMistakeFound = False # Just an example 11 | specialMistakeFound = False # Just an example 12 | 13 | # Values of base class properties requiring different default values 14 | diagScriptFileName = 'PySipebiDiagAturanPartikelLahKahTah.py' 15 | sipebiErrorCodes = ['[KE01]'] 16 | 17 | # Shared resources and output-related properties 18 | hasSharedResources = True 19 | # file resources that are taken from py\data\ folder 20 | fileResourceNames = \ 21 | ['PySipebiDiagAturanPartikelLahKahTah_common_check.txt', 22 | 'PySipebiDiagAturanPartikelLahKahTah_test.txt'] 23 | # the output file name of this validation script 24 | outputFilename = 'PySipebiDiagAturanPartikelLahKahTah_result.txt' 25 | 26 | # Supposing there is no override needed in the setup, init_changing_vars, and write_output_content methods 27 | # We will only need to override execute method as shown below 28 | def execute_with_shared_resources(self, shared_resources): 29 | # Some initialization here 30 | # re-initialize all the variables (to clear the results from the previous call) 31 | self.init_changing_vars() 32 | 33 | self.isInputFileAvailable = True 34 | self.commonMistakeFound = False 35 | self.specialMistakeFound = False 36 | 37 | # Wrap the whole mechanism except for write_output_content in a single try-except block 38 | try: 39 | if not self.isInputFileAvailable: 40 | self.failReason = 'the input file is not found' 41 | return # Return immediately as nothing else can be done if there is no input file 42 | 43 | # Here, parse the common_guide text 44 | self.parse_common_check_python(shared_resources) 45 | 46 | # Run the diagnostics script here 47 | diag_script = PySipebiDiagAturanPartikelLahKahTah() 48 | # TODO read test input file here and execute the diagnostics script using the test input file [PySipebiDiagExample_test.txt] 49 | test_file = shared_resources.get('PySipebiDiagAturanPartikelLahKahTah_test.txt') 50 | 51 | sipebi_text_division = PySipebiTextDivision(test_file) 52 | shared_resources['sipebi_text_division'] = sipebi_text_division 53 | 54 | diag_script.execute_with_shared_resources(test_file, shared_resources) 55 | 56 | counter = 0 57 | for diag in diag_script.diagList: 58 | if diag.ErrorCode in self.sipebiErrorCodes: 59 | checkDiag = self.commonCheckDiagnosticsErrors[counter] 60 | if diag.ElementNo == checkDiag.ElementNo and diag.ParagraphNo == checkDiag.ParagraphNo and diag.OriginalElement == checkDiag.OriginalElement: 61 | if diag.CorrectedElement != checkDiag.CorrectedElement: 62 | self.commonMistakes.append(f"P{diag.ParagraphNo} E{diag.ElementNo} | Expected '{checkDiag.CorrectedElement}' but got '{diag.CorrectedElement}'") 63 | 64 | counter += 1 65 | 66 | for i in range(counter, len(self.commonCheckDiagnosticsErrors)): 67 | self.commonMistakes.append(f"P{self.commonCheckDiagnosticsErrors[i].ParagraphNo} E{self.commonCheckDiagnosticsErrors[i].ElementNo} | Expected '{self.commonCheckDiagnosticsErrors[i].OriginalElement} => {self.commonCheckDiagnosticsErrors[i].CorrectedElement}' but not detected") 68 | 69 | # Check the conditions to consider that the validation result is 'pass' or 'fail' 70 | self.isPassed = len(self.commonMistakes) == 0 and len(self.specialMistakes) == 0 71 | 72 | # If we reach this point, the validation has been executed successfully 73 | # Mark the execution as completed successfully, emptied out all mistakes for the next call 74 | self.isCompleted = True 75 | 76 | except Exception as e: # catch essentially all exceptions, NOT the best practice but is sufficient for an example 77 | self.isCompleted = False 78 | self.failReason = 'Exception: ' + str(e.args) 79 | 80 | self.write_output_content_python() 81 | 82 | if __name__ == "__main__": 83 | validation_runner = PySipebiCommonValidationRunner(PySipebiDiagAturanPartikelLahKahTah_Val) 84 | validation_runner.setup_and_run_validation() -------------------------------------------------------------------------------- /py/PySipebiDiagAturanAngkaBilanganBesar_Val.py: -------------------------------------------------------------------------------- 1 | # All validation class must be derived from PySipebiMiniValidationBase 2 | from PySipebiMiniValidationBase import PySipebiMiniValidationBase 3 | from diag.PySipebiDiagAturanAngkaBilanganBesar import PySipebiDiagAturanAngkaBilanganBesar 4 | from diag.core.PySipebiStructs import PySipebiTextDivision 5 | from PySipebiCommonValidationRunner import PySipebiCommonValidationRunner 6 | 7 | class PySipebiDiagAturanAngkaBilanganBesar_Val(PySipebiMiniValidationBase): 8 | # Additional properties which are not in the base class 9 | isInputFileAvailable = False # Just an example 10 | commonMistakeFound = False # Just an example 11 | specialMistakeFound = False # Just an example 12 | 13 | # Values of base class properties requiring different default values 14 | diagScriptFileName = 'PySipebiDiagAturanAngkaBilanganBesar_Val.py' 15 | sipebiErrorCodes = ['[KG05]'] 16 | 17 | # Shared resources and output-related properties 18 | hasSharedResources = True 19 | # file resources that are taken from py\data\ folder 20 | fileResourceNames = \ 21 | ['PySipebiDiagAturanAngkaBilanganBesaR_common_check.txt', 22 | 'PySipebiDiagAturanAngkaBilanganBesar_test.txt'] 23 | # the output file name of this validation script 24 | outputFilename = 'PySipebiDiagAturanAngkaBilanganBesar_result.txt' 25 | 26 | # Supposing there is no override needed in the setup, init_changing_vars, and write_output_content methods 27 | # We will only need to override execute method as shown below 28 | def execute_with_shared_resources(self, shared_resources): 29 | # Some initialization here 30 | # re-initialize all the variables (to clear the results from the previous call) 31 | self.init_changing_vars() 32 | 33 | self.isInputFileAvailable = True 34 | self.commonMistakeFound = False 35 | self.specialMistakeFound = False 36 | 37 | # Wrap the whole mechanism except for write_output_content in a single try-except block 38 | try: 39 | if not self.isInputFileAvailable: 40 | self.failReason = 'the input file is not found' 41 | return # Return immediately as nothing else can be done if there is no input file 42 | 43 | # Here, parse the common_guide text 44 | self.parse_common_check_python(shared_resources) 45 | 46 | # Run the diagnostics script here 47 | diag_script = PySipebiDiagAturanAngkaBilanganBesar() 48 | # TODO read test input file here and execute the diagnostics script using the test input file [PySipebiDiagExample_test.txt] 49 | test_file = shared_resources.get('PySipebiDiagAturanAngkaBilanganBesar_test.txt') 50 | 51 | sipebi_text_division = PySipebiTextDivision(test_file) 52 | shared_resources['sipebi_text_division'] = sipebi_text_division 53 | 54 | diag_script.execute_with_shared_resources(test_file, shared_resources) 55 | 56 | counter = 0 57 | for diag in diag_script.diagList: 58 | if diag.ErrorCode in self.sipebiErrorCodes: 59 | checkDiag = self.commonCheckDiagnosticsErrors[counter] 60 | if diag.ElementNo == checkDiag.ElementNo and diag.ParagraphNo == checkDiag.ParagraphNo and diag.OriginalElement == checkDiag.OriginalElement: 61 | if diag.CorrectedElement != checkDiag.CorrectedElement: 62 | self.commonMistakes.append(f"P{diag.ParagraphNo} E{diag.ElementNo} | Expected '{checkDiag.CorrectedElement}' but got '{diag.CorrectedElement}'") 63 | 64 | counter += 1 65 | 66 | for i in range(counter, len(self.commonCheckDiagnosticsErrors)): 67 | self.commonMistakes.append(f"P{self.commonCheckDiagnosticsErrors[i].ParagraphNo} E{self.commonCheckDiagnosticsErrors[i].ElementNo} | Expected '{self.commonCheckDiagnosticsErrors[i].OriginalElement} => {self.commonCheckDiagnosticsErrors[i].CorrectedElement}' but not detected") 68 | 69 | # Check the conditions to consider that the validation result is 'pass' or 'fail' 70 | self.isPassed = len(self.commonMistakes) == 0 and len(self.specialMistakes) == 0 71 | 72 | # If we reach this point, the validation has been executed successfully 73 | # Mark the execution as completed successfully, emptied out all mistakes for the next call 74 | self.isCompleted = True 75 | 76 | except Exception as e: # catch essentially all exceptions, NOT the best practice but is sufficient for an example 77 | self.isCompleted = False 78 | self.failReason = 'Exception: ' + str(e.args) 79 | 80 | self.write_output_content_python() 81 | 82 | if __name__ == "__main__": 83 | validation_runner = PySipebiCommonValidationRunner(PySipebiDiagAturanAngkaBilanganBesar_Val) 84 | validation_runner.setup_and_run_validation() -------------------------------------------------------------------------------- /py/PySipebiDiagExample_Val.py: -------------------------------------------------------------------------------- 1 | # All validation class must be derived from PySipebiMiniValidationBase 2 | from PySipebiMiniValidationBase import PySipebiMiniValidationBase 3 | # Below are references to the diagnostics classes associated with this validation, change accordingly 4 | from diag.PySipebiDiagExample import PySipebiDiagExample 5 | from diag.core.PySipebiDiagnosticsError import PySipebiDiagnosticsError 6 | 7 | # An example of Sipebi Mini validation script 8 | # All Sipebi Mini validation script must be derived from PySipebiMiniValidationBase 9 | class PySipebiDiagExample_Val(PySipebiMiniValidationBase): 10 | # Additional properties which are not in the base class 11 | isInputFileAvailable = False # Just an example 12 | commonMistakeFound = False # Just an example 13 | specialMistakeFound = False # Just an example 14 | 15 | # Values of base class properties requiring different default values 16 | diagScriptFileName = 'PySipebiDiagExample.py' 17 | sipebiErrorCodes = ['KH01', 'KH02', 'Sipebi Error 1'] 18 | 19 | # Shared resources and output-related properties 20 | hasSharedResources = True 21 | # file resources that are taken from py\data\ folder 22 | fileResourceNames = \ 23 | ['initial_file_resource_example.txt', 24 | 'PySipebiPerbaikanKataHubung_common_check.txt', 25 | 'PySipebiPerbaikanKataHubung_test.txt'] 26 | # file resources that are taken from py\diag\data\ folder instead of from data folder 27 | diagFileResourceNames = ['initial_diag_file_resource_example.txt'] 28 | # the output file name of this validation script 29 | outputFilename = 'PySipebiPerbaikanKataHubung_result.txt' 30 | 31 | # Supposing there is no override needed in the setup, init_changing_vars, and write_output_content methods 32 | # We will only need to override execute method as shown below 33 | def execute_with_shared_resources(self, shared_resources): 34 | # Some initialization here 35 | # re-initialize all the variables (to clear the results from the previous call) 36 | self.init_changing_vars() 37 | 38 | self.isInputFileAvailable = False 39 | self.commonMistakeFound = False 40 | self.specialMistakeFound = False 41 | 42 | # Wrap the whole mechanism except for write_output_content in a single try-except block 43 | try: 44 | # Some setup and checking here (i.e. the checking and getting of input files) 45 | # Input files: [PySipebiDiagExample_test.txt] + [PySipebiDiagExample_common_guide.txt] + other files needed for this validation 46 | # Supposing the input file cannot be found for some reason 47 | if not self.isInputFileAvailable: 48 | self.failReason = 'the input file is not found' 49 | return # Return immediately as nothing else can be done if there is no input file 50 | 51 | # Here, parse the common_guide text 52 | self.parse_common_check(shared_resources) 53 | 54 | # Run the diagnostics script here 55 | diag_script = PySipebiDiagExample() 56 | # TODO read test input file here and execute the diagnostics script using the test input file [PySipebiDiagExample_test.txt] 57 | diag_script.execute('Replace this with validation test text (i.e. content of [PySipebiDiagExample_test.txt])') 58 | 59 | # Here, make use of diag_script.diagList to identify common mistake(s) and special mistake(s) 60 | # Compare them with the expected results self.commonCheckDiagnosticsErrors 61 | # TODO put clearer example here if needed 62 | 63 | # Suppose common mistake(s) is(are) found 64 | if self.commonMistakeFound: 65 | # Add the common mistake(s) to the list 66 | self.commonMistakes.add('diagnostics index [1] [berhari hari] is not generated by [' + self.diagScriptFileName + ']') 67 | self.commonMistakes.add('[IsAmbiguous] value for diagnostics index [2] [Kurukuru, -> kuru-kuru,] is [False]. Excpected: [True]') 68 | 69 | # Suppose special mistake(s) is(are) found 70 | if self.specialMistakeFound: 71 | # Add the special mistake(s) to the list 72 | self.specialMistakes.add('special comments for special mistakes here') 73 | 74 | # Check the conditions to consider that the validation result is 'pass' or 'fail' 75 | self.isPassed = len(self.commonMistakes) == 0 and len(self.specialMistakes) == 0 76 | 77 | # If we reach this point, the validation has been executed successfully 78 | # Mark the execution as completed successfully, emptied out all mistakes for the next call 79 | self.isCompleted = True 80 | 81 | except Exception as e: # catch essentially all exceptions, NOT the best practice but is sufficient for an example 82 | self.isCompleted = False 83 | self.failReason = 'Exception: ' + str(e.args) 84 | 85 | # Write the validation result to a text file using default (base) method 86 | self.write_output_content() 87 | -------------------------------------------------------------------------------- /py/PySipebiDiagAturanTandaBacaPadaDialog_Val.py: -------------------------------------------------------------------------------- 1 | # All validation class must be derived from PySipebiMiniValidationBase 2 | from PySipebiMiniValidationBase import PySipebiMiniValidationBase 3 | from diag.PySipebiDiagAturanTandaBacaPadaDialog import PySipebiDiagAturanTandaBacaPadaDialog 4 | from diag.core.PySipebiStructs import PySipebiTextDivision 5 | from PySipebiCommonValidationRunner import PySipebiCommonValidationRunner 6 | 7 | class PySipebiDiagAturanTandaBacaPadaDialog_Val(PySipebiMiniValidationBase): 8 | # Additional properties which are not in the base class 9 | isInputFileAvailable = False # Just an example 10 | commonMistakeFound = False # Just an example 11 | specialMistakeFound = False # Just an example 12 | 13 | # Values of base class properties requiring different default values 14 | diagScriptFileName = 'PySipebiDiagAturanTandaBacaPadaDialog.py' 15 | sipebiErrorCodes = ['[TB07]', '[TB08]'] 16 | 17 | # Shared resources and output-related properties 18 | hasSharedResources = True 19 | # file resources that are taken from py\data\ folder 20 | fileResourceNames = \ 21 | ['PySipebiDiagAturanTandaBacaPadaDialog_common_check.txt', 22 | 'PySipebiDiagAturanTandaBacaPadaDialog_test.txt'] 23 | # the output file name of this validation script 24 | outputFilename = 'PySipebiDiagAturanTandaBacaPadaDialog_result.txt' 25 | 26 | # Supposing there is no override needed in the setup, init_changing_vars, and write_output_content methods 27 | # We will only need to override execute method as shown below 28 | def execute_with_shared_resources(self, shared_resources): 29 | # Some initialization here 30 | # re-initialize all the variables (to clear the results from the previous call) 31 | self.init_changing_vars() 32 | 33 | self.isInputFileAvailable = True 34 | self.commonMistakeFound = False 35 | self.specialMistakeFound = False 36 | 37 | # Wrap the whole mechanism except for write_output_content in a single try-except block 38 | try: 39 | if not self.isInputFileAvailable: 40 | self.failReason = 'the input file is not found' 41 | return # Return immediately as nothing else can be done if there is no input file 42 | 43 | # Here, parse the common_guide text 44 | self.parse_common_check_python(shared_resources) 45 | 46 | # Run the diagnostics script here 47 | diag_script = PySipebiDiagAturanTandaBacaPadaDialog() 48 | # TODO read test input file here and execute the diagnostics script using the test input file [PySipebiDiagExample_test.txt] 49 | test_file = shared_resources.get('PySipebiDiagAturanTandaBacaPadaDialog_test.txt') 50 | 51 | sipebi_text_division = PySipebiTextDivision(test_file) 52 | shared_resources['sipebi_text_division'] = sipebi_text_division 53 | 54 | diag_script.execute_with_shared_resources(test_file, shared_resources) 55 | 56 | # TODO put clearer example here if needed 57 | counter = 0 58 | for diag in diag_script.diagList: 59 | if diag.ErrorCode in self.sipebiErrorCodes: 60 | # compare with self.commonCheckDiagnosticsErrors 61 | # self.commonCheckDiagnosticsErrors is a list of PySipebiDiagnosticsError 62 | # code 63 | checkDiag = self.commonCheckDiagnosticsErrors[counter] 64 | if diag.ElementNo == checkDiag.ElementNo and diag.ParagraphNo == checkDiag.ParagraphNo and diag.OriginalElement == checkDiag.OriginalElement: 65 | if diag.CorrectedElement != checkDiag.CorrectedElement: 66 | self.commonMistakes.append(f"P{diag.ParagraphNo} E{diag.ElementNo} | Expected '{checkDiag.CorrectedElement}' but got '{diag.CorrectedElement}'") 67 | 68 | counter += 1 69 | 70 | for i in range(counter, len(self.commonCheckDiagnosticsErrors)): 71 | self.commonMistakes.append(f"P{self.commonCheckDiagnosticsErrors[i].ParagraphNo} E{self.commonCheckDiagnosticsErrors[i].ElementNo} | Expected '{self.commonCheckDiagnosticsErrors[i].OriginalElement} => {self.commonCheckDiagnosticsErrors[i].CorrectedElement}' but not detected") 72 | 73 | # Check the conditions to consider that the validation result is 'pass' or 'fail' 74 | self.isPassed = len(self.commonMistakes) == 0 and len(self.specialMistakes) == 0 75 | 76 | # If we reach this point, the validation has been executed successfully 77 | # Mark the execution as completed successfully, emptied out all mistakes for the next call 78 | self.isCompleted = True 79 | 80 | except Exception as e: # catch essentially all exceptions, NOT the best practice but is sufficient for an example 81 | self.isCompleted = False 82 | self.failReason = 'Exception: ' + str(e.args) 83 | 84 | self.write_output_content_python() 85 | 86 | if __name__ == "__main__": 87 | validation_runner = PySipebiCommonValidationRunner(PySipebiDiagAturanTandaBacaPadaDialog_Val) 88 | validation_runner.setup_and_run_validation() -------------------------------------------------------------------------------- /py/diag/core/PySipebiDiagnosticsBase.py: -------------------------------------------------------------------------------- 1 | # kelas dasar Python bagi kelas-kelas penyuntingan lainnya 2 | class PySipebiDiagnosticsBase: 3 | # diagList: daftar kesalahan. List ini harus ada 4 | diagList = [] 5 | # isReady: bendera yang menandakan pengaturan awal sudah selesai dikerjakan. Bendera ini harus ada 6 | isReady = False 7 | # isCompleted: bendera yang menandakan diagnosis telah selesai dikerjakan dengan sempurna 8 | isCompleted = False 9 | # hasSharedResources: menandakan diagnosis ini membutuhkan shared resources atau file resources 10 | hasSharedResources = False 11 | # sharedResourcesInputKeys: daftar key dari input_resources 12 | # yang diperlukan untuk menjalankan create_shared_resources 13 | sharedResourcesInputKeys = [] 14 | # sharedResourcesOutputKeys: daftar key yang, jika create_shared_resources berjalan dengan benar, 15 | # akan dihasilkan (yaitu, output_resources) dari menjalankan create_shared_resources, 16 | # yang juga merupakan keys yang dimiliki oleh shared_resources pada execute_with_shared_resources 17 | # Catatan: 18 | # - Idealnya, sharedResourcesInputKeys dan sharedResourcesOutputKeys tidak dibuat beririsan 19 | sharedResourcesOutputKeys = [] 20 | # fileResourceNames: daftar nama file resource yang terdapat pada folder py\diag\resources 21 | # yang diperlukan untuk menjalankan skrip diagnosis dengan benar 22 | fileResourceNames = [] 23 | 24 | # setup: fungsi untuk melakukan pengaturan awal satu kali saja sebelum 'execute' dijalankan berulang kali 25 | # fungsi ini harus di-override jika terdapat persiapan awal satu kali (one-time setup) untuk diagnosis ini 26 | def setup(self): 27 | self.isReady = True 28 | 29 | # pre_execute: fungsi yang akan secara otomatis dijalankan sebelum fungsi execute dijalankan 30 | # override fungsi ini jika diperlukan 31 | def pre_execute(self): 32 | self.isCompleted = False # bendera ini harus selalu direset sebelum eksekusi 33 | self.diagList = [] # kosongkan daftar kesalahan sebelum script dijalankan ulang 34 | 35 | # execute: fungsi untuk menjalankan penyuntingan tanpa input lain selain teks awal 36 | # fungsi ini harus di-override 37 | def execute(self, text): 38 | self.empty_diagnostics_and_reinit() 39 | # <-------------------------------> 40 | # skrip untuk menjalankan diagnosis tanpa menggunakan shared resources 41 | # <-------------------------------> 42 | self.isCompleted = True 43 | 44 | # post_execute: fungsi yang akan secara otomatis dijalankan setelah fungsi execute selesai dijalankan 45 | # override fungsi ini jika diperlukan 46 | def post_execute(self): 47 | pass 48 | 49 | # require_shared_resources: fungsi untuk mengindikasikan apakah fungsi ini harus dijalankan menggunakan 50 | # execute_with_shared_resources atau dapat dijalankan menggunakan execute saja jika shared_resources 51 | # tidak secara lengkap berhasil ditemukan 52 | # override fungsi ini jika diperlukan 53 | def require_shared_resources(self): 54 | return False 55 | 56 | # create_shared_resources: fungsi untuk mempersiapkan shared resources, jika ada 57 | # fungsi ini harus di-override jika hasSharedResources = True 58 | # input_resources adalah sebuah dictionary(string:object) yang boleh kosong 59 | # string (keys) dari input_resources adalah sama dengan yang terdaftar pada sharedResourcesInputKeys 60 | def create_shared_resources(self, text, input_resources): 61 | # output_resources harus merupakan sebuah dictionary(string:object) 62 | # di dalam semua kelas yang diturunkan dari PySipebiDiagnosticsBase, 63 | # output_resources TIDAK boleh kosong, tetapi harus menghasilkan 64 | # dictionary dengan keys yang sama persis dengan 65 | # yang didaftarkan pada sharedResourcesOutputKeys 66 | output_resources = {} 67 | return output_resources 68 | 69 | # execute_with_shared_resources: fungsi untuk menjalankan penyuntingan menggunakan 70 | # resources yang terdaftar di sharedResourcesOutputKeys 71 | # fungsi ini harus di-override jika hasSharedResources = True 72 | # shared_resources adalah sebuah dictionary(string:object) 73 | # string (keys) dari shared_resources adalah sama dengan yang terdaftar pada sharedResourcesOutputKeys 74 | def execute_with_shared_resources(self, text, shared_resources): 75 | self.empty_diagnostics_and_reinit() 76 | # <-------------------------------> 77 | # skrip untuk menjalankan diagnosis dengan menggunakan shared resources 78 | # <-------------------------------> 79 | self.isCompleted = True 80 | 81 | # get_file_resource_key: fungsi untuk mendapatkan nama file resource key yang digunakan pada shared_resources 82 | # pada waktu menjalankan execute_with_shared_resources 83 | def get_file_resource_key(self, file_resource_name): 84 | return "diag\\data\\" + file_resource_name 85 | 86 | # read_file: fungsi untuk membaca konten file yang sudah terlebih dahulu didaftarkan pada fileResourceNames 87 | # fungsi ini memerlukan input berupa shared_resources 88 | # dengan demikian, fungsi ini hanya dapat berjalan dengan jika dipanggil di dalam fungsi execute_with_shared_resources 89 | # catatan: saat ini encoding yang digunakan untuk semua file resources adalah 'UTF-8' 90 | def read_file(self, file_name, shared_resources): 91 | # contoh cara mendapatkan file resource key bagi skrip diagnosis 92 | file_resource_key = self.get_file_resource_key(file_name) 93 | # contoh cara mengecek apakah file resource key ditemukan pada shared_resources 94 | if file_resource_key in shared_resources.keys(): 95 | # contoh cara mendapatkan teks pada file resource menggunakan file resource key 96 | return shared_resources[file_resource_key] 97 | return '' # jika file yang diminta tidak berhasil ditemukan pada shared_resources, maka yang dikembalikan berupa string kosong -------------------------------------------------------------------------------- /SipebiMiniForm.cs: -------------------------------------------------------------------------------- 1 | using SipebiMini.Core; 2 | using System; 3 | using System.Linq; 4 | using System.Reflection; 5 | using System.Windows.Forms; 6 | using py = SipebiMini.SipebiPythonManager; 7 | 8 | namespace SipebiMini { 9 | public partial class SampleForm : Form { 10 | public SampleForm() { 11 | InitializeComponent(); 12 | Text += $" v{Assembly.GetExecutingAssembly().GetName().Version}"; 13 | state.Inisiasi(); 14 | py.Initialize(); 15 | } 16 | 17 | SipebiMiniState state = new SipebiMiniState(); 18 | const string formatPesanMuatContoh = "Contoh {0} dimuat!"; 19 | const string formatPesanPenyuntinganAsal = "Penyuntingan dengan cara asal Sipebi {0}!"; 20 | const string formatPesanPenyuntinganBuatan = "Penyuntingan dengan cara buatan Sipebi {0}!"; 21 | const string formatPesanPenyuntinganPython = "Penyuntingan dengan skrip Python Sipebi {0}!"; 22 | 23 | private void buttonMuatContoh_Click(object sender, EventArgs e) { 24 | string judulContoh = textBoxJudulContoh.Text; 25 | prosedurUmum(formatPesanMuatContoh, () => { 26 | richTextBoxTeksMasukan.Text = state.MuatContoh(judulContohTeks: judulContoh); 27 | }); 28 | } 29 | 30 | private void buttonSuntingAsal_Click(object sender, EventArgs e) { 31 | prosedurUmumPenyuntingan(formatPesanPenyuntinganAsal, state.SuntingAsal); 32 | } 33 | 34 | private void buttonSuntingBuatan_Click(object sender, EventArgs e) { 35 | prosedurUmumPenyuntingan(formatPesanPenyuntinganBuatan, state.SuntingBuatan); 36 | } 37 | 38 | private void tampilkanHasilAnalisis(SipebiMiniDiagnosticsReport report) { 39 | DataGridView dgv = dataGridViewHasilAnalisis; 40 | int indeks = 0; 41 | dgv.Rows.Clear(); 42 | foreach (var hasil in report.Errors) { 43 | indeks = dgv.RowCount - 1; 44 | DataGridViewRow baris = (DataGridViewRow)dgv.RowTemplate.Clone(); 45 | baris.CreateCells(dgv, indeks + 1, hasil.ParagraphNo, hasil.ElementNo, hasil.ErrorCode, 46 | state.InformasiKesalahan[hasil.ErrorCode].Error, 47 | hasil.OriginalElement, hasil.CorrectedElementDisplay, 48 | state.InformasiKesalahan[hasil.ErrorCode].ErrorExplanation); 49 | dgv.Rows.Add(baris); 50 | } 51 | } 52 | 53 | private string pesanTambahan = ""; 54 | private DateTime waktuMulai, waktuSelesai; 55 | private TimeSpan durasiDiagnosis; 56 | private void prosedurUmumPenyuntingan(string formatPesan, 57 | Func> fungsiPenyuntingan) { 58 | string teksAsal = richTextBoxTeksMasukan.Text; 59 | if (string.IsNullOrWhiteSpace(teksAsal)) return; 60 | prosedurUmum(formatPesan, () => { 61 | waktuMulai = DateTime.Now; 62 | Tuple hasil = fungsiPenyuntingan(teksAsal); 63 | tampilkanHasilAnalisis(hasil.Item1); 64 | richTextBoxTeksSuntingan.Text = hasil.Item2; 65 | waktuSelesai = DateTime.Now; 66 | durasiDiagnosis = waktuSelesai - waktuMulai; 67 | pesanTambahan = dapatkanPesanJumlahKesalahanTerdeteksi(hasil, teksAsal.Length); 68 | }); 69 | } 70 | 71 | private void prosedurUmum(string formatPesan, Action aksi) { 72 | string teksHasil = "gagal"; 73 | string pesanKesalahan = string.Empty; 74 | try { 75 | aturKontrol(false); 76 | aksi(); 77 | teksHasil = "berhasil"; 78 | } catch (Exception exc) { 79 | pesanKesalahan = Environment.NewLine + Environment.NewLine + "Kesalahan: " + exc.ToString(); 80 | } 81 | MessageBox.Show(string.Format(formatPesan, teksHasil) + 82 | pesanTambahan + pesanKesalahan, 83 | char.ToUpper(teksHasil[0]) + teksHasil.Substring(1)); 84 | aturKontrol(true); 85 | } 86 | 87 | private void aturKontrol(bool aktifkan) { 88 | flowLayoutPanelActions.Enabled = aktifkan; 89 | } 90 | 91 | private void buttonUjiCobaPython_Click(object sender, EventArgs e) { 92 | string result = SipebiPythonManager.RunDiagnosticsExample(); 93 | MessageBox.Show($"{result}", "Hasil Uji Coba", MessageBoxButtons.OK); 94 | } 95 | 96 | private void buttonSuntingPython_Click(object sender, EventArgs e) { 97 | prosedurUmumPenyuntingan(formatPesanPenyuntinganPython, state.SuntingPython); 98 | } 99 | 100 | private void buttonValidasiPython_Click(object sender, EventArgs e) { 101 | SipebiPythonManager.RunValidation(); 102 | } 103 | 104 | private string dapatkanPesanJumlahKesalahanTerdeteksi(Tuple hasil, 105 | int panjangTeksAwal) { 106 | if (hasil == null || hasil.Item1 == null || hasil.Item1.Errors == null) return string.Empty; 107 | var grupKesalahan = hasil.Item1.Errors.GroupBy(x => x.ErrorCode).OrderByDescending(x => x.Count()); 108 | return Environment.NewLine + Environment.NewLine + 109 | $"Jumlah Kesalahan Terdeteksi: {hasil.Item1.Errors.Count}" + Environment.NewLine + 110 | $" Definit: {hasil.Item1.Errors.Count(x => !x.IsAmbiguous)}" + Environment.NewLine + 111 | $" Ambigu: {hasil.Item1.Errors.Count(x => x.IsAmbiguous)}" + Environment.NewLine + 112 | Environment.NewLine + 113 | string.Join(Environment.NewLine, grupKesalahan 114 | .Select(x => $"{x.Count()} {state.InformasiKesalahan[x.Key].ErrorCode} - " + 115 | $"{state.InformasiKesalahan[x.Key].Error}")) + Environment.NewLine + 116 | Environment.NewLine + 117 | $"Durasi Diagnosis: {durasiDiagnosis.TotalSeconds.ToString("F2")} detik" + Environment.NewLine + 118 | $"Panjang Teks: {panjangTeksAwal}" + Environment.NewLine + 119 | $"Jumlah Paragraf: {hasil.Item1.Paragraphs.Count}" + Environment.NewLine + 120 | $"Jumlah Elemen: {hasil.Item1.Paragraphs.Sum(x => x.WordDivs.Count)}" + Environment.NewLine + 121 | Environment.NewLine + 122 | $"Waktu Mulai Diagnosis: {waktuMulai.ToString("dd-MM-yyyy HH:mm:sss.fff")}" + Environment.NewLine + 123 | $"Waktu Selesai Diagnosis: {waktuSelesai.ToString("dd-MM-yyyy HH:mm:sss.fff")}" + Environment.NewLine + 124 | Environment.NewLine; 125 | } 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /py/diag/PySipebiDiagExample.py: -------------------------------------------------------------------------------- 1 | # baris-baris di bawah ini harus ada untuk mengimpor kelas-kelas inti Python 2 | from .core.PySipebiDiagnosticsError import PySipebiDiagnosticsError 3 | from .core.PySipebiDiagnosticsBase import PySipebiDiagnosticsBase 4 | 5 | # setiap kelas inti Python harus diturunkan dari PySipebiDiagnosticsBase 6 | class PySipebiDiagExample(PySipebiDiagnosticsBase): 7 | varNo = 0 # contoh angka 8 | varStr = 'sample text' # contoh teks 9 | diagList = [] # daftar kesalahan. List ini harus ada (hanya contoh, dapat dihapus, sudah terdefinisikan pada PySipebiAnalyzerBase) 10 | isReady = False # bendera yang menandakan pengaturan awal sudah selesai dikerjakan. Bendera ini harus ada (hanya contoh, dapat dihapus, sudah terdefinisikan pada PySipebiAnalyzerBase) 11 | hasSharedResources = True # diagnosis ini memiliki shared resources 12 | sharedResourcesInputKeys = [] # tidak memerlukan input selain text untuk membuat shared resources 13 | sharedResourcesOutputKeys = ['DummySharedResource'] # contoh shared_resource yang akan dihasilkan eksekusi yang berantai 14 | namaFailDaftarFrase = 'initial_diag_file_resource_example.txt' # contoh nama fail yang dibutuhkan sebagai file resources 15 | fileResourceNames = [namaFailDaftarFrase] # memerlukan file resource untuk melakukan eksekusi diagnosis. File resource yang diperlukan harus didaftarkan di sini agar dapat ditemukan pada shared_resources waktu execute_with_shared_resources dijalankan 16 | 17 | # setup: fungsi untuk melakukan pengaturan awal sebelum 'execute' dijalankan. Fungsi ini harus ada (sudah terdefinisikan pada PySipebiAnalyzerBase) 18 | def setup(self): # signature dari fungsi harus selalu seperti ini: setup(self): 19 | # ---lakukan pengaturan awal di sini--- 20 | # ---mis: membaca data (dari folder \data), melakukan sorting internal, mempersiapkan variabel, dsb.--- 21 | self.isReady = True # Fungi setup(), jika dianggap sudah dijalankan dengan benar, harus diakhiri dengan baris ini 22 | 23 | # execute: fungsi untuk menjalankan penyuntingan. Fungsi ini harus ada (sudah terdefinisikan pada PySipebiAnalyzerBase) 24 | def execute(self, text): # harus ada, signature dari fungsi harus selalu seperti ini: def execute(self, text): 25 | self.varNo = self.varNo + 1 # contoh penggunaan variabel 26 | self.varStr = text # contoh penggunaan input/variabel 27 | # ---text dapat diproses di sini untuk mendapatkan hasil diagnosis--- 28 | # contoh penambahan hasil diagnosis dapat dilihat di bawah 29 | # elemen PySipebiDiagnosticsError dalam contoh di bawah tidak lengkap, hanya diperuntukkan sebagai contoh, silakan dilengkapi 30 | self.run_common_diagnostics() 31 | self.isCompleted = True # Bendera ini harus diset jika eksekusi berjalan dengan sempurna 32 | 33 | # create_shared_resources: fungsi untuk mempersiapkan shared resources, jika ada 34 | # fungsi ini harus di-override jika hasSharedResources = True 35 | # input_resources adalah sebuah dictionary(string:object) yang boleh kosong 36 | # string (keys) dari input_resources adalah sama dengan yang terdaftar pada sharedResourcesInputKeys 37 | def create_shared_resources(self, text, input_resources): 38 | output_resources = {} 39 | dummy_object = None 40 | output_resources['DummySharedResource'] = dummy_object 41 | return output_resources 42 | 43 | # execute_with_shared_resources: fungsi untuk menjalankan penyuntingan menggunakan 44 | # resources yang terdaftar di sharedResourcesOutputKeys 45 | # fungsi ini harus di-override jika hasSharedResources = True 46 | # shared_resources adalah sebuah dictionary(string:object) 47 | # string (keys) dari shared_resources adalah sama dengan yang terdaftar pada sharedResourcesOutputKeys 48 | def execute_with_shared_resources(self, text, shared_resources): 49 | self.varNo = self.varNo + 1 # contoh penggunaan variabel 50 | self.varStr = text # contoh penggunaan input/variabel 51 | self.run_common_diagnostics() 52 | 53 | # contoh cara "membaca" isi file bagi skrip diagnosis 54 | file_resource_text = self.read_file(self.namaFailDaftarFrase, shared_resources) 55 | 56 | hasil_diagnosis = PySipebiDiagnosticsError() 57 | hasil_diagnosis.ErrorCode = '[Kode Contoh R]' 58 | hasil_diagnosis.OriginalElement = 'sr-contoh-' + str(self.varNo) 59 | hasil_diagnosis.CorrectedElement = 'sr-contoh-' + str(self.varNo) + ('R' if file_resource_text != '' else '0') 60 | hasil_diagnosis.IsAmbiguous = True 61 | self.diagList.append(hasil_diagnosis) 62 | 63 | if type(shared_resources is dict) and ('DummySharedResource' in shared_resources.keys()): 64 | hasil_diagnosis = PySipebiDiagnosticsError() 65 | hasil_diagnosis.ErrorCode = '[Kode Contoh A]' 66 | hasil_diagnosis.OriginalElement = 'sr-contoh-' + str(self.varNo) 67 | hasil_diagnosis.CorrectedElement = 'sr-contoh-' + str(self.varNo) + 'A' 68 | hasil_diagnosis.IsAmbiguous = True 69 | self.diagList.append(hasil_diagnosis) 70 | if len(self.diagList) > 10: 71 | self.diagList.pop(0) 72 | self.isCompleted = True # Bendera ini harus diset jika eksekusi berjalan dengan sempurna 73 | 74 | # run_diagnostics: tambahan fungsi khusus skrip diagnosis ini 75 | # kode fungsi ini dapat pula langsung diletakkan di dalam execute dan/atau execute_with_shared_resources 76 | def run_common_diagnostics(self): 77 | hasil_diagnosis = PySipebiDiagnosticsError() 78 | hasil_diagnosis.ErrorCode = '[Kode Contoh A]' 79 | hasil_diagnosis.OriginalElement = 'contoh-' + str(self.varNo) 80 | hasil_diagnosis.CorrectedElement = 'contoh-' + str(self.varNo) + 'A' 81 | hasil_diagnosis.IsAmbiguous = True 82 | self.diagList.append(hasil_diagnosis) 83 | hasil_diagnosis = PySipebiDiagnosticsError() 84 | hasil_diagnosis.ErrorCode = '[Kode Contoh B]' 85 | hasil_diagnosis.OriginalElement = 'contoh-' + str(self.varNo) 86 | hasil_diagnosis.CorrectedElement = 'contoh-' + str(self.varNo) + 'B' 87 | hasil_diagnosis.IsAmbiguous = True 88 | self.diagList.append(hasil_diagnosis) 89 | if len(self.diagList) > 10: 90 | self.diagList.pop(1) 91 | self.diagList.pop(0) 92 | -------------------------------------------------------------------------------- /Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Files/daftar-diagnosis.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [KBBI BTB] 5 | [KBBI] Bentuk Takbaku 6 | [KBBI] Kata yang digunakan merupakan bentuk takbaku 7 | 1.0.0.0 8 | false 9 | 10 | 11 | [KBBI KA] 12 | [KBBI] Kata Ambigu 13 | [KBBI] Kata yang digunakan bersifat ambigu, dapat merupakan bentuk baku atau takbaku tergantung dari makna yang dimaksudkan 14 | 1.0.0.0 15 | false 16 | 17 | 18 | [Sipebi BTB] 19 | [Sipebi] Bentuk Takbaku 20 | [Sipebi] Kata yang digunakan merupakan bentuk takbaku 21 | 1.0.0.0 22 | false 23 | 24 | 25 | [Sipebi KA] 26 | [Sipebi] Kata Ambigu 27 | [Sipebi] Kata yang digunakan bersifat ambigu, dapat merupakan bentuk baku atau takbaku tergantung dari makna yang dimaksudkan 28 | 1.0.0.0 29 | false 30 | 31 | 32 | [Sipebi BT] 33 | [Sipebi] Bentuk Terikat 34 | [Sipebi] Kata yang digunakan merupakan bentuk terikat. Penulisannya harus disambungkan dengan kata sebelum atau sesudahnya 35 | 1.0.0.0 36 | false 37 | 38 | 39 | [Sipebi BT-M] 40 | [Sipebi] Mungkin Bentuk Terikat 41 | [Sipebi] Kata yang digunakan mungkin merupakan bentuk terikat. Jika benar, penulisannya seharusnya disambungkan dengan kata sebelum atau sesudahnya 42 | 1.0.0.0 43 | false 44 | 45 | 46 | [Sipebi KHS] 47 | [Sipebi] Kata Hubung Subordinatif 48 | [Sipebi] Kata yang digunakan mungkin merupakan kata hubung subordinatif yang harus ditulis tanpa didahului oleh tanda koma 49 | 1.0.0.0 50 | false 51 | 52 | 53 | [Sipebi KHIK] 54 | [Sipebi] Kata Hubung Intrakalimat 55 | [Sipebi] Kata hubung intrakalimat harus ditulis didahului oleh tanda koma 56 | 1.0.0.0 57 | false 58 | 59 | 60 | [Sipebi KHIK-M] 61 | [Sipebi] Mungkin Kata Hubung Intrakalimat 62 | [Sipebi] Kata yang digunakan mungkin merupakan kata hubung intrakalimat yang harus ditulis didahului oleh tanda koma 63 | 1.0.0.0 64 | false 65 | 66 | 67 | [Sipebi KHAK] 68 | [Sipebi] Kata Hubung Antarkalimat 69 | [Sipebi] Kata hubung antarkalimat harus ditulis diikuti oleh tanda koma 70 | 1.0.0.0 71 | false 72 | 73 | 74 | [Sipebi KAK] 75 | [Sipebi] Kapital pada Awal Kalimat 76 | [Sipebi] Huruf kapital dipakai sebagai huruf pertama awal kalimat 77 | 1.0.0.0 78 | false 79 | 80 | 81 | [Sipebi ke-{0}] 82 | [Sipebi] ke-{angka} 83 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai ke- dengan angka 84 | 1.0.0.0 85 | false 86 | 87 | 88 | [Sipebi {0}-an] 89 | [Sipebi] {angka}-an 90 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai angka dengan -an 91 | 1.0.0.0 92 | false 93 | 94 | 95 | [Sipebi {A}-{kg}] 96 | [Sipebi] Singkatan Kapital -ku/-mu/-nya 97 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai singkatan berupa huruf kapital dengan kata ganti -ku, -mu, dan -nya 98 | 1.0.0.0 99 | false 100 | 101 | 102 | [Sipebi TPW] 103 | [Sipebi] Titik pada Penulisan Waktu 104 | [Sipebi] Tanda titik (.) dipakai untuk memisahkan angka jam, menit, dan detik yang menunjukkan waktu atau jangka waktu 105 | 1.0.0.0 106 | false 107 | 108 | -------------------------------------------------------------------------------- /bin/Debug/daftar-diagnosis.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [KBBI BTB] 5 | [KBBI] Bentuk Takbaku 6 | [KBBI] Kata yang digunakan merupakan bentuk takbaku 7 | 1.0.0.0 8 | false 9 | 10 | 11 | [KBBI KA] 12 | [KBBI] Kata Ambigu 13 | [KBBI] Kata yang digunakan bersifat ambigu, dapat merupakan bentuk baku atau takbaku tergantung dari makna yang dimaksudkan 14 | 1.0.0.0 15 | false 16 | 17 | 18 | [Sipebi BTB] 19 | [Sipebi] Bentuk Takbaku 20 | [Sipebi] Kata yang digunakan merupakan bentuk takbaku 21 | 1.0.0.0 22 | false 23 | 24 | 25 | [Sipebi KA] 26 | [Sipebi] Kata Ambigu 27 | [Sipebi] Kata yang digunakan bersifat ambigu, dapat merupakan bentuk baku atau takbaku tergantung dari makna yang dimaksudkan 28 | 1.0.0.0 29 | false 30 | 31 | 32 | [Sipebi BT] 33 | [Sipebi] Bentuk Terikat 34 | [Sipebi] Kata yang digunakan merupakan bentuk terikat. Penulisannya harus disambungkan dengan kata sebelum atau sesudahnya 35 | 1.0.0.0 36 | false 37 | 38 | 39 | [Sipebi BT-M] 40 | [Sipebi] Mungkin Bentuk Terikat 41 | [Sipebi] Kata yang digunakan mungkin merupakan bentuk terikat. Jika benar, penulisannya seharusnya disambungkan dengan kata sebelum atau sesudahnya 42 | 1.0.0.0 43 | false 44 | 45 | 46 | [Sipebi KHS] 47 | [Sipebi] Kata Hubung Subordinatif 48 | [Sipebi] Kata yang digunakan mungkin merupakan kata hubung subordinatif yang harus ditulis tanpa didahului oleh tanda koma 49 | 1.0.0.0 50 | false 51 | 52 | 53 | [Sipebi KHIK] 54 | [Sipebi] Kata Hubung Intrakalimat 55 | [Sipebi] Kata hubung intrakalimat harus ditulis didahului oleh tanda koma 56 | 1.0.0.0 57 | false 58 | 59 | 60 | [Sipebi KHIK-M] 61 | [Sipebi] Mungkin Kata Hubung Intrakalimat 62 | [Sipebi] Kata yang digunakan mungkin merupakan kata hubung intrakalimat yang harus ditulis didahului oleh tanda koma 63 | 1.0.0.0 64 | false 65 | 66 | 67 | [Sipebi KHAK] 68 | [Sipebi] Kata Hubung Antarkalimat 69 | [Sipebi] Kata hubung antarkalimat harus ditulis diikuti oleh tanda koma 70 | 1.0.0.0 71 | false 72 | 73 | 74 | [Sipebi KAK] 75 | [Sipebi] Kapital pada Awal Kalimat 76 | [Sipebi] Huruf kapital dipakai sebagai huruf pertama awal kalimat 77 | 1.0.0.0 78 | false 79 | 80 | 81 | [Sipebi ke-{0}] 82 | [Sipebi] ke-{angka} 83 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai ke- dengan angka 84 | 1.0.0.0 85 | false 86 | 87 | 88 | [Sipebi {0}-an] 89 | [Sipebi] {angka}-an 90 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai angka dengan -an 91 | 1.0.0.0 92 | false 93 | 94 | 95 | [Sipebi {A}-{kg}] 96 | [Sipebi] Singkatan Kapital -ku/-mu/-nya 97 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai singkatan berupa huruf kapital dengan kata ganti -ku, -mu, dan -nya 98 | 1.0.0.0 99 | false 100 | 101 | 102 | [Sipebi TPW] 103 | [Sipebi] Titik pada Penulisan Waktu 104 | [Sipebi] Tanda titik (.) dipakai untuk memisahkan angka jam, menit, dan detik yang menunjukkan waktu atau jangka waktu 105 | 1.0.0.0 106 | false 107 | 108 | -------------------------------------------------------------------------------- /bin/Release/daftar-diagnosis.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [KBBI BTB] 5 | [KBBI] Bentuk Takbaku 6 | [KBBI] Kata yang digunakan merupakan bentuk takbaku 7 | 1.0.0.0 8 | false 9 | 10 | 11 | [KBBI KA] 12 | [KBBI] Kata Ambigu 13 | [KBBI] Kata yang digunakan bersifat ambigu, dapat merupakan bentuk baku atau takbaku tergantung dari makna yang dimaksudkan 14 | 1.0.0.0 15 | false 16 | 17 | 18 | [Sipebi BTB] 19 | [Sipebi] Bentuk Takbaku 20 | [Sipebi] Kata yang digunakan merupakan bentuk takbaku 21 | 1.0.0.0 22 | false 23 | 24 | 25 | [Sipebi KA] 26 | [Sipebi] Kata Ambigu 27 | [Sipebi] Kata yang digunakan bersifat ambigu, dapat merupakan bentuk baku atau takbaku tergantung dari makna yang dimaksudkan 28 | 1.0.0.0 29 | false 30 | 31 | 32 | [Sipebi BT] 33 | [Sipebi] Bentuk Terikat 34 | [Sipebi] Kata yang digunakan merupakan bentuk terikat. Penulisannya harus disambungkan dengan kata sebelum atau sesudahnya 35 | 1.0.0.0 36 | false 37 | 38 | 39 | [Sipebi BT-M] 40 | [Sipebi] Mungkin Bentuk Terikat 41 | [Sipebi] Kata yang digunakan mungkin merupakan bentuk terikat. Jika benar, penulisannya seharusnya disambungkan dengan kata sebelum atau sesudahnya 42 | 1.0.0.0 43 | false 44 | 45 | 46 | [Sipebi KHS] 47 | [Sipebi] Kata Hubung Subordinatif 48 | [Sipebi] Kata yang digunakan mungkin merupakan kata hubung subordinatif yang harus ditulis tanpa didahului oleh tanda koma 49 | 1.0.0.0 50 | false 51 | 52 | 53 | [Sipebi KHIK] 54 | [Sipebi] Kata Hubung Intrakalimat 55 | [Sipebi] Kata hubung intrakalimat harus ditulis didahului oleh tanda koma 56 | 1.0.0.0 57 | false 58 | 59 | 60 | [Sipebi KHIK-M] 61 | [Sipebi] Mungkin Kata Hubung Intrakalimat 62 | [Sipebi] Kata yang digunakan mungkin merupakan kata hubung intrakalimat yang harus ditulis didahului oleh tanda koma 63 | 1.0.0.0 64 | false 65 | 66 | 67 | [Sipebi KHAK] 68 | [Sipebi] Kata Hubung Antarkalimat 69 | [Sipebi] Kata hubung antarkalimat harus ditulis diikuti oleh tanda koma 70 | 1.0.0.0 71 | false 72 | 73 | 74 | [Sipebi KAK] 75 | [Sipebi] Kapital pada Awal Kalimat 76 | [Sipebi] Huruf kapital dipakai sebagai huruf pertama awal kalimat 77 | 1.0.0.0 78 | false 79 | 80 | 81 | [Sipebi ke-{0}] 82 | [Sipebi] ke-{angka} 83 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai ke- dengan angka 84 | 1.0.0.0 85 | false 86 | 87 | 88 | [Sipebi {0}-an] 89 | [Sipebi] {angka}-an 90 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai angka dengan -an 91 | 1.0.0.0 92 | false 93 | 94 | 95 | [Sipebi {A}-{kg}] 96 | [Sipebi] Singkatan Kapital -ku/-mu/-nya 97 | [Sipebi] Tanda hubung (-) dipakai untuk merangkai singkatan berupa huruf kapital dengan kata ganti -ku, -mu, dan -nya 98 | 1.0.0.0 99 | false 100 | 101 | 102 | [Sipebi TPW] 103 | [Sipebi] Titik pada Penulisan Waktu 104 | [Sipebi] Tanda titik (.) dipakai untuk memisahkan angka jam, menit, dan detik yang menunjukkan waktu atau jangka waktu 105 | 1.0.0.0 106 | false 107 | 108 | -------------------------------------------------------------------------------- /py/diag/PySipebiDiagAturanTandaBacaPadaDialog.py: -------------------------------------------------------------------------------- 1 | from .core.PySipebiDiagnosticsBase import PySipebiDiagnosticsBase 2 | from .core.PySipebiDiagnosticsError import PySipebiDiagnosticsError 3 | from .core.PySipebiStructs import PySipebiTextDivision, PySipebiParagraphDivision, PySipebiWordDivision, PySipebiPreWordPunctuation, PySipebiPostWordPunctuation 4 | 5 | class PySipebiDiagAturanTandaBacaPadaDialog(PySipebiDiagnosticsBase): 6 | hasSharedResources = True 7 | sharedResourcesOutputKeys = ['sipebi_text_division'] 8 | 9 | ERROR_CODE_1 = '[TB07]' 10 | ERROR_CODE_2 = '[TB08]' 11 | 12 | def setup(self): 13 | self.isReady = True 14 | 15 | def create_shared_resources(self, text, input_resources): 16 | output_resources = {} 17 | sipebi_text_division = PySipebiTextDivision(text) 18 | output_resources['sipebi_text_division'] = sipebi_text_division 19 | return output_resources 20 | 21 | def execute_with_shared_resources(self, text, shared_resources): 22 | sipebi_text: PySipebiTextDivision = shared_resources['sipebi_text_division'] # konvensi penamaan: sipebi_text_division 23 | for i, paragraph_div in enumerate(sipebi_text.paragraph_divs): 24 | paragraph: PySipebiParagraphDivision = paragraph_div 25 | for j, word_div in enumerate(paragraph.word_divs): 26 | word: PySipebiWordDivision = word_div 27 | 28 | pre_word: PySipebiPreWordPunctuation = word.pre_word 29 | post_word: PySipebiPostWordPunctuation = word.post_word 30 | 31 | # jika tanda baca kutip dua (") terdapat di awal kata 32 | if pre_word.contains('"'): 33 | prev_word = word.prev_word_div 34 | # jika terdapat kata sebelumnya dan kata tersebut tidak memiliki tanda baca di akhir kata, misal : kamu "aku 35 | # maka tambahkan tanda baca koma (,) di akhir kata sebelumnya sebelum tanda baca kutip dua (") menjadi: kamu, "aku 36 | if prev_word and not prev_word.has_post_word: 37 | original_element = prev_word.clean_word_string 38 | corrected_element = prev_word.clean_word_string + ',' 39 | self.add_diagnostics(word=prev_word, paragraph=paragraph, error_code=self.ERROR_CODE_1 40 | , original_element=original_element, corrected_element=corrected_element) 41 | 42 | # jika tanda baca kutip dua (") terdapat di akhir kata 43 | if post_word.contains('"'): 44 | # jika ada tanda baca lain setelah kutip dua (") 45 | if not post_word.ended_with('"'): 46 | original_element = word.clean_post_word 47 | # jika tanda baca kutip dua (") berada di tengah tengah tanda baca lain, misal : aku!", 48 | # maka hapus tanda baca setelah tanda baca kutip dua (") menjadi: aku!"" 49 | if not post_word.start_with('"'): 50 | corrected_element = word.clean_word_string + post_word.string_repr[:post_word.string_repr.index('"') + 1] 51 | # jika tanda baca kutip dua (") berada di awal tanda baca lain, misal: aku". 52 | # maka pindahkan tanda baca setelah tanda baca kutip dua (") ke sebelum tanda baca petik dua (") menjadi: aku." 53 | else: 54 | corrected_element = word.clean_word_string + post_word.last_punctuation + post_word.first_punctuation 55 | 56 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_1 57 | , original_element=original_element, corrected_element=corrected_element) 58 | # jika tidak ada tanda baca lain setelah kutip dua (") 59 | else: 60 | # jika hanya ada tanda baca kutip dua ("), misal: aku" 61 | # maka tambahkan tanda baca koma (,) sebelum tanda kutip dua (") menjadi : aku," 62 | if post_word.start_with('"'): 63 | original_element = word.clean_word_string 64 | corrected_element = word.clean_word_string + ',' 65 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_1 66 | , original_element=original_element, corrected_element=corrected_element) 67 | # jika terdapat tanda baca koma (,) pada tengah - tengah tanda baca lain, misal: aku!," 68 | # maka hapus tanda baca koma (,) menjadi: aku!" 69 | elif not post_word.start_with(',') and post_word.contains(','): 70 | original_element = word.clean_word_string + post_word.first_punctuation + ',' 71 | corrected_element = word.clean_word_string + post_word.first_punctuation 72 | self.add_diagnostics(word=word, paragraph=paragraph, error_code=self.ERROR_CODE_2 73 | , original_element=original_element, corrected_element=corrected_element) 74 | self.isCompleted = True 75 | 76 | # add_diagnostics: fungsi untuk menambahkan kesalahan ke dalam daftar kesalahan 77 | # fungsi ini harus dipanggil setiap kali sebuah kesalahan ditemukan 78 | # word: kata awal yang yang mengandung kesalahan 79 | # paragraph: paragraf yang mengandung kesalahan 80 | # error_code: kode kesalahan 81 | # original_element: elemen yang salah 82 | # corrected_element: elemen yang benar 83 | def add_diagnostics(self, word: PySipebiWordDivision, paragraph: PySipebiParagraphDivision, error_code: str 84 | , original_element: str, corrected_element: str): 85 | hasilDiagnosis = PySipebiDiagnosticsError() 86 | hasilDiagnosis.ParagraphNo = paragraph.index 87 | hasilDiagnosis.ElementNo = word.element_no 88 | hasilDiagnosis.OriginalParagraphOffset = paragraph.offset 89 | hasilDiagnosis.PositionOffset = word.position_offset + word.pre_word.length 90 | hasilDiagnosis.CorrectedCharPosition = 0 91 | hasilDiagnosis.IsAmbiguous = False 92 | hasilDiagnosis.ErrorCode = error_code 93 | hasilDiagnosis.OriginalElement = original_element 94 | hasilDiagnosis.CorrectedElement = corrected_element 95 | self.diagList.append(hasilDiagnosis) 96 | 97 | return hasilDiagnosis -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/net6.0/IronPython.Wpf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.Wpf 5 | 6 | 7 | 8 | 9 | Provides services for loading XAML and binding events to dynamic language code definitions. 10 | 11 | 12 | 13 | 14 | Loads XAML from the specified stream and returns the deserialized object. Any event handlers 15 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 16 | object. 17 | 18 | 19 | 20 | 21 | Loads XAML from the specified filename and returns the deserialized object. Any event handlers 22 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 23 | object. 24 | 25 | 26 | 27 | 28 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 29 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 30 | object. 31 | 32 | 33 | 34 | 35 | Loads XAML from the specified TextReader and returns the deserialized object. Any event handlers 36 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 37 | object. 38 | 39 | 40 | 41 | 42 | Loads XAML from the specified XamlXmlReader and returns the deserialized object. Any event handlers 43 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 44 | object. 45 | 46 | 47 | 48 | 49 | Returns the list of x:Name'd objects that we saw and should set on the root object. 50 | 51 | 52 | 53 | 54 | Dummy, should never be called 55 | 56 | 57 | 58 | 59 | Provides helpers for interacting with Windows Presentation Foundation applications. 60 | 61 | 62 | 63 | 64 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 65 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 66 | 67 | The provided object is expected to be the same type as the root of the XAML element. 68 | 69 | 70 | 71 | 72 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 73 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 74 | 75 | The provided object is expected to be the same type as the root of the XAML element. 76 | 77 | 78 | 79 | 80 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 81 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 82 | 83 | The provided object is expected to be the same type as the root of the XAML element. 84 | 85 | 86 | 87 | 88 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 89 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 90 | 91 | The provided object is expected to be the same type as the root of the XAML element. 92 | 93 | 94 | 95 | 96 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 97 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 98 | 99 | The provided object is expected to be the same type as the root of the XAML element. 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /packages/IronPython.3.4.1/lib/netcoreapp3.1/IronPython.Wpf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IronPython.Wpf 5 | 6 | 7 | 8 | 9 | Provides services for loading XAML and binding events to dynamic language code definitions. 10 | 11 | 12 | 13 | 14 | Loads XAML from the specified stream and returns the deserialized object. Any event handlers 15 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 16 | object. 17 | 18 | 19 | 20 | 21 | Loads XAML from the specified filename and returns the deserialized object. Any event handlers 22 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 23 | object. 24 | 25 | 26 | 27 | 28 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 29 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 30 | object. 31 | 32 | 33 | 34 | 35 | Loads XAML from the specified TextReader and returns the deserialized object. Any event handlers 36 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 37 | object. 38 | 39 | 40 | 41 | 42 | Loads XAML from the specified XamlXmlReader and returns the deserialized object. Any event handlers 43 | are bound to methods defined in the provided Scope and converted using the provided DynamicOperations 44 | object. 45 | 46 | 47 | 48 | 49 | Returns the list of x:Name'd objects that we saw and should set on the root object. 50 | 51 | 52 | 53 | 54 | Dummy, should never be called 55 | 56 | 57 | 58 | 59 | Provides helpers for interacting with Windows Presentation Foundation applications. 60 | 61 | 62 | 63 | 64 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 65 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 66 | 67 | The provided object is expected to be the same type as the root of the XAML element. 68 | 69 | 70 | 71 | 72 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 73 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 74 | 75 | The provided object is expected to be the same type as the root of the XAML element. 76 | 77 | 78 | 79 | 80 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 81 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 82 | 83 | The provided object is expected to be the same type as the root of the XAML element. 84 | 85 | 86 | 87 | 88 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 89 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 90 | 91 | The provided object is expected to be the same type as the root of the XAML element. 92 | 93 | 94 | 95 | 96 | Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers 97 | are bound to methods defined in the provided module. Any named objects are assigned to the object. 98 | 99 | The provided object is expected to be the same type as the root of the XAML element. 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /SipebiMini.Sample.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {F6EE0D11-71CB-4005-81C2-19153F4C595F} 8 | WinExe 9 | SipebiMini 10 | SipebiMini 11 | v4.6.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | packages\IronPython.3.4.1\lib\net462\IronPython.dll 39 | 40 | 41 | packages\IronPython.3.4.1\lib\net462\IronPython.Modules.dll 42 | 43 | 44 | packages\IronPython.3.4.1\lib\net462\IronPython.SQLite.dll 45 | 46 | 47 | packages\IronPython.3.4.1\lib\net462\IronPython.Wpf.dll 48 | 49 | 50 | packages\DynamicLanguageRuntime.1.3.4\lib\net452\Microsoft.Dynamic.dll 51 | 52 | 53 | packages\DynamicLanguageRuntime.1.3.4\lib\net452\Microsoft.Scripting.dll 54 | 55 | 56 | packages\DynamicLanguageRuntime.1.3.4\lib\net452\Microsoft.Scripting.Metadata.dll 57 | 58 | 59 | False 60 | Dlls\SipebiMini.Core.dll 61 | 62 | 63 | 64 | packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll 65 | 66 | 67 | 68 | 69 | packages\System.Memory.4.5.5\lib\net461\System.Memory.dll 70 | 71 | 72 | 73 | packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll 74 | 75 | 76 | packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | Form 92 | 93 | 94 | SipebiMiniForm.cs 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | ResXFileCodeGenerator 103 | Resources.Designer.cs 104 | Designer 105 | 106 | 107 | True 108 | Resources.resx 109 | True 110 | 111 | 112 | SipebiMiniForm.cs 113 | 114 | 115 | 116 | SettingsSingleFileGenerator 117 | Settings.Designer.cs 118 | 119 | 120 | True 121 | Settings.settings 122 | True 123 | 124 | 125 | 126 | 127 | 128 | 129 | --------------------------------------------------------------------------------