{"id":18774667,"url":"https://github.com/firefly-cpp/ast-tdl","last_synced_at":"2025-04-13T09:22:09.739Z","repository":{"id":37795980,"uuid":"471010303","full_name":"firefly-cpp/ast-tdl","owner":"firefly-cpp","description":"Training Description Language","archived":false,"fork":false,"pushed_at":"2024-10-08T06:07:58.000Z","size":192,"stargazers_count":2,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T00:54:57.304Z","etag":null,"topics":["artificial-sport-trainer","domain-specific-language"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/firefly-cpp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-03-17T13:39:05.000Z","updated_at":"2024-10-08T06:07:31.000Z","dependencies_parsed_at":"2024-04-08T02:09:54.463Z","dependency_job_id":"5f0f470a-8a1c-41f5-bb84-85219f148a05","html_url":"https://github.com/firefly-cpp/ast-tdl","commit_stats":{"total_commits":67,"total_committers":5,"mean_commits":13.4,"dds":0.582089552238806,"last_synced_commit":"df533405de884f12e9da84ed47e4c42c8cdfcdd0"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fast-tdl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fast-tdl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fast-tdl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fast-tdl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firefly-cpp","download_url":"https://codeload.github.com/firefly-cpp/ast-tdl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248537192,"owners_count":21120711,"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":["artificial-sport-trainer","domain-specific-language"],"created_at":"2024-11-07T19:38:56.417Z","updated_at":"2025-04-13T09:22:09.702Z","avatar_url":"https://github.com/firefly-cpp.png","language":"Ruby","funding_links":[],"categories":["Software 💻"],"sub_categories":["Wrestling 🤼‍♀️"],"readme":"\u003ch1 align=\"center\"\u003e\n  Training Description Language (TDL) for Artificial Sport Trainer (AST)\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Gem package\" src=\"https://img.shields.io/gem/v/ast-tdl?color=blue\" href=\"https://rubygems.org/gems/ast-tdl\"\u003e\n  \u003cimg alt=\"AUR package\" src=\"https://img.shields.io/aur/version/ruby-ast-tdl?color=blue\u0026label=Arch%20Linux\u0026logo=arch-linux\" href=\"https://aur.archlinux.org/packages/ruby-ast-tdl\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"DOI\" src=\"https://img.shields.io/badge/DOI-10.3390/app122412741-blue\" href=\"https://doi.org/10.3390/app122412741\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-motivation\"\u003e💡 Motivation\u003c/a\u003e •\n  \u003ca href=\"#-feature-diagram\"\u003e✨ Feature diagram\u003c/a\u003e •\n  \u003ca href=\"#-installation\"\u003e📦 Installation\u003c/a\u003e •\n  \u003ca href=\"#️-language-description\"\u003e🗣️ Language description\u003c/a\u003e •\n  \u003ca href=\"#-examples\"\u003e🚀 Examples\u003c/a\u003e •\n  \u003ca href=\"#-license\"\u003e🔑 License\u003c/a\u003e •\n  \u003ca href=\"#-references\"\u003e📝 References\u003c/a\u003e\n\u003c/p\u003e\n\n## 💡 Motivation\nast-dsl is intended to be a small DSL for practical definition and description of sports training that can be automatically or manually defined and used in conjunction with Artificial Sport Trainer.\n\nAccording to sports theory, three major types of sports training exist:\n- speed training ⚡\n- interval training ⏱️\n- power training 💪\n\nSpeed training is intended to supply an athlete with energy, coordination and power adaptation. This type of sports training is often used by middle-distance athletes, as it can enhance their performance.\n\nInterval training was first described by Reindell and Roskamm, however, it was popularized by the famous Chech athlete Emil Zatopek. This type of training consists of a speed phase followed by a recovery phase. This sequence is repeated several times, and the number of repetitions depends on the interval training plan.\n\nPower training has been proven to be an effective method for increasing muscle mass. Consequently, in most cases, they are used in extreme sports, such as weight lifting, where the lactate amount in blood is significant.\n\n## ✨ Feature diagram\n![ast-tdl](https://user-images.githubusercontent.com/73126820/193033601-6c94b328-30a4-4b25-86a3-0fb81cebca3d.png)\n\n## 📦 Installation\nTo install `ast-dsl` with gem, use:\n\n```sh\n$ gem install ast-tdl\n```\nTo install `ast-tdl` on Alpine, use:\n\n```sh\n$ apk add ruby-ast-tdl\n```\n\nTo install `ast-dsl` on Arch Linux, use an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers):\n\n```sh\n$ yay -Syyu ruby-ast-tdl\n```\n\n## 🗣️ Language description\nTraining Description Language (TDL) is implemented in Ruby. All three major training types (speed, interval and power) can be described in TDL.\n\nSpeed training sessions are described with their name, sport type, proposed average heart rate and total duration, while additional information is optional. \n\nInterval training sessions and their speed counterparts are described with their name, type of sport and optional information. However, heart rate and duration of intervals are described separately for both the speed and recovery phases. Additionally, the number of repetitions and interval training types are also described along with the features mentioned earlier.\n\nPower training sessions are described with their names and sports types. However, as opposed to speed and interval they are described with series, which are further described with their name, intensity level from 1 to 10 and number of repetitions.\n\n## 🚀 Examples\n### Example of a sports training\n```ruby\nAst.build do\n  speed('Swimming with the dolphins') do\n    sport                   Sport::SWIMMING\n    info                    :\"Very easy training\"\n    average_heart_rate      :\"130\"\n    total_duration          :\"30\"\n  end\n\n  speed('Cross the country') do\n    sport                   Sport::CYCLING\n    info                    :\"Endurance ride\"\n    average_heart_rate      :\"140\"\n    total_duration          :\"120\"\n  end\n\n  interval('Following Emil Zatopek') do\n    sport                   Sport::RUNNING\n    info                    :Hard\n    speed_duration          :\"1\"\n    recovery_duration       :\"1\"\n    speed_heart_rate        :\"180\"\n    recovery_heart_rate     :\"90\"\n    repetitions             :\"10\"\n    type                    :fixed\n  end\n\n  power('As strong as an ox') do\n    sport                   Sport::WEIGHT_LIFTING\n    series('Little ox') do\n      intensity:   :\"5\"\n      repetitions  :\"20\"\n    end\n    series('Big ox') do\n      intensity    :\"10\"\n      repetitions  :\"80\"\n    end\n  end\nend\n```\n\nThe description of the sports training consists of four sessions: two speed sessions, one interval session and one power session. The first (swimming speed) session is relatively easy, as the planned heart rate during the 30-minute session is prescribed to be 130 BPM. The second (cycling speed) session is described as a 2-hour endurance ride with the prescribed average heart rate of 140 BPM. The third session is a hard, running interval training. It consists of 10 fixed intervals, where the speed phase and recovery duration are 1 minute each. The proposed heart rate during speed phases is set at 180 BPM, while it is set to half the heart rate (90 BPM) in recovery phases. The final (weight-lifting) power session consists of two series: the first is moderate intensity with 20 repetitions, and the second is high intensity with 80 repetitions.\n\n## 🔑 License\nThis package is distributed under the MIT License. This license can be found online at \u003chttp://www.opensource.org/licenses/MIT\u003e.\n\n## Disclaimer\nThis framework is provided as-is, and there are no guarantees that it fits your purposes or that it is bug-free. Use it at your own risk!\n\n## 📝 References\nLukač, L., Fister Jr., I., Fister, I. \"[Digital Twin in Sport: From an Idea to Realization](https://www.mdpi.com/2076-3417/12/24/12741).\" Applied Sciences 12.24 (2022): 12741.\n\nFister Jr, I., Fister, I., Iglesias, A., Galvez, A., Deb, S., \u0026 Fister, D. (2021). On deploying the Artificial Sport Trainer into practice. arXiv preprint [arXiv:2109.13334](https://arxiv.org/abs/2109.13334).\n\nLukač, L. (2022). [Aplikacija koncepta digitalnega dvojčka v športu](https://dk.um.si/IzpisGradiva.php?id=82612). University of Maribor, Faculty of Electrical Engineering and Computer Science. [Access: 29th September, 2022].\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirefly-cpp%2Fast-tdl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirefly-cpp%2Fast-tdl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirefly-cpp%2Fast-tdl/lists"}