repla 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/applescript/{load_html.scpt → load.scpt} +0 -0
- data/lib/applescript/{load_html_with_base_url.scpt → load_with_root_access_directory.scpt} +0 -0
- data/lib/repla/dependencies/html/index.html +25 -0
- data/lib/repla/dependencies/lib/view.rb +5 -5
- data/lib/repla/dependencies.rb +1 -2
- data/lib/repla/lib/constants.rb +0 -2
- data/lib/repla/lib/module.rb +1 -24
- data/lib/repla/lib/view/javascript.rb +7 -1
- data/lib/repla/lib/view/resources.rb +0 -38
- data/lib/repla/lib/view.rb +0 -1
- data/lib/repla/lib/window.rb +10 -15
- data/lib/repla/logger/test/Rakefile +7 -9
- data/lib/repla/logger/test/lib/test_setup.rb +10 -0
- data/lib/repla/logger/test/lib/test_view_helper.rb +1 -1
- data/lib/repla/logger/test/run_tests.sh +3 -1
- data/lib/repla/logger/test/tc_logger.rb +18 -21
- data/lib/repla/logger.rb +1 -2
- data/lib/repla/repl/html/index.html +22 -0
- data/lib/repla/repl/lib/view.rb +5 -50
- data/lib/repla/repl.rb +1 -2
- data/lib/repla/resources/css/raster.css +131 -0
- data/lib/repla/resources/js/bullets/Gruntfile.js +30 -0
- data/lib/repla/resources/js/bullets/README.md +3 -0
- data/lib/repla/resources/js/bullets/bullets.js +82 -0
- data/lib/repla/resources/js/bullets/example/css/bullets.css +6 -0
- data/lib/repla/resources/js/bullets/example/css/raster.css +131 -0
- data/lib/repla/resources/js/bullets/example/css/style.css +7 -0
- data/lib/repla/resources/js/bullets/example/index.html +137 -0
- data/lib/repla/resources/js/bullets/example/jade/content.jade +10 -0
- data/lib/repla/resources/js/bullets/example/jade/css.jade +3 -0
- data/lib/repla/resources/js/bullets/example/jade/index.jade +10 -0
- data/lib/repla/resources/js/bullets/example/jade/javascript.jade +5 -0
- data/lib/repla/resources/js/bullets/example/js/handlebars.js +2278 -0
- data/lib/repla/resources/js/bullets/example/js/jquery.js +9789 -0
- data/lib/repla/resources/js/bullets/example/js/mousetrap.js +910 -0
- data/lib/repla/resources/js/bullets/example/js/mousetrap_config.js +14 -0
- data/lib/repla/resources/js/bullets/example/js/zepto.js +1565 -0
- data/lib/repla/resources/js/bullets/package.json +28 -0
- data/lib/repla/resources/js/bullets/test/lib/css/mocha.css +270 -0
- data/lib/repla/resources/js/bullets/test/lib/index.html +153 -0
- data/lib/repla/resources/js/bullets/test/lib/jade/index.jade +13 -0
- data/lib/repla/resources/js/bullets/test/lib/jade/mocha.html +15 -0
- data/lib/repla/resources/js/bullets/test/lib/js/chai.js +4613 -0
- data/lib/repla/resources/js/bullets/test/lib/js/mocha.js +5726 -0
- data/lib/repla/resources/js/bullets/test/lib/js/test_helper.js +26 -0
- data/lib/repla/resources/js/bullets/test/run_tests.rb +7 -0
- data/lib/repla/resources/js/bullets/test/test.js +131 -0
- data/lib/repla/resources/js/handlebars.js +2278 -0
- data/lib/repla/resources/js/mousetrap.js +910 -0
- data/lib/repla/resources/js/zepto.js +1565 -0
- data/lib/repla/test/applescript/cancel_dialog.applescript +2 -0
- data/lib/repla/test/applescript/confirm_dialog.applescript +2 -0
- data/lib/repla/test/applescript/is_running.applescript +5 -0
- data/lib/repla/test/applescript/quit.applescript +3 -0
- data/lib/repla/test/applescript/set_window_bounds.applescript +23 -0
- data/lib/repla/test/applescript/switch_windows.applescript +2 -0
- data/lib/repla/test/applescript/window_bounds.applescript +20 -0
- data/lib/repla/test/applescript/window_id.applescript +7 -0
- data/lib/repla/test/bundles/Cat.wcplugin/Contents/Info.plist +14 -0
- data/lib/repla/test/bundles/Cat.wcplugin/Contents/Resources/cat.sh +3 -0
- data/lib/repla/test/bundles/HelloWorld.wcplugin/Contents/Info.plist +14 -0
- data/lib/repla/test/bundles/HelloWorld.wcplugin/Contents/Resources/hello_world.rb +3 -0
- data/lib/repla/test/bundles/Invalid.wcplugin/Contents/Info.plist +16 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Info.plist +16 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Resources/html/css/style.css +7 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Resources/html/index.html +24 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Resources/html/js/wcprint.js +8 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Resources/lib/controller.rb +18 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Resources/lib/view.rb +13 -0
- data/lib/repla/test/bundles/Print.wcplugin/Contents/Resources/print.rb +10 -0
- data/lib/repla/test/bundles/TestEnvironment.wcplugin/Contents/Info.plist +14 -0
- data/lib/repla/test/bundles/TestEnvironment.wcplugin/Contents/Resources/constants.rb +1 -0
- data/lib/repla/test/bundles/TestEnvironment.wcplugin/Contents/Resources/test_environment.rb +35 -0
- data/lib/repla/test/bundles/TestLog.wcplugin/Contents/Info.plist +16 -0
- data/lib/repla/test/bundles/TestLog.wcplugin/Contents/Resources/test_log.rb +13 -0
- data/lib/repla/test/html/index.html +36 -0
- data/lib/repla/test/html/indexjquery.html +37 -0
- data/lib/repla/test/html/js/zepto.js +1565 -0
- data/lib/repla/test/js/firstcode.js +3 -0
- data/lib/repla/test/js/lastcode.js +3 -0
- data/lib/repla/test/js/nodom.js +5 -0
- data/lib/repla/test/js/text.js +1 -0
- data/lib/repla/test/js/textjquery.js +1 -0
- data/lib/repla/test/js/title.js +1 -0
- data/lib/repla/test/lib/helper.rb +121 -0
- data/lib/repla/test.rb +51 -0
- data/lib/repla.rb +6 -6
- metadata +78 -14
- data/lib/repla/dependencies/views/view.html.erb +0 -25
- data/lib/repla/extension_constants.rb +0 -1
- data/lib/repla/lib/view/erb.rb +0 -17
- data/lib/repla/logger/test/lib/test_constants.rb +0 -8
- data/lib/repla/repl/view/view.html.erb +0 -12
- /data/lib/repla/dependencies/{css → html/css}/style.css +0 -0
- /data/lib/repla/dependencies/{js → html/js}/wcdependencies.js +0 -0
- /data/lib/repla/repl/{css → html/css}/style.css +0 -0
- /data/lib/repla/repl/{js → html/js}/wcrepl.js +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e6c25d2a775a0a58b1b85c28fb7e659c031733ba
|
|
4
|
+
data.tar.gz: 7bbd40e204cb30ccc62931c0669725dd6dd91cff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 61e74ff0e82cc4e04b45495fbdd58ec26b828d0af6990efd856fabe575de63c9941b9e95a3edfc35357345746eab6dd2d3c8515503ed4dcfd57170fdb9fbb8c8
|
|
7
|
+
data.tar.gz: 01ffaf898ce45b8964e7a0e63b8e4571a85f2aae7c51ba3c0d3d5c2ff779e9771d20c1fea7d19fb24c4f05172cb39dbe7d55703898b31fb05d7f0db3e5279735
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Dependencies</title>
|
|
6
|
+
<link rel="stylesheet" href="css/style.css">
|
|
7
|
+
<link rel="stylesheet" href="../../resources/css/raster.css">
|
|
8
|
+
<script id="dependency-template" type="text/x-handlebars-template">
|
|
9
|
+
<section>
|
|
10
|
+
<header>
|
|
11
|
+
<h5>Dependency <span class="type">{{type}}</span> <code class="name">{{name}}</code> not found.</h5>
|
|
12
|
+
</header>
|
|
13
|
+
{{#if installationInstructions}}
|
|
14
|
+
<p><blockquote class="installation">To install <code>{{name}}</code>: {{{installationInstructions}}}</blockquote></p>
|
|
15
|
+
{{/if}}
|
|
16
|
+
</section>
|
|
17
|
+
</script>
|
|
18
|
+
<script type="text/javascript" src=
|
|
19
|
+
"../../resources/js/handlebars.js"></script>
|
|
20
|
+
<script type="text/javascript" src="../../resources/js/zepto.js"></script>
|
|
21
|
+
<script type="text/javascript" src="js/wcdependencies.js"></script>
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
</body>
|
|
25
|
+
</html>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
module Repla::Dependencies
|
|
2
2
|
|
|
3
3
|
class View < Repla::View
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
VIEW_TEMPLATE = File.join(
|
|
4
|
+
ROOT_ACCESS_DIRECTORY = File.join(File.dirname(__FILE__), '../../')
|
|
5
|
+
HTML_DIRECTORY = File.join(File.dirname(__FILE__), '../html/')
|
|
6
|
+
VIEW_TEMPLATE = File.join(HTML_DIRECTORY, 'index.html')
|
|
7
7
|
|
|
8
8
|
def initialize
|
|
9
9
|
super
|
|
10
|
-
self.
|
|
11
|
-
|
|
10
|
+
self.root_access_directory_path = File.expand_path(ROOT_ACCESS_DIRECTORY)
|
|
11
|
+
load_file(VIEW_TEMPLATE)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
ADD_MISSING_DEPENDENCY_FUNCTION = "addMissingDependency"
|
data/lib/repla/dependencies.rb
CHANGED
data/lib/repla/lib/constants.rb
CHANGED
|
@@ -3,8 +3,6 @@ module Repla
|
|
|
3
3
|
PLUGIN_NAME_KEY = 'WC_PLUGIN_NAME'
|
|
4
4
|
SPLIT_ID_KEY = 'WC_SPLIT_ID'
|
|
5
5
|
WINDOW_ID_KEY = 'WC_WINDOW_ID'
|
|
6
|
-
SHARED_RESOURCES_PATH_KEY = 'WC_SHARED_RESOURCES_PATH'
|
|
7
|
-
SHARED_RESOURCES_URL_KEY = 'WC_SHARED_RESOURCES_URL'
|
|
8
6
|
|
|
9
7
|
# Directories
|
|
10
8
|
APPLESCRIPT_DIRECTORY = File.join(File.dirname(__FILE__), "..", "..", "applescript")
|
data/lib/repla/lib/module.rb
CHANGED
|
@@ -48,40 +48,17 @@ module Repla
|
|
|
48
48
|
self.run_applescript(CREATE_WINDOW_SCRIPT)
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
#
|
|
51
|
+
# Resources
|
|
52
52
|
|
|
53
53
|
RESOURCE_PATH_FOR_PLUGIN_SCRIPT = File.join(APPLESCRIPT_DIRECTORY, "resource_path_for_plugin.scpt")
|
|
54
54
|
def self.resource_path_for_plugin(name)
|
|
55
55
|
self.run_applescript(RESOURCE_PATH_FOR_PLUGIN_SCRIPT, [name])
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
# Shared Resource Path
|
|
59
|
-
|
|
60
|
-
SHARED_RESOURCES_PLUGIN_NAME = "Shared Resources"
|
|
61
|
-
SHARED_TEST_RESOURCES_PLUGIN_NAME = "Shared Test Resources"
|
|
62
|
-
def self.shared_resources_path
|
|
63
|
-
resource_path_for_plugin(SHARED_RESOURCES_PLUGIN_NAME)
|
|
64
|
-
end
|
|
65
|
-
def self.shared_test_resources_path
|
|
66
|
-
resource_path_for_plugin(SHARED_TEST_RESOURCES_PLUGIN_NAME)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def self.shared_resource(resource)
|
|
70
|
-
File.join(self.shared_resources_path, resource)
|
|
71
|
-
end
|
|
72
|
-
def self.shared_test_resource(resource)
|
|
73
|
-
File.join(self.shared_test_resources_path, resource)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# Shared Resource URL
|
|
77
|
-
|
|
78
58
|
RESOURCE_URL_FOR_PLUGIN_SCRIPT = File.join(APPLESCRIPT_DIRECTORY, "resource_url_for_plugin.scpt")
|
|
79
59
|
def self.resource_url_for_plugin(name)
|
|
80
60
|
self.run_applescript(RESOURCE_URL_FOR_PLUGIN_SCRIPT, [name])
|
|
81
61
|
end
|
|
82
|
-
def self.shared_resources_url
|
|
83
|
-
resource_url_for_plugin(SHARED_RESOURCES_PLUGIN_NAME)
|
|
84
|
-
end
|
|
85
62
|
|
|
86
63
|
private
|
|
87
64
|
|
|
@@ -13,7 +13,7 @@ module Repla
|
|
|
13
13
|
if arguments
|
|
14
14
|
arguments.each { |argument|
|
|
15
15
|
if argument
|
|
16
|
-
function << argument.javascript_argument
|
|
16
|
+
function << argument.javascript_argument
|
|
17
17
|
else
|
|
18
18
|
function << "null"
|
|
19
19
|
end
|
|
@@ -27,6 +27,12 @@ module Repla
|
|
|
27
27
|
|
|
28
28
|
private
|
|
29
29
|
|
|
30
|
+
class ::Fixnum
|
|
31
|
+
def javascript_argument
|
|
32
|
+
"#{self}"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
30
36
|
class ::String
|
|
31
37
|
def javascript_argument
|
|
32
38
|
"'#{self.javascript_escape}'"
|
|
@@ -1,42 +1,4 @@
|
|
|
1
1
|
module Repla
|
|
2
2
|
class View < Window
|
|
3
|
-
require 'open-uri'
|
|
4
|
-
|
|
5
|
-
require_relative "../constants"
|
|
6
|
-
require_relative "../module"
|
|
7
|
-
|
|
8
|
-
attr_accessor :title
|
|
9
|
-
|
|
10
|
-
CSS_EXTENSION = ".css"
|
|
11
|
-
CSS_PATH_COMPONENT = "css/"
|
|
12
|
-
def shared_stylesheet_link_tag(resource)
|
|
13
|
-
uri = URI.join(shared_resources_url, CSS_PATH_COMPONENT, resource + CSS_EXTENSION)
|
|
14
|
-
stylesheet_link_tag(uri.to_s)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def stylesheet_link_tag(url)
|
|
18
|
-
"<link rel=\"stylesheet\" href=\"#{url}\" />"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
JS_EXTENSION = ".js"
|
|
22
|
-
JS_PATH_COMPONENT = "js/"
|
|
23
|
-
def shared_javascript_include_tag(resource)
|
|
24
|
-
uri = URI.join(shared_resources_url, JS_PATH_COMPONENT, resource + JS_EXTENSION)
|
|
25
|
-
javascript_include_tag(uri.to_s)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def javascript_include_tag(url)
|
|
29
|
-
"<script type=\"text/javascript\" src=\"#{url}\"></script>"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def title
|
|
33
|
-
@title ||= ENV.has_key?(PLUGIN_NAME_KEY) ? ENV[PLUGIN_NAME_KEY] : nil
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
def shared_resources_url
|
|
39
|
-
@shared_resources_url || ENV.has_key?(SHARED_RESOURCES_URL_KEY) ? ENV[SHARED_RESOURCES_URL_KEY] : Repla::shared_resources_url
|
|
40
|
-
end
|
|
41
3
|
end
|
|
42
4
|
end
|
data/lib/repla/lib/view.rb
CHANGED
data/lib/repla/lib/window.rb
CHANGED
|
@@ -2,34 +2,29 @@ module Repla
|
|
|
2
2
|
class Window
|
|
3
3
|
require_relative "constants"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
attr_accessor :root_access_directory_path
|
|
7
6
|
def initialize(window_id = nil)
|
|
8
7
|
@window_id = window_id
|
|
9
8
|
end
|
|
10
9
|
|
|
11
10
|
# Properties
|
|
12
11
|
|
|
13
|
-
def base_url_path=(value)
|
|
14
|
-
@base_url = "file://" + value
|
|
15
|
-
end
|
|
16
|
-
|
|
17
12
|
def window_id
|
|
18
13
|
@window_id ||= ENV.has_key?(WINDOW_ID_KEY) ? ENV[WINDOW_ID_KEY] : Repla::create_window
|
|
19
14
|
end
|
|
20
|
-
|
|
15
|
+
|
|
21
16
|
# Web
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def
|
|
26
|
-
arguments = [
|
|
18
|
+
LOAD_SCRIPT = File.join(APPLESCRIPT_DIRECTORY, "load.scpt")
|
|
19
|
+
LOADWITHROOTACCESSDIRECTORY_SCRIPT = File.join(APPLESCRIPT_DIRECTORY, "load_with_root_access_directory.scpt")
|
|
20
|
+
def load_file(file)
|
|
21
|
+
arguments = [file]
|
|
27
22
|
|
|
28
|
-
script =
|
|
23
|
+
script = LOAD_SCRIPT
|
|
29
24
|
|
|
30
|
-
if @
|
|
31
|
-
script =
|
|
32
|
-
arguments.push(@
|
|
25
|
+
if @root_access_directory_path
|
|
26
|
+
script = LOADWITHROOTACCESSDIRECTORY_SCRIPT
|
|
27
|
+
arguments.push(@root_access_directory_path)
|
|
33
28
|
end
|
|
34
29
|
|
|
35
30
|
run_script(script, arguments)
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
require 'shellwords'
|
|
2
|
-
require 'repla'
|
|
3
|
-
require Repla::shared_test_resource("ruby/test_constants")
|
|
4
|
-
require Repla::Tests::TEST_HELPER_FILE
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
require_relative 'lib/test_requires.rb'
|
|
4
|
+
|
|
5
|
+
task default: ['logger:tests']
|
|
7
6
|
|
|
8
7
|
namespace :logger do
|
|
9
|
-
|
|
10
|
-
task :tests => [:clean_up]
|
|
8
|
+
task tests: [:clean_up]
|
|
11
9
|
|
|
12
10
|
task :test_logger do
|
|
13
|
-
logger_tests_file = File.join(File.dirname(__FILE__),
|
|
11
|
+
logger_tests_file = File.join(File.dirname(__FILE__), 'tc_logger.rb')
|
|
14
12
|
ruby Shellwords.escape(logger_tests_file)
|
|
15
13
|
end
|
|
16
14
|
|
|
17
|
-
task :
|
|
18
|
-
Repla::
|
|
15
|
+
task clean_up: [:test_logger] do
|
|
16
|
+
Repla::Test::Helper.quit
|
|
19
17
|
end
|
|
20
18
|
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require_relative "../../../test"
|
|
2
|
+
require Repla::Test::HELPER_FILE
|
|
3
|
+
require Repla::Test::REPLA_FILE
|
|
4
|
+
|
|
5
|
+
TEST_CLASS_JAVASCRIPT = 'document.body.lastChild.classList[0]'.freeze
|
|
6
|
+
TEST_MESSAGE_JAVASCRIPT = 'document.body.lastChild.innerText'.freeze
|
|
7
|
+
TEST_MESSAGE_COUNT_JAVASCRIPT = 'document.body.children.length'.freeze
|
|
8
|
+
|
|
9
|
+
TEST_JAVASCRIPT_DIRECTORY = File.join(File.dirname(__FILE__), '..', 'js')
|
|
10
|
+
TEST_JAVASCRIPT_FILE = File.join(TEST_JAVASCRIPT_DIRECTORY, 'test_view_helper.js')
|
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
require "test/unit"
|
|
4
4
|
|
|
5
|
-
require_relative
|
|
6
|
-
require REPLA_FILE
|
|
7
|
-
require Repla::shared_test_resource("ruby/test_constants")
|
|
8
|
-
require Repla::Tests::TEST_HELPER_FILE
|
|
5
|
+
require_relative 'lib/test_setup.rb'
|
|
9
6
|
|
|
10
7
|
require_relative "lib/test_view_helper"
|
|
11
8
|
require_relative "../../logger"
|
|
12
9
|
|
|
13
|
-
|
|
14
10
|
class TestConstants < Test::Unit::TestCase
|
|
15
11
|
|
|
16
12
|
def test_constants
|
|
@@ -26,8 +22,8 @@ end
|
|
|
26
22
|
class TestUnintializedLogger < Test::Unit::TestCase
|
|
27
23
|
|
|
28
24
|
def teardown
|
|
29
|
-
Repla::
|
|
30
|
-
assert(!Repla::
|
|
25
|
+
Repla::Test::Helper::quit
|
|
26
|
+
assert(!Repla::Test::Helper::running?, "The application should not be running.")
|
|
31
27
|
end
|
|
32
28
|
|
|
33
29
|
def test_uninitialized_logger
|
|
@@ -36,11 +32,12 @@ class TestUnintializedLogger < Test::Unit::TestCase
|
|
|
36
32
|
# Test Message
|
|
37
33
|
message = "Testing log message"
|
|
38
34
|
logger.info(message)
|
|
39
|
-
sleep Repla::
|
|
35
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
40
36
|
|
|
41
|
-
# Make sure the log messages before accessing the logger's `view_id` and
|
|
42
|
-
# This test should test logging a
|
|
43
|
-
#
|
|
37
|
+
# Make sure the log messages before accessing the logger's `view_id` and
|
|
38
|
+
# `window_id` because those run the logger. This test should test logging a
|
|
39
|
+
# message and running the logger itself simultaneously. This is why the
|
|
40
|
+
# `TestViewHelper` is intialized after logging the message.
|
|
44
41
|
test_view_helper = TestViewHelper.new(logger.window_id, logger.view_id)
|
|
45
42
|
|
|
46
43
|
test_message = test_view_helper.last_log_message
|
|
@@ -62,8 +59,8 @@ class TestLogger < Test::Unit::TestCase
|
|
|
62
59
|
end
|
|
63
60
|
|
|
64
61
|
def teardown
|
|
65
|
-
Repla::
|
|
66
|
-
assert(!Repla::
|
|
62
|
+
Repla::Test::Helper::quit
|
|
63
|
+
assert(!Repla::Test::Helper::running?, "The application should not be running.")
|
|
67
64
|
end
|
|
68
65
|
|
|
69
66
|
def test_logger
|
|
@@ -72,7 +69,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
72
69
|
# Test Error
|
|
73
70
|
message = "Testing log error"
|
|
74
71
|
@logger.error(message)
|
|
75
|
-
sleep Repla::
|
|
72
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
76
73
|
test_message = @test_view_helper.last_log_message
|
|
77
74
|
assert_equal(message, test_message, "The messages should match")
|
|
78
75
|
test_class = @test_view_helper.last_log_class
|
|
@@ -84,7 +81,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
84
81
|
# Test Message
|
|
85
82
|
message = "Testing log message"
|
|
86
83
|
@logger.info(message)
|
|
87
|
-
sleep Repla::
|
|
84
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
88
85
|
test_message = @test_view_helper.last_log_message
|
|
89
86
|
assert_equal(message, test_message, "The messages should match")
|
|
90
87
|
test_class = @test_view_helper.last_log_class
|
|
@@ -96,7 +93,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
96
93
|
# Test Only Error Prefix
|
|
97
94
|
message = Repla::Logger::ERROR_PREFIX.rstrip # Note the trailing whitespace is trimmed
|
|
98
95
|
@logger.info(message)
|
|
99
|
-
sleep Repla::
|
|
96
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
100
97
|
test_message = @test_view_helper.last_log_message
|
|
101
98
|
assert_equal(message, test_message, "The messages should match")
|
|
102
99
|
test_class = @test_view_helper.last_log_class
|
|
@@ -108,7 +105,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
108
105
|
# Test Only Message Prefix
|
|
109
106
|
message = Repla::Logger::MESSAGE_PREFIX.rstrip # Note the trailing whitespace is trimmed
|
|
110
107
|
@logger.info(message)
|
|
111
|
-
sleep Repla::
|
|
108
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
112
109
|
test_message = @test_view_helper.last_log_message
|
|
113
110
|
assert_equal(message, test_message, "The messages should match")
|
|
114
111
|
test_class = @test_view_helper.last_log_class
|
|
@@ -119,7 +116,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
119
116
|
|
|
120
117
|
# Test Blank Spaces
|
|
121
118
|
@logger.info(" \t")
|
|
122
|
-
sleep Repla::
|
|
119
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
123
120
|
test_message = @test_view_helper.last_log_message()
|
|
124
121
|
assert_equal(message, test_message, "The messages should match")
|
|
125
122
|
test_class = @test_view_helper.last_log_class()
|
|
@@ -127,7 +124,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
127
124
|
|
|
128
125
|
# Test Empty String
|
|
129
126
|
@logger.info("")
|
|
130
|
-
sleep Repla::
|
|
127
|
+
sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
131
128
|
test_message = @test_view_helper.last_log_message()
|
|
132
129
|
assert_equal(message, test_message, "The messages should match")
|
|
133
130
|
test_class = @test_view_helper.last_log_class()
|
|
@@ -141,7 +138,7 @@ class TestLogger < Test::Unit::TestCase
|
|
|
141
138
|
|
|
142
139
|
# message = "\t Testing log message"
|
|
143
140
|
# @logger.info(message + "\t ")
|
|
144
|
-
# sleep Repla::
|
|
141
|
+
# sleep Repla::Test::TEST_PAUSE_TIME # Pause for output to be processed
|
|
145
142
|
# test_message = @test_view_helper.last_log_message
|
|
146
143
|
# assert_equal(message, test_message, "The messages should match")
|
|
147
144
|
# test_class = @test_view_helper.last_log_class
|
|
@@ -159,7 +156,7 @@ Line 2
|
|
|
159
156
|
Line 3
|
|
160
157
|
)
|
|
161
158
|
@logger.info(message)
|
|
162
|
-
sleep Repla::
|
|
159
|
+
sleep Repla::Test::TEST_PAUSE_TIME * 2 # Pause for output to be processed
|
|
163
160
|
result_count = @test_view_helper.number_of_log_messages
|
|
164
161
|
assert_equal(result_count, 3, "The number of log messages should match")
|
|
165
162
|
|
data/lib/repla/logger.rb
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>REPL</title>
|
|
6
|
+
<link rel="stylesheet" href="../../resources/css/raster.css">
|
|
7
|
+
<link rel="stylesheet" href="css/style.css">
|
|
8
|
+
<script id="output-template" type="text/x-handlebars-template">
|
|
9
|
+
<pre class="output"><code>{{code}}</code></pre>
|
|
10
|
+
</script>
|
|
11
|
+
<script id="input-template" type="text/x-handlebars-template">
|
|
12
|
+
<pre><code>{{code}}</code></pre>
|
|
13
|
+
</script>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
]
|
|
17
|
+
<script type="text/javascript" src=
|
|
18
|
+
"../../resources/js/handlebars.js"></script>
|
|
19
|
+
<script type="text/javascript" src="../../resources/js/zepto.js"></script>
|
|
20
|
+
<script type="text/javascript" src="js/wcrepl.js"></script>
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
data/lib/repla/repl/lib/view.rb
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
module Repla::REPL
|
|
2
2
|
class View < Repla::View
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
VIEW_TEMPLATE = File.join(VIEWS_DIRECTORY, 'view.html.erb')
|
|
3
|
+
ROOT_ACCESS_DIRECTORY = File.join(File.dirname(__FILE__), '../../')
|
|
4
|
+
HTML_DIRECTORY = File.join(File.dirname(__FILE__), '../html/')
|
|
5
|
+
VIEW_TEMPLATE = File.join(HTML_DIRECTORY, 'index.html')
|
|
7
6
|
def initialize
|
|
8
7
|
super
|
|
9
|
-
self.
|
|
10
|
-
|
|
8
|
+
self.root_access_directory_path = File.expand_path(ROOT_ACCESS_DIRECTORY)
|
|
9
|
+
load_file(VIEW_TEMPLATE)
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
ADD_INPUT_JAVASCRIPT_FUNCTION = "WcREPL.addInput"
|
|
@@ -20,49 +19,5 @@ module Repla::REPL
|
|
|
20
19
|
do_javascript_function(ADD_OUTPUT_JAVASCRIPT_FUNCTION, [output])
|
|
21
20
|
end
|
|
22
21
|
|
|
23
|
-
# Helpers to allow easy loading of REPL resource even from another base URL
|
|
24
|
-
|
|
25
|
-
def repl_header_tags
|
|
26
|
-
%Q[
|
|
27
|
-
#{repl_stylesheet_link_tag}
|
|
28
|
-
#{repl_handlebars_template_tags}
|
|
29
|
-
#{shared_javascript_include_tag("handlebars")}
|
|
30
|
-
#{shared_javascript_include_tag("zepto")}
|
|
31
|
-
#{repl_javascript_include_tag}
|
|
32
|
-
]
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def repl_handlebars_template_tags
|
|
36
|
-
%Q[
|
|
37
|
-
<script id="output-template" type="text/x-handlebars-template">
|
|
38
|
-
<pre class="output"><code>{{code}}</code></pre>
|
|
39
|
-
</script>
|
|
40
|
-
<script id="input-template" type="text/x-handlebars-template">
|
|
41
|
-
<pre><code>{{code}}</code></pre>
|
|
42
|
-
</script>]
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def repl_stylesheet_link_tag
|
|
46
|
-
path = File.join(repl_base_resource_path, "css/style.css")
|
|
47
|
-
url = repl_url_for_path(path)
|
|
48
|
-
stylesheet_link_tag(url)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def repl_javascript_include_tag
|
|
52
|
-
path = File.join(repl_base_resource_path, "js/wcrepl.js")
|
|
53
|
-
url = repl_url_for_path(path)
|
|
54
|
-
javascript_include_tag(url)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
require 'open-uri'
|
|
58
|
-
def repl_url_for_path(path)
|
|
59
|
-
uri = URI::encode(path)
|
|
60
|
-
"file://" + uri
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def repl_base_resource_path
|
|
64
|
-
File.expand_path(File.join(File.dirname(__FILE__), "../"))
|
|
65
|
-
end
|
|
66
|
-
|
|
67
22
|
end
|
|
68
23
|
end
|
data/lib/repla/repl.rb
CHANGED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/* Settings */
|
|
2
|
+
/* Eric Meyer's Reset
|
|
3
|
+
============================================================================*/
|
|
4
|
+
/* Details here:
|
|
5
|
+
http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/
|
|
6
|
+
|
|
7
|
+
Some of the rules have been broken up for cleaner display in firebug. */
|
|
8
|
+
/* First the resets ... */
|
|
9
|
+
/* Structural Tags
|
|
10
|
+
----------------------------------------------------------------------------*/
|
|
11
|
+
html, body, div, span {
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: 0;
|
|
14
|
+
border: 0;
|
|
15
|
+
outline: 0;
|
|
16
|
+
font-size: 100%;
|
|
17
|
+
vertical-align: baseline;
|
|
18
|
+
background: transparent; }
|
|
19
|
+
|
|
20
|
+
/* Text Tags
|
|
21
|
+
----------------------------------------------------------------------------*/
|
|
22
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, ol, ul, li, strong, em {
|
|
23
|
+
margin: 0;
|
|
24
|
+
padding: 0;
|
|
25
|
+
border: 0;
|
|
26
|
+
outline: 0;
|
|
27
|
+
font-size: 100%;
|
|
28
|
+
vertical-align: baseline;
|
|
29
|
+
background: transparent; }
|
|
30
|
+
|
|
31
|
+
/* Less Used Tags
|
|
32
|
+
----------------------------------------------------------------------------*/
|
|
33
|
+
applet, object, iframe, abbr, acronym, address, big, cite, code, del, dfn,
|
|
34
|
+
font, img, ins, kbd, q, s, samp, small, strike, sub, sup, tt, var, b, u, i,
|
|
35
|
+
center, dl, dt, dd, fieldset, form, label, legend, table, caption, tbody,
|
|
36
|
+
tfoot, thead, tr, th, td {
|
|
37
|
+
margin: 0;
|
|
38
|
+
padding: 0;
|
|
39
|
+
border: 0;
|
|
40
|
+
outline: 0;
|
|
41
|
+
font-size: 100%;
|
|
42
|
+
vertical-align: baseline;
|
|
43
|
+
background: transparent; }
|
|
44
|
+
|
|
45
|
+
/* ... and now everything else */
|
|
46
|
+
/* remember to define focus styles! */
|
|
47
|
+
:focus {
|
|
48
|
+
outline: 0; }
|
|
49
|
+
|
|
50
|
+
body {
|
|
51
|
+
line-height: 1;
|
|
52
|
+
color: black;
|
|
53
|
+
background: white; }
|
|
54
|
+
|
|
55
|
+
ol, ul {
|
|
56
|
+
list-style: none; }
|
|
57
|
+
|
|
58
|
+
/* tables still need 'cellspacing="0"' in the markup */
|
|
59
|
+
table {
|
|
60
|
+
border-collapse: separate;
|
|
61
|
+
border-spacing: 0; }
|
|
62
|
+
|
|
63
|
+
caption, th, td {
|
|
64
|
+
text-align: left;
|
|
65
|
+
font-weight: normal; }
|
|
66
|
+
|
|
67
|
+
blockquote:before, blockquote:after, q:before, q:after {
|
|
68
|
+
content: ""; }
|
|
69
|
+
|
|
70
|
+
blockquote, q {
|
|
71
|
+
quotes: "" ""; }
|
|
72
|
+
|
|
73
|
+
body {
|
|
74
|
+
font-size: 0.75em;
|
|
75
|
+
line-height: 1.41667em; }
|
|
76
|
+
|
|
77
|
+
h1 {
|
|
78
|
+
font-size: 3em;
|
|
79
|
+
line-height: 1.41667em;
|
|
80
|
+
margin-bottom: 0.47222em;
|
|
81
|
+
line-height: 1.41667em;
|
|
82
|
+
margin-bottom: 0.47222em; }
|
|
83
|
+
|
|
84
|
+
h2 {
|
|
85
|
+
font-size: 2em;
|
|
86
|
+
line-height: 1.41667em;
|
|
87
|
+
margin-bottom: 0.70833em;
|
|
88
|
+
line-height: 1.41667em;
|
|
89
|
+
margin-bottom: 0.70833em; }
|
|
90
|
+
|
|
91
|
+
h3 {
|
|
92
|
+
font-size: 1.75em;
|
|
93
|
+
line-height: 1.41667em;
|
|
94
|
+
margin-bottom: 0.20238em;
|
|
95
|
+
line-height: 1.42857em;
|
|
96
|
+
margin-bottom: 0.19048em; }
|
|
97
|
+
|
|
98
|
+
h4 {
|
|
99
|
+
font-size: 1.5em;
|
|
100
|
+
line-height: 1.41667em;
|
|
101
|
+
margin-bottom: 0.47222em;
|
|
102
|
+
line-height: 1.44444em;
|
|
103
|
+
margin-bottom: 0.44444em; }
|
|
104
|
+
|
|
105
|
+
h5 {
|
|
106
|
+
font-size: 1.16667em;
|
|
107
|
+
line-height: 1.41667em;
|
|
108
|
+
margin-bottom: 1.0119em;
|
|
109
|
+
line-height: 1.42857em;
|
|
110
|
+
margin-bottom: 1em; }
|
|
111
|
+
|
|
112
|
+
h6 {
|
|
113
|
+
font-size: 1em;
|
|
114
|
+
line-height: 1.41667em;
|
|
115
|
+
margin-bottom: 1.41667em;
|
|
116
|
+
line-height: 1.41667em;
|
|
117
|
+
margin-bottom: 1.41667em; }
|
|
118
|
+
|
|
119
|
+
p, ul, ol {
|
|
120
|
+
margin-bottom: 1.41667em; }
|
|
121
|
+
|
|
122
|
+
ul {
|
|
123
|
+
list-style-type: disc;
|
|
124
|
+
margin-left: 2em; }
|
|
125
|
+
|
|
126
|
+
ol {
|
|
127
|
+
list-style-type: decimal;
|
|
128
|
+
margin-left: 2em; }
|
|
129
|
+
|
|
130
|
+
body {
|
|
131
|
+
padding: 1.41667em; }
|