{"id":18885812,"url":"https://github.com/code4craft/fizzbuzzwhizz","last_synced_at":"2025-04-14T21:31:01.042Z","repository":{"id":16722464,"uuid":"19479490","full_name":"code4craft/FizzBuzzWhizz","owner":"code4craft","description":"Practice in OOP for thoughtworks quiz FizzBuzzWhizz. ","archived":false,"fork":false,"pushed_at":"2014-05-07T11:31:26.000Z","size":172,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-22T11:07:50.905Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code4craft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-06T03:14:50.000Z","updated_at":"2019-08-11T07:36:37.000Z","dependencies_parsed_at":"2022-07-26T08:47:59.652Z","dependency_job_id":null,"html_url":"https://github.com/code4craft/FizzBuzzWhizz","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2FFizzBuzzWhizz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2FFizzBuzzWhizz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2FFizzBuzzWhizz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2FFizzBuzzWhizz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code4craft","download_url":"https://codeload.github.com/code4craft/FizzBuzzWhizz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223646123,"owners_count":17179044,"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-11-08T07:22:13.562Z","updated_at":"2024-11-08T07:22:14.927Z","avatar_url":"https://github.com/code4craft.png","language":"Java","readme":"FizzBuzzWhizz\n=============\n\nPractice in OOP for thoughtworks quiz [FizzBuzzWhizz](https://www.jinshuju.net/f/EGQL3D). \n\n### API:\n\n```java\nNumberSequenceSayer numberSequenceSayer = NumberSequenceSayerBuilder.custom()\n   .setNumberSayer(\n       or(contains(3).thenReturn(\"Fizz\"))\n       .or(\n           concat(\n              mod(3).is(0).thenReturn(\"Fizz\"),\n              mod(5).is(0).thenReturn(\"Buzz\"),\n              mod(7).is(0).thenReturn(\"Whizz\")\n           )\n       )\n       .or(echoInputNumber())\n   )\n   .setStartNumber(1).setEndNumber(100).get();\nSystem.out.println(numberSequenceSayer.say());\n```\n\n### Internal:\n\n#### `NumberSayer`\n\nA strategy to say a number. Can be composite to `CompositeNumberSayer` and `OrNumberSayer`.\n\n```java\npublic interface NumberSayer {\n\n    /**\n     * Say a number\n     * @param number\n     * @return\n     */\n    public String say(int number);\n}\n```\n\n#### `NumberSequenceSayer`\n\nEntire flow of numbers.\n\n```java\npublic class NumberSequenceSayer {\n\n    private final NumberSayer numberSayer;\n\n    private final int startNumber;\n\n    private final int endNumber;\n\n    private static String SEPARATOR = System.getProperty(\"line.separator\");\n\n    public NumberSequenceSayer(NumberSayer numberSayer, int startNumber, int endNumber) {\n        this.numberSayer = numberSayer;\n        this.startNumber = startNumber;\n        this.endNumber = endNumber;\n    }\n\n    public String say() {\n        StringBuilder accum = new StringBuilder();\n        for (int i = startNumber; i \u003c= endNumber; i++) {\n            String say = numberSayer.say(i);\n            if (say != null) {\n                accum.append(say).append(SEPARATOR);\n            }\n        }\n        return accum.toString();\n    }\n}\n```\n\nDetail in blog:\n\n[http://my.oschina.net/flashsword/blog/261140](http://my.oschina.net/flashsword/blog/261140)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode4craft%2Ffizzbuzzwhizz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode4craft%2Ffizzbuzzwhizz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode4craft%2Ffizzbuzzwhizz/lists"}