require 'formula' class Redis < Formula homepage 'http://redis.io/' url 'http://redis.googlecode.com/files/redis-2.4.15.tar.gz' sha1 '9e388d2c070b15136da1277f4d21f1c788694b12' head 'https://github.com/antirez/redis.git', :branch => 'unstable' devel do url 'http://redis.googlecode.com/files/redis-2.6.0-rc5.tar.gz' sha1 '8051ea9092f238d41966d761b6d80dffc987e37c' end fails_with :llvm do build 2334 cause 'Fails with "reference out of range from _linenoise"' end def install # Architecture isn't detected correctly on 32bit Snow Leopard without help ENV["OBJARCH"] = MacOS.prefer_64_bit? ? "-arch x86_64" : "-arch i386" # Head and stable have different code layouts src = (buildpath/'src/Makefile').exist? ? buildpath/'src' : buildpath system "make", "-C", src, "CC=#{ENV.cc}" %w[benchmark cli server check-dump check-aof].each { |p| bin.install src/"redis-#{p}" } %w[run db/redis log].each { |p| (var+p).mkpath } # Fix up default conf file to match our paths inreplace "redis.conf" do |s| s.gsub! "/var/run/redis.pid", "#{var}/run/redis.pid" s.gsub! "dir ./", "dir #{var}/db/redis/" s.gsub! "\# bind 127.0.0.1", "bind 127.0.0.1" end etc.install 'redis.conf' unless (etc/'redis.conf').exist? plist_path.write startup_plist plist_path.chmod 0644 end def caveats <<-EOS.undent If this is your first install, automatically load on login with: mkdir -p ~/Library/LaunchAgents cp #{plist_path} ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename} If this is an upgrade and you already have the #{plist_path.basename} loaded: launchctl unload -w ~/Library/LaunchAgents/#{plist_path.basename} cp #{plist_path} ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename} To start redis manually: redis-server #{etc}/redis.conf To access the server: redis-cli EOS end def startup_plist return <<-EOPLIST KeepAlive Label #{plist_name} ProgramArguments #{HOMEBREW_PREFIX}/bin/redis-server #{etc}/redis.conf RunAtLoad UserName #{`whoami`.chomp} WorkingDirectory #{var} StandardErrorPath #{var}/log/redis.log StandardOutPath #{var}/log/redis.log EOPLIST end end s/tree/docs/src?h=v1.2.7&id=d7fde5fcb12ba0bcb8061ad349e22f3513cd6ec6'>src/example.js
blob: eadc218f1f3515c9e7f289da010f4f0358083308 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
var seqCount = 0;
var usedIds = {};
var makeUnique = {
  'index.html': true,
  'style.css': true,
  'script.js': true,
  'unit.js': true,
  'spec.js': true,
  'scenario.js': true
}

function ids(list) {
  return list.map(function(item) { return item.id; }).join(' ');
};


exports.Example = function(scenarios) {
  this.module = '';
  this.deps = ['angular.js'];
  this.html = [];
  this.css = [];
  this.js = [];
  this.unit = [];
  this.scenario = [];
  this.scenarios = scenarios;
}

exports.Example.prototype.setModule = function(module) {
  if (module) {
    this.module = module;
  }
};

exports.Example.prototype.addDeps = function(deps) {
  deps && deps.split(/[\s\,]/).forEach(function(dep) {
    if (dep) {
      this.deps.push(dep);
    }
  }, this);
};

exports.Example.prototype.addSource = function(name, content) {
  var ext = name == 'scenario.js' ? 'scenario' : name.split('.')[1],
      id = name;

  if (makeUnique[name] && usedIds[id]) {
    id = name + '-' + (seqCount++);
  }
  usedIds[id] = true;
  
  this[ext].push({name: name, content: content, id: id});
  if (name.match(/\.js$/) && name !== 'spec.js' && name !== 'unit.js' && name != 'scenario.js') {
    this.deps.push(name);
  }
  if (ext == 'scenario') {
    this.scenarios.push(content);
  }
};

exports.Example.prototype.enableAnimations = function() {
  this.animations = true;
};

exports.Example.prototype.disableAnimations = function() {
  this.animations = false;
};

exports.Example.prototype.toHtml = function() {
  var html = "<h2>Source</h2>\n";
  html += this.toHtmlEdit();
  html += this.toHtmlTabs();
  if(this.animations) {
    html += '<div class="pull-right">';
    html += ' <button class="btn btn-primary" ng-click="animationsOff=true" ng-hide="animationsOff">Animations on</button>';
    html += ' <button class="btn btn-primary disabled" ng-click="animationsOff=false" ng-show="animationsOff">Animations off</button>';
    html += '</div>';
  }
  html += "<h2>Demo</h2>\n";
  html += this.toHtmlEmbed();
  return html;
};


exports.Example.prototype.toHtmlEdit = function() {
  var out = [];
  out.push('<div source-edit="' + this.module + '"');
  out.push(' source-edit-deps="' + this.deps.join(' ') + '"');
  out.push(' source-edit-html="' + ids(this.html) + '"');
  out.push(' source-edit-css="' + ids(this.css) + '"');
  out.push(' source-edit-js="' + ids(this.js) + '"');
  out.push(' source-edit-unit="' + ids(this.unit) + '"');
  out.push(' source-edit-scenario="' + ids(this.scenario) + '"');
  out.push('></div>\n');
  return out.join('');
};

exports.Example.prototype.toHtmlTabs = function() {
  var out = [],
      self = this;

  out.push('<div class="tabbable">');
  htmlTabs(this.html);
  htmlTabs(this.css);
  htmlTabs(this.js);
  htmlTabs(this.unit);
  htmlTabs(this.scenario);
  out.push('</div>');
  return out.join('');

  function htmlTabs(sources) {
    sources.forEach(function(source) {
      var wrap = '',
          isCss = source.name.match(/\.css$/),
          name = source.name;

      if (name === 'index.html') {
        wrap = ' ng-html-wrap="' + self.module + ' ' + self.deps.join(' ') + '"';
      }
      if (name == 'scenario.js') name = 'End to end test';

      out.push(
        '<div class="tab-pane" title="' + name + '">\n' +
          '<pre class="prettyprint linenums" ng-set-text="' + source.id + '"' + wrap + '></pre>\n' +
          (isCss
             ? ('<style type="text/css" id="' + source.id + '">' + source.content + '</style>\n')
             : ('<script type="text/ng-template" id="' + source.id + '">' + source.content + '</script>\n') ) +
        '</div>\n');
    });
  }
};

exports.Example.prototype.toHtmlEmbed = function() {
  var out = [];
  out.push('<div class="well doc-example-live animator-container"');
  if(this.animations) {
    out.push(" ng-class=\"{'animations-off':animationsOff == true}\"");
  }
  out.push(' ng-embed-app="' + this.module + '"');
  out.push(' ng-set-html="' + this.html[0].id + '"');
  out.push(' ng-eval-javascript="' + ids(this.js) + '">');
  out.push('</div>');
  return out.join('');
};