{"id":27400194,"url":"https://github.com/shmink/metaprogramming-elixir","last_synced_at":"2025-06-25T03:33:59.880Z","repository":{"id":90508618,"uuid":"156536594","full_name":"shmink/metaprogramming-elixir","owner":"shmink","description":"Notes and examples I create whilst covering the book.","archived":false,"fork":false,"pushed_at":"2018-12-12T11:13:16.000Z","size":37,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T03:33:52.286Z","etag":null,"topics":["book","elixir","examples","metaprogramming","notes"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","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/shmink.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,"zenodo":null}},"created_at":"2018-11-07T11:30:10.000Z","updated_at":"2024-11-26T14:58:02.000Z","dependencies_parsed_at":"2023-05-16T13:45:53.431Z","dependency_job_id":null,"html_url":"https://github.com/shmink/metaprogramming-elixir","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shmink/metaprogramming-elixir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmink%2Fmetaprogramming-elixir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmink%2Fmetaprogramming-elixir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmink%2Fmetaprogramming-elixir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmink%2Fmetaprogramming-elixir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shmink","download_url":"https://codeload.github.com/shmink/metaprogramming-elixir/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmink%2Fmetaprogramming-elixir/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261798756,"owners_count":23211259,"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":["book","elixir","examples","metaprogramming","notes"],"created_at":"2025-04-14T03:26:40.987Z","updated_at":"2025-06-25T03:33:59.863Z","avatar_url":"https://github.com/shmink.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Metaprogamming Elixir\n\n## by Chris McCord (author of the Phoenix framework)\n\n_Write less code, get more done (and have fun!)_ :purple_heart:\n\n[![codebeat badge](https://codebeat.co/badges/69f4818d-55a7-41bf-b642-4350f5885ab4)](https://codebeat.co/projects/github-com-shmink-metaprogramming-elixir-master) \n\n### Abstract\n\nReading this book to learn about how macros work and following some of the relevant\nexamples. This README will serve as my notes, therefore you shouldn't take them at face\nvalue as the notes will make sense for me as I cherry pick a sentence or an analogy.\nMoreover, don't expect direct quotes, changing the sentences vocbulary helps me personally.\n\n### Contents\n\n-   [Chapter 1 - The Language of Macros](chapters/chapter1.md)\n\n    -   [What are Macros?](chapters/chapter1.md#what-are-macros)\n    -   [The Abstract Syntax Tree](chapters/chapter1.md#the-abstract-syntax-tree)\n    -   [Trying It All Together](chapters/chapter1.md#trying-it-all-together)\n    -   [Macro Rules](chapters/chapter1.md#macro-rules)\n    -   [The Abstract Syntax Tree - Demystified](chapters/chapter1.md#the-abstract-syntax-tree-demystified)\n    -   [High-Level Syntax vs. Low-level AST](chapters/chapter1.md#high-level-syntax-vs-low-level-ast)\n    -   [AST Literals](chapters/chapter1.md#ast-literals)\n    -   [Macros: The Building Blocks of Elixir](chapters/chapter1.md#macros-the-building-blocks-of-elixir)\n    -   [Macro Expansion](chapters/chapter1.md#macro-expansion)\n    -   [Code Injection and the Caller's Context](chapters/chapter1.md#code-injection-and-the-callers-context)\n\n-   [Chapter 2 - Extending Elixir with Metaprogramming](chapters/chapter2.md)\n\n    -   [Re-Creating the if Macro](chapters/chapter2.md#re-creating-the-if-macro)\n    -   [Adding a while Loop to Elixir](chapters/chapter2.md#adding-a-while-loop-to-elixir)\n    -   [Smarter Testing with Macros](chapters/chapter2.md#smarter-testing-with-macros)\n    -   [Extending Modules](chapters/chapter2.md#extending-modules)\n    -   [Using Module Attributes for Code Generation](chapters/chapter2.md#using-module-attributes-for-code-generation)\n    -   [Compile-Time Hooks](chapters/chapter2.md#compile-time-hooks)\n\n-   [Chapter 3 - Advanced Compile-Time Code Generation](chapters/chapter3.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshmink%2Fmetaprogramming-elixir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshmink%2Fmetaprogramming-elixir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshmink%2Fmetaprogramming-elixir/lists"}