{"id":19930998,"url":"https://github.com/vitalegi/kata-args-parser","last_synced_at":"2025-03-01T11:23:52.851Z","repository":{"id":118112307,"uuid":"581136887","full_name":"vitalegi/kata-args-parser","owner":"vitalegi","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-02T00:26:16.000Z","size":85,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-12T01:24:36.992Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vitalegi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-22T11:20:10.000Z","updated_at":"2024-06-18T05:39:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"4a721510-fb6a-410a-bf6d-1d3fdba1f7ef","html_url":"https://github.com/vitalegi/kata-args-parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalegi%2Fkata-args-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalegi%2Fkata-args-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalegi%2Fkata-args-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalegi%2Fkata-args-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vitalegi","download_url":"https://codeload.github.com/vitalegi/kata-args-parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241356788,"owners_count":19949595,"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-12T23:05:48.116Z","updated_at":"2025-03-01T11:23:52.827Z","avatar_url":"https://github.com/vitalegi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Implementare una classe `Args` che realizzi un parser.\n\n# Operative info\n\n## Requirements\n\n- JDK 8\n- maven\n\n## Build\n\n```\nmvn clean package\n\nor (to use the configured mvn):\n\n./mvnw clean package\n```\n\n## Run tests\n\n```\nmvn test\n\nor (to use the configured mvn):\n\n./mvnw test\n```\n\n\n# Fase 1\n\nDeve implementare i seguenti metodi:\n\n## `Args(String format, String args)`\n\nParametri:\n\n- `format`: è una stringa contenente la definizione del parser. è costituita da una serie di token nel formato `\u003cname\u003e\u003ctype\u003e[,\u003cname\u003e\u003ctype\u003e]*`.\n- `\u003cname\u003e` è un carattere alfabetico\n- `\u003ctype\u003e` rappresenta il tipo di quel campo, valori possibili:\n  - `!`: il campo `\u003cname\u003e` è un boolean (`true` \u0026rarr; `true`, `false` \u0026rarr; `false`, altri valori \u0026rarr; `eccezione`)\n  - `#`: il campo `\u003cname\u003e` è un integer\n  - `\u0026`: il campo `\u003cname\u003e` è una stringa\n  - `\u003cstringa vuota\u003e`: il campo `\u003cname\u003e` è una stringa\n\nEsempio: `a!,b#,c` \u0026rarr; `a` è un boolean, `b` un intero, `c` una stringa\n\n- `args`: è una stringa contenente il testo da parsare\n\nEsempio: `-a true -b -53 -c hello`, col format `a!,b#,c`, identifica a=true, b=-53, c=\"hello\"\n\nIl metodo lancia `ArgsException` se si verifica un errore. Esempi di errore possono essere:\n\n- format contiene caratteri non validi\n- args contiene campi non riconosciuti\n- il valore in `args` non è compatibile col tipo atteso\n\n## `int getInteger(String name)`\n\nRestituisce il valore del campo `name` della stringa `args` passata al costruttore.\n\nEccezione se il campo non è un intero o non esiste nella definizione.\n\n## `boolean getBoolean(String name)`\n\nRestituisce il valore del campo `name` della stringa `args` passata al costruttore.\n\nEccezione se il campo non è un boolean o non esiste.\n\n## `String getString(String name)`\n\nRestituisce il valore del campo `name` della stringa `args` passata al costruttore.\n\nEccezione se il campo non esiste.\n\n# Fase 2\n\nHai fatto un lavoro eccellente nel reinventare l'acqua calda, ora tutti vogliono usare la tua classe e ti si chiede di estenderla:\n\n- `LocalDate getLocalDate(String name)`: restituisce un LocalDate. Il `type` corrispondente è `%`. Formato atteso del valore: `yyyy-MM-dd`\n- `BigDecimal getBigDecimal(String name)`: restituisce un BigDecimal. Il `type` corrispondente è `$`. Formato atteso del valore: `123.456`\n\n# Fase 3\n\n- i valori di `args` possono contenere degli spazi, se la stringa inizia/finisce con doppi apici. `-c \"hello world\"` è una stringa valida, `-c hello world` no.\n- i valori in `format` possono avere un nome più lungo di un carattere\n- in `args` ogni `name` può avere più valori.\n    - Dati i precedenti getter, prevedi l'equivalente che restituisca la lista di valori, ad esempio `List\u003cString\u003e getStrings(String name)`\n    - I vecchi getter restituiscono il primo elemento della lista\n    - L'ordine della lista è quello dato dall'utente\n\nEsempio:\n\n```\nnew Args(\"bool!,b#,text\", \"-bool true -bool false -b -53 -text hello -text world -text \\\"foo bar\\\"\")\ngetString(\"text\"); // \"hello\"\ngetStrings(\"text\"); // [\"hello\", \"world\", \"foo bar\"]\ngetBoolean(\"bool\"); // true\ngetBooleans(\"bool\"); // [true, false]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitalegi%2Fkata-args-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvitalegi%2Fkata-args-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitalegi%2Fkata-args-parser/lists"}