{"id":16347944,"url":"https://github.com/ai/evil-front","last_synced_at":"2025-04-09T14:13:28.317Z","repository":{"id":6578235,"uuid":"7820405","full_name":"ai/evil-front","owner":"ai","description":"Helpers for frontend from Evil Martians","archived":false,"fork":false,"pushed_at":"2017-03-31T09:53:29.000Z","size":225,"stargazers_count":101,"open_issues_count":0,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T12:11:25.988Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/ai.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":"2013-01-25T13:13:27.000Z","updated_at":"2023-03-27T03:04:09.000Z","dependencies_parsed_at":"2022-08-06T19:15:44.053Z","dependency_job_id":null,"html_url":"https://github.com/ai/evil-front","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai%2Fevil-front","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai%2Fevil-front/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai%2Fevil-front/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ai%2Fevil-front/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ai","download_url":"https://codeload.github.com/ai/evil-front/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054193,"owners_count":21039952,"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-10-11T00:47:24.933Z","updated_at":"2025-04-09T14:13:28.296Z","avatar_url":"https://github.com/ai.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evil Front [![Build Status](https://travis-ci.org/ai/evil-front.svg)](https://travis-ci.org/ai/evil-front)\n\nHelpers, shortcuts and my common frontend workflows\nfrom [Evil Martians](http://evilmartians.com/).\n\nThe project is separated into 3 gems:\n* [Evil Front](evil-front/) only contains helpers and doesn’t change\n  the application environment.\n* [Evil Front All](evil-front-all/) loads the workflow gems: Autoprefixer, Csso,\n  Slim, JqueryCdn, Evil Blocks, Uglifier.\n* [Evil Front Rails](evil-front-rails/) loads the workflow gems and changes\\\n  Rails settings to create my common frontend workflow\n  with a single line of code.\n\nYou can safely use Evil Front Core, but the other two gems have side effects,\nso I recommend to only use them for new projects.\n\nSome of the view helpers from Evil Front Core may require Rails, but most of them\nwork with any Ruby application.\n\n\u003ca href=\"https://evilmartians.com/?utm_source=evil-front\"\u003e\n\u003cimg src=\"https://evilmartians.com/badges/sponsored-by-evil-martians.svg\" alt=\"Sponsored by Evil Martians\" width=\"236\" height=\"54\"\u003e\n\u003c/a\u003e\n\n## Helpers\n\nThe Evil Front Core gem contains assets and view helpers:\n\n### View Helpers\n\n#### Typography\n\n* [russian_typograph](evil-front/lib/evil-front/helpers/russian_typograph.rb)\n  to add typographical symbols (like Russian quotes, em-dash),\n  non-breaking spaces.\n* [english_typograph](evil-front/lib/evil-front/helpers/english_typograph.rb)\n  to add typographical symbols (like quotes, ellipsis), non-breaking spaces.\n* [typograph_by_locale](evil-front/lib/evil-front/helpers/typograph_by_locale.rb)\n  uses `russian_typograph` or `english_typograph` depend on current locale.\n* [auto_flying_quotes](evil-front/lib/evil-front/helpers/auto_flying_quotes.rb)\n  add tags to quotes to move it from text left horizontal line.\n* [ruble](evil-front/lib/evil-front/helpers/ruble.rb) to insert the Russian\n  currency character.\n* [capitalize_first](evil-front/lib/evil-front/helpers/capitalize_first.rb)\n  to capitalize only first letter.\n\n#### Head Tags\n\n* [title](evil-front/lib/evil-front/helpers/title.rb) to set page title\n  in view file and [title_tag](evil-front/lib/evil-front/helpers/title_tag.rb)\n  to use title from view in layout.\n* [standard_assets](evil-front/lib/evil-front/helpers/standard_assets.rb)\n  shortcut to add `application.css`, jQuery from CDN and `application.js`.\n* [head_content](evil-front/lib/evil-front/helpers/head_content.rb)\n  to add some tags to head from view and\n  [head_tag](evil-front/lib/evil-front/helpers/head_tag.rb) to use views\n  head tags in layout.\n* [disable_mobile_zoom](evil-front/lib/evil-front/helpers/disable_mobile_zoom.rb)\n  shortcut for common viewport usage.\n\n####  Other\n\n* [tel](evil-front/lib/evil-front/helpers/tel.rb) to insert phone numbers as\n  links with the `tel:` protocol.\n\n### Sass Helpers\n\n* `black(alpha)` and `white(alpha)` shortcut\n  [functions](evil-front/lib/assets/stylesheets/evil-front/colors.sass).\n* [+import-ruble](evil-front/lib/assets/stylesheets/evil-front/import-ruble.sass)\n  mixin to enable `ruble` helper.\n* [+flying-quotes](evil-front/lib/assets/stylesheets/evil-front/flying-quotes.sass)\n  mixin to enable `auto_flying_quotes` helper.\n* [+no-hover](evil-front/lib/assets/stylesheets/evil-front/no-hover.sass),\n  [+hover](evil-front/lib/assets/stylesheets/evil-front/hover.sass) and\n  [+styled-taps](evil-front/lib/assets/stylesheets/evil-front/styled-taps.sass)\n  mixin to work with hover/tap styles on touch devices.\n* [Variables](evil-front/lib/assets/stylesheets/evil-front/easings.sass)\n  with [easings](http://easings.net/).\n* CSS Media Queries\n  [shortcuts](evil-front/lib/assets/stylesheets/evil-front/media.sass).\n* [+stroke-text(color)](evil-front/lib/assets/stylesheets/evil-front/stroke-text.sass)\n  shortuct to add text shadow for every side of text.\n* [+height(size)](evil-front/lib/assets/stylesheets/evil-front/height.sass)\n  shortcut to set `height` and `line-height` properties.\n* [+size(width, height)](evil-front/lib/assets/stylesheets/evil-front/size.sass)\n  shortcut.\n* Compact and nice\n  [+sticky-footer](evil-front/lib/assets/stylesheets/evil-front/sticky-footer.sass)\n  mixin.\n* [+clearfix](evil-front/lib/assets/stylesheets/evil-front/clearfix.sass)\n  by `::after` with `clear: both`.\n\n### JS Helpers\n\n* [after(ms, callback)](evil-front/lib/assets/javascripts/evil-front/after.js)\n  and\n  [every(ms, callback)](evil-front/lib/assets/javascripts/evil-front/every.js)\n  syntax sugar to clean up `setTimeout` and `setInterval` in CoffeeScript.\n* [Script](evil-front/lib/assets/javascripts/evil-front/links.js) to prevent\n  default behavior for AJAX links with `href=\"#\"` to clean event listeners from\n  noisy `return false`.\n* [$.fn.evil.outside](evil-front/lib/assets/javascripts/evil-front/outside.js)\n  to listen click outside element.\n* [$.fn.evil.ajax(opts)](evil-front/lib/assets/javascripts/evil-front/ajax.js)\n  to create AJAX forms.\n* [evil.queue(name, callback)](evil-front/lib/assets/javascripts/evil-front/queue.js)\n  to synchronizate animations.\n* [Script](evil-front/lib/assets/javascripts/evil-front/tappable.js)\n  to enable tapped styles for touch devices.\n* [Script](evil-front/lib/assets/javascripts/evil-front/detect-3d.js)\n  to detect 3D support.\n* `evil.post`, `evil.del` and `evil.put`\n  [shortcuts](evil-front/lib/assets/javascripts/evil-front/http.js).\n* `evil.win`, `evil.body` and `evil.doc`\n  [shortcuts](evil-front/lib/assets/javascripts/evil-front/core.js).\n\n## Workflow\n\nThe Evil Front All gem loads my must-have tools:\n\n* [Sass](http://sass-lang.com/) to write pretty styles.\n* [Slim](http://slim-lang.com/) to write pretty views.\n* [CoffeeScript](http://coffeescript.org/) to write pretty scripts.\n* [Uglifier](https://github.com/lautis/uglifier) to compress JS.\n* [CSSO](http://bem.info/tools/csso/) to compress CSS.\n* [Sprockets](https://github.com/sstephenson/sprockets) to work with assets\n  in best way.\n* [jQueryCDN](https://github.com/ai/jquery-cdn) to load latest jQuery\n  in best way.\n* [Autoprefixer](https://github.com/ai/autoprefixer) to add CSS3 prefixes.\n* [Rails Sass Images](https://github.com/ai/rails-sass-images) to inline images\n  and get their sizes from Sass.\n* [Evil Blocks](https://github.com/ai/evil-blocks) to manage your scripts.\n\n## Rails Settings\n\nThe Evil Front Rails gem changes default Rails settings:\n\n* **Autoprecompile** adds all files in root of `app/assets/stylesheets`\n  and `app/assets/javascripts` to precompile. You should only store loadable\n  files in subdirs.\n* **Disable assets generation** on controller and action generation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fai%2Fevil-front","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fai%2Fevil-front","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fai%2Fevil-front/lists"}