aladdin 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +12 -4
- data/assets/{fonts → __font}/general_foundicons.eot +0 -0
- data/assets/{fonts → __font}/general_foundicons.svg +0 -0
- data/assets/{fonts → __font}/general_foundicons.ttf +0 -0
- data/assets/{fonts → __font}/general_foundicons.woff +0 -0
- data/assets/{images → __img}/graphic.png +0 -0
- data/assets/{images → __img}/no_gravatar.gif +0 -0
- data/assets/{javascripts → __js}/app.js +0 -0
- data/assets/{javascripts → __js}/foundation/app.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.cookie.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.event.move.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.event.swipe.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.accordion.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.alerts.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.buttons.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.clearing.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.forms.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.joyride.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.magellan.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.mediaQueryToggle.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.navigation.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.orbit.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.reveal.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.tabs.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.tooltips.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.foundation.topbar.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.offcanvas.js +0 -0
- data/assets/{javascripts → __js}/foundation/jquery.placeholder.js +0 -0
- data/assets/{javascripts → __js}/foundation/modernizr.foundation.js +0 -0
- data/lib/aladdin.rb +2 -0
- data/lib/aladdin/app.rb +7 -5
- data/lib/aladdin/commands.rb +2 -0
- data/lib/aladdin/commands/USAGE +10 -0
- data/lib/aladdin/commands/new.rb +4 -4
- data/lib/aladdin/config.rb +49 -18
- data/lib/aladdin/constants.rb +1 -1
- data/lib/aladdin/render/markdown.rb +1 -1
- data/lib/aladdin/render/sanitize.rb +73 -69
- data/lib/aladdin/render/templates/template.rb +1 -1
- data/lib/aladdin/support.rb +1 -0
- data/lib/aladdin/support/core_ext/hash.rb +1 -0
- data/lib/aladdin/support/multiroute.rb +39 -0
- data/lib/aladdin/version.rb +1 -1
- data/skeleton/manifest.json +2 -1
- data/views/haml/layout.haml +24 -24
- data/views/scss/_settings.scss +1 -1
- metadata +33 -31
data/README.md
CHANGED
@@ -34,10 +34,18 @@ Update `index.md` and provide your unit tests in the lesson directory. Finally,
|
|
34
34
|
$> aladdin server
|
35
35
|
```
|
36
36
|
|
37
|
-
|
37
|
+
A short guide can be obtained using
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
```sh
|
40
|
+
$> aladdin --help
|
41
|
+
```
|
42
|
+
|
43
|
+
Note that the following filenames are reserved:
|
44
|
+
|
45
|
+
- `__js`
|
46
|
+
- `__css`
|
47
|
+
- `__font`
|
48
|
+
- `__img`
|
41
49
|
- verify
|
42
50
|
|
43
51
|
## Contributing
|
@@ -53,4 +61,4 @@ Note that the following directory names are reserved:
|
|
53
61
|
1. Launch an Ubuntu instance
|
54
62
|
1. Install ruby through rvm
|
55
63
|
1. Install build-essentials
|
56
|
-
1.
|
64
|
+
1. Install libxslt-dev libxml2-dev
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/aladdin.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# ~*~ encoding: utf-8 ~*~
|
2
2
|
require 'json'
|
3
3
|
require 'active_support/core_ext/hash'
|
4
|
+
require 'active_support/core_ext/string'
|
4
5
|
|
5
6
|
require 'aladdin/constants'
|
6
7
|
require 'aladdin/config'
|
@@ -22,6 +23,7 @@ module Aladdin
|
|
22
23
|
root = opts[:from] || Dir.pwd
|
23
24
|
@config = Config.new root
|
24
25
|
require 'aladdin/app'
|
26
|
+
Aladdin::App.set :root, root
|
25
27
|
Aladdin::App.set :views, Aladdin::VIEWS.merge(markdown: root)
|
26
28
|
Aladdin::App.run!
|
27
29
|
rescue => e
|
data/lib/aladdin/app.rb
CHANGED
@@ -10,6 +10,7 @@ module Aladdin
|
|
10
10
|
# +bin/aladdin+ executable.
|
11
11
|
# Adapted from https://github.com/jerodsanto/sinatra-foundation-skeleton/
|
12
12
|
class App < Sinatra::Base
|
13
|
+
extend Support::OneOfPattern
|
13
14
|
|
14
15
|
# Default page
|
15
16
|
INDEX = :index
|
@@ -46,6 +47,7 @@ module Aladdin
|
|
46
47
|
# @return [void]
|
47
48
|
def configure_assets
|
48
49
|
set :public_folder, Aladdin::PATHS.assets
|
50
|
+
set :static_paths, Proc.new { Aladdin.config['static_paths'] }
|
49
51
|
end
|
50
52
|
|
51
53
|
# Configures ZURB's compass to compile aladdin's scss assets.
|
@@ -53,7 +55,7 @@ module Aladdin
|
|
53
55
|
def configure_compass
|
54
56
|
Compass.configuration do |config|
|
55
57
|
config.http_path = '/'
|
56
|
-
config.http_images_path = '/
|
58
|
+
config.http_images_path = '/__img'
|
57
59
|
end
|
58
60
|
set :scss, Compass.sass_engine_options
|
59
61
|
end
|
@@ -87,18 +89,18 @@ module Aladdin
|
|
87
89
|
configure_compass
|
88
90
|
end
|
89
91
|
|
90
|
-
get '/
|
92
|
+
get '/__css/*.css' do |path|
|
91
93
|
render_or_pass { scss path.to_sym }
|
92
94
|
end
|
93
95
|
|
94
|
-
get
|
95
|
-
send_file File.join(
|
96
|
+
get one_of(settings.static_paths) do |path|
|
97
|
+
send_file File.join(settings.root, path)
|
96
98
|
end
|
97
99
|
|
98
100
|
get '/*' do |path|
|
99
101
|
path = path.empty? ? INDEX : path.to_sym
|
100
102
|
render_or_pass do
|
101
|
-
markdown(path, locals: Aladdin.config
|
103
|
+
markdown(path, locals: Aladdin.config)
|
102
104
|
end
|
103
105
|
end
|
104
106
|
|
data/lib/aladdin/commands.rb
CHANGED
data/lib/aladdin/commands/new.rb
CHANGED
@@ -17,12 +17,12 @@ module Aladdin
|
|
17
17
|
# Array of dot files to be copied over and renamed.
|
18
18
|
DOT_FILES = %w(gitignore)
|
19
19
|
|
20
|
-
# Flags for {FileUtils.cp_r}
|
20
|
+
# Flags for {::FileUtils.cp_r}
|
21
21
|
COPY_FLAGS = {verbose: true}
|
22
22
|
|
23
23
|
# Copies skeleton files to given destination.
|
24
24
|
# @param [String] dest destination path
|
25
|
-
# @param [Hash] flags options for {FileUtils.cp_r}
|
25
|
+
# @param [Hash] flags options for {::FileUtils.cp_r}
|
26
26
|
# @return [Void]
|
27
27
|
def copy_files(dest, flags={})
|
28
28
|
flags = COPY_FLAGS.merge flags
|
@@ -33,8 +33,8 @@ module Aladdin
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
# Prefixes +
|
37
|
-
# @param [String]
|
36
|
+
# Prefixes +file+ with the skeleton directory.
|
37
|
+
# @param [String] file name of file to resolve
|
38
38
|
# @return [String] path
|
39
39
|
def path_to(file)
|
40
40
|
File.expand_path file, Aladdin::PATHS.skeleton
|
data/lib/aladdin/config.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# ~*~ encoding: utf-8 ~*~
|
2
|
-
|
3
2
|
module Aladdin
|
4
3
|
|
5
4
|
# Raised when there is a configuration error.
|
6
5
|
class ConfigError < StandardError; end
|
7
6
|
|
8
|
-
# Configuration options for Aladdin.
|
9
|
-
|
7
|
+
# Configuration options for Aladdin. Gets all of its values from {FILE}.
|
8
|
+
# Values in this file should not be trusted because they are given by the
|
9
|
+
# user.
|
10
|
+
class Config < Hash
|
10
11
|
|
11
12
|
# Name of configuration file.
|
12
13
|
FILE = 'manifest.json'
|
@@ -19,7 +20,8 @@ module Aladdin
|
|
19
20
|
},
|
20
21
|
'title' => 'Lesson X',
|
21
22
|
'description' => 'This is a placeholder description. You should provide your own',
|
22
|
-
'categories' => []
|
23
|
+
'categories' => [],
|
24
|
+
'static_paths' => %w(images)
|
23
25
|
}
|
24
26
|
|
25
27
|
# Creates a new configuration from the file at the given path. Merges the
|
@@ -27,24 +29,53 @@ module Aladdin
|
|
27
29
|
# {ConfigError} if the file could not be read or parsed.
|
28
30
|
# @param [String] root path to lesson root
|
29
31
|
def initialize(root)
|
30
|
-
path = File.expand_path FILE, root
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
ConfigError.new("We found a manifest file at #{path}, but couldn't " +
|
36
|
-
"read it. Please ensure that the permissions are set correctly.")
|
37
|
-
else
|
38
|
-
config = ::JSON.parse(File.read path)
|
39
|
-
@config = DEFAULTS.deep_merge config
|
40
|
-
end
|
32
|
+
@path = File.expand_path FILE, root
|
33
|
+
ensure_readable
|
34
|
+
super nil
|
35
|
+
merge! DEFAULTS.deep_merge ::JSON.parse File.read @path
|
36
|
+
ensure_valid
|
41
37
|
rescue ::JSON::JSONError => e
|
42
38
|
raise ConfigError.new e.message
|
43
39
|
end
|
44
40
|
|
45
|
-
|
46
|
-
|
47
|
-
|
41
|
+
private
|
42
|
+
|
43
|
+
# Raises {ConfigError} unless the configuration file exists and is
|
44
|
+
# readable.
|
45
|
+
def ensure_readable
|
46
|
+
missing unless File.exist? @path
|
47
|
+
not_readable unless File.readable? @path
|
48
|
+
end
|
49
|
+
|
50
|
+
# Raises {ConfigError} unless the all of the values in the supplied
|
51
|
+
# configuration have the same type as those in {DEFAULTS}.
|
52
|
+
def ensure_valid(defaults=DEFAULTS, supplied=self)
|
53
|
+
supplied.each do |key, value|
|
54
|
+
bad_type(key, defaults[key], value) unless value.is_a? defaults[key].class
|
55
|
+
ensure_valid(defaults[key], value) if Hash === value
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def missing
|
60
|
+
raise ConfigError.new <<-eos.squish
|
61
|
+
We expected a manifest file at #{@path}, but couldn't find it. Please
|
62
|
+
ensure that you have a file named #{Aladdin::Config::File} at the root
|
63
|
+
of your lesson directory.
|
64
|
+
eos
|
65
|
+
end
|
66
|
+
|
67
|
+
def not_readable
|
68
|
+
raise ConfigError.new <<-eos.squish
|
69
|
+
We found a manifest file at #{@path}, but couldn't open it for reading.
|
70
|
+
Please ensure that you have the permissions to read the file.
|
71
|
+
eos
|
72
|
+
end
|
73
|
+
|
74
|
+
def bad_type(key, expected, actual)
|
75
|
+
raise ConfigError.new <<-eos.squish
|
76
|
+
The #{key} option in the manifest file should be a #{expected.class.name}
|
77
|
+
instead of a #{actual.class.name}.
|
78
|
+
eos
|
48
79
|
end
|
49
80
|
|
50
81
|
end
|
data/lib/aladdin/constants.rb
CHANGED
@@ -2,83 +2,87 @@
|
|
2
2
|
|
3
3
|
module Aladdin
|
4
4
|
|
5
|
-
|
6
|
-
# Adapted from
|
7
|
-
# https://github.com/github/gollum/blob/master/lib/gollum/sanitization.rb
|
8
|
-
class Sanitize < ::Sanitize
|
5
|
+
module Render
|
9
6
|
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dir',
|
15
|
-
'div', 'dl', 'dt', 'em', 'fieldset', 'font', 'form', 'h1',
|
16
|
-
'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'input',
|
17
|
-
'ins', 'kbd', 'label', 'legend', 'li', 'map', 'menu',
|
18
|
-
'ol', 'optgroup', 'option', 'p', 'pre', 'q', 's', 'samp',
|
19
|
-
'select', 'small', 'span', 'strike', 'strong', 'sub',
|
20
|
-
'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th',
|
21
|
-
'thead', 'tr', 'tt', 'u', 'ul', 'var'
|
22
|
-
].freeze
|
7
|
+
# Encapsulate sanitization options.
|
8
|
+
# Adapted from
|
9
|
+
# https://github.com/github/gollum/blob/master/lib/gollum/sanitization.rb
|
10
|
+
class Sanitize < ::Sanitize
|
23
11
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
'headers', 'height', 'hreflang',
|
38
|
-
'hspace', 'id', 'ismap', 'label', 'lang',
|
39
|
-
'longdesc', 'maxlength', 'media', 'method',
|
40
|
-
'multiple', 'name', 'nohref', 'noshade',
|
41
|
-
'nowrap', 'prompt', 'readonly', 'rel', 'rev',
|
42
|
-
'rows', 'rowspan', 'rules', 'scope',
|
43
|
-
'selected', 'shape', 'size', 'span',
|
44
|
-
'start', 'summary', 'tabindex', 'target',
|
45
|
-
'title', 'type', 'usemap', 'valign', 'value',
|
46
|
-
'vspace', 'width']
|
47
|
-
}.freeze
|
12
|
+
# white-listed elements
|
13
|
+
ELEMENTS = [
|
14
|
+
'a', 'abbr', 'acronym', 'address', 'area', 'b', 'big',
|
15
|
+
'blockquote', 'br', 'button', 'caption', 'center', 'cite',
|
16
|
+
'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dir',
|
17
|
+
'div', 'dl', 'dt', 'em', 'fieldset', 'font', 'form', 'h1',
|
18
|
+
'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'input',
|
19
|
+
'ins', 'kbd', 'label', 'legend', 'li', 'map', 'menu',
|
20
|
+
'ol', 'optgroup', 'option', 'p', 'pre', 'q', 's', 'samp',
|
21
|
+
'select', 'small', 'span', 'strike', 'strong', 'sub',
|
22
|
+
'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th',
|
23
|
+
'thead', 'tr', 'tt', 'u', 'ul', 'var'
|
24
|
+
].freeze
|
48
25
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
26
|
+
# white-listed attributes
|
27
|
+
ATTRIBUTES = {
|
28
|
+
'a' => ['href', 'name', 'data-magellan-destination'],
|
29
|
+
'dd' => ['data-magellan-arrival'],
|
30
|
+
'dl' => ['data-magellan-expedition'],
|
31
|
+
'img' => ['src'],
|
32
|
+
:all => ['abbr', 'accept', 'accept-charset',
|
33
|
+
'accesskey', 'action', 'align', 'alt', 'axis',
|
34
|
+
'border', 'cellpadding', 'cellspacing', 'char',
|
35
|
+
'charoff', 'class', 'charset', 'checked', 'cite',
|
36
|
+
'clear', 'cols', 'colspan', 'color',
|
37
|
+
'compact', 'coords', 'datetime', 'dir',
|
38
|
+
'disabled', 'enctype', 'for', 'frame',
|
39
|
+
'headers', 'height', 'hreflang',
|
40
|
+
'hspace', 'id', 'ismap', 'label', 'lang',
|
41
|
+
'longdesc', 'maxlength', 'media', 'method',
|
42
|
+
'multiple', 'name', 'nohref', 'noshade',
|
43
|
+
'nowrap', 'prompt', 'readonly', 'rel', 'rev',
|
44
|
+
'rows', 'rowspan', 'rules', 'scope',
|
45
|
+
'selected', 'shape', 'size', 'span',
|
46
|
+
'start', 'summary', 'tabindex', 'target',
|
47
|
+
'title', 'type', 'usemap', 'valign', 'value',
|
48
|
+
'vspace', 'width']
|
49
|
+
}.freeze
|
54
50
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
# white-listed protocols
|
52
|
+
PROTOCOLS = {
|
53
|
+
'a' => {'href' => ['http', 'https', 'mailto', 'ftp', 'irc', 'apt', :relative]},
|
54
|
+
'img' => {'src' => ['http', 'https', :relative]}
|
55
|
+
}.freeze
|
60
56
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
# elements to remove (incl. contents)
|
58
|
+
REMOVE_CONTENTS = [
|
59
|
+
'script',
|
60
|
+
'style'
|
61
|
+
].freeze
|
65
62
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
63
|
+
# attributes to add to elements
|
64
|
+
ADD_ATTRIBUTES = {
|
65
|
+
'a' => {'rel' => 'nofollow'}
|
66
|
+
}
|
70
67
|
|
71
|
-
|
68
|
+
# Creates a new sanitizer with Aladdin's configuration.
|
69
|
+
def initialize
|
70
|
+
super config
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
# @return [Hash] configuration hash.
|
76
|
+
def config
|
77
|
+
{ elements: ELEMENTS.dup,
|
78
|
+
attributes: ATTRIBUTES.dup,
|
79
|
+
protocols: PROTOCOLS.dup,
|
80
|
+
add_attributes: ADD_ATTRIBUTES.dup,
|
81
|
+
remove_contents: REMOVE_CONTENTS.dup,
|
82
|
+
allow_comments: false
|
83
|
+
}
|
84
|
+
end
|
72
85
|
|
73
|
-
# Returns a configuration hash.
|
74
|
-
def config
|
75
|
-
{ elements: ELEMENTS.dup,
|
76
|
-
attributes: ATTRIBUTES.dup,
|
77
|
-
protocols: PROTOCOLS.dup,
|
78
|
-
add_attributes: ADD_ATTRIBUTES.dup,
|
79
|
-
remove_contents: REMOVE_CONTENTS.dup,
|
80
|
-
allow_comments: false
|
81
|
-
}
|
82
86
|
end
|
83
87
|
|
84
88
|
end
|
@@ -10,7 +10,7 @@ module Aladdin
|
|
10
10
|
# Renders the given problem using {#view}.
|
11
11
|
# @todo TODO should probably show some error message in the preview,
|
12
12
|
# so that the author doesn't have to read the logs.
|
13
|
-
# @
|
13
|
+
# @param [Hash] locals local variables to pass to the template
|
14
14
|
def render(locals={})
|
15
15
|
view.render Object.new, locals
|
16
16
|
end
|
data/lib/aladdin/support.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
# ~*~ encoding: utf-8 ~*~
|
2
|
+
module Aladdin
|
3
|
+
|
4
|
+
module Support
|
5
|
+
|
6
|
+
# Sinatra route matcher that matches mutltiple paths given in an array.
|
7
|
+
class OneOfMatcher
|
8
|
+
|
9
|
+
Match = Struct.new(:captures)
|
10
|
+
|
11
|
+
# Creates a new matcher for +routes+.
|
12
|
+
# @param [Array] routes array of static paths
|
13
|
+
def initialize(routes)
|
14
|
+
@routes = routes.map { |r| '/' + r }
|
15
|
+
@captures = Match.new []
|
16
|
+
end
|
17
|
+
|
18
|
+
# Matches +routes+ against +str+.
|
19
|
+
def match(str)
|
20
|
+
@captures[:captures] = [str]
|
21
|
+
@captures if @routes.any? { |r| str.starts_with? r }
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
# Sinatra route matcher that matches mutltiple paths given in an array.
|
27
|
+
module OneOfPattern
|
28
|
+
# @example
|
29
|
+
# get one_of(%w(x y z)) do
|
30
|
+
# puts 'Hello!'
|
31
|
+
# end
|
32
|
+
def one_of(routes)
|
33
|
+
OneOfMatcher.new routes
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/lib/aladdin/version.rb
CHANGED
data/skeleton/manifest.json
CHANGED
data/views/haml/layout.haml
CHANGED
@@ -12,12 +12,12 @@
|
|
12
12
|
%meta{name: 'viewport', content: 'width=device-width'}
|
13
13
|
|
14
14
|
%title= title
|
15
|
-
%link{rel: 'stylesheet', href:'
|
16
|
-
%link{rel: 'stylesheet', href:'
|
15
|
+
%link{rel: 'stylesheet', href:'__css/app.css'}
|
16
|
+
%link{rel: 'stylesheet', href:'__css/general_foundicons.css'}
|
17
17
|
/[if lt IE 8]
|
18
|
-
%link{rel: 'stylesheet', href:'
|
18
|
+
%link{rel: 'stylesheet', href:'__css/general_foundicons_ie7.css'}
|
19
19
|
|
20
|
-
%script{src: '
|
20
|
+
%script{src: '__js/foundation/modernizr.foundation.js'}
|
21
21
|
|
22
22
|
%body
|
23
23
|
|
@@ -29,7 +29,7 @@
|
|
29
29
|
%h1= title
|
30
30
|
%h4
|
31
31
|
<!-- TODO: user gravatar -->
|
32
|
-
%img{src: '
|
32
|
+
%img{src: '__img/no_gravatar.gif', width: 20, height: 20, alt: 'John Doe'}
|
33
33
|
<!-- TOOD: user name -->
|
34
34
|
%small John Doe
|
35
35
|
%h4.subheader= description
|
@@ -43,7 +43,7 @@
|
|
43
43
|
%h1
|
44
44
|
%a.th.hero{href: '#'}
|
45
45
|
<!-- TODO: graphic from user's repo -->
|
46
|
-
%img{src: '
|
46
|
+
%img{src: '__img/graphic.png'}
|
47
47
|
|
48
48
|
%hr/
|
49
49
|
%section{role: 'lesson'}
|
@@ -61,27 +61,27 @@
|
|
61
61
|
%span <!-- TODO: score goes here -->
|
62
62
|
|
63
63
|
-# foundation
|
64
|
-
%script{src: '
|
65
|
-
%script{src: '
|
66
|
-
%script{src: '
|
67
|
-
%script{src: '
|
68
|
-
%script{src: '
|
69
|
-
%script{src: '
|
70
|
-
%script{src: '
|
71
|
-
%script{src: '
|
72
|
-
%script{src: '
|
73
|
-
%script{src: '
|
74
|
-
%script{src: '
|
75
|
-
%script{src: '
|
76
|
-
%script{src: '
|
77
|
-
%script{src: '
|
78
|
-
%script{src: '
|
79
|
-
%script{src: '
|
80
|
-
%script{src: '
|
64
|
+
%script{src: '__js/foundation/jquery.js'}
|
65
|
+
%script{src: '__js/foundation/jquery.cookie.js'}
|
66
|
+
%script{src: '__js/foundation/jquery.event.move.js'}
|
67
|
+
%script{src: '__js/foundation/jquery.event.swipe.js'}
|
68
|
+
%script{src: '__js/foundation/jquery.foundation.accordion.js'}
|
69
|
+
%script{src: '__js/foundation/jquery.foundation.alerts.js'}
|
70
|
+
%script{src: '__js/foundation/jquery.foundation.buttons.js'}
|
71
|
+
%script{src: '__js/foundation/jquery.foundation.clearing.js'}
|
72
|
+
%script{src: '__js/foundation/jquery.foundation.forms.js'}
|
73
|
+
%script{src: '__js/foundation/jquery.foundation.magellan.js'}
|
74
|
+
%script{src: '__js/foundation/jquery.foundation.mediaQueryToggle.js'}
|
75
|
+
%script{src: '__js/foundation/jquery.foundation.navigation.js'}
|
76
|
+
%script{src: '__js/foundation/jquery.foundation.tabs.js'}
|
77
|
+
%script{src: '__js/foundation/jquery.foundation.tooltips.js'}
|
78
|
+
%script{src: '__js/foundation/jquery.foundation.topbar.js'}
|
79
|
+
%script{src: '__js/foundation/jquery.placeholder.js'}
|
80
|
+
%script{src: '__js/foundation/app.js'}
|
81
81
|
|
82
82
|
-# mathjax
|
83
83
|
%script{src: 'https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'}
|
84
|
-
%script{src: '
|
84
|
+
%script{src: '__js/app.js'}
|
85
85
|
|
86
86
|
:plain
|
87
87
|
</html>
|
data/views/scss/_settings.scss
CHANGED
@@ -241,7 +241,7 @@
|
|
241
241
|
// http://www.modularscale.com by Tim Brown
|
242
242
|
// https://github.com/scottkellum/modular-scale by scottkellum
|
243
243
|
|
244
|
-
$fontFileName: "/
|
244
|
+
$fontFileName: "/__font/general_foundicons";
|
245
245
|
$fontName: "GeneralFoundicons";
|
246
246
|
$classPrefix: "foundicon-";
|
247
247
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aladdin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.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: 2012-12-
|
12
|
+
date: 2012-12-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
@@ -264,6 +264,7 @@ files:
|
|
264
264
|
- lib/aladdin/app.rb
|
265
265
|
- lib/aladdin/commands/new.rb
|
266
266
|
- lib/aladdin/commands/server.rb
|
267
|
+
- lib/aladdin/commands/USAGE
|
267
268
|
- lib/aladdin/commands.rb
|
268
269
|
- lib/aladdin/config.rb
|
269
270
|
- lib/aladdin/constants.rb
|
@@ -284,40 +285,41 @@ files:
|
|
284
285
|
- lib/aladdin/support/core_ext/hash.rb
|
285
286
|
- lib/aladdin/support/core_ext.rb
|
286
287
|
- lib/aladdin/support/logger.rb
|
288
|
+
- lib/aladdin/support/multiroute.rb
|
287
289
|
- lib/aladdin/support/weak_comparator.rb
|
288
290
|
- lib/aladdin/support.rb
|
289
291
|
- lib/aladdin/version.rb
|
290
292
|
- lib/aladdin.rb
|
293
|
+
- assets/__font/general_foundicons.eot
|
294
|
+
- assets/__font/general_foundicons.svg
|
295
|
+
- assets/__font/general_foundicons.ttf
|
296
|
+
- assets/__font/general_foundicons.woff
|
297
|
+
- assets/__img/graphic.png
|
298
|
+
- assets/__img/no_gravatar.gif
|
299
|
+
- assets/__js/app.js
|
300
|
+
- assets/__js/foundation/app.js
|
301
|
+
- assets/__js/foundation/jquery.cookie.js
|
302
|
+
- assets/__js/foundation/jquery.event.move.js
|
303
|
+
- assets/__js/foundation/jquery.event.swipe.js
|
304
|
+
- assets/__js/foundation/jquery.foundation.accordion.js
|
305
|
+
- assets/__js/foundation/jquery.foundation.alerts.js
|
306
|
+
- assets/__js/foundation/jquery.foundation.buttons.js
|
307
|
+
- assets/__js/foundation/jquery.foundation.clearing.js
|
308
|
+
- assets/__js/foundation/jquery.foundation.forms.js
|
309
|
+
- assets/__js/foundation/jquery.foundation.joyride.js
|
310
|
+
- assets/__js/foundation/jquery.foundation.magellan.js
|
311
|
+
- assets/__js/foundation/jquery.foundation.mediaQueryToggle.js
|
312
|
+
- assets/__js/foundation/jquery.foundation.navigation.js
|
313
|
+
- assets/__js/foundation/jquery.foundation.orbit.js
|
314
|
+
- assets/__js/foundation/jquery.foundation.reveal.js
|
315
|
+
- assets/__js/foundation/jquery.foundation.tabs.js
|
316
|
+
- assets/__js/foundation/jquery.foundation.tooltips.js
|
317
|
+
- assets/__js/foundation/jquery.foundation.topbar.js
|
318
|
+
- assets/__js/foundation/jquery.js
|
319
|
+
- assets/__js/foundation/jquery.offcanvas.js
|
320
|
+
- assets/__js/foundation/jquery.placeholder.js
|
321
|
+
- assets/__js/foundation/modernizr.foundation.js
|
291
322
|
- assets/favicon.ico
|
292
|
-
- assets/fonts/general_foundicons.eot
|
293
|
-
- assets/fonts/general_foundicons.svg
|
294
|
-
- assets/fonts/general_foundicons.ttf
|
295
|
-
- assets/fonts/general_foundicons.woff
|
296
|
-
- assets/images/graphic.png
|
297
|
-
- assets/images/no_gravatar.gif
|
298
|
-
- assets/javascripts/app.js
|
299
|
-
- assets/javascripts/foundation/app.js
|
300
|
-
- assets/javascripts/foundation/jquery.cookie.js
|
301
|
-
- assets/javascripts/foundation/jquery.event.move.js
|
302
|
-
- assets/javascripts/foundation/jquery.event.swipe.js
|
303
|
-
- assets/javascripts/foundation/jquery.foundation.accordion.js
|
304
|
-
- assets/javascripts/foundation/jquery.foundation.alerts.js
|
305
|
-
- assets/javascripts/foundation/jquery.foundation.buttons.js
|
306
|
-
- assets/javascripts/foundation/jquery.foundation.clearing.js
|
307
|
-
- assets/javascripts/foundation/jquery.foundation.forms.js
|
308
|
-
- assets/javascripts/foundation/jquery.foundation.joyride.js
|
309
|
-
- assets/javascripts/foundation/jquery.foundation.magellan.js
|
310
|
-
- assets/javascripts/foundation/jquery.foundation.mediaQueryToggle.js
|
311
|
-
- assets/javascripts/foundation/jquery.foundation.navigation.js
|
312
|
-
- assets/javascripts/foundation/jquery.foundation.orbit.js
|
313
|
-
- assets/javascripts/foundation/jquery.foundation.reveal.js
|
314
|
-
- assets/javascripts/foundation/jquery.foundation.tabs.js
|
315
|
-
- assets/javascripts/foundation/jquery.foundation.tooltips.js
|
316
|
-
- assets/javascripts/foundation/jquery.foundation.topbar.js
|
317
|
-
- assets/javascripts/foundation/jquery.js
|
318
|
-
- assets/javascripts/foundation/jquery.offcanvas.js
|
319
|
-
- assets/javascripts/foundation/jquery.placeholder.js
|
320
|
-
- assets/javascripts/foundation/modernizr.foundation.js
|
321
323
|
- views/haml/exe.haml
|
322
324
|
- views/haml/header.haml
|
323
325
|
- views/haml/img.haml
|