{"id":13803805,"url":"https://github.com/pakoito/RxPartialApplication","last_synced_at":"2025-05-13T16:32:30.931Z","repository":{"id":139227822,"uuid":"51712220","full_name":"pakoito/RxPartialApplication","owner":"pakoito","description":"Simple partial application for FuncN and ActionN on RxJava [STABLE]","archived":false,"fork":false,"pushed_at":"2017-03-22T00:09:14.000Z","size":78,"stargazers_count":30,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T04:57:02.285Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pakoito.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-02-14T20:34:41.000Z","updated_at":"2020-05-01T23:00:12.000Z","dependencies_parsed_at":"2024-01-03T01:29:58.786Z","dependency_job_id":"f39e16af-d640-42c0-b3da-f6d99f9cb1a2","html_url":"https://github.com/pakoito/RxPartialApplication","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pakoito%2FRxPartialApplication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pakoito%2FRxPartialApplication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pakoito%2FRxPartialApplication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pakoito%2FRxPartialApplication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pakoito","download_url":"https://codeload.github.com/pakoito/RxPartialApplication/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253981934,"owners_count":21994361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T01:00:38.064Z","updated_at":"2025-05-13T16:32:25.904Z","avatar_url":"https://github.com/pakoito.png","language":"Java","funding_links":[],"categories":["Utilities"],"sub_categories":[],"readme":"# RxPartialApplication\n\nRxPartialApplication is a library to allow [partial application](https://en.wikipedia.org/wiki/Partial_application) on RxJava function primitives.\n\nFor the RxJava 2.X version please go to [RxPartialApplication2](https://github.com/pakoito/RxPartialApplication2).\n\n## Usage\n\nRxPartialApplication contains two classes, `RxPartialAction` and `RxPartialFunc`. Each contains a set of `apply()` (apply parameters from left to right) and `applyEnd()` (apply parameters from right to left) methods to do partial application from any ActionN and FuncN to any type of a lower arity. For example, you can partially apply a Func6 object with 3 prefilled parameters to obtain a Func3 object to be reused.\n\nFunction to multiply numbers by 100:\n```java\nFunc1\u003cInteger, Integer\u003e multiplyBy100 = RxPartialFunc.apply((int first, int second) -\u003e { return first * second; }, 100);\nint result = multiplyBy100.call(5); // result == 500\n```\n\nSingle parameter applicator:\n```java\nAction1\u003cString\u003e salutator = RxPartialAction.apply(applicator(), (String parameter) -\u003e { System.out.println(\"Hello, \" + parameter); } );\nsalutator.call(\"pakoito\"); // prints \"Hello, pakoito\"\nAction1\u003cInteger\u003e duplicator = RxPartialFunc.apply(applicator(), (int parameter) -\u003e { System.out.println(\"Double of parameter is \" + 2 * parameter); } );\nduplicator.call(2); // prints \"Double of parameter is 4\"\n\n...\n\npublic static \u003cT\u003e Action2\u003cAction1\u003cT\u003e, T\u003e applicator() {\n    return (Action1\u003cT\u003e action, T parameter) -\u003e { action.call(parameter); };\n}\n```\n\nFilter only myself:\n```java\nFunc1\u003cObject, Boolean\u003e isMe = RxPartialFunc.apply(equalsFilter(), myUser);\nupdatesFromDatabaseObservable().filter(isMe).map(toUser()).subscribe(/* ... */);\n\n...\n\npublic static \u003cT, U\u003e Func2\u003cT, U, Boolean\u003e equalsFilter() {\n    return (T first, U second) -\u003e { return first.equals(second); };\n}\n```\n\nYou can also partially apply from the last parameter using `applyEnd()`\n\n```java\nFunc1\u003cString, Observable\u003cString\u003e\u003e\u003e requestForUrl = \n        RxPartialFunc.applyEnd(this::doNetworkRequest(), localDataStorage, ServerInfo.default(), RetrofitRequest.getInstance());\n\nrequestForUrl.call(\"http://www.mycompany.com/api/users\").subscribe(/* ... */);\n\nObservable\u003cString\u003e doNetworkRequest(String url, DataStorage storage, ServerInformation server, HttpClient client){\n  ...\n}\n```\n\n## Distribution\n\nAdd as a dependency to your `build.gradle`\n```groovy\nrepositories {\n    ...\n    maven { url \"https://jitpack.io\" }\n    ...\n}\n    \ndependencies {\n    ...\n    compile 'com.github.pakoito:RxPartialApplication:1.1.0'\n    ...\n}\n```\nor to your `pom.xml`\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.pakoito\u003c/groupId\u003e\n    \u003cartifactId\u003eRxPartialApplication\u003c/artifactId\u003e\n    \u003cversion\u003e1.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## License\n\nCopyright (c) pakoito 2016\n\nThe Apache Software License, Version 2.0\n\nSee LICENSE.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpakoito%2FRxPartialApplication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpakoito%2FRxPartialApplication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpakoito%2FRxPartialApplication/lists"}