highcarb 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  *.swp
2
+ highcarb*.gem
2
3
  tmp
data/README.md CHANGED
@@ -6,15 +6,8 @@ The presentation is based on Deck.js
6
6
 
7
7
  ## Installation
8
8
 
9
- I have to create a gem (or event a .deb package). Right now, the easiest way to install it
10
- is clone the repository and add an alias.
11
-
12
9
  ```
13
- $ cd /somewhere/
14
- $ git clone git://github.com/ayosec/highcarb.git
15
- $ cd highcarb
16
- $ bundle install
17
- $ alias highcarb="ruby /somewhere/highcarb/bin/highcarb"
10
+ $ gem install highcarb
18
11
  ```
19
12
 
20
13
  ### Dependencies
@@ -28,6 +21,12 @@ In Debian (and derived) everything can be installed with
28
21
  $ sudo apt-get install nodejs python-pygments
29
22
  ```
30
23
 
24
+ Mac OSX
25
+
26
+ ```
27
+ $ brew install node.js
28
+ $ sudo easy_install Pygments
29
+ ```
31
30
  ## Generate a presentation project
32
31
 
33
32
  The `-g` flag generate a new tree with the base for the presentation
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "highcarb/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ # Metadata
7
+ s.name = "highcarb"
8
+ s.version = HighCarb::Version
9
+ s.authors = ["Ayose Cazorla"]
10
+ s.email = ["ayosec@gmail.com"]
11
+ s.homepage = "https://github.com/ayosec/highcarb"
12
+ s.summary = %q{Slides manager based on Deck.js }
13
+ s.description = %q{HighCarb can build a presentation based on HAML, Markdown or raw HTML, and let to control them from another browser, via WebSockets.}
14
+
15
+ # Manifest
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_runtime_dependency "thin"
22
+ s.add_runtime_dependency "mime-types"
23
+ s.add_runtime_dependency "em-websocket"
24
+ s.add_runtime_dependency "trollop"
25
+ s.add_runtime_dependency "nokogiri"
26
+ s.add_runtime_dependency "haml"
27
+ s.add_runtime_dependency "sass"
28
+ s.add_runtime_dependency "kramdown"
29
+ s.add_runtime_dependency "coffee-script"
30
+ end
31
+
@@ -1,6 +1,7 @@
1
1
 
2
2
  require "trollop"
3
3
  require "logger"
4
+ require "io/console"
4
5
 
5
6
  require "highcarb"
6
7
  require "highcarb/generator"
@@ -31,6 +32,8 @@ module HighCarb
31
32
  opt "skip-libs", "Don't download vendor libraries, like Deck.js and jQuery"
32
33
 
33
34
  opt "verbose", "Be verbose"
35
+
36
+ opt "auth", "Require auth to access", default: ""
34
37
  end
35
38
 
36
39
  if @options["verbose"]
@@ -51,7 +54,19 @@ module HighCarb
51
54
  # Generate a new project
52
55
  HighCarb::Generator.new(self, args.first).run!
53
56
  else
54
- HighCarb::Services.start!(self, @logger)
57
+ auth = nil
58
+ if not options["auth"].empty?
59
+ user, password = options["auth"].split(":", 2)
60
+ if password.nil?
61
+ print "Type the password for #{user}: "
62
+ $stdout.flush
63
+ password = $stdin.noecho { $stdin.readline.chomp }
64
+ end
65
+
66
+ auth = [ user, password ]
67
+ end
68
+
69
+ HighCarb::Services.start!(self, @logger, auth)
55
70
  end
56
71
 
57
72
  rescue HighCarb::Error => error
@@ -35,9 +35,17 @@ module HighCarb
35
35
  create_file path.join("assets/base.scss"),
36
36
  "/*\n * Write here your own styles.\n" +
37
37
  " * Compass modules are available\n */\n\n\n" +
38
+ "@import url('/assets/vendor/deck.js/core/deck.core.scss');\n" +
39
+ "@import url('/assets/vendor/deck.js/extensions/goto/deck.goto.scss');\n" +
40
+ "@import url('/assets/vendor/deck.js/extensions/menu/deck.menu.scss');\n" +
41
+ "@import url('/assets/vendor/deck.js/extensions/navigation/deck.navigation.scss');\n" +
42
+ "@import url('/assets/vendor/deck.js/extensions/status/deck.status.scss');\n" +
43
+ "@import url('/assets/vendor/deck.js/extensions/hash/deck.hash.scss');\n" +
44
+ "\n\n/* Choose your favourite deck.js theme */\n" +
38
45
  "@import url('/assets/vendor/deck.js/themes/style/swiss.css');\n" +
39
46
  "@import url('/assets/vendor/deck.js/themes/transition/horizontal-slide.css');\n"
40
47
 
48
+
41
49
  create_file path.join("assets/remote.scss"), "/* Add here your styles for the /remote view */"
42
50
  create_file path.join("assets/custom-remote.coffee"), "# Add here your own code for the /remote view"
43
51
  create_file path.join("assets/custom.coffee"), "# Add here your own code for the views"
@@ -9,7 +9,7 @@ module HighCarb
9
9
  module Services
10
10
  extend self
11
11
 
12
- def start!(command, logger)
12
+ def start!(command, logger, auth)
13
13
  EM.run do
14
14
  EM::WebSocket.start(host: '0.0.0.0', port: command.options["ws-port"] ) do |websocket|
15
15
  WSConnection.new websocket, logger
@@ -18,7 +18,14 @@ module HighCarb
18
18
  Thin::Server.start(
19
19
  '0.0.0.0',
20
20
  command.options["http-port"],
21
- Rack::Builder.new { run RackApp.new(command) }
21
+ Rack::Builder.new do
22
+ if auth
23
+ use Rack::Auth::Basic, "HighCarb" do |username, password|
24
+ username == auth[0] && password == auth[1]
25
+ end
26
+ end
27
+ run RackApp.new(command)
28
+ end
22
29
  )
23
30
  end
24
31
  end
@@ -0,0 +1,3 @@
1
+ module HighCarb
2
+ Version = "0.2"
3
+ end
@@ -4,9 +4,10 @@ window.WebSocket = MozWebSocket if MozWebSocket?
4
4
  $ ->
5
5
 
6
6
  # Load slides and initialize Deck.js
7
- $(".deck-container").load "/slides",
8
- ->
9
- $(".deck-container").find(".note").remove()
7
+ $.get "/slides",
8
+ (data) ->
9
+ $(".slides").replaceWith data
10
+ $(".slides").find(".note").remove()
10
11
  $.deck ".slide"
11
12
 
12
13
  # Open a permanent connection to the server. With this channel
@@ -3,8 +3,8 @@
3
3
  %head
4
4
  %link{rel: "stylesheet", href: "/assets/base.scss"}
5
5
 
6
- %body.presenter
7
- .deck-container Loading...
6
+ %body.presenter.deck-container
7
+ .slides Loading...
8
8
 
9
9
  %script{ src: "/assets/vendor/deck.js/jquery-1.7.min.js" }
10
10
  %script{ src: "/assets/vendor/deck.js/modernizr.custom.js" }
@@ -44,7 +44,6 @@
44
44
  padding: 0.5ex;
45
45
  }
46
46
 
47
- %link{rel: "stylesheet", href: "/assets/base.scss"}
48
47
  %link{rel: "stylesheet", href: "/assets/remote.scss"}
49
48
 
50
49
  %body.remote
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: highcarb
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-08 00:00:00.000000000 Z
12
+ date: 2012-07-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thin
16
- requirement: &4114200 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *4114200
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: mime-types
27
- requirement: &4109560 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *4109560
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: em-websocket
38
- requirement: &4104920 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *4104920
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: trollop
49
- requirement: &4103380 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *4103380
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: nokogiri
60
- requirement: &4102700 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *4102700
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: haml
71
- requirement: &4100660 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *4100660
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: sass
82
- requirement: &4100060 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :runtime
89
119
  prerelease: false
90
- version_requirements: *4100060
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: kramdown
93
- requirement: &4099460 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :runtime
100
135
  prerelease: false
101
- version_requirements: *4099460
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: coffee-script
104
- requirement: &4098560 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,7 +149,12 @@ dependencies:
109
149
  version: '0'
110
150
  type: :runtime
111
151
  prerelease: false
112
- version_requirements: *4098560
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  description: HighCarb can build a presentation based on HAML, Markdown or raw HTML,
114
159
  and let to control them from another browser, via WebSockets.
115
160
  email:
@@ -125,6 +170,7 @@ files:
125
170
  - Gemfile.lock
126
171
  - README.md
127
172
  - bin/highcarb
173
+ - highcarb.gemspec
128
174
  - lib/highcarb.rb
129
175
  - lib/highcarb/assets_controller.rb
130
176
  - lib/highcarb/command.rb
@@ -133,6 +179,7 @@ files:
133
179
  - lib/highcarb/services.rb
134
180
  - lib/highcarb/slides_controller.rb
135
181
  - lib/highcarb/sockets.rb
182
+ - lib/highcarb/version.rb
136
183
  - lib/highcarb/views_controller.rb
137
184
  - resources/views/index.coffee
138
185
  - resources/views/index.haml
@@ -158,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
205
  version: '0'
159
206
  requirements: []
160
207
  rubyforge_project:
161
- rubygems_version: 1.8.10
208
+ rubygems_version: 1.8.23
162
209
  signing_key:
163
210
  specification_version: 3
164
211
  summary: Slides manager based on Deck.js