{"_id":"swapro","_rev":"13-09b15c326449299052c9e6d5c852517c","name":"swapro","dist-tags":{"latest":"4.0.1"},"versions":{"1.0.0":{"name":"swapro","version":"1.0.0","keywords":["swap"],"author":{"name":"Abdulbasit S Rubeyya"},"license":"MIT","_id":"swapro@1.0.0","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"homepage":"https://github.com/ibnsultan/Swap#readme","bugs":{"url":"https://github.com/ibnsultan/Swap/issues"},"dist":{"shasum":"22712d7c0f6ad404dc60d0322227c50aab30770d","tarball":"https://registry.npmjs.org/swapro/-/swapro-1.0.0.tgz","fileCount":147,"integrity":"sha512-CUVqCOGTRARGPZuhQ63QezvE6R7v1bbkxP3WBFRcrdMedsB74tim411IOJVv57WPFaZtsSn0+US9/4A6iPYwaA==","signatures":[{"sig":"MEUCIQCY8k3TNPW+g5YApNgk28MP8SMzNfwN3PBchZpjvpAO2AIgSI6b+LZLloFDcrdzWt+HSHtLseHgIC3A7+3tAJmoJD4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeybvuCRA9TVsSAnZWagAAjmIP/RvUOn45Rz4Ri3C48cIa\nZsrWTrQLDwTufeEM8vHwFzUkVFQUz3eyy/Wa4ThOd+O36szK0j38McQP6HpZ\nfTVU5pvQE6/fjWybEtvvA6vIRP7WUZ6wMWE2zC5g6UkpA74sLrdGtGz5mhV/\nbRg5KFI4z6sZ29F+wf5I7iBTHNMbRdsveYkF40270L8KkaOMa1XnBmv2SyzO\nd7mRbyPRJ+sf+fXWxSyQMAJ+sK/vAm3PxByARq6NvuYA0Vh8Fm40l9tDDklY\nCWfiW6IgdDkJlfOSeDc1nxM0/x6jsgZqORwOoesPpTDOiOTNVlKloCBRKc/3\nUduoS55WBZk9yAPZeNa+IMGK6PIPDHuL0IHHYD13rFgSqVMmkuUvsZZOQ14l\nKduJcfx4sRag9WCqHo5C2cC4WYZjmFhN6AuGFADCsmgKDjm38BTp58Y+6VoC\nX2aYE4VIQgBpJAcapntFgNUtoQRWxW47SugjnvRp9eErIeRKeVy/acoU3Y+h\nWyRoAebyi3aS4SL64MFRw1OhnreMZPzYvaVKXQ0D4U74RXlYDd+InzsBHpuv\neUb5Q/Fhua0YWZg/X+YF6+QVeBuX4NPAIT/GLLO+egXXtMIO05hhOfQ+1rgo\nIonmc+AEjefrDKHAs2x/0DVo45BviXdk/YAIaGR6W8JV2hUM17TLCQfeg3Yj\nC1sv\r\n=8nt/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cli.js","scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"repository":{"url":"git+https://github.com/ibnsultan/Swap.git","type":"git"},"_npmVersion":"6.12.1","description":"Programming Lamguage that allows programmers to code in Swahili Language construct","directories":{},"_nodeVersion":"12.13.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/swapro_1.0.0_1590279149845_0.38824078264731265","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"swapro","version":"1.0.1","keywords":["swap"],"author":{"name":"Abdulbasit S Rubeyya"},"license":"MIT","_id":"swapro@1.0.1","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"homepage":"https://github.com/ibnsultan/Swap#readme","bugs":{"url":"https://github.com/ibnsultan/Swap/issues"},"bin":{"swap":"cli.js"},"dist":{"shasum":"9fafce78babfb7374680761d6792043c07907845","tarball":"https://registry.npmjs.org/swapro/-/swapro-1.0.1.tgz","fileCount":147,"integrity":"sha512-0b2xnIAKbBNMaI38xxh0d6Gg8XoIjWHFq3/fsgEUYbDYgeNoVkbJof6gKeJkEjw9PtPQcS//rxQDbiKhnZcsuw==","signatures":[{"sig":"MEUCIQDrCM7lFkB24WGFFTV0AUvNAgK8W6mAKFFiie9QjQWNogIgQjWCp7QAoDrXHCXGH7/PLn/2PPspUcUthN9ywJqLH3U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeycFKCRA9TVsSAnZWagAAMxsQAKLi+pkw/7MLsNNqfJpO\nVj7aRucrWOEXV/eML9xCWm05ReAxfdymnsjCrcTFpQnV2bunl7GCIu7e2alh\n/R99foCwyx/n0oYOnNPWTmdTG4dOZBenLxq1BN985FVmYzKEVrpnIlsedbT5\nxvURQhYh8z8vzqd+RTgIQ750F1H+v8+PV+RQRyFI82Qovx3eBsAXXuOGcXSY\nirC3mHU80DR2gXrf7+vTbrfb5tjJA0YvApwA7I56oP1+aKVboJ2wIR6rx8cv\njEgi0VgzclEnqSijTFvN5kcfP2HuLG0xAuCJHctgYkDi5+MWHkhksYBiF9tl\n4eGGrWHeghM3nL1ZylHNeni9/C24QqPXCluesvu416JSAAx5aRBHQe3imOIJ\ngvYv8R9q5LfEV3BWY/9uMzEPHHPpjKX7HbjvgMqLNtG23EDwKSJFLNc4EIy4\nVVhoDBc1lDuZ6hJSAZE2zl134CIUyJTBC7PpYqZ/lLBN0patHaisFPAwGaf+\niB8zTygThCdLEIKjkPNrIeNIxTKRy706b9bXWPa+vxpYn9bPbcnX0/xeAr/6\nD6vim57rC6d27nL4b8k/qPfn9/+b7HaP2xxk8gGaQCvE547zd1AGWbCjbaDh\nLY3ylaFjUaANRedsmjALdwE5P2CIdS6kno7VHW1W8AFyMNvCH0pCjONQJKhd\n4d/7\r\n=h4Eg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cli.js","husky":{"hooks":{"pre-commit":"lint-staged && npm run test"}},"scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"repository":{"url":"git+https://github.com/ibnsultan/Swap.git","type":"git"},"_npmVersion":"6.12.1","description":"Programming Lamguage that allows programmers to code in Swahili Language construct","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"12.13.1","dependencies":{"commander":"2.19.0","readline-sync":"1.4.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"23.6.0","husky":"1.2.0","eslint":"5.9.0","lint-staged":"8.1.0","eslint-plugin-node":"8.0.0","eslint-plugin-import":"2.14.0","eslint-plugin-promise":"4.0.1","eslint-config-standard":"12.0.0","eslint-plugin-standard":"4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/swapro_1.0.1_1590280522150_0.0800471477106095","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"swapro","version":"1.0.2","keywords":["swap"],"author":{"name":"Abdulbasit S Rubeiyya"},"license":"MIT","_id":"swapro@1.0.2","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"homepage":"https://github.com/ibnsultan/Swap#readme","bugs":{"url":"https://github.com/ibnsultan/Swap/issues"},"bin":{"swap":"cli.js"},"dist":{"shasum":"1ef6fc4195cee9f2a05dd1891c241a585e34a5bf","tarball":"https://registry.npmjs.org/swapro/-/swapro-1.0.2.tgz","fileCount":150,"integrity":"sha512-pyESSkNnbB/aO3/N/g8DS752XfnJcDdntqNY/sHysTboozn6TT/BrU9lT43Ltt7syueuevtMtdRwJMxox2aYMg==","signatures":[{"sig":"MEQCIHuE3zKCrrlsnf7+9RmstGn1Cvcike7xaEklfHY+nfwLAiBI5+xPdIWDRY2mCN2d+TuE74kxNU0eMGfT246S8AHEqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":228166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyd0qCRA9TVsSAnZWagAAgB4P/A0b5JN0BqRD8G8mEmFq\nXR25QQSn8iHDSWjyj3X8+LKY2D5YaVBSCt9t0dzcFgcVtzrm1Qu+XmPO7SUH\nq/a1eT7d0KzKLO4NvuayQT1BxbnBDsnINwJ7223blgxzmq0tkDJHuj9EQzgA\nCTIB88CmzPuC06o5TA1K95CcMdvjs/VwYlOG5am2njyTafEuX/BNvz94P107\nvEBmS+9xo0BnkXG2szfLve+W+fFV6zPoQZWXbZGhwUVhyl/dQtTvkJk6RMtB\nnAOxSf+7P64q2EFpzH9shqpj75vSdrBUKsY8keQTrzAziHzeIJFWNx60YG7R\nReLs+rsQG9cmdPsLwc74UDCCGITxJ36Zz67YQx+qWxY0PB3hiQgwefOyFzbe\nyQ9KO9gCv7Hbzy0L4VNSs0X9+m5TZ1v984ArPew6zyP9IjPRSUk0JzJ/c2gV\n+KjbSQm60j/NbDvGHqUbS2ec2VRHqRsotDt71ELom915nLAOgjVmk9Hd5wK0\n+qdqB1Mp8No7qnt4wQdZb7akWnF92JNu4tX/SBJWr5kS6eYyzyFGm9ihetwJ\nMWY9YmJMDVvRferWbNsfgPdWZlLENpfO6I71XVZZ90vjI6SGAgaaV35+b0qj\n6764yEeErvTkCh8gHjRkXQ80cd2krQkW+FmLKrP89n5xpHu+NYHqk/6RuapM\nttGE\r\n=bXuS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"cli.js","scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"repository":{"url":"git+https://github.com/ibnsultan/Swap.git","type":"git"},"_npmVersion":"6.12.1","description":"Swahili Programming Language","directories":{},"_nodeVersion":"12.13.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/swapro_1.0.2_1590287658064_0.7153455294802569","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"swapro","version":"1.1.0","keywords":["swap"],"author":{"name":"Abdulbasit S Rubeiyya"},"license":"MIT","_id":"swapro@1.1.0","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"homepage":"https://github.com/ibnsultan/Swap#readme","bugs":{"url":"https://github.com/ibnsultan/Swap/issues"},"bin":{"swap":"cli.js"},"dist":{"shasum":"76d2d4d54d41d4737cd8da29ac9e4675e65bf0a4","tarball":"https://registry.npmjs.org/swapro/-/swapro-1.1.0.tgz","fileCount":155,"integrity":"sha512-K+PwcWv4HT9WpPaZQzE138/QmgcSnDBwQNES6ShJY6TSk7kYK4TK885wjBULDj8P8UM+y0z2RtpUY5rFxcU2CA==","signatures":[{"sig":"MEYCIQDpWA7BIDs6v291g5k9RhkwOruxmCgkSl0XXzpjqOXY0AIhAKahbbc/GbRLLtL3juRye6ET4YhyB74yFiqLfvvozeFd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":228441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezNkOCRA9TVsSAnZWagAAcv4P/2ykByqGPmMX0bRL7RmX\nCXoCShDl7pZP/z7l6BNGIt82F8SBhQ6CIGSOxOHzOgCOYDD+QzddIznL7Xmb\nNve5dLL9tsi2agWzjOLWuGCH7VJ05hjhyEoZa84KzkAn0Jp1qHMS9/vuOY7Z\nqkt4HidqmcfKTry77/kHL3/Ax2OkF9oiWOgDWDhybCTUl4DzD19wTFPn76Ew\nAIyPDG3OH+wS536JpCzOuHPTK4CemUf5UIpLqC5eOiNWEoq2hKRgH9OLd/nZ\nRrgdxDU3TWz+H+NyUXzz3yxOgmNSMd1uIER/cf+nwyROubQm9ZIRw9D/vWIF\nvFvNcv/+lxbPG2yiYGgIHasAZNa6hQKjUpxzbw08e+EodIVNDm5Cq6gjzwiK\ng63is6znfN0IoHM3eFhBFGxnEE1o7LBD/8PVi2Vt1Kv8O+OJdcwNGVwEiSGg\nMIs6pEy5VK7Vz9N6Dp5YE8Se3iKQvLkhgjiO6hO0XPZd0PJQ64Bc2D5Yl9Rl\n2DknSk+Yln0nOhINbHJg/1Nls6Re07hd+V6HqxaSS/wSk5ihOGSRytcTql/c\nmC3rSTe5KxQSwXEZHJDEqnKq5OkrF3qQinAkAr/Ysa7YI7vGbdt0Z1TRerQ0\nzQr0PdrDm8d0N8I/IpQKenqt8mubT0RjroQHOtVqazi0zsy3a9l9r/940tx0\nsRlJ\r\n=AcxS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"cli.js","scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"repository":{"url":"git+https://github.com/ibnsultan/Swap.git","type":"git"},"_npmVersion":"6.12.1","description":"Swahili Programming Language","directories":{},"_nodeVersion":"12.13.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/swapro_1.1.0_1590483214375_0.8909908764524008","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"swapro","version":"2.0.0","keywords":["swap"],"author":{"name":"Abdulbasit S Rubeiyya"},"license":"MIT","_id":"swapro@2.0.0","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"homepage":"https://github.com/ibnsultan/Swap#readme","bugs":{"url":"https://github.com/ibnsultan/Swap/issues"},"bin":{"swap":"cli.js"},"dist":{"shasum":"c5245b0636c43529167481e8099514e0fe864304","tarball":"https://registry.npmjs.org/swapro/-/swapro-2.0.0.tgz","fileCount":155,"integrity":"sha512-HaQ4oXy4D8S9Arth00v8CM05ee/WDAdxHDdRUQfAfvwsnD7TcfmaceJwtTsbdY66IrowPW0bCD1C2Y+lYFmMXg==","signatures":[{"sig":"MEUCIQDtl9gVy2wSd6Blse1R+Qb4HRZkLpxnSh7IIWk5ewY75gIgOM5WZJMbJVjnjd1YCt0FPnNLagl2xce0/HGk9hIrxsY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":229036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezYu6CRA9TVsSAnZWagAAD6QQAIvJmMX6xmTqkCxc6psE\ndgjK43T8ZrGS+xkA7m+yj+emU+WXqUu59wm20t18c+vPIBN4vCrJ+BkuhVKx\npaPBhm7AmVbE2HqYTk9XStSPk0Iy8MOZkBeyvR7NZU5oCkPibJrTJ4NmASX6\nbBS6IXJ51pujnFjY+3bGIy/SrTHVD/uGhA8HZeHGezZT7SivfNdGUogz+7CY\ntULZlw+Y17F0O/HSH5avHZR8RZlRZxk9b6hEhrk/1yAR3RrWjGQbMmFRQo0J\ny3bLn4T8KT6nsnt8MGBJcc2Zm5MOF80V2OO5uxWw/EeHvH+qSQ8BsYSxtQv/\nasmaWZRghWfIxdyTRZbvu+2owQ3PR+flRes7rwE/9DMyUuVoxz28XnwwWT3y\n7O0GYxt7VME+uA0o74Q+fxIsAN5oV+fGz0pEp/OYIIAWnJiIPqBU+PVQT+2C\nXWwPCeult5BC1XoXN3f+qIWLCfyQPbswBxh7plzko7D3cdPsc7OFOIiy56s2\nwIXds0UayNMtG6TwZO1NeZI7WqmJARi7+SOWuOVYKoehTWBPZqxGOaTXB/Uo\nM1r8ScGVnjbKiS5PT7JLA/HSACyNyb3obxzsUf2lfl9mHnd5dg84qmGWMSCK\ni9F2IeaDEnnOgr9+Jp3F62LeE1prWNnODjyj6sX2i8jIUSCVwcPWHAZI33av\nVpZK\r\n=f23H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"cli.js","husky":{"hooks":{"pre-commit":"lint-staged && npm run test"}},"scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"repository":{"url":"git+https://github.com/ibnsultan/Swap.git","type":"git"},"_npmVersion":"6.12.1","description":"Swahili Programming Language","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"12.13.1","dependencies":{"commander":"2.19.0","readline-sync":"1.4.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"23.6.0","husky":"1.2.0","eslint":"5.9.0","lint-staged":"8.1.0","eslint-plugin-node":"8.0.0","eslint-plugin-import":"2.14.0","eslint-plugin-promise":"4.0.1","eslint-config-standard":"12.0.0","eslint-plugin-standard":"4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/swapro_2.0.0_1590528954287_0.6353846939700112","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"swapro","version":"2.0.1","keywords":["swap"],"author":{"name":"Abdulbasit S Rubeiyya"},"license":"MIT","_id":"swapro@2.0.1","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"homepage":"https://github.com/ibnsultan/Swap#readme","bugs":{"url":"https://github.com/ibnsultan/Swap/issues"},"bin":{"swap":"cli.js"},"dist":{"shasum":"86c70ae1fc5aceb52e1a0aaae05c4dcbbc91ff4e","tarball":"https://registry.npmjs.org/swapro/-/swapro-2.0.1.tgz","fileCount":157,"integrity":"sha512-bl53zHgWD1mQ26QD9udQd7cAtc/DmXplL1MFEQmf3izg72gkpDgKfdHgpooirw18ZgIQ4/GCykNgqqBMU1JWEg==","signatures":[{"sig":"MEUCIQCGaB6I8vR6VCQMinTEF4NV0dZESkXQZAFLosUJ9WMIFgIgB07cKtErjt3tZZKsL/VMkJcc/vFgJ+tYB+SoNLx/6s4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":229944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezk8cCRA9TVsSAnZWagAAINAQAJPAlJFPfqgCeoRRJnHc\n8KKPQSLDgnXAHTyr8rH1RoVZbmQ9Up5L01rFiyRhP1h4aTMaJwOKHs5ADbGU\nbndTZInfgtJgHHi1vCGoHyEkc85eNvGymldNRAnmyM+9iJzzPcsBFHkjo6Yk\nyi1grbaQiClaweOjUtXdDKeuL2iP+xrI31mrXwQxm2uELKEKZ6Q45UlS2PFe\nU0USjMnGwDqh16i9dvJwaFiDsjg3L2IqXb+nve4CjbtpD7hEgVBX0MQngoRO\njiRHvfPgaNBmf07GQVMmoGgf8PvOT1SyH7HsgmRRSYYI7s97cd2BMGxYG8es\n8G911MlvUvjScL139kMx6b8jU6/t+8H5TMznsuc+HNnhsknwCdvW/0LlOQhN\n5Tp9i1xcmwRncYSan6rVVKCMGseaen6AaacJ4HbJOLS1bnO736TFIqWq8w/0\nZP+SbXa9E8LjVk0kFj1FKKbbHAlp4L7otqZwzajeNvfipiQD/ZXwuyZh1TUT\n7Gn12FgwnTNKb+OhB3tBrUCVvRNx+EB4kgTWY0ccdz3aHGOCTYeIQuexG8FP\nbx/C5yKPVsfMSFW4NuFcd1n0h+zHNfB1zdkdDY719+Rb8hLhdT/ElritY3sN\nt9JFS/dxx9nBNVnoY/iyMIr/i02pRWCfKx8xxJVRJEIBHGDrnojaATWAMvqH\nOPVe\r\n=Q5Gm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"cli.js","husky":{"hooks":{"pre-commit":"lint-staged && npm run test"}},"scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"repository":{"url":"git+https://github.com/ibnsultan/Swap.git","type":"git"},"_npmVersion":"6.12.1","description":"Swahili Programming Language","directories":{},"lint-staged":{"*.js":["eslint --fix","git add"]},"_nodeVersion":"12.13.1","dependencies":{"commander":"2.19.0","readline-sync":"1.4.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"23.6.0","husky":"1.2.0","eslint":"5.9.0","lint-staged":"8.1.0","eslint-plugin-node":"8.0.0","eslint-plugin-import":"2.14.0","eslint-plugin-promise":"4.0.1","eslint-config-standard":"12.0.0","eslint-plugin-standard":"4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/swapro_2.0.1_1590578972019_0.827116454144224","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"swapro","version":"2.0.2","author":{"name":"Abdulbasit Sultan Rubeiyya"},"license":"MIT","_id":"swapro@2.0.2","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"bin":{"swap":"cli.js"},"dist":{"shasum":"a1960b6d8163219002e3b736e4d55e667df7d3ce","tarball":"https://registry.npmjs.org/swapro/-/swapro-2.0.2.tgz","fileCount":147,"integrity":"sha512-wJAfiNuxpVuCzexEJvzYxfvmH2iuaQzwduKK53nXUgsWf6fI4XZpNHBuGyu1ZQ47KGUvyHbSy00wYJJPglKAJw==","signatures":[{"sig":"MEYCIQD2hJ1PlKjHGYGCuGGf019v2JvtogRpoI2MApyG3eukeQIhAOGmXKTwKEul0WLqGJjrcI/rIkC+5Hm2VdQdwcu97mo0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezpXICRA9TVsSAnZWagAA2n4P/2T4wT8f/FZnxOEiu3FM\nm10Qi2vUi2GpHHaXPFp6px7qEZgVR2mOmvhD0K8jLkFNVfJEceMDZiKti9Qi\ndyQxzp72nMYhjYDUoRU+Oh+Hdc72DDDFLtG94UhyfjR4tRzwaasLdn7gN5ym\nvTdorpex6IRIOEyaAgz2Eatfsw7ULZIKpjNZioSl5iMF7QmhWPU8Set4yeaf\nBCG+kNNTQdIZXP0b4R6UZULG1g9cx6eAZudP5Qu7s7vAEvLxx1sIcrqE4htd\nHrOsPxADxVmNFqf+dNWaI/usCsSz10lF4iJ3iC5V2w5ZupkqaBN52W0bY+Dg\nWxHMy5U61YPu8MHVPp8j9941ILPV1npuufrSm5wODfPU8THOkvS+Nch9DQS2\naDGdP8Pt9a52L6USUfudfd8uqPcvZn9CuIOVCPbPQMMJhQ16xh13mWYKxRX+\nrmPGJsMFJ55yExYAciGdUKCrgIPrtJoSW3Punycz9mS0d3tbs1NY7jE2uJ6o\nxg6luNyABYYptvWNIimVxie3kKC2i3A6gseC0DKllB4VJb2aGoDxhjKnvDpN\nai0oReeRVWp2t1WHH4BrGcV2w7cSemKHcPpgg5h/ao2t2ZmumxAfKDeX4evH\nPUMx5e4Rhqwtbs5TwjMZcY1pAtSZL0L9b54ltSKwWhzxqHZT9XHsJHJqYitj\nIrbZ\r\n=nIbo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cli.js","scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"_npmVersion":"6.12.1","description":"swap is a programming language that allows programmers to code in swahili Language construct","directories":{},"_nodeVersion":"12.13.1","dependencies":{"mathjs":"^7.0.0","commander":"2.19.0","readline-sync":"1.4.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/swapro_2.0.2_1590597064196_0.7929636712910528","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"swapro","version":"3.0.0","author":{"name":"Abdulbasit Sultan Rubeiyya"},"license":"MIT","_id":"swapro@3.0.0","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"bin":{"swap":"cli.js"},"dist":{"shasum":"9789300e7260a7d3fdc1848dcce7d7c1f924bb7a","tarball":"https://registry.npmjs.org/swapro/-/swapro-3.0.0.tgz","fileCount":146,"integrity":"sha512-VC5UBtSMFpPA9xoMdi7Rvnttq5vxrAf6kle+RbFpYsR5qtf8J2IJgndQE72Hj6k39C5gj2Skg4VSgcvlN1In0g==","signatures":[{"sig":"MEQCIH2dU8+Pe4DgYjpbEVansm5StSElvtuMjM04xrcBcL93AiA6xeMqiM92ILpKkF2ChkgIGci60FcBtGBX6xigIXpbpg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDF5tCRA9TVsSAnZWagAAwb0P/RVJ3UZv4r3h2TORAY4I\n5TVVDi2e0WazrvXjFl4qvlNw6PdEKD/KGfhIhsnwQSlKtLtTEDL/KKXYCRmK\njAafx12s2nlYr/L+naG3Uf7LHAdfAY9E/3KyE78b2oo7cf5Hc8jfFkpvqu2m\n1cN1+eJMgG9nQWoy6YGCUvz99FP/FhPFwoCZWhQ13sLjXO9R2Ct2oqWcoCZA\nxU74fZVPIt3m1aKyUS/EWfHeHteeqeSAKUcI34empJ22jbmEX/qIkZ4f7x8v\nVmYPNGHM8tq0X4d0OSiVEo2O59YNSFnClYWGeYZdGtPNzG/4SsR8cSsIdx0B\ndw9cBUWFQsfDhte+8zIb1aOzmLY7L1n+Dw7TdnoOYPMso0KfA9WNfYImjfxR\ntMZP6tkktbR1DKFaIeKO85FnlUm+vNTBtrmnJs/JalGuYj+SLjdxdvvaqyfT\nBzYk1EnTpi5FMZU1Lj8YTq26qC492I6fCBOoLpdjaNmaG3fIQdBakFVyodAT\nQn/z9/E/bx+V+9c5/GC/BkuV1T/0C2hTvNue9uNp0S+dBgyXtUXd8eV9IjAe\nz3CvNoCL8uvpQ75h7d0hmVlcuivdSmb1++qUfe33g2FLwyw/K73BhnIzUfOk\nhTNynXpN06zBkfmGNY8LOcAZODYm5juaAksi5l23+/iklqeeA8jDhZAfoJTw\nfmYQ\r\n=VGrk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cli.js","_from":"swapro","_spec":"swapro","_where":"C:\\Users\\‘سثق\\Desktop","_shasum":"a1960b6d8163219002e3b736e4d55e667df7d3ce","scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"_inBundle":false,"_location":"/swapro","_resolved":"https://registry.npmjs.org/swapro/-/swapro-2.0.2.tgz","_integrity":"sha512-wJAfiNuxpVuCzexEJvzYxfvmH2iuaQzwduKK53nXUgsWf6fI4XZpNHBuGyu1ZQ47KGUvyHbSy00wYJJPglKAJw==","_requested":{"raw":"swapro","name":"swapro","type":"tag","rawSpec":"","registry":true,"saveSpec":null,"fetchSpec":"latest","escapedName":"swapro"},"deprecated":false,"_npmVersion":"6.9.0","_requiredBy":["#USER"],"description":"swap is a programming language that allows programmers to code in swahili Language construct","directories":{},"_nodeVersion":"12.5.0","dependencies":{"mathjs":"^7.0.0","commander":"2.19.0","readline-sync":"1.4.9"},"_hasShrinkwrap":false,"_phantomChildren":{},"bundleDependencies":false,"_npmOperationalInternal":{"tmp":"tmp/swapro_3.0.0_1594646125460_0.46606368134259535","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"swapro","version":"3.0.1","author":{"name":"Abdulbasit Rubeiyya"},"license":"MIT","_id":"swapro@3.0.1","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"bin":{"swap":"cli.js"},"dist":{"shasum":"e8a6fcc6404f5e649c723fb55b2b8c72e78259c7","tarball":"https://registry.npmjs.org/swapro/-/swapro-3.0.1.tgz","fileCount":146,"integrity":"sha512-9GaAXsjQl05kWhcXhbMB6bvRwXLBIzP8BWo2fKWsW/7p64+7DtIPlDXGFyHHVNS0nK/rdFga3IcyLG2ihaBrbw==","signatures":[{"sig":"MEYCIQC+hrT9bS9rm/s9Nf2/bAqBonrCtM0r2NEZ9bPIp6HavQIhALwJzZLKia5oA+35OnO9l0XcjwHGwKhdonVjzaMNljTn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfk76XCRA9TVsSAnZWagAA5YoP/iByMluc6danTp7H9Jjz\nnO9241EWTjpJiYQA5JzfEFk2FnBmKwepBYYc4I0rCNtWAB4h59w8tO5SbW++\n9OBlnkQXkaYglN7wv/MR7Y8V5RIwBXudE8uL2BdXHmIk18Fq2VZDpVVW+wiD\nHjlkh1mFXKSLGL8ZIwfmoM2sT4WtVkFISr53T1HrE7a7iiZndmxmXawlCtm2\nhT2phMjeynDnSrC7WOAmERcuYRw/mqE9AfQ6/JVVODjK625VR2qWDi6suUH2\n70b0RaouJhTjpS+nCDoSJYQ3tsl2Pyt71Ft3J45QOmTbjDtes2BFTjdTzCN0\nZ3oKsx9uzR5fb+vZsGWkybHyHRmf1MDiWaF/cIhzK5QZSbO1kOIxC55MZr93\n9PXcLGv6fGji5O+FHyLbWYIPtGRuXIG+i9jEEIb99yJi1jNQx1twJ4nzlQ6F\nzpcecCZuPgH+F/YFoy9g5EF/EMLHpWaIm3HcwXuQZEB22dFU8OKDm1/5IB+E\nOaKjo6tRed/1A8M62FtUGjrvk8304epR4Dlet7QoS8pesxQb6c1CZ2ktu6Xj\nhWOdYfuo2kFf+kw8RTf5MCkuoTHHw0kSv9jyLtMf8z46sJJyRydC0yvR8Ezc\nOBfRKXjv54cW5yFlAwKbbc9cQTRlagKBf/g9dUZhWWwl0KbrYLFeUqvVQ7Xu\nmjmY\r\n=dO/h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cli.js","_from":"swapro","_spec":"swapro","_where":"C:\\WINDOWS\\system32","_shasum":"9789300e7260a7d3fdc1848dcce7d7c1f924bb7a","scripts":{"test":"swap"},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"_inBundle":false,"_location":"/swapro","_resolved":"https://registry.npmjs.org/swapro/-/swapro-3.0.0.tgz","_integrity":"sha512-VC5UBtSMFpPA9xoMdi7Rvnttq5vxrAf6kle+RbFpYsR5qtf8J2IJgndQE72Hj6k39C5gj2Skg4VSgcvlN1In0g==","_requested":{"raw":"swapro","name":"swapro","type":"tag","rawSpec":"","registry":true,"saveSpec":null,"fetchSpec":"latest","escapedName":"swapro"},"deprecated":false,"_npmVersion":"6.12.1","_requiredBy":["#USER"],"description":"swap is a programming language that allows programmers to code in swahili Language construct","directories":{},"_nodeVersion":"12.13.1","dependencies":{"mathjs":"^7.0.0","commander":"2.19.0","readline-sync":"1.4.9"},"_hasShrinkwrap":false,"_phantomChildren":{},"_npmOperationalInternal":{"tmp":"tmp/swapro_3.0.1_1603518103006_0.05950512838461974","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"swapro","version":"4.0.1","description":"swap is a programming language that allows programmers to code in Swahili language constructs","keywords":["swap","swahili","programming-language","interpreter","cli"],"homepage":"https://github.com/ibnsultan/swap#readme","bugs":{"url":"https://github.com/ibnsultan/swap/issues"},"repository":{"type":"git","url":"git+https://github.com/ibnsultan/swap.git"},"license":"MIT","author":{"name":"Abdulbasit Sultan Rubeiyya"},"main":"./cli.js","bin":{"swap":"cli.js"},"scripts":{"test":"jest"},"dependencies":{"commander":"2.19.0","mathjs":"^7.0.0","readline-sync":"1.4.9"},"devDependencies":{"jest":"^30.4.2"},"_id":"swapro@4.0.1","gitHead":"75fcf7f09fe99dc475437b3a914307bf4afc37f7","_nodeVersion":"22.13.1","_npmVersion":"11.5.2","dist":{"integrity":"sha512-GjpbPA8w4lkMWC8uDYlhZNcBgcbKE32iTflE49sX2+z/NYAZsOq3chdiEj0aIk/rf1EEnue+ktBWaCISJXhi9Q==","shasum":"fd7e9440e88424f376a049caf5dff539502e508e","tarball":"https://registry.npmjs.org/swapro/-/swapro-4.0.1.tgz","fileCount":206,"unpackedSize":326996,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGck6KpemysroHgJWNcQQ4XHkXyuNDueyQib0bpAR55NAiEA/j4Gns1a/NOScGFT6tomjuWTqbksAb1QGR+6U1C3jXQ="}]},"_npmUser":{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"},"directories":{},"maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/swapro_4.0.1_1786361143261_0.6679889304228934"},"_hasShrinkwrap":false}},"time":{"created":"2020-05-24T00:12:29.844Z","modified":"2026-08-10T11:25:43.572Z","1.0.0":"2020-05-24T00:12:29.987Z","1.0.1":"2020-05-24T00:35:22.290Z","1.0.2":"2020-05-24T02:34:18.204Z","1.1.0":"2020-05-26T08:53:34.532Z","2.0.0":"2020-05-26T21:35:54.379Z","2.0.1":"2020-05-27T11:29:32.129Z","2.0.2":"2020-05-27T16:31:04.358Z","3.0.0":"2020-07-13T13:15:25.612Z","3.0.1":"2020-10-24T05:41:43.442Z","4.0.0":"2026-08-10T11:19:55.563Z","4.0.1":"2026-08-10T11:25:43.419Z"},"author":{"name":"Abdulbasit Sultan Rubeiyya"},"license":"MIT","description":"swap is a programming language that allows programmers to code in Swahili language constructs","maintainers":[{"name":"ibnsultan003","email":"abdulbasitsultan4@gmail.com"}],"readme":"# Swap\n\n## Swahili Programming Language (SWAP)\n\nSWAP is a programming language that uses Swahili keywords to represent common programming constructs. It is designed to be simple and easy to learn, making it accessible for beginners and those who are more comfortable with the Swahili language.\n\nIt was the first of its kind to bring programming concepts to Swahili speakers in a native language context, and it has inpired to the creation of other programming languages in Swahili, such as pyswahili and swahili-lang.\n\n## Credits\nLots of credit to the author of yorlang @anoniscoding, he's the one who inspired me to create this programming language, and also for his great work on yorlang which was the base foundation for the initial version of swap.\n\n## TUTORIAL\n\n#### INSTALLATION\n\nGetting Started with Swap you need to have [node runtime](https://nodejs.org/en/download/) installed on your machine, After making sure that node runtime works on your machine run the following command\n\n`npm install -g swapro`\n\nAfter installation download run the command\n\n`swap -h`\n\nif your installation was successful the following result will show up\n\n```txt\n  ██████    ██      ██    ██████    ████████\n██      ██  ██      ██  ██      ██  ██      ██\n██          ██      ██  ██      ██  ██      ██\n  ██████    ██  ██  ██  ██████████  ████████\n        ██  ██  ██  ██  ██      ██  ██\n██      ██  ████  ████  ██      ██  ██\n  ██████    ██      ██  ██      ██  ██\n\nswahili programming language v3.0.0\nby Abdulbasit Rubeya\n\nUsage: cli [options] [file]\n\nOptions:\n  -v, --version      output the version number\n  -l, --lang <lang>  language for error messages (english|swahili)\n  -h, --help         output usage information\nauthor: Abdulbasit Sultan Rubeiyya\nExamples:\n  $ swap file.sw\n  $ swap -h\n  $ swap -v\n```\n\nThe banner is only shown for these info commands (bare `swap`, `-h`/`--help`, `-v`/`--version`, `-i`/`--interactive`) - it's skipped while a `.sw` file is running so it doesn't clutter your program's output, and it's drawn in a random color gradient each time, so don't worry if the colors look different between runs.\n\n#### INTERACTIVE REPL\n\nRun `swap -i` (or `swap --interactive`) to start an interactive session instead of running a file - useful for trying out small snippets of Swap without creating a `.sw` file. Variables and functions you declare stay available for the rest of the session, so you can build on earlier lines:\n\n```txt\n$ swap -i\nswap> hifadhi x = 5;\nswap> andika x + 10;\n15\nswap> toka;\nKwaheri!\n```\n\nStatements are evaluated one at a time as you press Enter, same as in a file - each one still needs its own terminating `;`. A block that spans multiple lines (`wakati`, `kama`, `njia`, `jaribu`, ...) is buffered and only run once its closing `}` is typed, shown with a continuation prompt (`...>`). Type `toka;` to exit the session.\n\nUnlike Node's REPL, a bare expression like `1 + 2` on its own is not valid syntax (same as in a `.sw` file) - use `andika ...;` to print a value.\n\nRuntime errors are reported as a single clean message (e.g. `Error: There's an error at line 3 near column 10 in file example.sw : ...`) rather than a raw Node.js stack trace. If you're working on the interpreter itself and want the full JS stack trace, run with `SWAP_DEBUG=1`, e.g. `SWAP_DEBUG=1 swap file.sw`.\n\nTo program using swap we will be using vscode, so open the program and install the swap extension <br>\n\n<img src=\"https://raw.githubusercontent.com/ibnsultan/swap-vsce/main/assets/swap.jpg\" width=\"100%\">\n\n1.  Linux : no more configurations start right away\n2.  Windows: no extra configuration needed either — swap accepts LF (Unix), CRLF (Windows), and legacy CR (old Mac) end-of-line formats and normalizes them automatically, so your editor's default line ending just works.\n\n\n\n**NOTE: The file extension for a swap file is .sw**\n\n### First Program\n\nSwap does not use any preprocessors, It uses the constant `andika` to print out the desired content, `andika` literally means \"write\"\n\n**eg. 1**\n```swap\nandika \"habari yako\";\n```\n\nResult:\n```txt\nhabari yako\n```\n\nEvery line of code has and must be terminated by a delimiter which is a `semicolon(;)`\n\nTo run your program initiate a CMD in your project directory and run the command\n `swap file.sw`\n\nFile should be replaced with the name of your file.\n\n### Comments\n\nSwap supports three comment styles: `#` and `//` for a single-line comment (everything up to the end of the line is ignored), and `/* ... */` for a comment that can span multiple lines.\n\n**eg. 1b**\n```swap\n# this is a comment\n// this is also a comment\n/* this is a\n   multi-line comment */\nandika \"habari\"; // prints habari\n```\n\nResult\n```txt\nhabari\n```\n\nNote that string literals have no escape sequence, so a `\"` can't appear inside a string, and there's no way to write a literal `*/` inside a block comment either — the first `*/` a block comment finds always ends it.\n\n### Variable Declaration\n\nVariables can only be declared in Swap using the keyword `hifadhi` which means to store something.\n\n**eg. 2**\n```swap\nhifadhi a = 10;\nhifadhi b = 20;\nandika a + b;\n```\n\nResult\n```txt\n30\n```\n\n**eg. 3**\n```swap\nhifadhi jina= \"juma\";\nhifadhi umri = 5 ;\nandika jina + \" \" + \"is\" + \" \" + umri + \" \" + \"years old\" ;\n```\n\nResult\n```txt\nJuma is 5 years old\n```\n\n### Requesting User Input\n\nSwap also supports the program interactive programming by requesting inputs from the user, the input request constant is `dai` which means \"request\".\n\n**eg. 4**\n\n```swap\nhifadhi jina = dai(\"andika jina lako: \");\n```\n\n### Displaying User Input\n\n**eg. 5**\n```swap\nhifadhi jina = dai(\"andika jina lako: \");\nandika \"Habari \" + jina;\n```\n\nAssuming after running the program the user provided it with input \"Abdulbasit\", then the results will be\n```txt\nHabari Abdulbasit\n```\n\nConditionals like if, else, else if and switch statements are also defined and used in Swap language.\n\n### If / Else If Conditions\n\n`if` is denoted by `kama`\n`else` is denoted by `basi`\n`else if` as `basi kama`\n\n**eg. 6**\n```swap\nhifadhi umri = 20;\nkama ( umri < 18 ){\n    hifadhi makamo = \"mtoto\" ;}\n    basi kama ( umri > 18 && umri < 50){\n    hifadhi makamo = \"kijana\" ;}\nbasi {\n    hifadhi makamo = \"mzee\" ;}\nandika \"juma ni \" + makamo ;\n```\n\nResult\n```txt\njuma ni kijana\n```\n\n**Explanation:** The above program is used to show from which age group does a person belong whether young, youth or an old person.\n\n### Switch Case\n\nAlso, switch case expressions are included. The switch case is only evaluated once, the value of each expression is always compared with the values of each case. If there is a match, the associated code block is run and then escapes the sequence.\nUnlike loops, `chagua` already stops as soon as the matching `kesi` (or `zaidi`) block finishes running - there's no fall-through to the next case, so the `vunja;` (`break;`) statement is neither needed nor valid inside a `chagua` block; using it there will throw a parse error. `vunja;` is only for escaping `wakati`/`hakika` loops early.\n\nThe switch case values are presented as follows:\n\n| Concept | Swap keyword |\n|---|---|\n| switch | `chagua` |\n| case | `kesi` |\n| default | `zaidi` |\n\n**eg. 7**\n\n```swap\nandika \"1. cct basic\";\nandika \"2. cct ordinary\";\nhifadhi teule = dai(\"weka chaguo lako hapa: \");\nwakati (teule > 0){\n    chagua (teule){ \n        kesi 1 :\n        andika \"chaguo lako ni: \" + teule ;\n        kesi 2 :\n        andika \"chaguo lako ni: \" + teule ;\n        zaidi :\n        andika \"umekosea tafadhali chagua tena\";\n    }\n    hifadhi teule = dai(\"weka chagua lako hapa: \");\n}\n```\n\n**Explanation:** The following program prompts a user to choose a tv package. If a program choice is present and is matched with the associated case, the program will echo the user's input and exit, else if the input value is not matched the program will continue to loop until a right input is given or the program is manually terminated.\n\n### Increments and Decrements\n\nIncrements and decrements like `i++` or `i--` are not valid and would throw out a fatal error when used. To declare an increment or decrement, normal mathematical expressions are used, i.e.\n\n```swap\nhifadhi a = a + 1; // for increment\nhifadhi a = a - 1; // for decrement\n```\n\n### Loops\n\n#### for Loop\n\nIn Swap, the \"for\" loop is implemented by the **`hakika`** statement and expressed as\n\n```swap\nhakika(hifadhi a = 0; a < 10; hifadhi a = a+1){\n    //statement\n}\n```\n\n#### while Loop\n\nIn Swap, the while loop is represented by the `wakati()` statement and is expressed as\n\n```swap\nwakati(hali/condition){\n    //statement;\n}\n```\n\n**eg. 8**\n\n```swap\nhifadhi a = 10;\nwakati(a!=0){\n    a = a-1;\n}\n```\n\nResult:\nThe program will continue to run until variable \"a\" decreases to 0. The `vunja;` keyword can be used to escape loops when necessary.\n\n### Functions\n\nA function is a code-block that performs a certain task. In Swap, a function can be a group of a procedure which performs a certain work or can be used to return a value.\n\nFunctions in Swap can be defined *as independent modules of code blocks that perform certain work.*\n\n**eg. 9**\n\nThe `function` keyword is held by `njia`.\n\n```swap\nnjia hesabu (a, b){\n    rejesha a+b;\n}\nhifadhi x = hesabu(12,6);\nandika x;\n```\n\nor\n\n```swap\nnjia hesabu (a, b){\n    andika a+b;\n}\nhesabu(12,6);\n```\n\nor\n\n```swap\nnjia hesabu (a, b){\n    rejesha a+b;\n}\nandika hesabu(12,6);\n```\n\nResult\n```txt\n18\n```\n\nIn Swap there is no pre-declaration of functional prototypes as in languages like C++, therefore the use of functions have to be fully declared before they are called.\n\n### Functions as Values (Lambdas)\n\nA `njia` written where a value is expected — instead of as its own top-level statement — evaluates to a callable value instead of registering a named function. This lets you store a function in a variable, pass one as an argument, or return one from another function.\n\n**eg. 9b**\n```swap\nhifadhi ongeza = njia (a, b) {\n    rejesha a + b;\n};\nandika ongeza(2, 3);\n```\n\nResult\n```txt\n5\n```\n\nNote the trailing `;` after the lambda's closing `}` — unlike a normal top-level `njia` declaration, this whole `njia (...) { ... }` is the right-hand side of a `hifadhi ... = ...;` assignment, so it needs the same statement-terminating `;` any other assignment does.\n\nA lambda can be passed as an argument and called from inside the function it's passed to:\n\n**eg. 9c**\n```swap\nhifadhi ongezaMaraMbili = njia (a) {\n    rejesha a * 2;\n};\n\nnjia tumia(kazi, x) {\n    rejesha kazi(x);\n}\n\nandika tumia(ongezaMaraMbili, 10);\n```\n\nResult\n```txt\n20\n```\n\nA lambda can also call itself recursively, and (unlike this version's named `njia` functions — see the note below) doing so is safe: each call gets its own private set of local variables, so a recursive lambda won't see its own parameters overwritten by a nested call to itself.\n\n**Note on scope:** a lambda does **not** automatically capture variables from where it was defined (no lexical closures). Reaching an outer variable from inside a lambda still requires `ita`, exactly as with named functions (see [Variable Scopes](#variable-scopes)) — and resolves *dynamically*, against whichever scope is actually live on the call stack at the moment the lambda runs, not against the scope it was written in. A pattern like a \"counter factory\" that expects a returned function to remember state private to where it was created will not behave as it would in a language with true lexical closures.\n\n**Known limitation:** named (non-lambda) `njia` functions that call themselves recursively currently share one set of local variable bindings across all of the active recursive calls, rather than each call getting its own — so a parameter or local variable read *after* a recursive call returns can come back with the innermost call's value instead of the current call's own value. Prefer a lambda (as above) over a named function for recursion until this is addressed.\n\n### Import\n\nThe import keyword is supplemented by the constant `lete` which literally means \"bring\". The import (`lete`) constant is used to import other files into the main program file.\n\nThe constant is followed by a string value which should contain the path to the imported file, and this path must be provided as a suffix to the absolute path of the needed file.\n\n**eg. 10**\n```swap\nlete \"file.sw\";\n```\nThe command will bring a file.sw into your program.\n\nSuppose you want to import a file from another directory:\n```swap\nlete \"PATH/file.sw\";\n```\n\n### Error Handling\n\nRuntime errors (e.g. dividing by zero, or reading an undefined variable) normally stop the whole program. To recover from one and keep running, wrap the risky code in a `jaribu` (\"try\") block followed by a required `kamata` (\"catch\") block. `kamata` takes a single variable name in parentheses; if the `jaribu` block throws an error, that variable is bound to the error's message and the `kamata` block runs instead of the program crashing.\n\n**eg. 12b**\n```swap\njaribu {\n    hifadhi x = 10 / 0;\n} kamata (hitilafu) {\n    andika \"Kosa limepatikana: \" + hitilafu;\n}\n\nandika \"Programu inaendelea\";\n```\n\nResult\n```txt\nKosa limepatikana: There's an error at line 2 near column 1 in file example.sw :\n SwapArithmeticException - cannot divide by zero\nProgramu inaendelea\n```\n\n`vunja` and `rejesha` used inside a `jaribu`/`kamata` block still work exactly as they do anywhere else — a `vunja` inside a `jaribu` nested in a loop still breaks that loop, and a `rejesha` inside a `jaribu` nested in a `njia` still returns from that function.\n\nA bare `jaribu` without a `kamata` block is not valid — every `jaribu` must be followed by `kamata (varname) { ... }`.\n\n### Variable Scopes\n\nA variable scope is the setting within which the variable is declared. All the inner functions (`njia`) have access to the variables that are from the outer function, unlike the inner functions - the outer functions do not have access to their inner functions.\n\n**eg. 11**\n\n```swap\nhifadhi a=3;\nnjia namba(){\n    hifadhi a=a+10;\n    andika a;\n}\nnamba();\nandika a;\n```\n\nResult:\n```txt\n13\n3\n```\n\nTo adopt the changes of a variable in inner functions, a variable must be marked with `ita`, giving it the backtick-quoted variable name(s) to link to the outer scope. This will make all changes in the inner function to the outer function noticeable.\n\n**eg. 12**\n\n```swap\nhifadhi a=3;\nnjia namba(){\n     ita `a`;\n     hifadhi a=a+10;\n     andika a;\n}\nnamba();\nandika a;\n```\n\nResult:\n```txt\n13 13\n```\n\n### Arrays\n\nAn array is a data structure that stores multiple elements in a single variable, and in most cases these elements are all of the same types, like integer or string.\n\nSwap supports two types of arrays:\n\n- the one-dimensional array and\n- the multi-dimensional array.\n\n#### One Dimensional Array\n\nIt is also known as the linear array. All elements stored can be accessed through a single subscript which either represents a row or a column.\n\n**eg. 13**\n\n```swap\nhifadhi array = [\"moja\",\"mbili\"];\nandika array;\nandika array[0];\n```\n\nResult:\n```txt\n[ 'moja', 'mbili' ]\nmoja\n```\n\n#### Multi-Dimensional Array\n\nIt is an array that stores data with more than one array level. A multi-dimensional array is used to store several data groups in one variable.\n\n**eg. 14**\n\n```swap\nhifadhi array = [[\"macho\",\"pua\",\"mdomo\",\"sikio\"],[1, 2, 3]];\nandika array;\nandika array[0];\nandika array[1][2];\n```\n\nResult:\n```txt\n[ [ 'macho', 'pua', 'mdomo', 'sikio' ], [ 1, 2, 3 ] ]\n[ 'macho', 'pua', 'mdomo', 'sikio' ]\n3\n```\n\nElements can be added to a swap array by leaving the index empty in the last position.\n\n**eg. 15**\n\n```swap\nhifadhi array = [1, 2, 3];\nandika array;\nhifadhi array[]=4;\nandika array;\n```\n\nResult:\n```txt\n[ 1, 2, 3 ]\n[ 1, 2, 3, 4 ]\n```\n\n### Maps (ramani)\n\nA `ramani` (\"map\") stores data as key/value pairs, rather than by numeric position like an array. Keys are bare identifiers (like variable or function-parameter names) — they can't be quoted strings or computed expressions.\n\n**eg. 15b**\n```swap\nhifadhi mtu = ramani(jina: \"Juma\", umri: 25);\nandika mtu;\nandika mtu.jina;\n```\n\nResult\n```txt\n{ jina: 'Juma', umri: 25 }\nJuma\n```\n\nReading a property uses `.` (e.g. `mtu.jina`). Writing to a property — whether changing an existing key or adding a new one — always needs the `hifadhi` keyword in front, exactly like assigning to an array element:\n\n**eg. 15c**\n```swap\nhifadhi mtu = ramani(jina: \"Juma\");\nhifadhi mtu.jina = \"Asha\";\nhifadhi mtu.umri = 30;\nandika mtu;\n```\n\nResult\n```txt\n{ jina: 'Asha', umri: 30 }\n```\n\nA value inside a `ramani` can be any type, including an array or another `ramani`. `ramani()` with no entries is a valid, empty map. Property access is single-level only in this version — to reach a value nested inside a `ramani` stored as another `ramani`'s value, read the inner one into its own variable first (e.g. `hifadhi anwani = mtu.anwani; andika anwani.mtaa;`) rather than chaining `mtu.anwani.mtaa` directly.\n\n### Built-in Functions\n\nSwap has several helper functions, the following is a list of those helper functions.\n\n#### herufiKubwa\n\n`herufiKubwa` is used to convert a string value of a variable into uppercase letters.\n\n**eg. 16**\n```swap\nandika herufiKubwa(\"herufi\");\n```\n\nResult\n```txt\nHERUFI\n```\n\n#### herufiNdogo\n\n`herufiNdogo` is the inverse of `herufiKubwa`. It converts a string value of a variable into lowercase letters.\n\n**eg. 17**\n```swap\nandika herufiNdogo(\"HerUFI\");\n```\n\nResult\n```txt\nherufi\n```\n\n#### kaunta\n\n`kaunta` is used to count the length of an array.\n\n**eg. 18**\n```swap\nandika kaunta([26,78,75,\"mango\"]);\n```\n\nResult\n```txt\n4\n```\n\n#### hariri\n\n`hariri` constant is used to edit a part of a string or substring of a string.\n\n**eg. 19**\n```swap\nandika hariri(\"wewe ni mbaya\", \"mbaya\", \"mzuri\");\n```\n\nThe function `hariri` takes in three arguments. Assuming the parameters used by the function `hariri` are x, y and z, then:\n- x will be the initial input\n- y is the string to find and replace in the input of x\n- z is the string value to replace the input of y\n\nResult\n```txt\nwewe ni mzuri\n```\n\nIt has replaced the string \"mbaya\" in a sentence with the string \"mzuri\".\n\n#### tafuta\n\n`tafuta` constant is used to find a substring in a string.\n\n**eg. 20**\n```swap\nandika tafuta (\"wewe ni mbaya\", \"mbaya\");\n```\n\nResult\n```txt\nkweli\n```\n\nIf the substring does not exist in the main string then it would have returned\n```txt\nsikweli\n```\n\n#### badili\n\n`badili` is Swap's `str_replace` equivalent. It replaces occurrences of a substring within a string, and supports several replacement styles depending on the arguments given: simple, multi, global (\"yote\"), and regex.\n\n**Simple replacement** — `badili(neno, kutafuta, badala)` replaces the first occurrence of `kutafuta` found in `neno` with `badala`.\n\n**eg. 21**\n```swap\nandika badili(\"wewe ni mbaya\", \"mbaya\", \"mzuri\");\n```\n\nResult\n```txt\nwewe ni mzuri\n```\n\n**Global replacement** — passing `\"yote\"` (meaning \"all\") as a fourth argument replaces every occurrence of `kutafuta` instead of just the first.\n\n**eg. 22**\n```swap\nandika badili(\"mbaya mbaya mbaya\", \"mbaya\", \"mzuri\", \"yote\");\n```\n\nResult\n```txt\nmzuri mzuri mzuri\n```\n\n**Multi replacement** — passing arrays of equal length for `kutafuta` and `badala` replaces every occurrence of each pair throughout the string, similar to PHP's array form of `str_replace`.\n\n**eg. 23**\n```swap\nandika badili(\"mbwa na paka\", [\"mbwa\",\"paka\"], [\"ng'ombe\",\"kuku\"]);\n```\n\nResult\n```txt\nng'ombe na kuku\n```\n\nNote that replacements happen sequentially, one pair at a time (like PHP's `str_replace`) — so swapping two values via `badili(neno, [\"a\",\"b\"], [\"b\",\"a\"])` will not work as expected, since the first replacement's output becomes the input for the second.\n\n**Regex replacement** — passing `\"regex\"` as a fourth argument treats `kutafuta` as a regular expression pattern. An optional fifth argument supplies regex flags (e.g. `\"g\"` for global, `\"i\"` for case-insensitive).\n\n**eg. 24**\n```swap\nandika badili(\"a1 b2 c3\", \"[0-9]\", \"#\", \"regex\", \"g\");\n```\n\nResult\n```txt\na# b# c#\n```\n\n#### More Built-in Functions\n\nThe following helper functions are also available. See [examples/12_more_helpers.sw](examples/12_more_helpers.sw) for a runnable demo of all of them.\n\n**Math**\n\n| Function | Description | Example | Result |\n|---|---|---|---|\n| `zungusha(namba)` | round to the nearest integer | `zungusha(4.5)` | `5` |\n| `sakafu(namba)` | round down (floor) | `sakafu(4.9)` | `4` |\n| `paa(namba)` | round up (ceiling) | `paa(4.1)` | `5` |\n| `kamili(namba)` | absolute value | `kamili(-7)` | `7` |\n| `kubwa(...namba)` | largest of the given numbers | `kubwa(3, 7, 2)` | `7` |\n| `ndogo(...namba)` | smallest of the given numbers | `ndogo(3, 7, 2)` | `2` |\n| `kipeo(msingi, kiwango)` | power (`msingi` to the `kiwango`) | `kipeo(2, 10)` | `1024` |\n| `mzizi(namba)` | square root | `mzizi(9)` | `3` |\n\n**Arrays**\n\n| Function | Description | Example | Result |\n|---|---|---|---|\n| `ongeza(orodha, thamani)` | push a value onto the end (mutates, returns the array) | `ongeza([1,2,3], 4)` | `[1,2,3,4]` |\n| `toa(orodha)` | remove and return the last element (mutates) | `toa([1,2,3])` | `3` |\n| `panga(orodha)` | sort ascending, in place (numeric if all numbers, else text) | `panga([10,2,33,4])` | `[2,4,10,33]` |\n| `unganisha(orodha, kitenganishi)` | join elements into a string | `unganisha([\"moja\",\"mbili\"], \"-\")` | `\"moja-mbili\"` |\n| `geuza(orodha)` | reverse, in place | `geuza([1,2,3])` | `[3,2,1]` |\n| `kata(orodha, mwanzo, mwisho)` | slice (does not mutate); `mwisho` is optional | `kata([1,2,3,4,5], 1, 3)` | `[2,3]` |\n\n**Strings**\n\n| Function | Description | Example | Result |\n|---|---|---|---|\n| `pogoa(neno)` | trim leading/trailing whitespace | `pogoa(\"  hi  \")` | `\"hi\"` |\n| `jaza(neno, urefu, tabia, mahali)` | pad to a length; pads at the start unless `mahali` is `\"mwisho\"` | `jaza(\"5\", 3, \"0\")` | `\"005\"` |\n| `gawa(neno, kitenganishi)` | split into an array; splits into characters if no separator given | `gawa(\"moja,mbili\", \",\")` | `[\"moja\",\"mbili\"]` |\n\n**Type / JSON**\n\n| Function | Description | Example | Result |\n|---|---|---|---|\n| `ainaYa(thamani)` | returns `\"namba\"`, `\"neno\"`, or `\"orodha\"` for the value's type | `ainaYa(5)` | `\"namba\"` |\n| `kwaJson(thamani)` | serialize a number/string/array/`ramani` to a JSON string | `kwaJson([1,2,3])` | `\"[1,2,3]\"` |\n| `kutokaJson(maandishi)` | parse a JSON string into a number/string/array/`ramani` | `kutokaJson(\"[1,2,3]\")` | `[1,2,3]` |\n\n**Note:** `kweli`/`sikweli` (boolean) values share the same internal representation as strings, so `ainaYa` currently reports `\"neno\"` for a boolean value rather than a distinct boolean type name. Also, Swap string literals have no escape sequence, so a literal `\"` can't appear inside one directly — if you need JSON text containing quotes in source code, build it with `kwaJson` rather than typing it by hand (see [examples/15_closure_helpers.sw](examples/15_closure_helpers.sw)).\n\n**Functions that take a function (closures)**\n\nThese take a `njia` value (see [Functions as Values](#functions-as-values-lambdas)) as one of their arguments — either a variable holding a lambda, a named function passed by name, or an inline lambda literal.\n\n| Function | Description | Example | Result |\n|---|---|---|---|\n| `ramanisha(orodha, kazi)` | map — build a new array from calling `kazi` on each element | `ramanisha([1,2,3], njia(x){ rejesha x*2; })` | `[2,4,6]` |\n| `chuja(orodha, kazi)` | filter — keep elements where `kazi` is truthy (anything but `sikweli`) | `chuja([1,2,3,4], njia(x){ rejesha x>2; })` | `[3,4]` |\n| `punguza(orodha, kazi, awali)` | reduce — fold the array to one value, starting from the required `awali` | `punguza([1,2,3,4], njia(j,x){ rejesha j+x; }, 0)` | `10` |\n| `kilamoja(orodha, kazi)` | forEach — call `kazi` once per element for side effects (e.g. `andika`); returns the array unchanged | `kilamoja([1,2], njia(x){ andika x; })` | prints `1`, `2` |\n","readmeFilename":"README.md","homepage":"https://github.com/ibnsultan/swap#readme","keywords":["swap","swahili","programming-language","interpreter","cli"],"repository":{"type":"git","url":"git+https://github.com/ibnsultan/swap.git"},"bugs":{"url":"https://github.com/ibnsultan/swap/issues"}}