{"id":20859100,"url":"https://github.com/andersinno/necromancer","last_synced_at":"2026-04-26T14:31:21.627Z","repository":{"id":6040709,"uuid":"7265155","full_name":"andersinno/necromancer","owner":"andersinno","description":null,"archived":false,"fork":false,"pushed_at":"2012-12-20T22:25:08.000Z","size":132,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-19T07:25:10.153Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/andersinno.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}},"created_at":"2012-12-20T22:11:21.000Z","updated_at":"2013-10-20T18:30:20.000Z","dependencies_parsed_at":"2022-09-10T02:12:16.662Z","dependency_job_id":null,"html_url":"https://github.com/andersinno/necromancer","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/andersinno%2Fnecromancer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersinno%2Fnecromancer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersinno%2Fnecromancer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersinno%2Fnecromancer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andersinno","download_url":"https://codeload.github.com/andersinno/necromancer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243230090,"owners_count":20257644,"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-18T04:48:38.785Z","updated_at":"2025-12-25T14:36:19.775Z","avatar_url":"https://github.com/andersinno.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Necromancer - animate dead elements\n===================================\n\nNecromancer is a small library/DSL for immersive \"Flash-like\"\nanimations and animation loops for web sites.\n\nIt was originally written at [Anders Inno](http://andersinno.com/)\nin approximately two days for a client project that required rich\nanimation that would also work on iPads. This obviously ruled out\nFlash, so we -- or well, I -- busted out a text editor and hacked\nNecromancer together. Product delivered well before deadline, with\n(quite literally -- Necromancer supports sound via the BellToll\nsubmodule) bells and whistles attached.\n\nThe source code for Necromancer had been languishing on my HD for\nfar too long, and I figured other people might have use for its\neldritch horrors.\n\nOh - yes, you can bet the naming of classes and concepts in\nNecromancer is as silly as the name of the library.\n\nFeatures\n--------\n\n* Nice DSL for coders-writing-animations (once you get used to it)\n* Reasonably fast (1st generation iPads had no trouble)\n* Supports multiple instances of objects without conflicts\n* Automatically repeating animations (if required)\n* Extensible without too much effort\n* About 10k when minified, like 4k when gzipped! POW!\n\nConcepts/API\n------------\n\nThe library itself is currently more or less undocumented, but here goes:\n\n* A *Necromancer* is an object that possesses a given DOM element\n  and orchestrates its behavior via what is affectionately called\n  a ritual.\n\n* *Rituals* are objects that are (usually) created via a pseudo\n  DSL (Domain Specific Language). Rituals describe how an element\n  behaves in a series of procedural, deterministic (well, deterministic\n  during runtime, at least -- you can generate rituals on the fly)\n  calls to behavioral incantations (Actions) looked up from the Grimoire.\n\n* The *RitualBook* (a global object, also accessible via Necromancer.RitualBook)\n  contains rituals that may be called upon by name instead of direct reference.\n\n* The *Grimoire* is a single object that contains Actions that\n  Rituals may call upon. For instance, \"css\", \"show\", \"animate\" and \"delay\" are\n  among the default Actions provided with Necromancer.\n  One can also write their own Actions and add them into the Grimoire.\n  Subsequent Ritual creations will then be able to access them.\n  It's accessible as Necromancer.Grimoire.\n\n* The *StudyHall* is a factory for new Rituals. It can provide you with\n  a fast way to implement blinking lights (makeClassTogglingRitual),\n  occasionally disappearing things (makeBlinkingRitual), or for instance\n  puffs of smoke (makeFadingMoverRitual). It's provided as a convenience,\n  and can be mercilessly ripped out of the library if you want a smaller\n  build. It is accessible as Necromancer.StudyHall.\n\n* The *ScryingOrb* is a versatile debugging tool that may be used by a\n  Necromancer via the scry() call.\n\n* *BellToll* is a helper object to interface with (what was, at the time\n  of the library's writing, hot stuff) the SoundManager library to enable\n  the @playSound Action. It can also be ripped out.\n\nIf this all seems confusing -- well, you're right, it may well be.\n\nYou should take a look at the sample(s) in the \"samples/\" directory and\nthings might get a little clearer. The samples are also living proof of why I\nwrite code and don't draw graphics.\n\nRequirements\n------------\n\nOn the build machine, you'll need the bizarre and excellent\n[Coco](http://github.com/satyr/coco) language, as the library\nis written in it.\n\nOn clients, jQuery or another library API compatible with it is\ncurrently required. Patches to remove this dependency are welcome.\n\nCredits\n-------\n\nWritten with love and hacker spirit by [akx](http://github.com/akx)\nat Anders Inno.\n\nLicense\n-------\n\nLicensed under the MIT License:\n\nCopyright (C) 2011, 2012 by Anders Inno Oy\n\nPermission is hereby granted, free of charge, to any\nperson obtaining a copy of this software and associated\ndocumentation files (the \"Software\"), to deal in the\nSoftware without restriction, including without\nlimitation the rights to use, copy, modify, merge,\npublish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software\nis furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice\nshall be included in all copies or substantial portions\nof the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY\nKIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\nTHE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\nPARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\nCONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersinno%2Fnecromancer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandersinno%2Fnecromancer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersinno%2Fnecromancer/lists"}