flammarion 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Readme.md +1 -1
- data/electron/flammarion-window.sh +2 -0
- data/electron/main.coffee +8 -4
- data/electron/main.js +11 -6
- data/electron/package.json +9 -1
- data/electron/preload.coffee +12 -0
- data/electron/preload.js +16 -0
- data/lib/flammarion/revelator.rb +1 -1
- data/lib/flammarion/version.rb +1 -1
- data/lib/flammarion/writeable.rb +18 -7
- data/lib/html/build/javascripts/actions.js +10 -1
- data/lib/html/build/javascripts/all.js +10 -1
- data/lib/html/build/javascripts/input.js +10 -1
- data/lib/html/build/javascripts/map.js +10 -1
- data/lib/html/build/javascripts/websocket.js +10 -1
- data/lib/html/build/stylesheets/all.css +1 -0
- data/lib/html/build/stylesheets/engraving.css +1 -0
- data/lib/html/source/javascripts/websocket.coffee +10 -1
- data/lib/html/source/stylesheets/engraving.styl +1 -0
- metadata +3 -2
data/Readme.md
CHANGED
@@ -78,7 +78,7 @@ f.button("Click Here!!!") {f.puts "You clicked the button!"}
|
|
78
78
|
f.input("Placeholder > ") {|msg| f.puts "You wrote: #{msg['text'].light_magenta}"}
|
79
79
|
```
|
80
80
|
|
81
|
-
The [api
|
81
|
+
The [api documentation](http://zach-capalbo.github.io/flammarion/doc/Flammarion.html)
|
82
82
|
is available at <http://zach-capalbo.github.io/flammarion/doc/Flammarion.html>.
|
83
83
|
|
84
84
|
## Screenshots / Samples
|
data/electron/main.coffee
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
app = require 'app'
|
2
2
|
BrowserWindow = require('browser-window')
|
3
|
-
require('crash-reporter').start()
|
4
3
|
path = require('path')
|
4
|
+
shell = require('electron').shell
|
5
5
|
|
6
6
|
app.on 'ready', ->
|
7
7
|
preload = path.resolve(path.join(__dirname, 'preload.js'))
|
8
8
|
main_window = new BrowserWindow
|
9
|
-
width:800
|
10
|
-
height: 600
|
9
|
+
width: parseInt(process.argv[3]) || 800
|
10
|
+
height: parseInt(process.argv[4]) || 600
|
11
11
|
"node-integration": false
|
12
12
|
"web-security":false
|
13
|
+
icon:"icon.png"
|
13
14
|
preload:preload
|
14
|
-
main_window.
|
15
|
+
main_window.loadURL(process.argv[2])
|
16
|
+
main_window.webContents.on 'new-window', (event, url) ->
|
17
|
+
event.preventDefault()
|
18
|
+
shell.openExternal(url)
|
data/electron/main.js
CHANGED
@@ -1,26 +1,31 @@
|
|
1
1
|
// Generated by CoffeeScript 1.9.0
|
2
2
|
(function() {
|
3
|
-
var BrowserWindow, app, path;
|
3
|
+
var BrowserWindow, app, path, shell;
|
4
4
|
|
5
5
|
app = require('app');
|
6
6
|
|
7
7
|
BrowserWindow = require('browser-window');
|
8
8
|
|
9
|
-
require('crash-reporter').start();
|
10
|
-
|
11
9
|
path = require('path');
|
12
10
|
|
11
|
+
shell = require('electron').shell;
|
12
|
+
|
13
13
|
app.on('ready', function() {
|
14
14
|
var main_window, preload;
|
15
15
|
preload = path.resolve(path.join(__dirname, 'preload.js'));
|
16
16
|
main_window = new BrowserWindow({
|
17
|
-
width: 800,
|
18
|
-
height: 600,
|
17
|
+
width: parseInt(process.argv[3]) || 800,
|
18
|
+
height: parseInt(process.argv[4]) || 600,
|
19
19
|
"node-integration": false,
|
20
20
|
"web-security": false,
|
21
|
+
icon: "icon.png",
|
21
22
|
preload: preload
|
22
23
|
});
|
23
|
-
|
24
|
+
main_window.loadURL(process.argv[2]);
|
25
|
+
return main_window.webContents.on('new-window', function(event, url) {
|
26
|
+
event.preventDefault();
|
27
|
+
return shell.openExternal(url);
|
28
|
+
});
|
24
29
|
});
|
25
30
|
|
26
31
|
}).call(this);
|
data/electron/package.json
CHANGED
data/electron/preload.coffee
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
window.$remote = require('remote')
|
2
2
|
|
3
|
+
webFrame = require('web-frame')
|
4
|
+
|
5
|
+
try
|
6
|
+
spellcheck = require('spellchecker')
|
7
|
+
|
8
|
+
webFrame.setSpellCheckProvider("en-US", true, {
|
9
|
+
spellCheck: (text) ->
|
10
|
+
return !spellcheck.isMisspelled(text)
|
11
|
+
})
|
12
|
+
catch error
|
13
|
+
console.log("Could not load spellchecker: #{error}")
|
14
|
+
|
3
15
|
window.onkeyup = (e) ->
|
4
16
|
if e.ctrlKey and e.keyCode is 70
|
5
17
|
window.show_search_bar()
|
data/electron/preload.js
CHANGED
@@ -1,7 +1,23 @@
|
|
1
1
|
// Generated by CoffeeScript 1.9.0
|
2
2
|
(function() {
|
3
|
+
var error, spellcheck, webFrame;
|
4
|
+
|
3
5
|
window.$remote = require('remote');
|
4
6
|
|
7
|
+
webFrame = require('web-frame');
|
8
|
+
|
9
|
+
try {
|
10
|
+
spellcheck = require('spellchecker');
|
11
|
+
webFrame.setSpellCheckProvider("en-US", true, {
|
12
|
+
spellCheck: function(text) {
|
13
|
+
return !spellcheck.isMisspelled(text);
|
14
|
+
}
|
15
|
+
});
|
16
|
+
} catch (_error) {
|
17
|
+
error = _error;
|
18
|
+
console.log("Could not load spellchecker: " + error);
|
19
|
+
}
|
20
|
+
|
5
21
|
window.onkeyup = function(e) {
|
6
22
|
if (e.ctrlKey && e.keyCode === 70) {
|
7
23
|
return window.show_search_bar();
|
data/lib/flammarion/revelator.rb
CHANGED
@@ -72,7 +72,7 @@ module Flammarion
|
|
72
72
|
|
73
73
|
browser :electron do |options|
|
74
74
|
if which('electron') then
|
75
|
-
Process.detach(spawn("electron #{File.dirname(File.absolute_path(__FILE__))}/../../electron '#{options[:url]}'"))
|
75
|
+
Process.detach(spawn("electron #{File.dirname(File.absolute_path(__FILE__))}/../../electron '#{options[:url]}' #{options[:width]} #{options[:height]}"))
|
76
76
|
return true
|
77
77
|
end
|
78
78
|
false
|
data/lib/flammarion/version.rb
CHANGED
data/lib/flammarion/writeable.rb
CHANGED
@@ -311,13 +311,24 @@ module Flammarion
|
|
311
311
|
send_json({action:'script', data:data}.merge(options))
|
312
312
|
end
|
313
313
|
|
314
|
-
# Sets
|
315
|
-
# @
|
316
|
-
#
|
317
|
-
#
|
318
|
-
#
|
319
|
-
|
320
|
-
|
314
|
+
# Sets CSS styles attributes on the current pane.
|
315
|
+
# @overload style(attribute, value)
|
316
|
+
# @param attribute [String] The css attribute to set. Currently does not
|
317
|
+
# support selectors or anything.
|
318
|
+
# @param value [#to_s] The value to set the attribute to. (Don't forget
|
319
|
+
# units!)
|
320
|
+
# @overload style(attributes)
|
321
|
+
# @param attributes [Hash] Table of css attribute to value mapping to set.
|
322
|
+
def style(*args)
|
323
|
+
case args.length
|
324
|
+
when 1
|
325
|
+
# @todo Pass this as a whole hash, rather than individually.
|
326
|
+
args[0].each{|a,v| send_json({action: 'style', attribute: a, value: v})}
|
327
|
+
when 2
|
328
|
+
send_json({action: 'style', attribute: args[0], value: args[1]})
|
329
|
+
else
|
330
|
+
raise ArgumentError.new("Invalid number of arguments (Expected 1 or 2)")
|
331
|
+
end
|
321
332
|
end
|
322
333
|
|
323
334
|
# Will render the given Slim template into the Writeable area. This is
|
@@ -152,6 +152,12 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
152
152
|
return results;
|
153
153
|
};
|
154
154
|
|
155
|
+
WSClient.prototype.relink = function(text) {
|
156
|
+
return text.replace(/\<a href=['"](https?:\/\/[^\s]+)["']>/gm, function(str, l) {
|
157
|
+
return "<a href=\"" + l + "\" target='_blank'>";
|
158
|
+
});
|
159
|
+
};
|
160
|
+
|
155
161
|
WSClient.prototype.escape = function(text, input_options) {
|
156
162
|
var options;
|
157
163
|
options = {
|
@@ -178,11 +184,14 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
178
184
|
return "<i class='fa fa-" + match.slice(1, -1) + "'></i>";
|
179
185
|
});
|
180
186
|
}
|
181
|
-
|
187
|
+
text = $("<div>" + text + "</div>");
|
188
|
+
text.find("a[href^='http']").attr('target', '_blank');
|
189
|
+
return text.html();
|
182
190
|
};
|
183
191
|
|
184
192
|
WSClient.prototype.add = function(object, target, data) {
|
185
193
|
var key, ref, val;
|
194
|
+
object.find("a[href^='http']").attr('target', '_blank');
|
186
195
|
if (data.style) {
|
187
196
|
ref = data.style;
|
188
197
|
for (key in ref) {
|
@@ -6773,6 +6773,12 @@ if (typeof module !== 'undefined') {
|
|
6773
6773
|
return results;
|
6774
6774
|
};
|
6775
6775
|
|
6776
|
+
WSClient.prototype.relink = function(text) {
|
6777
|
+
return text.replace(/\<a href=['"](https?:\/\/[^\s]+)["']>/gm, function(str, l) {
|
6778
|
+
return "<a href=\"" + l + "\" target='_blank'>";
|
6779
|
+
});
|
6780
|
+
};
|
6781
|
+
|
6776
6782
|
WSClient.prototype.escape = function(text, input_options) {
|
6777
6783
|
var options;
|
6778
6784
|
options = {
|
@@ -6799,11 +6805,14 @@ if (typeof module !== 'undefined') {
|
|
6799
6805
|
return "<i class='fa fa-" + match.slice(1, -1) + "'></i>";
|
6800
6806
|
});
|
6801
6807
|
}
|
6802
|
-
|
6808
|
+
text = $("<div>" + text + "</div>");
|
6809
|
+
text.find("a[href^='http']").attr('target', '_blank');
|
6810
|
+
return text.html();
|
6803
6811
|
};
|
6804
6812
|
|
6805
6813
|
WSClient.prototype.add = function(object, target, data) {
|
6806
6814
|
var key, ref, val;
|
6815
|
+
object.find("a[href^='http']").attr('target', '_blank');
|
6807
6816
|
if (data.style) {
|
6808
6817
|
ref = data.style;
|
6809
6818
|
for (key in ref) {
|
@@ -152,6 +152,12 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
152
152
|
return results;
|
153
153
|
};
|
154
154
|
|
155
|
+
WSClient.prototype.relink = function(text) {
|
156
|
+
return text.replace(/\<a href=['"](https?:\/\/[^\s]+)["']>/gm, function(str, l) {
|
157
|
+
return "<a href=\"" + l + "\" target='_blank'>";
|
158
|
+
});
|
159
|
+
};
|
160
|
+
|
155
161
|
WSClient.prototype.escape = function(text, input_options) {
|
156
162
|
var options;
|
157
163
|
options = {
|
@@ -178,11 +184,14 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
178
184
|
return "<i class='fa fa-" + match.slice(1, -1) + "'></i>";
|
179
185
|
});
|
180
186
|
}
|
181
|
-
|
187
|
+
text = $("<div>" + text + "</div>");
|
188
|
+
text.find("a[href^='http']").attr('target', '_blank');
|
189
|
+
return text.html();
|
182
190
|
};
|
183
191
|
|
184
192
|
WSClient.prototype.add = function(object, target, data) {
|
185
193
|
var key, ref, val;
|
194
|
+
object.find("a[href^='http']").attr('target', '_blank');
|
186
195
|
if (data.style) {
|
187
196
|
ref = data.style;
|
188
197
|
for (key in ref) {
|
@@ -152,6 +152,12 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
152
152
|
return results;
|
153
153
|
};
|
154
154
|
|
155
|
+
WSClient.prototype.relink = function(text) {
|
156
|
+
return text.replace(/\<a href=['"](https?:\/\/[^\s]+)["']>/gm, function(str, l) {
|
157
|
+
return "<a href=\"" + l + "\" target='_blank'>";
|
158
|
+
});
|
159
|
+
};
|
160
|
+
|
155
161
|
WSClient.prototype.escape = function(text, input_options) {
|
156
162
|
var options;
|
157
163
|
options = {
|
@@ -178,11 +184,14 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
178
184
|
return "<i class='fa fa-" + match.slice(1, -1) + "'></i>";
|
179
185
|
});
|
180
186
|
}
|
181
|
-
|
187
|
+
text = $("<div>" + text + "</div>");
|
188
|
+
text.find("a[href^='http']").attr('target', '_blank');
|
189
|
+
return text.html();
|
182
190
|
};
|
183
191
|
|
184
192
|
WSClient.prototype.add = function(object, target, data) {
|
185
193
|
var key, ref, val;
|
194
|
+
object.find("a[href^='http']").attr('target', '_blank');
|
186
195
|
if (data.style) {
|
187
196
|
ref = data.style;
|
188
197
|
for (key in ref) {
|
@@ -152,6 +152,12 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
152
152
|
return results;
|
153
153
|
};
|
154
154
|
|
155
|
+
WSClient.prototype.relink = function(text) {
|
156
|
+
return text.replace(/\<a href=['"](https?:\/\/[^\s]+)["']>/gm, function(str, l) {
|
157
|
+
return "<a href=\"" + l + "\" target='_blank'>";
|
158
|
+
});
|
159
|
+
};
|
160
|
+
|
155
161
|
WSClient.prototype.escape = function(text, input_options) {
|
156
162
|
var options;
|
157
163
|
options = {
|
@@ -178,11 +184,14 @@ void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?voi
|
|
178
184
|
return "<i class='fa fa-" + match.slice(1, -1) + "'></i>";
|
179
185
|
});
|
180
186
|
}
|
181
|
-
|
187
|
+
text = $("<div>" + text + "</div>");
|
188
|
+
text.find("a[href^='http']").attr('target', '_blank');
|
189
|
+
return text.html();
|
182
190
|
};
|
183
191
|
|
184
192
|
WSClient.prototype.add = function(object, target, data) {
|
185
193
|
var key, ref, val;
|
194
|
+
object.find("a[href^='http']").attr('target', '_blank');
|
186
195
|
if (data.style) {
|
187
196
|
ref = data.style;
|
188
197
|
for (key in ref) {
|
@@ -59,6 +59,11 @@ class WSClient
|
|
59
59
|
$(pane).css "height", p_height(pane)
|
60
60
|
$(pane).css "width", '100%'
|
61
61
|
|
62
|
+
relink: (text) ->
|
63
|
+
text.replace(/\<a href=['"](https?:\/\/[^\s]+)["']>/gm, (str, l) ->
|
64
|
+
"<a href=\"#{l}\" target='_blank'>"
|
65
|
+
)
|
66
|
+
|
62
67
|
escape: (text, input_options) ->
|
63
68
|
options =
|
64
69
|
raw: false
|
@@ -70,11 +75,15 @@ class WSClient
|
|
70
75
|
text = "#{text}"
|
71
76
|
text = ansi_up.escape_for_html(text) if options.escape_html
|
72
77
|
text = ansi_up.ansi_to_html(text, {use_classes:true}) if options.colorize
|
78
|
+
# text = @relink(text)
|
73
79
|
text = text.replace(/:[\w-]+:/g, (match) ->
|
74
80
|
"<i class='fa fa-#{match[1..-2]}'></i>") if options.escape_icons
|
75
|
-
|
81
|
+
text = $("<div>#{text}</div>")
|
82
|
+
text.find("a[href^='http']").attr('target','_blank')
|
83
|
+
return text.html()
|
76
84
|
|
77
85
|
add: (object, target, data) ->
|
86
|
+
object.find("a[href^='http']").attr('target','_blank')
|
78
87
|
if data.style
|
79
88
|
object.css(key, val) for own key, val of data.style
|
80
89
|
if data.replace
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flammarion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubame
|
@@ -366,6 +366,7 @@ files:
|
|
366
366
|
- LICENSE
|
367
367
|
- Readme.md
|
368
368
|
- electron/package.json
|
369
|
+
- electron/flammarion-window.sh
|
369
370
|
- electron/main.js
|
370
371
|
- electron/icon.png
|
371
372
|
- electron/preload.coffee
|