Skip to content

Instantly share code, notes, and snippets.

@fujimura
Last active December 18, 2015 21:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fujimura/5849201 to your computer and use it in GitHub Desktop.
Save fujimura/5849201 to your computer and use it in GitHub Desktop.
Output mass exports for CoffeeScript

Output mass exports.

How to use

$ git grep -h require app | ./module_exports.rb > all.coffee
$ cat all.coffee
module.exports = {
  "Application"    : require 'application',
  "Chaplin"        : require 'chaplin',
  "Controller"     : require 'controllers/base/controller',
  "Collection"     : require 'models/base/collection',
  "Model"          : require 'models/base/model',
  "News"           : require 'models/news',
  "NewsCollection" : require 'models/news_collection',
  "View"           : require 'views/base/view',
  "HeaderView"     : require 'views/header-view',
  "NewsView"       : require 'views/news-view',
  "SiteView"       : require 'views/site-view'
}

In your CoffeeScript file:

{Application, Chaplin, NewsView, View} = require 'all'

class YourNewView extends View
 foo: 'bar'

TODO

Rewrite to brunch plugin

#! /usr/bin/env ruby
cons_and_requires = STDIN.read.lines.
map(&:strip).
select { |f| f =~ /^[A-Z].*= ?require.*/}. # Start with Upper letter == a constant
map { |f| f.split("=").map &:strip }.
uniq.
sort_by { |_, r| r }.
map { |c, r| [%|"#{c}"|, r] }
l = cons_and_requires.map(&:first).map(&:length).max
res = cons_and_requires.
map { |c, r| %| #{c.ljust l} : #{r}|}.
join(",\n")
puts "module.exports = {\n#{res}\n}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment